ObjC автоматический подсчет ссылок (ARC): слабый против присвоения против unsafe_unretained для делегата?

У меня есть класс:

@interface MyClass : NSObject
@property (weak) id delegate;
@end

и реализация:

@implementation MyClass
@synthesize delegate;
@end

Когда я реорганизую код для ARC, он говорит мне, что синтезировать "слабое" свойство разрешено только в режиме ARC/GC. Но из того, что я знаю, делегат может быть "слабым" в ARC, а также, если я изменю его на присвоение, он будет преобразован в unsafe_unretained.

Мой вопрос: означает ли это, что код перед преобразованием (в ARC) НЕ должен использовать ARC?

Спасибо!

1 ответ

Решение

Похоже, вы ориентируетесь на iOS 4.x

4.x добавил ARC, но не полный ARC, который получил iOS5+. В дуге iOS 4.x нет поддержки "слабого" ключевого слова, только unsafe_unretained. Если вы хотите использовать слабый вместо unsafe_retained, вам придется отказаться от поддержки iOS 4.

Разница между "слабым" и "unsafe_unretained" заключается в том, что "слабый" при установке будет равен нулю, а unsafe_unretained будет указывать на плохую (освобожденную) память.

Другие вопросы по тегам