我想使用iCloud,但是當我在iOS 4.3 Simulator上編譯應用程序時,它會崩潰。iPhone iCloud應用程序在iOS 4編譯時崩潰
使dyld:找不到符號:_OBJC_CLASS _ $ _ NSMetadataQuery
我應該怎麼做,使之工作在iOS 3,4,5?
我想使用iCloud,但是當我在iOS 4.3 Simulator上編譯應用程序時,它會崩潰。iPhone iCloud應用程序在iOS 4編譯時崩潰
使dyld:找不到符號:_OBJC_CLASS _ $ _ NSMetadataQuery
我應該怎麼做,使之工作在iOS 3,4,5?
這些API已經與ios5一起啓動,因此您不能在模擬器4或以下版本運行它,但是對於發佈,您可以設置它應該支持的ios系列的最低部署目標。
通常的方法是使用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
}
我用NSClassFromString但沒有幫助。我犯了同樣的錯誤。 –
您使用的是iOS 5 SDK嗎? – huesforalice
我不會爲iOS 4.3和iOS 5以外的任何東西而煩惱。有太多東西在3中沒有。同樣,在應用商店購買東西的人可能更新了手機。 –
我sulotion是:
凡具備NSMetadataQuery更改ID:前
正常: - (無效)loadData:(NSMetadataQuery *)查詢; 更改爲: - (void)loadData:(id)query;
normal:@property(retain,nonatomic)NSMetadataQuery * query; 更改爲:@property(retain,nonatomic)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部署目標設置爲3.0。 –
那麼它會給你的問題,直到你不發佈它的應用程序商店它是應用程序商店的部署目標不開發測試目標.. – Ballu
所以我不能在iOS 4設備上測試應用程序? –