【发布时间】:2010-04-17 12:03:00
【问题描述】:
这不是实际的 Xcode 错误消息,而是一直困扰我的警告 很长时间。我没有找到删除它的方法,我想我可能已经超越了一些不成文的命名约定规则。
如果我构建一个类,通常扩展 NSObject,其唯一目的是执行某些任务并在它有数据时报告,我通常给它一个方便的构造函数,如“initWithDelegate”。
我在当前项目中第一次这样做是为了一个名为 ISWebservice 的类,它的协议如下:
@protocol ISWebserviceDelegate
@optional
- (void) serviceFailed:(NSError*) error;
- (void) serviceSuccess:(NSArray*) data;
@required
@end
在我的 ISWebservice.h 界面中声明,就在我的导入语句下方。
我有其他类使用名为“initWithDelegate”的便利构造函数。 例如。 “InternetConnectionLost.h”,但是这个类没有可选的方法,声明中没有@optional @required 标签,即它们都是必需的。
现在,每次我使用比 ISWebservice 编写的便利构造函数实例化其中一个类时都会弹出我的警告,因此在使用“InternetConnectionLost”类时,即使拥有“InternetConnectionLost”对象的整个类与“ISWebservice”类,没有导入,方法被调用,什么都没有,警告是:'ClassOwningInternetConnectionLost' 没有实现 'ISWebserviceDelegate' 协议
我不会破坏任何东西,不会在运行时崩溃或对我造成任何伤害,但是当我即将发布时,它已经开始困扰我了。此外,由于有几个类使用“initWithDelegate”构造函数命名,我的构建结果中有 18 个这样的警告,而且我不确定我是否做错了什么,因为在这种语言方面相当新。
希望有人能解释一下这个警告,谢谢:)
【问题讨论】:
标签: cocoa-touch xcode delegates naming-conventions