黑马程序员_OC基础06_OC语法

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


一、OC语法

1、成员变量作用域

1>概念:可以在成员变量前加以下四种关键字修饰其作用域

①@public :在任何地方都能直接访问对象的成员变量

②@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private

③@protected : 可以在当前类及其子类的对象方法中直接访问 @interface中默认就是@protected

④@package :只要处在同一个框架中,就能直接访问对象的成员变量

2>注意点

①@interface@implementation中不能声明同名的成员变量


2、property和synthesize

1>概念及使用方法

property:可以自动生成成员变量set和get方法的声明

@interface Person : NSObject
{
    int _age;
}
@property int age; // 这一行等价于下面注释的两行
//- (void)setAge:(int)age;
//- (int)age;


synthesize:可以自动生成成员变量set和get方法的声明,并访问成员变量,如果找不到成员变量,将自动生成@private的成员变量

#import "Person.h"
@implementation Person

@synthesize age = _age; //这一行等于下面注释的8行

//- (void)setAge:(int)age
//{
//    _age = age;
//}
//- (int)age
//{
//    return _age;
//}
@end


2>注意点

①synthesize定义的变量类型等于@property同名变量的类型

②如果按下面方式使用synthesize,则会访问age而不是_age

synthesize age;

③在xcode4.4之后,@property包含了@synthesize的功能,我们使用新版本xcode只需写下面一行代码即可

@property int age;

④xcode只会帮你生成你没有写的方法,如果你写了,会采用你的方法。(如果你写了setter和getter的实现,那么xcode不会自动生成变量


3、点语法

1>概念

点语法的本质就是调用setter和getter

p.age = 10; // [p setAge:10];
int age = p.age; // [p age]; 


代码和注释是相同的。

2>注意点

不要在方法内部使用点语法调用方法本身,这样会引发死循环

- (void)setAge:(int)age
{
    self.age = age;
}
- (int)age
{
    return self.age;
}

4.id类型

id是万能指针,可以指向或操作任何OC对象

id d = [[Person alloc]init];
        
        [d setAge:10];
        
        [d setObj:@"321423432"];
        
        NSLog(@"%d", [d age]);


5.构造方法

1>概念

用来初始化对象的方法,使对象一创建出来成员变量就有一些我们想要的值。

2>使用方法

- (id)init
{
    if ( self = [super init] )
    { // 初始化成功
        _age = 10;
    }
    
    // 3.返回一个已经初始化完毕的对象
    return self;
}
int main()
{
    Person *p = [[Person alloc] init];
}

这样创建出来的Person对象的年龄都是10

3>注意点

①在写构造方法时,一定先调用父类的构造方法,确认成功调用后再进行类的初始化,最后返回初始化完毕的对象

②构造方法是一个对象方法,要以“-”开头

③self =[super init]是一个固定写法

④构造方法命名一般以initWith开头,返回值为id类型


6.注释

pragma是xcode一个特有注释方法

用#pragma - 来区分不同类型的方法

用#pragma来注释方法

#pragma mark - 姓名的seter和getter
#pragma mark 姓名的set方法
- (void)setName:(NSString *)name
{
    _name = name;
}
#pragma mark 姓名的get方法
- (NSString *)name
{
    return _name;
}
#pragma mark - 其他方法
- (void)test
{

}


----------------------  ASP.Net+Unity开发 .Net培训 、期待与您交流! ----------------------详细请查看: www.itheima.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值