2012-09-17 82 views
1

如果我创建属性,例如:属性属性自定义设置器/吸气

@property NSString *selectedSubProductId; 

,并创建setter和getter:

- (NSString *)selectedSubProductId {} 

- (void)setSelectedSubProductId:(NSString *)value_ {} 

的XCode说"Deault property attribute 'assign' not appropriate for non-gc object"。在这种情况下属性是否有任何意义?如果我将它们制作成copyassign,或者它们只提示@synthesize来创建所需的方法,这有什么关系吗?如果是这样,我应该如何禁用警告?

+0

Xcode的版本是什么?当我将代码复制粘贴到我的环境中时(我有Xcode 4.4.1),我没有看到任何此类警告。 – dasblinkenlight

+0

我有XCode 4.5 –

回答

1

如果是对象,则应使用保留/复制属性修改器。

例如:

@property (nonatomic, retain) NSString *selectedSubProductId; 

如果修饰语丢失,assign修改默认情况下启用。但它只适用于标量(int,float ...)或struct

您可以在Apple Documentation

0

获得更多的细节,警告说,您使用的是默认的属性属性附加伤害(分配),因为你忘了说你怎么想握住你的对象。

如果你想“删除”的警告使用保留/复制属性: @property (copy) NSString *selectedSubProductId;

然而,在字符串你应该使用拷贝。欲了解更多信息,请致电visit this question on stackoverflow.