如果我创建属性,例如:
@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
创建所需方法的提示,这是否重要?如果是这样,我应该如何禁用警告?
答案 0 :(得分:1)
如果是对象,则应使用retain / copy属性修饰符。
例如:
@property (nonatomic, retain) NSString *selectedSubProductId;
如果缺少修饰符,则默认启用assign
修饰符。但它仅对标量(int
,float
...)或struct
有效。
答案 1 :(得分:0)
该警告表示您正在使用默认属性属性(assign),因为您忘记说您想如何保留对象。
如果要“删除”警告,请使用保留/复制属性:
@property (copy) NSString *selectedSubProductId;
但是,在Strings中你应该使用副本。有关详细信息,请visit this question on stackoverflow.