2013-02-04 50 views
2

我的代碼:無法設置的NSString財產,崩潰

 NSArray *keys = [piecesDict allKeys]; 
    //keys are NSStrings of sprite names, piecesDict is NSDictionary 

    for(int i = 0; i < piecesDict.count; i++){ 
     PuzzlePiece *piece; 
     id key = [keys objectAtIndex:i]; 
     piece.keyName = key; } 

的崩潰是piece.keyName = key確切的代碼。我得到EXC_BAD_ACCESS.keyName財產是(nonatomic, retain)。我試圖用keyNSString *或鑄造(NSString *)key無濟於事。

我在這裏錯過了什麼?

+1

你初始化了'piece'嗎? –

+1

如果你對該分配的訪問不好,最有可能的是,「piece」已被清理,儘管它也可能是「key」已被清理。最簡單的是NSLog在分配之前,看看哪個是壞的。 –

回答

3

您不初始化piece,您只需聲明一個指針並將其懸掛在空中。它會指向隨機廢話和崩潰。你需要將其分配到合適的實例:

PuzzlePiece *piece = [[PuzzlePiece alloc] init]; // or whatever 

並認真:試圖使iOS應用程序之前就學習C以及或您要拍攝自己以及使用者的腳。

+1

好吧,我保證這是我過去和將來都會變得更糟的。我在重構代碼時沒有寫出新鮮的代碼,所以我錯過了它。 – user339946

+0

@ user339946對不起,我以爲你不知道這是必要的。 – 2013-02-04 23:43:38

+0

爲什麼downvote? – 2014-02-10 12:33:18