Не могу создать приложение для симулятора iPhone - PullRequest
0 голосов
/ 13 января 2010

Я не могу собрать очень простую программу при сборке для симулятора iPhone. Однако он прекрасно компилируется для устройства!

Пример кода, который не нравится компилятору:

@protocol Invokable
- (id) invoke: (id)arg with:(id)data;
@end

@interface Worker : NSThread
{
  NSAutoreleasePool* memoryPool;  
}

- (void) invoke:(id)target selector:(SEL<Invokable>)selector arg:(id)arg data:(id)data;

//........    

@end

Проблема заключается в использовании SEL - компилятор жалуется "Квалифицированный тип не является допустимым объектом" при каждом использовании.

Я использую xcode 3.2.1 на Snow Leopard. Я действительно запутался в этом, потому что я не внес никаких изменений в свои конфигурации сборки.

1 Ответ

2 голосов
/ 13 января 2010

Ответ здесь неочевиден, но компилятор правильный. Тип SEL на самом деле просто typedef'd char*, а не объект Objective-C.

Из-за этого и того факта, что протоколы применяются только к объектам Objective-C, вы не можете указать протокол для типа SEL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...