【问题标题】:XCode 6.3 Warning: synthesize propertyXCode 6.3 警告:综合属性
【发布时间】:2015-06-14 14:12:23
【问题描述】:

在新的 Xcode 6.3 中,我收到此警告:

自动属性合成不会合成属性'homeInt';它将由其超类实现,使用@dynamic 来确认意图

我怎样才能删除它?

【问题讨论】:

    标签: xcode dynamic warnings


    【解决方案1】:

    如果您有意覆盖超类中的相同属性,则在您的*.m*.mm 文件中,添加@dynamic 之类的:

    @implementation MyClass
    
    @dynamic homeInt;
    
    // ...
    
    @end
    

    如果没有,请重命名该属性。

    【讨论】:

      【解决方案2】:

      我只是删除了这个属性声明,因为它已经在父类中声明了

      【讨论】:

        【解决方案3】:

        根据@mplace 的评论,在我的例子中,我重写了属性以将属性的类型细化为属性原始类的子类。所以,我确实需要@property 覆盖。

        这是我正在使用的:

        #pragma clang diagnostic push
        #pragma clang diagnostic ignored "-Wobjc-property-synthesis"
        // superclass type for currentValue was "id"
        @property (nonatomic, strong) NSDate *currentValue;
        #pragma clang diagnostic pop
        

        注意是“-Wobjc-property-synthesis”而不是“-Wno-objc-property-synthesis”

        另见https://github.com/couchbase/couchbase-lite-ios/issues/660

        【讨论】:

          【解决方案4】:

          如果您想避免在每个已覆盖超类属性的地方添加@dynamic <varName>有意,您可以在项目构建设置下将-Wno-objc-property-synthesis 标志添加到“其他警告标志” .这将在整个项目范围内抑制警告。

          【讨论】:

          • 这并没有抑制对我的警告...我正在使用 Cocoapods,不确定这是否会覆盖我的标志。
          • -Wno-objc-property-synthesis 对我来说也无法抑制此警告。其他人有想法吗?
          • 让我细化一下。当我将它与带有“#pragma clang diagnostic ignored”的代码内联时它不起作用,但是当我将它与编译器标志放在一起时它确实起作用。我宁愿不使用编译器标志在我的所有代码中通用...
          【解决方案5】:

          这个原因是子类定义了相同的属性名覆盖父类,例如:
          1)子类“AFHTTPSessionManager”已经定义:

          @property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * **responseSerializer**;
          

          2)父类“AFURLSessionManager”已经定义:

          @property (nonatomic, strong) id <AFURLResponseSerialization> **responseSerializer**;
          

          3)以上原因,警告来了!如果要删除它,只需重命名冲突属性名称!
          4) 或者按照它的建议,在您的实现文件中添加“@dynamic homeInt”;

          【讨论】:

          • 我看到了同样的 AFNetworking 警告。问题是,这些有什么需要担心的吗?他们甚至需要关注这个图书馆吗
          • 很高兴我不是唯一一个不小心用分号结束句子的人;
          【解决方案6】:

          如果您更新到 Xcode 6.3,只需将 AFNetworking 更新到 2.5.2 版,这些警告就会消失。

          【讨论】:

          • 这对于 AFNetworking 属性产生的警告是正确的。最初的问题与其中之一无关。
          【解决方案7】:

          @implementation 我的类

          @synthesize homeInt = _ homeInt; ...

          @结束

          【讨论】:

          • @dynamic 更好
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-15
          • 1970-01-01
          • 2014-08-26
          • 1970-01-01
          相关资源
          最近更新 更多