в моем проекте я создал класс viewTransistion
#import "viewTransition.h"
#import "quiz.h"
#import "mode.h"
#import "result.h"
#import "aboutGame.h"
#import "ViewController.h"
static UIView *cview=nil;
static quiz *quizObj=nil;
static mode *modeObj=nil;
static result *resultObj=nil;
static aboutGame *aboutGameObj=nil;
static ViewController *viewControllerObj=nil;
@implementation viewTransition
+(void) viewsTransitionCurrentView:(id)currentView toNextView:(NSString*)nextViewName
{
if(nextViewName == @"quiz")
{
quizObj = [[quiz alloc]init];
cview = quizObj.view;
NSLog(@"quizObj=%d", [quizObj retainCount]);
}
if(nextViewName == @"mode")
{
modeObj = [[mode alloc]init];
cview = modeObj.view;
NSLog(@"modeObj=%d", [modeObj retainCount]);
}
if(nextViewName == @"result")
{
resultObj = [[result alloc]init];
cview = resultObj.view;
NSLog(@"resultObj=%d", [resultObj retainCount]);
}
if(nextViewName == @"aboutGame")
{
NSLog(@"aboutGameObj=%d",[aboutGameObj retainCount]);
aboutGameObj = [[aboutGame alloc]init];
cview = aboutGameObj.view;
}
if(nextViewName == @"viewController")
{
viewControllerObj = [[ViewController alloc]init];
cview = viewControllerObj.view;
}
[UIView transitionFromView:[currentView view] toView:cview duration:2 options:UIViewAnimationOptionTransitionCurlUp completion:^(BOOL finished) {}];
[currentView release];
cview = nil;
}
@end
его цель - выполнить переход представления, чтобы мне больше не приходилось снова писать код
Сначала я создал метод и переменные этого класса как нестатические ...
Я проверил на устройстве, что я получаю утечки, возможно, потому что я выполняю выделение, а не освобождаю объекты в операторах if
если я освобождаю objs в последнем, я не могу выполнить переход вида, потому что при следующем просмотре, к которому я хочу перейти, уничтожено
......................................
чтобы проверить, что я преобразовал методы и переменные этого класса в статические, чтобы я мог проверить сохранение количества
причина, по которой я перешел в статический режим ... если каждый раз, когда создается новый экземпляр этого класса, я всегда получаю счет 1 текущего экземпляра
Теперь, когда я в первый раз выполняю это, все работает нормально, но если вы посмотрите на aboutGame, если block, то первое выполнение напечатает 0 в следующий раз, если я захочу снова перейти на эту страницу, строка NSLog становится зомби ???
......................................
в последней строке [выпуск currentView] должен удалить контроллер корневого представления ... но я не выделил init это, я не владелец, поэтому я должен выпустить его .. я видел код в книге, чтобы освободить представление контроллер.
......................................
, который является наилучшим способом реализации статической или нестатической ситуации такого рода
Я использую этот метод класса и переменную в качестве статического, и он работает нормально, без утечек, без зомби, без проблем ?????