当我遵守协议时,关于分配给 id<UITextFieldDelegate> 的警告

Posted

技术标签:

【中文标题】当我遵守协议时,关于分配给 id<UITextFieldDelegate> 的警告【英文标题】:Warning about assigning to id<UITextFieldDelegate> when I'm conforming to the protocol 【发布时间】:2014-01-13 08:26:42 【问题描述】:

我的视图控制器符合 UITextFieldDelegate,但是当我尝试将文本字段的 .delegate 字段设置为 self 时,我收到警告:

“从不兼容的类型'AddReviewViewController *const __strong'分配给'id'”

我的头文件是这样的:

#import <UIKit/UIKit.h>

@interface AddReviewViewController : UIViewController <UITextFieldDelegate>
@property (nonatomic) int storeID;

@end

如您所见,我已将其声明为符合协议。在 .m 文件中,我有这个:

@property (strong, nonatomic) IBOutlet UITextView *reviewTextView;

在“@interface AddReviewViewController()”部分中

然后,在 viewDidLoad 我做:

_reviewTextView.delegate = self;

这就是我收到警告的地方。我试过清理和重建,然后重新启动 XCode。我在这里遗漏了一些明显的东西吗?我遵守协议....

编辑:感谢您的快速帮助。在我睡眠不足的状态下,我不断地重新阅读东西并发誓这就是我正在做的事情,但是是的,错字。几分钟后我无法标记答案,但问题已解决,谢谢!

【问题讨论】:

【参考方案1】:

在您的标题中,您有 UITextFieldDelegate 然后你声明UITextView。这两者之间有很大的不同。

编辑

@interface AddReviewViewController : UIViewController <UITextFieldDelegate>

@interface AddReviewViewController : UIViewController <UITextViewDelegate>

【讨论】:

【参考方案2】:

也许应该是UITextViewDelegate in :

@interface AddReviewViewController : UIViewController <UITextFieldDelegate>
@property (nonatomic) int storeID;
@end

【讨论】:

【参考方案3】:

由于这段代码,我收到了这样的错误:

@interface PlaceOrderController : UIViewController <     UINavigationControllerDelegate, UITextViewDelegate >

@property (weak, nonatomic) IBOutlet UITextField *dateForUserDOB;

为了解决这个问题,我使用了以下方法:

@interface PlaceOrderController : UIViewController < UINavigationControllerDelegate, UITextFieldDelegate >

@property (weak, nonatomic) IBOutlet UITextField *dateForUserDOB;

总结:使用 TextField 而不是 TextView

【讨论】:

以上是关于当我遵守协议时,关于分配给 id<UITextFieldDelegate> 的警告的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试将 Toggle 的输出分配给旧变量时,它说: Binding<Bool> is not convertible to <Bool>

OC —— 拷贝

如何在多个 GPU 节点上获取分配给 SLURM 作业的 GPU ID?

我如何知道如何遵守 Swift 中的特定协议?

关于那些各种各样的开源协议

当我完成向量时,是否需要调用clear()? [重复]