2012-12-16 50 views
2

我的應用程序的最低支持iOS版本是iOS5。而且我沒有做任何保存和恢復的狀態。 它在我自己的iphone4上運行良好,但是有些用戶抱怨說,當他們接聽電話或更改其他應用後,應用會重置。
因此,我認爲狀態恢復更爲嚴重,我想將其添加到我的應用程序中。 但是,我有圖像專輯功能,所以我打電話給ALAssetLibrary。
我需要創建完全相同的縮略圖視圖。
我有一些背景操作operationQueue,所以我需要知道他們的狀態並添加未完成的後臺操作。這有點複雜。 這是我的問題。
1.我沒有找到有用的示例代碼,項目。 (WWDC2012中的session208,但他們沒有在WWDC示例代碼發佈中發佈代碼),你知道嗎?
2.最好的辦法是什麼?關注iOS6還是自己製作?
有什麼區別。
3.對於ALAssetlibrary,查看圖像縮略圖,我如何實現狀態保存和恢復?iOS6應用程序狀態保存和恢復

回答

2

絕對使用蘋果的API,不要重新發明輪子。 WWDC 2012 session about this使用WWDC 2012應用作爲示例來展示該功能,但從未有任何演示項目可以與開發人員共享。然而,他們已經(最近)發佈了演示來演示它,你可以在這裏找到它:http://developer.apple.com/library/ios/#samplecode/StateRestore/Introduction/Intro.html

這聽起來像你的狀態是複雜的,我不確定你是否真的想恢復這些後臺操作。您可能會發現將用戶還原到應用程序更穩定的部分會更好。

對於您的ALAssetlibrary問題,您可以在您的視圖控制器的encodeRestorableStateWithCoder:實施中將ID保存到當前圖像中,確保您閱讀了文檔,您需要符合協議,設置恢復類如果你在代碼或使用xibs(不使用故事板)......你會保存ID做這樣的事情:

NSString * const ImageReferenceIDKey = @"ImageReferenceID"; 

- (void)encodeRestorableStateWithCoder:(NSCoder *)coder 
{ 
    NSString *objectID = nil; // get some ID that can relocate your image 
    [coder encodeObject:objectID forKey:ImageReferenceIDKey]; 
    [super encodeRestorableStateWithCoder:coder]; 
} 

- (void)decodeRestorableStateWithCoder:(NSCoder *)coder 
{ 
    [super decodeRestorableStateWithCoder:coder]; 
    NSString *objectID = [coder objectForKey:ImageReferenceIDKey]; 
    // get into the ALAssetlibrary and use the objectID to restore which image you had. 
} 

通知我打電話super最後的編碼方法,而是先在解碼方法。

你應該非常小心地改變用戶訪問他們照片的隱私,不要撞到他們,如果你試圖恢復照片,確保你仍然有權這樣做,或者你可能會崩潰。