2012-03-04 73 views
2

我已經在應用程序中確定了一個區域,我正在開發工廠方法模式看起來合適的地方。我對其他語言(C#,Java)中的這種模式非常熟悉,但我正在閱讀「可可設計模式」一書,其中包含關於動態創建的一章,其中介紹瞭如何使用NSClassFromString()方法。它的功能如下:目標C中的工廠方法模式:NSClassFromString()

在許多情況下,這種單一功能有效地將衆所周知的工廠方法模式減少爲一行代碼。

我想知道我是否應該使用這種動態創建方法而不是典型的工廠方法模式?動態創建方法是否每次都勝過正常方法,還是有時候比其他方法更合適?

現在,我傾向於使用常規工廠方法模式,但我想知道別人怎麼看?

問候, 尼克

回答

3

書中的要求是小強,我會說。

你應該在兩種情況下使用NSClassFromString

  • 您正在閱讀的類名在運行時的字符串。很顯然,如果您將類名稱作爲字符串獲取,則必須以某種方式將其轉換爲類對象,並且NSClassFromString是一種方法。如果您不信任字符串的來源,您應該測試字符串(或返回的類對象)對允許類的白名單。

  • 您正在弱化鏈接框架並使用不支持NS_CLASS_AVAILABLE功能的SDK /平臺。查看SDK Compatibility Guide瞭解更多關於這方面的信息。

在任何其他情況下,最好使用類似[MyClass class]這樣的表達式來獲取類對象。這樣,如果類不存在(例如,因爲拼錯了類名),編譯時會出現錯誤。