scrollView с управлением памятью в iOS, что очень странно вызвало EXC_BAD_ACCESS - PullRequest
0 голосов
/ 08 марта 2012

Сегодня я получил «EXC_BAD_ACCESS», поэтому я отлаживаю код для решения проблемы. Теперь я узнаю, где проблема в том, но я не знаю почему. Вы можете мне помочь?

в - (недействительно) dealloc { .... [выпуск self.scrollView]; // если я добавлю комментарий к этой строке выше, мое приложение будет работать, иначе оно умрет. ......

}

это места, где я использовал [scrollView]

@interface ChatFriendInfoController :UIViewController
{
    UIScrollView *scrollView;
}

@property (nonatomic, retain) IBOutlet UIScrollView * scrollView;

@implementation ChatFriendInfoController
@synthesize scrollView;

self.scrollView.frame = CGRectMake(0, 64, 320, 416);
self.scrollView.alwaysBounceVertical = YES;
self.scrollView.contentSize = CGSizeMake(320, 960);

[self.scrollView addSubview: infoTable];

Вот и все. Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

Если в строке @property для scrollView задано «retain», то функции доступа, которые создает для вас XCode, уже будут иметь встроенные функции сохранения и освобождения вызовов.

Итак, каждый раз, когда вы используете self.scrollview =, вы фактически вызываете [self setScrollView:], который освобождает любой предыдущий объект и сохраняет новый. Таким образом, вы можете освободить объект и установить для переменной значение nil, просто self.scrollview = nil;

С приведенным выше кодом я не могу сказать, выделяете ли вы и инициализируете ли новый объект UIScrollView. Если вы этого не сделали, то ничего не выпустить, и попытка сделать это приведет к сбою.

0 голосов
/ 10 марта 2012

Вы пытались отключить scrollView без использования self.

[scrollView release];

Остальное

self.scrollView = nil;
...