为什么在NSArray InitWithObjects期间此代码会因EXC_BAD_ACCESS而崩溃

phi*_*hil 0 iphone objective-c uitableview nsarray

请注意下面的代码中的两个NSLOG语句.打印出"aaa",但"bbb"从未打印过.相反,模拟器与EXC_BAD_ACCESS崩溃.我知道这通常意味着我试图访问的对象过早地被释放.我只是想不通有什么问题......

更新:

这是我的.h

#import <UIKit/UIKit.h>


@interface vcAddCat : UIViewController  <UIPickerViewDataSource, UIPickerViewDelegate> {

NSManagedObjectContext *managedObjectContext;

IBOutlet UIPickerView * pickerView;
NSArray * _weights;
NSArray * _categories;
IBOutlet UILabel *lastCat;
IBOutlet UILabel *lastWeight;
Run Code Online (Sandbox Code Playgroud)

}

我没有任何数组的@property或@synthesize行...

这是我的.m的两个剪辑

- (void)viewDidLoad {

    [super viewDidLoad];
    NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);

    _categories=[[NSArray alloc] initWithObjects: @"Homework",@"Quizzes",@"Tests", @"Mid-Term Exam", nil];
;

    NSLog(@"aaa");

    _weights=[[NSArray alloc] initWithObjects: @"1",@"2",@"3",@"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"11", @"12", @"13", @"14", @"15", @"16", @"17", @"18", @"19", @"20", @"21",@"22",@"23", @"24", @"25", nil];


    NSLog(@"bbb");
Run Code Online (Sandbox Code Playgroud)

..这里是我发布阵列的地方......

- (void)dealloc {
[super dealloc];
[_categories release];
[_weights release];
NSLog(@">>> Leaving %s <<<", __PRETTY_FUNCTION__);
Run Code Online (Sandbox Code Playgroud)

}

phi*_*hil 6

好的 - 失败者警报.

对不起大家.当我早期测试时只需要插入10个物体,所有这些都在工作.一旦我开始,我添加了其余的对象(11 - 100),那就是它崩溃了.当我发布上面的代码时,我将对象列表截断为25个项目 - 似乎太多了.

好吧,对象26,36,46等都有一个拼写错误,我在字符串值之前省略了前面的'@'.

修复了这一点,我又回到了正轨.

感谢您的帮助,对蹩脚的错误感到抱歉.

菲尔