OC關鍵字--@dynamic

@dynamic這個關鍵詞,通常是用不到的。

它與@synthesize的區別在於:

使用@synthesize編譯器會確實的產生getter和setter方法,而@dynamic僅僅是告訴編譯器這兩個方法在運行期會有的,無需產生警告。

假設有這麼個場景,B類,C類分別繼承A類,A類實現某個協議(@protocol),協議中某個屬性( somePropety )我不想在A中實現,而在B類,C類中分別實現。如果A中不寫任何代碼,編譯器就會給出警告:

“use @synthesize, @dynamic or provide a method implementation"

這時你給用@dynamic somePropety; 編譯器就不會警告,同時也不會產生任何默認代碼。

@dynamic 就是要來告訴編譯器,代碼中用@dynamic修飾的屬性,其getter和setter方法會在程序運行的時候或者用其他方式動態綁定,以便讓編譯器通過編譯。其主要的作用就是用在NSManageObject對象的屬性聲明上,由於此類對象的屬性一般是從Core Data的屬性中生成的,Core Data框架會在程序運行的時候爲此類屬性生成getter和Setter方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章