2012-01-26 69 views
1

到目前爲止,我只看到CoreData使用@dynamic屬性訪問器定義。還有什麼其他方法可以讓屬性在Cocoa對象中獲得動態訪問器,以便它們可以被標記爲@dynamic@動態屬性訪問器在可可

回答

0

默認情況下,所有聲明的屬性都是@dynamic,但是您可以將它們聲明爲@synthesize。 @動態的意思是,你將在你的課堂上提供getter和setter實現,這可能與沒有任何i-var有關。

+0

我知道'@ dynamic'的意思。我想知道沒有CoreData模型的其他方式爲對象的屬性提供動態訪問器。 – Eimantas

+1

不清楚你的請求,但其中一個選項是一個相關屬性,在getter&setter中將與其他隱藏屬性一起工作 – Denis

0

您可以自己聲明屬性動態。例如,如果getter和setter方法由您的超類實現,這可能很有用。

+0

在沒有聲明同一類中的屬性的情況下,在超類中聲明訪問器有什麼意義? – Eimantas

1

您可以在運行時通過響應+resolveInstanceMethod:(這是Core Data的功能)或使用-forwardInvocation:來模擬它來生成訪問器。我已經看到這個用於支持任意(對象值)屬性的模擬模型對象,儘管在這種情況下屬性被聲明爲未實現的類別,所以沒有使用明確的@dynamic。 (其實我寫a stupid hack,這使得NSDictionary表現這種方式。)

我可以想象一種類似的方法被用於代理對象。