2011-10-31 81 views
4

爲了支持iCloud,我們鼓勵使用UIDocument子類。如果我定義了一個新的子類,請將項目目標版本設置爲3.0,並在使用我的新子類之前測試iOS 5的使用情況,代碼是否可以在iOS 4上運行,或者在子類中進行鏈接是否可以實現向後兼容?IOS 5 UIDocument子類向後兼容?

回答

2

UIKit可以弱鏈接,但如果您嘗試初始化UIDocumentUIDocument子類,結果將不確定。你需要這樣的東西:

if (NSStringFromClass(@"UIDocument")) 
{ 
    ... 
} 

這將使它完全無用於您的目的。所以你的問題的答案是否定的,涉及UIDocument的任何代碼都不會運行,但是你可以對這樣的代碼進行條件檢查。您最好找到另一種保存數據的方法。

+0

感謝您的回答。我不想在iOS4上使用UIDocument,只是不確定是否可以定義iOS5子類而不會使整個程序無法在以前的版本上啓動。我對你有幫助的答案的理解是,只要我確信UIKit是弱鏈接的(+在實際使用之前檢查版本或類的存在),它應該可以,因此,這似乎是在一個實施iCloud功能的正確通用解決方案向後兼容的方式。 – wordy

+0

然後請標記答案是正確的。 'c:' –

+0

完成。實際上,只要您設置了正確的Xcode目標(例如OS 3.1),默認鏈接設置就可以正常工作(新代碼可以弱連接)。已經證實了這一點,但要小心手動的弱鏈接libSystem.dylib或用最新的XCode構建的代碼將在OS 3.x上崩潰(因爲「塊」) – wordy

0

它需要鏈接UIDocument才能理解子類化UIDocument的實際含義。例如,如果您擁有Foo類的Bar類,並且Foo具有方法'doBaz',則可以在Bar實例上調用'doBaz',但如果鏈接器不知道Foo,它不知道Bar可以doBaz。

雖然你也許可以做一個薄弱環節。當iOS 4推出時也有類似的情況,iAds在iOS 3中不可用,這是當時iPad上最好的。

+0

所以答案是否定的。 –

+0

這取決於UIDocument是否可以弱鏈接。由於它是UIKit的一部分,我認爲是的,不。 – wjl