【发布时间】:2011-08-14 17:46:25
【问题描述】:
我有几个在我的 -viewDidLoad 方法中初始化的 ivar NSArray。一个包含字符串,一个包含 IBOutlets。但是,当我初始化时,数组中的所有对象都超出了范围,并且内存地址为 0x0(根据 Xcode 调试器)。但是,当我有一个具有相同对象的本地 NSArray 时,它可以正常工作。初始化 ivar NSString 或 NSDictionary 都可以正常工作。
代码:
//.h file
#import <UIKit/UIKit.h>
@interface myViewController : UIViewController
{
NSArray *myArray;
}
@end
//.m file
#import "myViewController.h"
@implementation myViewController
- (void)viewDidLoad
{
[super viewDidLoad];
myArray = [[NSArray alloc] initWithObjects:@"aString", @"another string", nil];
NSLog(@"myArray equals: %@.", myArray);
}
@end
当我尝试使用该数组时,我得到一个 EXC_BAD_ACCESS 运行时错误。这是一个 Xcode 错误,还是我错过了一些关于 NSArray 的东西?更新:我正在使用 ARC。在我关闭 ARC 并进行干净的构建后,我不再遇到这个问题。这是 ARC 中的错误吗?
我不知道问题出在哪里,但我切换到了稳定版本的 Xcode (4.0.2) 并且完全没有问题。感谢大家的帮助!
【问题讨论】:
标签: objective-c ios cocoa-touch nsarray automatic-ref-counting