2010-04-20 2 views
1

Вообще я называю мой другой вид класса, создав указатель делегата, а затем вызвать другой класс, используя ссылку ниже: -Лучший способ позвонить другому классу в iphone?

Первый способ: -

Mydelegate *ptr = (Mydelegate *)[[UIApplication sharedApplication]delegate]; 

[self.navigationController pushViewController:ptr.NextClasspointer animated:YES]; 

Второй способ: -

Создать указатель того класса, который и хотят назвать: -

NextClass *nextptr = [[NextClass alloc]initWithnibName:@"NextClass" bundle:nil]; 
[self.navigationController pushViewController:nextptr animated:YES]; 

[nextptr release]; 
nextptr = nil; 

Эти выше двух методов я обычно используется, но моя проблема заключается в го на котором лучше всего подходит для большого проекта, так что проблема с моим стеклом будет удалена. Я имею в виду, что проблема с памятью будет решена. И необходимо освободить указатель в первом и втором случаях, так как я освобождаюсь правильно или неправильно

Пожалуйста, помогите мне Спасибо, что в Advance

ответ

0

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

Однако, помните об этом, каждый раз, когда ваш пользователь хочет «просверлить» другой уровень в навигации, ему придется загрузить представление из файла nib; наоборот, каждый раз, когда они «поддерживают» навигационный стек, они будут выгружены. Обычно, если мои пользователи, вероятно, будут перемещаться вверх и вниз по стеку навигации, я все время сохраняю один экземпляр «дочернего» контроллера представления и выталкиваю его обратно в стек всякий раз, когда пользователь хочет перейти к нему.

Если у вас проблемы с памятью, я думаю, что это скорее всего вызвано тем, что объекты, используемые вашим NextClass, не были правильно выпущены при выгрузке/выпуске. Дважды проверьте, что все объекты, которые вы синтезируете/распределяете в объекте NextClass, выпускаются в методе ViewDidUnload.

Смежные вопросы