静态objective-c类必须继承NSObject吗?

时间:2010-11-03 13:44:25

标签: objective-c subclassing nsobject nsinvocation

在我的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

然而,即使它说中止,代码仍然有效。但是,当我在没有单步执行这些代码行的情况下运行它时,它就会中止。发生了什么,为什么?

1 个答案:

答案 0 :(得分:2)

简单的回答是“是”。

或者更具体地说,运行时期望对象符合NSObject协议,最简单的方法是确保对象继承自NSObject类。