Управление памятью для свойств типа "id <ProtocolName>variableName" - PullRequest
0 голосов
/ 19 мая 2010

У меня проблема со свойствами следующего типа:

id<ProtocolName> variableName;
.....
.....
@property (nonatomic, retain) id<ProtocolName> variableName;

Я могу получить доступ и использовать их просто отлично, но когда я пытаюсь позвонить

[variableName release];

Я получаю предупреждения компилятора:

'-release' not found in protocol(s)

Нужно ли определять метод освобождения в интерфейсе или как освободить память, зарезервированную для переменной?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Сделать ваш протокол принимает NSObject.

@protocol ProtocolName <NSObject>
...
3 голосов
/ 19 мая 2010

release находится в протоколе NSObject, поэтому вы можете объявить его как id<ProtocolName, NSObject> для работы в системе типов или привести его к простому id, чтобы предотвратить проверку типа в его классе.

1 голос
/ 19 мая 2010

Вы всегда можете добавить NSObject в список протоколов.

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