星空网 > 软件开发 > 操作系统

OC学习笔记之属性详解和易错点

属性的概念在OC1.0中就存在,格式是定义实例变量,然后定义setter和getter方法,用点操作符操作属性

举例,类的接口部分

 1 @interface Father : NSObject 2 { 3   NSInteger _item; 4 } 5 #pragma mark - 属性 6 -(void)setItem:(NSInteger)item; 7 -(NSInteger)item; 8  9 -(void)setAAA:(NSInteger)aaa;10 -(NSInteger)AAA;11 12 @end

类的实现部分

 1 #import "Father.h" 2  3 @implementation Father 4  5 -(void)setItem:(NSInteger)item{ 6   _item = item; 7 } 8 -(NSInteger)item{ 9   return _item;10 }11 12 -(void)setAAA:(NSInteger)aaa{13   _item = aaa;14 }15 -(NSInteger)AAA{16   return _item;17 }18 19 @end

main函数

1     Father *test = [[Father alloc]init];2     test.item = 19;3     NSLog(@"%ld",test.item);4     5     test.AAA = 20;6     NSLog(@"%ld",test.AAA);

在上边的示例中定义了一个实例变量和两个属性,两个属性操作同一个实例变量,注意,属性和实例变量没有必然的联系,属性只是操作实例变量(甚至不操作实例变量,后面会详细解释),但是setter和getter方法的命名规则需要注意,setter方法的命名是set+属性名,getter的命名方法是属性名(属性AAA的setter方法是setAAA:,getter方法名是AAA)

 

OC2.0以后提供了@property和@synthesize关键字从语法层简化了属性的书写

属性的声明

OC学习笔记之属性详解和易错点images/loading.gif' data-original="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" />OC学习笔记之属性详解和易错点
 1 #import <Foundation/Foundation.h> 2  3 @interface Father : NSObject 4 { 5   NSInteger _item; 6   NSString *_str; 7 } 8 #pragma mark - 属性 9 @property NSInteger item;10 @property NSString *AAA;11 12 @end

View Code 

属性的实现

OC学习笔记之属性详解和易错点OC学习笔记之属性详解和易错点
1 @implementation Father2 3 @synthesize item = _item,AAA = _str;4 5 @end

View Code

此时应注意,两个不同属性不能同时操作同一个实例变量,语法检查会报错

Xcode5以后,属性实现部分的代码可以省略,Xcode会生成属性实现的代码(苹果官方推荐写法)

在这里需要注意的点有点多,一一分析。

在省略属性实现部分代码后,Xcode给出的默认的属性实现的代码是这样的

@synthesize 属性1 = _属性1,属性2 = _属性2;

也就是属性操作的实例变量时_+属性名,以上面属性声明代码为例,Xcode生成的代码是这样的

@synthesize item = _item,AAA = _AAA;

注意我们的类接口文件中只有_item,_AAA是没有的,这个变量是没有的,他是Xcode自动生成的真.私有实例变量,为什么加个真呢,因为这个变量不会生成在接口文件中,只会声明在类的实现文件中,而且是声明在类的最上端,大致是这样的

OC学习笔记之属性详解和易错点OC学习笔记之属性详解和易错点
1 @implementation Father2 3 NSString *_AAA;4 5 @synthesize item = _item,AAA = _AAA;6 7 @end

View Code

因此Father作为父类时_AAA是不会像@private下的实例变量一样被继承的,所以不推荐大家在子类中声明和父类中相同名称的属性,尤其是没有相对应的实例变量的时候,理由大家可以考虑下。

 




原标题:OC学习笔记之属性详解和易错点

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

格士立国际物流:https://www.goluckyvip.com/tag/101405.html
国际货运物流有限公司:https://www.goluckyvip.com/tag/101406.html
奔奔国际物流:https://www.goluckyvip.com/tag/101407.html
xlobo贝海国际速递:https://www.goluckyvip.com/tag/101408.html
蜂窝国际物流:https://www.goluckyvip.com/tag/101409.html
PayPa:https://www.goluckyvip.com/tag/10141.html
重庆品胜科技与星苹台达成合作 助力部队现代化后勤建设 :https://www.kjdsnews.com/a/1836523.html
回乡创业,不知道干什么,能否推荐几个农村老家创业的好项目?:https://www.vstour.cn/a/365177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流