Я некоторое время работаю над разработкой для iPhone. Впервые я так удивился управлению памятью в target-c :). но теперь я понял это немного.
Вопрос в том, что иногда я использую протокол в качестве атрибута класса, потому что я думаю, что его определение очень похоже на «интерфейс» в C # или Java. как показано ниже.
@protocol Shield
...
@end
// Interface
@interface Dragon {
id<Shield> shield
NSString * name;
}
@property (nonatomic,retain) id<Shield> shield;
@property (nonatomic,retain) NSString * name;
@end
но я всегда освобождаю любой объект атрибута в методе dealloc (). как показано ниже.
-(void)dealloc {
[name release];
[shield release]; // <--- Totally impossible. xcode said '-release not found in protocol'
[super dealloc];
}
Как видите, я не смог выпустить протокол. Так может ли это вызвать у меня проблемы с памятью в будущем? У вас есть другой способ справиться с этим решением, чтобы посоветовать мне?