2011-12-03 58 views
0

如何以編程方式在objective-c中創建屬性?以編程方式在objective-c中創建屬性?

背景:

  • 如此有效,根據你從商店中讀取數據,對一類
  • 具體我想創造一些類型屬性來表示我的「事件類型」,我存儲創建屬性在覈心數據 - 因此而事件類型是在事件類型實體coredata,我可以在運行時讀取它們的類,然後引用它們列表「EventTypes.ACTIVE_EVENT」

的總體目標,我在心中是:

  • 保持類型在覈心數據存儲建模
  • 但仍然有一種方法來方便地訪問一個被管理目標類型的實例(例如ACTIVE_EVENT)通過使用簡單的屬性方法編程。
+0

可否請給我們一些示例代碼? –

回答

1

定期的Objective C屬性通常會導致編譯器爲getter和setter生成代碼。但是由於安全沙箱限制,iOS應用程序不允許添加任何新的可執行代碼,因此在運行時您不能以編程方式以與編譯程序相同的方式執行此操作。

您可以使用Objective C運行庫來模擬獲取和設置屬性,可能使用forwardInvocation:和methodSignatureForSelector:方法來處理無法識別的消息。例如,支持屬性狀態數據可以存儲在類對象所擁有的某些可變的屬性元素字典中。然後該對象可能會(更慢一點)行動,就好像它實現了您以編程方式創建的屬性一樣。

+1

您可以爲各種類型(id,int等)實現IMP類型。然後,您可以將它們動態添加到類中作爲方法並添加它們的屬性。 – 2011-12-04 00:36:57

+0

@ hotpaw2這種暗示有沒有直接的方法來做到這一點? (也就是說,我可以把你的建議看作是一種解決方法嗎?) – Greg

相關問題