我無法弄清楚這一點,希望有人能幫忙。NSArray代碼沒有運行
這是我的ViewController.h文件中的代碼。
{
NSArray *bgImages;
int currentBackground;
bool hasShrunk;
bool hasMoved;
CGAffineTransform translate;
CGAffineTransform sizeShrink;
CGAffineTransform sizeGrow;
}
這是我在ViewController.m文件中的一些代碼。
- (void)viewDidLoad {
hasMoved = NO;
hasShrunk = NO;
currentBackground = 0;
bgImages = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"WallPaper_01.png"],
[UIImage imageNamed:@"WallPaper_02.png"],
[UIImage imageNamed:@"WallPaper_03.png"],
[UIImage imageNamed:@"WallPaper_04.png"],
[UIImage imageNamed:@"WallPaper_05.png"],
nil];
sizeShrink = CGAffineTransformMakeScale(.25,.25);
sizeGrow = CGAffineTransformMakeScale(1,1);
_myBackground.image = [bgImages objectAtIndex:currentBackground];
}
這是問題。這段代碼和整個項目在模擬器上運行良好,沒有問題。當我將輸出更改爲實際的iPhone設備時,它會失敗。該代碼在分配名爲bgImages的數組上失敗。如果我在viewDidLoad上放置一個斷點並逐行放入它,它會執行到數組分配行然後跳過它。當它然後嘗試執行該行時:
_myBackground.image = [bgImages objectAtIndex:currentBackground];
它將失敗,因爲該數組爲空。我不明白這是如何在模擬器中工作的,但不是在實際的設備上。該代碼看起來不正確,但我在我的智慧結束試圖瞭解爲什麼這樣的行爲。我有錯誤地編碼了嗎?
什麼是確切的錯誤? _myBackground是否已初始化?另外,NSarray是一個錯字,應該是NSArray。 –
你的代碼是否實際上用小寫「a」表示「NSarray」?這可能是一個問題。 – bdesham
對不起。當我在此網站上輸入代碼時,這是一個錯字。我得到的錯誤是這樣的... ***終止應用程序由於未捕獲的異常'NSRangeException',原因*** - [__ NSArrayI objectAtIndex:]:索引0超出空數組的界限' – Doug