2011-09-18 11 views
0

appDelegate에서 viewController로 NSArray를 전달하려고하는데 데이터가 유지되지 않는 것으로 보입니다. 예 : 'courseArray'는 appDelegate의 값을 포함하지만 viewController의 값은 비어 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?delegate에서 viewcontroller로 데이터 전달하기 iOS

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  


    CourseSelectController *courseTimeTableView = [[CourseSelectController alloc] initWithNibName:nil bundle:nil]; 
    courseTimeTableView.courseArray = self.courseArray; 
    [courseTimeTableView release]; 

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    self.viewController = [[[WestminsterViewController alloc] init] autorelease]; 

    if([self.window respondsToSelector:@selector(setRootViewController:)]) 
    { 
     [self.window performSelector:@selector(setRootViewController:) withObject:self.viewController]; 
    } 
    else 
    { 
     [self.window addSubview:[self.viewController view]]; 
     [self.viewController.view setFrame:[self.window bounds]]; 
    } 
    [self.window makeKeyAndVisible]; 
    return YES; 

} 
+0

를 고정하여

시작? 당신은 그것을 '보유'하지 않았거나 다른 대상에게 그것을 '보유'할 수있는 기회를주었습니다. 이로 인해 문제가 발생할 수 있습니다. – dvorak

답변

0

당신은 CourseSelectController의 인스턴스에 courseArray을 할당 한 후 즉시 해제하여 해당 컨트롤러를 던져.

그런 다음 WestminsterViewController을 만들고이를 Windows의 루트보기 컨트롤러로 지정하지만 해당보기 컨트롤러에는 courseArray이 할당되지 않았습니다.

0

courseArray를 할당 한 직후 courseTimeTableView를 릴리스합니다.

0

코드에 심각한 문제가 있습니다.

두 번째 줄에서 courseTimeTableView.courseArray를 self.courseArray로 설정하면 self.courseArray가 nil을 반환합니다 (정규 합성 속성을 사용하는 경우).

그런 다음 세 번째 줄에서보기 컨트롤러를 해제하십시오! 보유 수는 1 뿐이므로 할당이 해제되어 더 이상 사용할 수 없습니다. 왜 당신이 그것을 할당 직후 courseTimeTableView``에`release`를 호출이 :

관련 문제