2012-09-18 44 views
0

已經選中了這個問題:Weak linking UIPopoverBackgroundView 並已閱讀:http://www.marco.org/2010/11/22/supporting-older-versions-of-ios-while-using-new-apis#fnref:1弱鏈接popoverBackgroundViewClass,使其在正常工作<5.0 IOS

我在.h中聲明,並在.m文件實現了自定義PopoverBackgroundView。於是,在短短的一個文件,我實例像這樣

self.settingsPopover.popoverBackgroundViewClass = [CustomPopoverBackgroundView class]; 

從來就試圖做它像馬可在上面的鏈接說:

if ([UIPopoverBackgroundView class] != nil) { 
    self.settingsPopover.popoverBackgroundViewClass = [CustomPopoverBackgroundView class]; 
} 

但我得到同樣的錯誤推出時,我跑在4.3的ipad模擬器

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverBackgroundView 

我的基地sdk是IOS 5.1,我的目標部署也是5.1。我使用LLVM編譯器4.0。

任何想法?非常感謝!

回答

1

您是否嘗試過使用respondsToSelectorUIPopoverController setBackgroundViewClass相關的方法?請記住,除了正常的屬性語法之外,屬性會自動生成setter和getter方法,您可以使用它們。

你仍然收到鏈接錯誤的原因是因爲你仍然試圖調用該類中不存在的方法。

如果是整個班級不存在的情況,Apple建議使用NSClassFromString(@"UIPopoverController")並檢查返回的結果是否爲零。

+0

我還沒有任何屬性。問題是,該應用程序甚至可以達到我的代碼之前崩潰。通過將UIkit設置爲可選,它可以工作,但我不想那麼做 – pdrcabrod

+0

我知道你還沒有添加任何屬性。我的意思是,通過在一個不存在的類中使用一個屬性,這就是它崩潰的原因。在使用它之前,通過驗證類是否通過NSClassFromString存在,您的應用程序不會崩潰。 – lyptt