博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
objective c数据封装
阅读量:5238 次
发布时间:2019-06-14

本文共 1120 字,大约阅读时间需要 3 分钟。

如果你在类的声明中包含了属性(property),如:

@interface XYZPerson : NSObject

@property NSString *firstName;

@property NSString *lastName;

@end

那么,编译器将自动为你创建实例变量(instance variable),即     //注:此处有待考证

_firstName 和 _lastName.   但如果用了@synthesize语句的除外,那个语句等于将实例变量和属性同名。

 

同时,通过 @synthesize语句,

@synthesize fistname;

@synthesize lastname;

编译器将创建两个属性方法(accessor method),其中set方法命名为set + 属性名头字母大写,即相当于创建了:

(void) setFirstName(NSString *str); 和

(void) setLastName(NSString *str);

另一个属性方法get则命名为和属性相同的名字,即相当于创建了

(NSString *)firstname(void);和

(NSString *)lastname(void).

于是,你可以通过诸如如下语句访问(access)或设置(set)对象的属性:

XYZPerson *someOne = [[XYZPerson alloc] init];

NSString  *myName = [someOne firstname];

[someOne setFirstName:@"Johnny"];

如果希望get方法不用以上的名字(即和属性同名的名字),可以在定义属性的时候特别说明,如:

@property  (getter = getFirstName) NSString * firstName;

 

可以用点号访问或设置属性,如:

NSString *myName = someOne.firstName;

someOne.firstName=@"Smith";

 

如果希望属性名和实例变两名(instance variable)不同名,则可以在@synthesize语句中特别标出,如:

@synthesize firstName = first;

这样,对应firstName属性的实例变量名将为first,而不是_firstName.

但如果仅仅是写成

@synthesize firstName

则属性名和实例变量名将相同。 

 

 

 

 

转载于:https://www.cnblogs.com/luoxs/archive/2012/09/05/iOS.html

你可能感兴趣的文章
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>