2012-03-21 15 views
0

私はコンパイラである可能性があると思われるエラーがあります...私は専門家ではありませんが、専門家と全く同じ動作でいくつかのコードをチェックしました。それを理解する。プロパティが無効なアドレスで開始されています

Iセットアップなどのプロパティ: @interface aViewControllerは()

@property (nonatomic, strong) NSArray *listOfTitles; 
@end 

@implementation aViewController 

@synthesize listOfTitles = _listOfTitles; 

- (NSArray *)listOfTitles 
{ 
    if (!_listOfTitles) 
     _listOfTitles = [NSArray arrayWithObjects:@"first", @"second", @"third", @"fourth", nil]; 
    return _listOfTitles; 
} 

しかし、アプリケーションがクラッシュし(配列はより複雑であるとのUITableViewCellに設定textLabel.textプロパティに役立つであろう)。

NSArrayには常に無効なアドレス(0x00000001)が付いています。私は何が欠けていますか?これは怠惰なインスタンス化を行う適切な方法ではありませんか?

他のプロジェクトでは、私が言及したように、他のクラスと全く同じこと(0x00000001でインスタンス化されたプロパティ)を経験しました。だからこそ私はコンパイラが問題であると思っています。しかし、実際には、私は解決のためのすべての耳です!...

+0

ARCでコンパイルしていますか?そうでない場合は、あなたの記憶を正しく管理していません。もしあなたがそうであれば、どのように値を調べていますか?イルダーズを見るのに影響するlldbにバグがあります。 –

+0

ヘッダに_listOfTitlesという名前のiVarがありますか? – lnafziger

+0

@lnafziger:ivarは '@synthesize listOfTitles = _listOfTitles;'ディレクティブによって作成されます。 –

答えて

0

最も明白な解決策は、init関数でivarをnilに設定することです。

-(id)init{ 
    if (self = [super init]){ 
     _listOfTitles = nil; 
    } 
} 

すべてのivarsはnilに初期化する必要があるので、実際の質問はなぜあなたのために行われないのですか?私はそれが.mファイルで宣言されているプロパティと関係があると考えています。いずれにせよ、それはあなた自身が象牙をまっすぐに害することはありません。

+0

あなたの答えをありがとう。残念ながら、それは動作を変更しませんでした。私はまだ無効なアドレスを取得します。 NSArrayの値には何の影響もありません... – invalidArgument

関連する問題