1

如果我创建属性,例如:

@property NSString *selectedSubProductId;

并创建 setter 和 getter:

- (NSString *)selectedSubProductId {}

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

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

4

2 回答 2

1

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

例如:

@property (nonatomic, retain) NSString *selectedSubProductId;

如果缺少assign修饰符,则默认启用修饰符。但它仅对标量 ( int, float...) 或有效struct

您可以在Apple 文档中获得更多详细信息

于 2012-09-17T09:20:27.467 回答
0

该警告表示您正在使用默认属性属性(分配),因为您忘了说您想如何保存您的对象。

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

但是,在字符串中,您应该使用复制。有关更多信息,请访问 stackoverflow 上的这个问题。

于 2012-09-17T09:21:56.163 回答