2012-11-16 58 views
0

我用我的預加載圖像的泛濫代碼:預載圖片的iOS

NSMutableArray *test_loose_preload = [[NSMutableArray alloc] initWithCapacity:test_loose_array.count]; 

for (int aniCount = 0; aniCount < test_loose_array.count; aniCount++) { 

    UIImage *frameImage = [test_loose_array objectAtIndex:aniCount]; 
    UIGraphicsBeginImageContext(frameImage.size); 
    CGRect rect = CGRectMake(0, 0, frameImage.size.width, frameImage.size.height); 
    [frameImage drawInRect:rect]; 
    UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    [test_loose_preload addObject:renderedImage]; 

} 

test_loose = test_loose_preload; 

是否有可能以該塊內檢查的圖像已預先加載,無需預裝這一則更多?

感謝您的想法!

+0

我不知道它是否完全符合您的需求,但WWDC 2012視頻「構建,存檔和提交您的應用程序」詳細介紹了圖像加載,以最大限度地減少用戶的等待時間:https:// developer .apple.com/videos/wwdc/2012/ – j9suvak

回答

0

也許我誤解的問題,但在我看來像的圖像是「預加載」,如果你已經把它並將它塞進你的test_loose_preload數組中。我認爲你擔心在通過陣列之前其他一些線程可能會做同樣的工作。

如果是這樣,那麼您可以通過檢查[test_loose_preload objectAtIndex:aniCount]來檢查該結果,如果該結果不是零,則跳過該結果並繼續下一個索引。

0

offtopic:

您可以使用for each循環

for (UIImage *frameImage in test_loose_array) { 

    UIGraphicsBeginImageContext(frameImage.size); 
    ... 
    [test_loose_preload addObject:renderedImage]; 
} 
+0

你的意思不是這個嗎? for(int aniCount = 0; aniCount user1719539

+0

btw:沒有「.count」? for(UIImage * frameImage in test_loose_array){ – user1719539

+0

它不是更快但更易於閱讀。 – CarlJ