如何在Obj C中使用属性

时间:2013-07-25 11:41:47

标签: objective-c

我试图学习如何在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";
 ... 
 }

我相信我上面提到的观点是正确的,对吧?

1 个答案:

答案 0 :(得分:4)

虽然您遗漏了@property声明中的一些内容,但您所说的内容非常正确。您至少需要一个属性属性,例如strongcopyassign。对于可能是可变的字符串,我们通常使用copy来确保不能从我们下面修改字符串。所以@property (copy) NSString *firstNameSee this answer for more details about this

大多数人也使用nonatomic通过在生成的getter / setter中禁用线程同步来提高性能。 See this answer for more information

有些人建议不要在init方法中使用属性访问器(更喜欢直接ivar访问),因为子类可能已经覆盖了setter / getter,并且在对象完全初始化之前可能无法正常工作。实际上,你很少需要担心这一点,所以很多人都忽略了这个建议。

使用最新版本的Xcode,您也不必手动添加@synthesize - 将自动为您合成以下划线为前缀的实例变量(在您的示例中为_firstName)。 p>