在我的objective-c项目中,我有一个奇怪的,让我们说,功能我有一个类,如下:
#import <Foundation/Foundation.h>
@interface Convert /* : NSObject */ // <--- is that necessary?
+(int) toInt:(id) obj;
@end
@implementation Convert
+(int) toInt:(id) obj
{
return [obj intValue];
}
@end
当我单步执行代码时会发生什么事情很好,但是我在控制台中遇到了一个神秘的错误(即使代码完全正常,按预期工作):
2010-11-03 09:35:49.422 Tests[14066:5f03] *** NSInvocation: warning: object 0x9e424 of class 'Convert' does not implement methodSignatureForSelector: -- trouble ahead
2010-11-03 09:35:49.422 Tests[14066:5f03] *** NSInvocation: warning: object 0x9e424 of class 'Convert' does not implement doesNotRecognizeSelector: -- abort
然而,即使它说中止,代码仍然有效。但是,当我在没有单步执行这些代码行的情况下运行它时,它就会中止。发生了什么,为什么?
答案 0 :(得分:2)
简单的回答是“是”。
或者更具体地说,运行时期望对象符合NSObject
协议,最简单的方法是确保对象继承自NSObject
类。