Вопрос

Управление памятью - очень важная проблема в iPhone. Поэтому я задаю очень общий вопрос. Есть два способа вызвать viewController другого класса.

Способ 1:

AnotherClassViewController *viewController = [[[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil] autorelease];

[self.navigationController pushViewController:viewController animated:YES];

Способ 2:

    #import "AnotherClassViewController.h"

    @interface ThisClassViewController : UIViewController{

      AnotherClassViewController *myViewController;

    }

    @property (nonatomic, retain) AnotherClassViewController *myViewController;

    @end

    @implementation ThisClassViewController

    @synthesize myViewController;

    - (void) pushAnotherViewController{

    if(self.myViewController == nil){

    AnotherClassViewController *tempViewController = [[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil];

    self.myViewController = tempViewController;

    [tempViewController release];
    }
    [self.navigationController pushViewController:myViewController animated:YES];
    }

- (void)dealloc{
self.myViewController = nil;
}
@end

Итак, очевидный вопрос в том, что является лучшим способом для вызова viewController другого класса? Way1 или Way2?

Предложения и комментарии приветствуются.

Пожалуйста, комментируйте и голосуйте.

Это было полезно?

Решение

Способ 1 проще.

Способ 2 позволяет первому контроллеру сохранить ссылку на контроллер push-представления. Если вам нужна эта ссылка, это будет полезно.

Здесь нет четкого ответа. Это зависит от ваших потребностей. Общее правило, конечно, состоит в том, чтобы сделать код максимально простым, но не более простым.

Другие советы

Хм ... Для простоты, почему бы просто:

MyViewController* viewController = [[MyViewController alloc] init];

[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top