Управление памятью в object-c - это то, что тоже требует некоторого привыкания.Я лично позволил оператору справиться со всем за меня.Это означает, что каждый раз, когда я что-то выделяю, я просто делаю это с автоматическим выпуском.ОС будет обрабатывать релиз для меня, когда это необходимо.Единственный раз, когда возникает проблема, это когда вы повторно используете объект в той же области, ОС отправит ему слишком много выпусков и освободит память, прежде чем вы захотите это тоже.Вот пример
//This code will result in a memory crash
CustomObject *coolThing = [[[CustomObject alloc] init] autorelease];
[coolThing setAwesomeLevel:10];
[array addObject:coolThing];
[coolThing setAwesomeLevel:7];
[array2 addObject:coolThing];
Вместо этого вы бы использовали
//Working code
CustomObject *coolThing = [[CustomObject alloc] init];
[coolThing setAwesomeLevel:10];
[array addObject:coolThing];
[coolThing setAwesomeLevel:7];
[array2 addObject:coolThing];
[coolThing release];
Теперь, чтобы использовать авторелизы с вашим кодом, все, что вам нужно сделать, это добавить их в allocs.Вот почему ваш код протекает.Когда вы добавляете его в объект webView, он увеличивает свою учетную запись.И когда вы покидаете эту область, он имеет учетную запись хранения 2, но вы отправляете ему только один выпуск (его сохранение останется на 1 и никогда не освободит память).
UISwipeGestureRecognizer *swipeRight = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRightAction:)] autorelease];
[(UISwipeGestureRecognizer *)swipeRight setNumberOfTouchesRequired:2];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
swipeRight.delegate = self;
[webView addGestureRecognizer:swipeRight];
UISwipeGestureRecognizer *swipeLeft = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftAction:)] autorelease];
[(UISwipeGestureRecognizer *)swipeLeft setNumberOfTouchesRequired:2];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeft.delegate = self;
[webView addGestureRecognizer:swipeLeft];
, если вы это сделаетеесли вы не хотите использовать автоматическое освобождение, просто добавьте несколько выпусков после добавления жестов в веб-представление.
[swipeRight release];
[swipeLeft release]