我试图学习如何在iOS编程中使用属性。 如果我得到的是正确的,我只想与这里的人联系?
说我有财产
@interface Person : NSObject
@property NSString *firstName;
@end
在实施中
@implementation XYZPerson
@synthesize firstName;
...
@end
由此,
a)创建名为firstName
的实例变量
b)每当我想在我的课程中使用属性时,我会调用self.firstName
(或setter / getter)
c)我可以在init方法中初始化属性,如下所示:
-(id) init {
...
self.firstName=@"SomeText";
...
}
我相信我上面提到的观点是正确的,对吧?
答案 0 :(得分:4)
虽然您遗漏了@property
声明中的一些内容,但您所说的内容非常正确。您至少需要一个属性属性,例如strong
或copy
或assign
。对于可能是可变的字符串,我们通常使用copy
来确保不能从我们下面修改字符串。所以@property (copy) NSString *firstName
。 See this answer for more details about this
大多数人也使用nonatomic
通过在生成的getter / setter中禁用线程同步来提高性能。 See this answer for more information
有些人建议不要在init
方法中使用属性访问器(更喜欢直接ivar访问),因为子类可能已经覆盖了setter / getter,并且在对象完全初始化之前可能无法正常工作。实际上,你很少需要担心这一点,所以很多人都忽略了这个建议。
使用最新版本的Xcode,您也不必手动添加@synthesize
- 将自动为您合成以下划线为前缀的实例变量(在您的示例中为_firstName
)。 p>