[英]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.