2011-09-18 58 views
0

我試圖從appDelegate傳遞一個NSArray到viewController,但似乎數據沒有被保留。例如。 'courseArray'包含appDelegate中的值,但在viewController中爲空。我究竟做錯了什麼?將數據從委託傳遞給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

你爲什麼要打電話給你分配後馬上就''courseTimeTableView' release'?你沒有「保留」它,或者讓另一個對象有機會「保留」它。這會造成問題。 – dvorak

回答

0

分配courseArrayCourseSelectController一個實例,然後立即釋放它扔掉控制器。

然後,您創建一個WestminsterViewController並將其指定爲窗口的根視圖控制器,但該視圖控制器從未分配過courseArray

0

那麼您在分配courseArray後立即釋放courseTimeTableView。

0

您的代碼存在一些嚴重問題。

在第二行中,當您使用self.courseArray設置courseTimeTableView.courseArray時,self.courseArray返回nil(假設您使用的是常規合成屬性)。

然後在第三行中,您釋放視圖控制器!它只有一個保留計數,因此它被釋放並不再可用。

開始通過固定這些:)

相關問題