我有几个在我的 -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) 并且完全没有问题。感谢大家尝试提供帮助!