Должны ли статические классы target-c наследовать NSObject? - PullRequest
1 голос
/ 03 ноября 2010

В моем проекте target-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 Ответ

2 голосов
/ 03 ноября 2010

Простой ответ - «да».

Или, более конкретно, среда выполнения ожидает, что объекты будут соответствовать протоколу NSObject, и самый простой способ сделать это - убедиться, что ваши объекты наследуются отNSObject класс.

...