【问题标题】:Property attributes in custom setters/getter自定义 setter/getter 中的属性
【发布时间】:2012-09-09 11:45:35
【问题描述】:

如果我创建属性,例如:

@property NSString *selectedSubProductId;

并创建setter和getter:

- (NSString *)selectedSubProductId {}

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

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

【问题讨论】:

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

标签: iphone objective-c ios xcode cocoa


【解决方案1】:

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

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

但是,在字符串中您应该使用复制。更多信息请visit this question on stackoverflow.

【讨论】:

    【解决方案2】:

    如果是对象,你应该使用retain/copy属性修饰符。

    例如:

    @property (nonatomic, retain) NSString *selectedSubProductId;
    

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

    您可以在Apple Documentation了解更多详情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      相关资源
      最近更新 更多