-viewDidLoadメソッドで初期化するivarNSArrayがいくつかあります。1つには文字列が含まれ、もう1つにはIBOutletsが含まれます。ただし、初期化すると、配列内のすべてのオブジェクトがスコープ外になり、メモリアドレスは0x0になります(Xcodeデバッガーによる)。ただし、同じオブジェクトを持つローカルNSArrayがある場合は、正常に機能します。ivarNSStringまたは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)に切り替えて、何の問題もありませんでした。助けてくれてありがとう!