【问题标题】:xcode: property 'title' 'copy' attribute does not match super class 'UIViewController' propertyxcode:属性“标题”“复制”属性与超类“UIViewController”属性不匹配
【发布时间】:2011-06-06 22:12:50
【问题描述】:

您好,我目前收到此错误消息。由于对香蕉的热爱,我无法弄清楚我做错了什么。

它只是一个

IBOutlet UILabel *title;

@property(nonatomic, retain) IBOutlet UILabel *title;

我已经将它连接到我的 xib 文件连接到 UILabel,因为我在运行时动态更改标题。

Classes/../taskViewController.h:44: 警告:属性 'title' 'copy' 属性与超类 'UIViewController' 属性不匹配

我不明白这是什么意思。 通常我能够摆脱警告信息。但是这个......我不知道发生了什么。

有人可以指导我并解释这里发生了什么。

【问题讨论】:

    标签: iphone xcode compilation warnings


    【解决方案1】:

    您的问题是 UIViewController 已经定义了一个标题属性,并且您使用的内存管理选项与它不同。要解决此问题,请更改您的属性的名称。例如:@property (nonatomic, copy) UILabel *titleLabel;。如果您希望实例变量具有相同的名称,并且您使用@synthesize,请使用@synthesize titleLabel=title;

    顺便说一句,你为什么要复制 UILabel?通常你会使用retain,所以它是同一个对象。

    【讨论】:

    • 这就是我所拥有的......我没有“复制”这个词,我确实有“保留”这个词.....@property(非原子,保留) IBOutlet UILabel *title;
    • 那么UIViewController必须使用copy。我本以为它是一个 NSString,但我认为错误会给出你使用的内容。
    • 更改标签名称有帮助。非常感谢您的帮助。因此,如果我理解正确,UILabel 是 UIViewController 的一个子类,其中包含一个名为 title 的属性,并且我将与该属性冲突的变量名称命名为 title .. 导致该警告出现
    • 不,UILabel 是 UIView 的子类。您拥有此属性的类是 UIViewController 的子类。除此之外,是的。
    【解决方案2】:

    意思是:

    • 你有一个 UIViewController 的子类
    • 它包含一个名为“title”的属性
    • 您已使用“复制”属性声明属性
    • 父类 (UIViewController) 已经具有定义冲突的“title”属性(即,不是“copy”)

    【讨论】:

    • 但我没有?我所做的一切是.... @property(nonatomic, retain) IBOutlet UILabel *title;
    • 好吧,也许消息是倒退的,它是UIViewController 声明它copy。在任何情况下,您都可能希望更改变量名称以避免冲突,正如 ughoavgfhw 所建议的那样。
    • @DavidGelhar 所以子类的属性会覆盖超类的属性?
    【解决方案3】:

    好吧,我想澄清一下,title 是 UIViewController 中的预定义对象,因此您不能创建自己的具有相同名称的对象,用其他东西更改它,看看它不会给您那个错误。

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多