@ interface:
UIImageView *myImageView;
@property (nonatomic, retain) UIImageView *myImageView;
@ реализация:
@synthesize myImageView;
- (void)viewDidLoad
{
[super viewDidLoad];
self.myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
}
Что такое счетчик ссылок для myImageView?2 (1 из alloc, 1 из точечной нотации сохраняются) или 3 (1 из alloc, 1 из точечной нотации сохраняются, 1 из @property retain)
Имеют ли эти два оператора одинаковый счетчик ссылок?
self.myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
и
myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
Кроме того, я предполагаю, что вы освобождаете их в @implemenation и в методе dealloc, правильно?
РЕДАКТИРОВАТЬ:
Я не получил ответ, который хотел, возможно, мой вопрос расплывчат.Я понимаю, что такое точечная нотация, @property, @synthesize и как работает метод setter и getter.Что я не понимаю, так это то, что происходит при использовании «я».и без "я".в отношении сохранения счета.Я фактически запустил метод retainCount на объекте myImageView, и он подтверждает мой оригинал, «себя».В случае case имеется счетчик сохранения «два» (с помощью alloc и свойства retain, поэтому, вероятно, рекомендуется использовать там autorelease).Теперь это приводит к другому вопросу, если бы я не использовал autorelease, как мне это сделать?Выпуск один раз в viewDidLoad и еще раз в dealloc все равно приведет к утечке памяти, верно?
self.myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
NSLog(@"retain count dot: %d", [myImageView retainCount]);
2011-05-17 10: 01: 14.915 Тест [1249: 207] сохраняет счетчик точек: 2
myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
NSLog(@"retain count: %d", [myImageView retainCount]);
2011-05-17 10: 03: 14.715 Тест [1278: 207] сохранить счет: 1