在导航基于应用程序,我初始化我的应用程序委托阵列时不使用自我。 当在RootViewController的的的cellForRowAtIndexPath访问:,所有的数组对象在那里,我可以看到它是一个NSCFArray。 一旦应用程序加载,我点击表格单元格和didSelectRowAtIndexPath方法:,同一阵列有一个类型的NSArray,没有对象,我得到一个EXC_ BAD_ACCESS错误。 如果我先于阵列的应用程序委托自我,一切都很好。 这是为什么?
下面是应用程序的委托.h文件中:
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navigationController;
NSMutableDictionary *aDict;
NSArray *aArray;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) NSArray *aArray;
@property (nonatomic, retain) NSArray *aDict
@end
阵列和字典中.m文件进行合成。 我初始化这样的应用程序的委托.m文件数组:
aArray = [self.aDict allKeys];
据这样的访问这两个根控制器的方法:
theDelegate = [[UIApplication sharedApplication] delegate];
[theDelegate.aArray objectAtIndex:2];
只有当我到达didSelectRowAtIndexPath方法:它失败。 在应用程序的委托这样做使一切工作:
self.aArray = [self.aDict allKeys];
我没有做任何事情来myArray的的cellForRowAtIndexPath之间:和didSelectRowAtIndexPath方法:。 为什么它在第一个方案失败?