我正在开发一款使用导航控制器的应用。当我建立时,我没有错误或警告。我在myMethod
文件中定义了一个方法FirstViewController.m
,然后在viewDidLoad
中使用[self myMethod];
调用该方法。
当我从控制台构建并运行时,我什么也没得到。所以我把NSLog()
这样的陈述如下:
-(void) viewDidLoad {
NSLog(@"Entering viewDidLoad");
[self myMethod];
NSLog(@"Called myMethod");
[super viewDidLoad];
}
控制台永远不会返回第二个NSLog语句,这让我相信应用程序在调用方法时崩溃了。
我已经尝试将此模拟器设置为iOS 4.0.1以及iOS 4.1。我正在构建iOS 4.1 SDK。我非常感谢您提供的任何帮助。
更新:我运行了调试器,这似乎表明问题出现在myMethod
中。在收到“EXC_BAD_ACCESS”之前,我只通过该方法中的几行代码。代码行是:
-(void)myMethod {
NSMutableArray *someStuff;
NSMutableArray *someMoreStuff;
stuffSections=[[NSMutableArray alloc] initWithObjects:@"Some Stuff",@"Some More Stuff",nil];
someStuff=[[NSMutableArray alloc] init];
someMoreStuff=[[NSMutableArray alloc] init];
[someStuff addObject:[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Item Name",@"name",@"Item Picture.png",@"picture",@"http://theurl.net/",@"url",@"1",@"itemCode",nil]];
但似乎我无法通过第一次尝试向someStuff
数组添加内容。
答案 0 :(得分:0)
看起来“myMethod”中存在问题。如果我不得不猜测,我会说你试图引用一个自动释放但不保留的对象。
答案 1 :(得分:0)
初始化someStuff和someMoreStuff时,你错过了alloc。它应该是
someStuff = [[NSMutableArray alloc] init];
someMoreStuff = [[NSMutableArray alloc] init];
答案 2 :(得分:0)
您是否已经检查了两个MutableArrays?它们是否已成功分配?当应用程序进入通常由于内存管理问题导致的损坏状态时,您会收到“ EXC_BAD_ACCESS ”。我猜数组没有分配。
尝试以这种方式分配。
NSMutableArray * someStuff = [[NSMutableArray alloc]initWithCapacity:3];
NSMutableArray * someMoreStuff = [[NSMutableArray alloc]initWithCapacity:3];
添加一个断点,检查调试区域并确认它们是否已成功分配。如果每个数组都有一个内存,那么它们就会被分配。