oc和swift中的懶加載

2017.2.17

在TableView的代理方法中却汉,

- (NSInteger)tableView:(UITableView*)tableView ? numberOfRowsInSection:(NSInteger)section{returnself.dataArray.count;}

這句 return self.dataArray.count;

其實(shí)就是利用

@property (nonatomic, strong) NSArray *dataArray;

@property的特性病毡,為屬性生成了get和set方法,而這里調(diào)用的get方法伐脖,但是上述代碼中return self.dataArray.count會(huì)調(diào)用下面這句

- (NSArray *)dataArray {

return _dataArray

}

這樣調(diào)用慧脱,如果成員屬性dataArray開始沒有復(fù)制的拍皮,那么在使用的時(shí)候隧膏,調(diào)用get方法,不重寫的話包颁,會(huì)報(bào)錯(cuò)瞻想,空指針,所以一般我們會(huì)重新get方法

//重寫get方法- (NSArray *)dataArray{? ?if (nil == _dataArray){? ? ? ?_dataArray = [NSArray array];? ?}? ?return _dataArray}

這樣就防止了成員屬性沒有賦值的情況

綜上所述娩嚼,oc的懶加載其實(shí)就是調(diào)用成員屬性的get方法蘑险,初始化值,而swift的懶加載和oc不同

在swift存儲(chǔ)屬性必須初始化待锈,確認(rèn)類型,或者用可選類型嘴高,總之要確認(rèn)類型竿音,畢竟swift是類型安全語言,所以swift提出了lazy屬性拴驮,用法如下

//1.分析 NSArray 是一個(gè)閉包的返回值春瞬,而這是一個(gè)沒有參數(shù)的閉包lazyvardataArray:NSArray= {[]} ()//2.也可以寫成這樣 lazy var dataArray:NSArray = { return NSArray() }()//3.從plist文件加載lazyvardataArray:Array = {letwinePath =NSBundle.mainBundle().pathForResource("wine.plist", ofType:nil)!letwinesM =NSMutableArray(contentsOfFile: winePath);vartmpArray:Array! = []fortmpWineDictinwinesM! {varwine:XWWine=XWWine.wineWithDict(tmpWineDictas!NSDictionary)? ? ? ? ?tmpArray.append(wine)? ? ?}print("我就運(yùn)行一次")returntmpArray }()

上述代碼可以看成是一個(gè)代碼塊,然后self.dataArray的時(shí)候套啤,就執(zhí)行了代碼塊宽气,但是重復(fù)調(diào)用随常,lazy屬性的代碼塊只會(huì)調(diào)用一次,lazy修飾的是一個(gè)存儲(chǔ)屬性萄涯,兒存放的是閉包坪它。

懶加載就是惰性初始化绩社,即在變量第一次使用的時(shí)候才進(jìn)行初始化

swift中有兩種方式倆惰性初始化

1.簡單表達(dá)式

lazy var first = NSArray(objects: "1", "2")

2.閉包

lazy var second:String = {

return "second"

} ( )

注意:

不要忘記最后的小括號(hào)。只有加了小括號(hào),閉包才會(huì)在調(diào)用的時(shí)候立刻執(zhí)行个扰。

要類型聲明lazy var second:String,這樣Xcode會(huì)進(jìn)行類型檢查谈撒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坑律,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伯襟,更是在濱河造成了極大的恐慌猿涨,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姆怪,死亡現(xiàn)場離奇詭異叛赚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)片效,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門红伦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人淀衣,你說我怎么就攤上這事昙读。” “怎么了膨桥?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蛮浑,是天一觀的道長。 經(jīng)常有香客問我只嚣,道長沮稚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任册舞,我火速辦了婚禮蕴掏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘调鲸。我一直安慰自己盛杰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布藐石。 她就那樣靜靜地躺著即供,像睡著了一般。 火紅的嫁衣襯著肌膚如雪于微。 梳的紋絲不亂的頭發(fā)上逗嫡,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天青自,我揣著相機(jī)與錄音,去河邊找鬼驱证。 笑死延窜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雷滚。 我是一名探鬼主播需曾,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祈远!你這毒婦竟也來了呆万?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤车份,失蹤者是張志新(化名)和其女友劉穎谋减,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扫沼,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡出爹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缎除。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片严就。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖器罐,靈堂內(nèi)的尸體忽然破棺而出梢为,到底是詐尸還是另有隱情,我是刑警寧澤轰坊,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布铸董,位于F島的核電站,受9級(jí)特大地震影響肴沫,放射性物質(zhì)發(fā)生泄漏粟害。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一颤芬、第九天 我趴在偏房一處隱蔽的房頂上張望悲幅。 院中可真熱鬧,春花似錦站蝠、人聲如沸汰具。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郁副。三九已至减牺,卻和暖如春豌习,著一層夾襖步出監(jiān)牢的瞬間存谎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工肥隆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留既荚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓栋艳,卻偏偏與公主長得像恰聘,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吸占,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,844評(píng)論 0 6
  • 1晴叨、范型范型所解決的問題 函數(shù)、方法矾屯、類型:類兼蕊,結(jié)構(gòu)體,枚舉件蚕,元組類型孙技,協(xié)議參數(shù),返回值排作,成員函數(shù)參數(shù)牵啦,成員屬性類...
    我是小胡胡123閱讀 836評(píng)論 0 1
  • 20- 枚舉,枚舉原始值,枚舉相關(guān)值,switch提取枚舉關(guān)聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,297評(píng)論 1 6
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,234評(píng)論 3 25
  • 今天讀了一篇文章妄痪,文章的名字叫做《啥叫幸福哈雏?》在這篇文章里中,作者認(rèn)為: “你病拌夏,有人照顧你僧著,這就是幸...
    蒹葭essay閱讀 250評(píng)論 0 3