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

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

Objective-C 中下列類屬性的寫法有何不同?

Objective-C 中下列類屬性的寫法有何不同?

慕尼黑8549860 2019-04-23 15:18:44
1.在.h文件中,例如:@interfacePullToRefreshView:UIView{ UILabel*lastUpdatedLabel; UILabel*statusLabel; CALayer*arrowImage; UIActivityIndicatorView*activityView;}2.在.h文件中,例如:@property(nonatomic,strong)UIScrollView*scrollView;3.在.m文件中,例如:@interfacePullToRefreshView@property(nonatomic,strong)NSArray*titles;@end4.在.m文件中,例如:@implementationTopicListViewController{PullToRefreshView*pull}簡而言之,是否是1.在頭文件中的是public屬性,在.m中的是private屬性?2.在@interface和@implementation中用大括號擴起來的和@property有何區(qū)別?(除了synthesize方面)3.一般情況下應(yīng)該如何寫?
查看完整描述

2 回答

?
慕俠2389804

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

假設(shè)不考慮使用@private聲明變量的這種特殊方式,在object-c里面,只要是聲明了的變量和屬性都可以在包含了這個聲明的.m文件里使用。所有東西都public當然不太符合面向?qū)ο笤O(shè)計里面的封裝性啦,那些直接寫在.m里面的變量和屬性就是為做到信息隱藏,保證封裝性,這種手法的官方名稱叫Category,算是編寫object-clib的必備手法了。因此,針對所有問題的答案:都是public的,只不過.m文件無法#import,間接的實現(xiàn)了private大括號括起來的是instancevariable(實例變量),只是簡單的數(shù)值,不能綁定get/set方法,不能自動retain/copy/atomic,就相當于一個簡單的跟著instance走的局部變量;property則是對get/set方法的語法封裝(所謂的語法糖),將兩個方法聲明變成一個property聲明,并且通過標注各種attribute幫你完成許多基本任務(wù)。我見過一些lib的寫法是將暴露給外部的聲明寫在Foo.h里面,然后不想暴露給外部的寫在Foo+Internal.h里面,通過這種約定告訴調(diào)用者,不要使用我內(nèi)部的變量、屬性和方法。個人比較喜歡這種做法。
                            
查看完整回答
反對 回復 2019-04-23
?
素胚勾勒不出你

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

直接寫在{}里面的是實例變量,前面寫上@property的是屬性。對于屬性來說,obj-c會自動給生成一個實例變量,然后在訪問屬性時(用get/set方法或者用obj.attr)會用到這個自動生成的實例變量并做一些其他額外的事情。
                            
查看完整回答
反對 回復 2019-04-23
  • 2 回答
  • 0 關(guān)注
  • 396 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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