【问题标题】:Why doesn't XCode realise that I've synthesised my property?为什么 XCode 没有意识到我已经合成了我的属性?
【发布时间】:2011-03-18 15:54:40
【问题描述】:

在我的界面中,我有:

#import <UIKit/UIKit.h>

@protocol AddCategoryDelegate;

@interface AddCategoryViewController : UIViewController {
    id <AddCategoryDelegate> _delegate; 
}

@property (nonatomic, assign, readwrite) id <AddCategoryDelegate> delegate;    
@property (nonatomic, retain) IBOutlet UITextField *textField;
@property (nonatomic, retain) IBOutlet UILabel *textLabel;    
- (IBAction)saveAction:(id)sender;

@end



@protocol AddCategoryDelegate <NSObject>

- (void)addCategoryViewController:(AddCategoryViewController *)addCategoryViewController didAddCategory:category;

@end

在我的实现中,我有:

#import "AddCategoryViewController.h"

@implementation AddCategoryViewController

@synthesize delegate = _delegate;
@synthesize textField;
@synthesize textLabel;

// methods

@end

但我不断收到来自 XCode 的以下警告:

属性“textLabel”需要 方法 'setTextLabel:' 被定义 - 使用@synthesize、@dynamic 或提供 方法实现。

属性“textLabel”需要 要定义的方法“-textLabel” - 使用@synthesize、@dynamic 或提供 方法实现。

这是 XCode 4 的错误,还是我做错了什么?

【问题讨论】:

    标签: cocoa-touch properties warnings xcode4


    【解决方案1】:

    值得注意的是:复制上述代码不会导致我的安装出现警告。你能确保真实代码中没有错别字吗?

    否则,您可以尝试从变量声明中删除 IBOutlet 关键字,并仅将其保留在属性声明中。这可能会让事情变得混乱......

    【讨论】:

    • 拥有 2 个 IBOutlets 似乎肯定是个问题;因为我认为 IB 会同时看到两者,而您将无法分辨哪个是哪个。此外,根本不需要声明 iVar; @synthesize 会自动完成。
    • 谢谢 - 我已经删除了 Ivar,但错误消息仍然相同。我已经在上面编辑了我的问题,所以它是实际代码的复制和粘贴,以防我遗漏了拼写错误。
    • 好的...谷歌搜索了一下,有人遇到了类似的问题。我从产品菜单中选择了“干净”,这似乎已经解决了!现在,如果有人愿意告诉我什么是“干净”,以及我刚刚做了什么...... :)
    • 您完全删除了所有中间构建信息,并迫使 Xcode 从头开始​​重新构建所有内容。显然它没有检测到一些问题,因此清理目标并重建它可以纠正这种情况。
    • 仅供参考:同样的问题,运行 clean 并没有解决。事实上,只要我点击干净,所有警告都消失了,除了那个......然后当它分析我的代码(~0.25 秒)时,另一个警告也出现了。关闭和重新打开项目对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2020-01-22
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多