簡體   English   中英

在iOS 4上編譯時,iphone iCloud應用程序崩潰

[英]iphone iCloud app crashes when compiling on iOS 4

我想使用iCloud,但是當我在iOS 4.3 Simulator上編譯應用程序時會崩潰。

dyld:找不到符號:_OBJC_CLASS _ $ _ NSMetadataQuery

我應該怎么做才能使其在iOS 3、4和5上運行?

我的推測是:

NSMetadataQuery在哪里更改為id:ex

正常:-(void)loadData:(NSMetadataQuery *)query; 更改為:-(void)loadData:(id)query;

正常:@property(保留,非原子)NSMetadataQuery * query; 更改為:@property(保留,非原子)id查詢;

並檢查可用的iCloud:

if ([[NSFileManager defaultManager] respondsToSelector:@selector(URLForUbiquityContainerIdentifier:)]) {
        NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
        if (ubiq) {
            // Code for access iCloud here
        }
    }

使用NSMetadataQuery時:

id _query = [[NSClassFromString(@"NSMetadataQuery") alloc] init];
// Some code here
[_query startQuery];

玩得開心(^_^)

通常的方法是使用iOS 5 SDK進行編譯,然后將部署目標設置為您希望使用的最舊的iOS版本。 您可以在運行時檢查當前系統可以使用哪些類和方法。 例如,iOS 4上的用戶將無法使用iOS 5附帶的功能。

要檢查類的可用性,請執行以下操作:

if ( NSClassFromString(@"NSMetadataQuery") != nil ) {
  //do stuff with NSMetadataQuery here
}

要檢查方法的可用性,請執行以下操作:

if ( [myObject respondsToSelector:@selector(doSomething)] ) {
  //call doSomething on myObject
}

這些API是與ios5一起啟動的,因此您不能在模擬器4或更低的模擬器上運行它,但要發布,可以設置它應該支持的ios系列的最低部署目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM