2011-09-18 59 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(假设您使用的是常规合成属性)。

然后在第三行中,您释放视图控制器!它只有一个保留计数,因此它被释放并不再可用。

开始通过固定这些:)

相关问题