Предполагая, что под «представлением» вы на самом деле подразумеваете «экземпляр UIView»:
Представления сохраняют свои подпредставления, и поэтому, если представление освобождается, его подпредставления освобождаются, а количество их сохранений уменьшается на единицу.
Я не уверен, но предполагаю, что иерархия представлений реализована следующим образом:
@interface UIView : UIResponder {
NSArray *_subviews;
}
@property(nonatomic, retain) NSArray *subviews;
@end
@implementation UIView
@synthesize subviews;
- (void)dealloc {
[subviews release];
[super dealloc];
}
@end
Вы можете грубо сказать, что NSObject объявляет целое число без знака, которое является счетчиком удержания, например:
unsigned retainCount;
Тогда это будут реализации -[id<NSObject> retain]
и -[id<NSObject> release]
:
- (void)retain {
retainCount++;
}
- (void)release {
retainCount--;
if (retainCount == 0) {
[self dealloc];
}
}
person
Community
schedule
24.04.2011