Как нажать viewcontroller (просмотр контроллера)?
-
10-07-2019 - |
Вопрос
Управление памятью - очень важная проблема в 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];