第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

@synthesize vs @dynamic,有什么區(qū)別?

@synthesize vs @dynamic,有什么區(qū)別?

墨色風(fēng)雨 2019-10-12 14:28:49
使用@propertywith @dynamic或with有什么區(qū)別@synthesize?
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

@synthesize將為您的屬性生成getter和setter方法。@dynamic只是告訴編譯器,getter和setter方法不是由類本身實現(xiàn)的,而是由其他地方實現(xiàn)的(例如超類或?qū)⒃谶\行時提供)。


@dynamic的使用例如是NSManagedObject(CoreData)的子類,或者當(dāng)您要為由超類定義的屬性(未定義為插座)創(chuàng)建插座時。


@dynamic也可以用于委派實現(xiàn)訪問器的責(zé)任。如果您在類中自己實現(xiàn)訪問器,則通常不使用@dynamic。


超類:


@property (nonatomic, retain) NSButton *someButton;

...

@synthesize someButton;

子類:


@property (nonatomic, retain) IBOutlet NSButton *someButton;

...

@dynamic someButton;


查看完整回答
反對 回復(fù) 2019-10-12
?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

看一下這篇文章 ; 在“運行時提供的方法”標(biāo)題下:


一些訪問器是在運行時動態(tài)創(chuàng)建的,例如CoreData的NSManagedObject類中使用的某些訪問器。如果要聲明和使用這些情況下的屬性,但又希望避免在編譯時對方法丟失的警告,則可以使用@dynamic指令而不是@synthesize。


...


使用@dynamic指令實際上告訴編譯器“不用擔(dān)心,一種方法即將出現(xiàn)?!?/p>


@synthesize另一方面,該指令在編譯時為您生成訪問器方法(盡管如“混合的綜合和自定義訪問器”一節(jié)中所述,它很靈活,如果實現(xiàn)了兩者,則不會為您生成方法)。


查看完整回答
反對 回復(fù) 2019-10-12
?
慕桂英3389331

TA貢獻2036條經(jīng)驗 獲得超8個贊

正如其他人所說,通常,您使用@synthesize來讓編譯器為您生成getter和/或設(shè)置,如果要自己編寫,則使用@dynamic。

還沒有提到另一個微妙之處:@synthesize 允許您自己提供getter或setter的實現(xiàn)。如果您只想為一些額外的邏輯實現(xiàn)getter,但讓編譯器生成setter(對于對象,編寫自己通常要復(fù)雜一點),這將很有用。

但是,如果您確實為@synthesize訪問器編寫了一個實現(xiàn),則該實現(xiàn)仍必須由實數(shù)字段來支持(例如,如果編寫,則-(int) getFoo();必須具有一個int foo;字段)。如果該值是由其他值產(chǎn)生的(例如,從其他字段計算得出),則必須使用@dynamic。


查看完整回答
反對 回復(fù) 2019-10-12
  • 3 回答
  • 0 關(guān)注
  • 886 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號