函數(shù)和其他屬性都可以是Anyobject 只是聲明的時(shí)候要聲明成Any的數(shù)組
2019-01-18
二,在協(xié)議中的時(shí)候 可以把協(xié)議充當(dāng)成類
is判斷:是否遵守了該協(xié)議
as轉(zhuǎn)換 :轉(zhuǎn)換成該協(xié)議的對(duì)象,并且只能調(diào)用協(xié)議的方法
is判斷:是否遵守了該協(xié)議
as轉(zhuǎn)換 :轉(zhuǎn)換成該協(xié)議的對(duì)象,并且只能調(diào)用協(xié)議的方法
2019-01-18
最新回答 / AlbertDong
因?yàn)槭峭高^(guò)?airCon 這個(gè)引用變量修改的
其實(shí)這種初始化有點(diǎn)像一個(gè)類幫另一個(gè)類初始化了,小的那個(gè)類被大的引用著。china?.CapitalCity.Country這樣調(diào)用有點(diǎn)奇怪。
2019-01-17
樓下說(shuō)沒(méi)有關(guān)系其實(shí)還是有關(guān)系的,當(dāng)雙方初始化的完成都需要對(duì)方的時(shí)候,而且雙方屬性都是let和不能為空,這時(shí)候就需要用到unowned加上!屬性來(lái)解決了。
2019-01-17
Swift內(nèi)存管理筆記
一,一個(gè)對(duì)象是有生命周期的 , 它創(chuàng)建的時(shí)候在內(nèi)存開(kāi)辟的一個(gè)存儲(chǔ)空間,消失的時(shí)候(賦值nil或作用域結(jié)束)會(huì)調(diào)用deinit方法,就像OC的dealloc 和 C++的析構(gòu)一樣
二,一個(gè)對(duì)象在{}里面的創(chuàng)建,在括號(hào)邏輯做完后就會(huì)消失。就如函數(shù)執(zhí)行完或者for{}執(zhí)行完就會(huì)消失 這些都是系統(tǒng)幫我們做的
三,當(dāng)一個(gè)對(duì)象被其他對(duì)象引用或擁有的時(shí)候(在某個(gè)括號(hào)內(nèi),而且括號(hào)沒(méi)有執(zhí)行完),他的引用計(jì)數(shù)器加一。不管創(chuàng)建者引用是否還在,只要該對(duì)象引用計(jì)數(shù)不為0,他就不會(huì)被釋放。
一,一個(gè)對(duì)象是有生命周期的 , 它創(chuàng)建的時(shí)候在內(nèi)存開(kāi)辟的一個(gè)存儲(chǔ)空間,消失的時(shí)候(賦值nil或作用域結(jié)束)會(huì)調(diào)用deinit方法,就像OC的dealloc 和 C++的析構(gòu)一樣
二,一個(gè)對(duì)象在{}里面的創(chuàng)建,在括號(hào)邏輯做完后就會(huì)消失。就如函數(shù)執(zhí)行完或者for{}執(zhí)行完就會(huì)消失 這些都是系統(tǒng)幫我們做的
三,當(dāng)一個(gè)對(duì)象被其他對(duì)象引用或擁有的時(shí)候(在某個(gè)括號(hào)內(nèi),而且括號(hào)沒(méi)有執(zhí)行完),他的引用計(jì)數(shù)器加一。不管創(chuàng)建者引用是否還在,只要該對(duì)象引用計(jì)數(shù)不為0,他就不會(huì)被釋放。
2019-01-17
先使用一個(gè)協(xié)議封裝起來(lái)一些必須完成這個(gè)委托任務(wù)必須要實(shí)現(xiàn)的方法,如游戲的規(guī)則和tableview的行數(shù)。
創(chuàng)建一個(gè)類,里面有個(gè)delegate的屬性,這個(gè)delegate必須遵守協(xié)議。類內(nèi)部使用delegate實(shí)現(xiàn)任務(wù)內(nèi)部的邏輯,如游戲如何進(jìn)行和tableview如何通過(guò)代理的函數(shù)去布局,這些邏輯被委托方都不需要知道。
當(dāng)某個(gè)類需要成為委托方的時(shí)候,把這個(gè)delegate賦值給這個(gè)類,并在里面實(shí)現(xiàn)協(xié)議的方法,如tableView的屬性或游戲規(guī)則,這就完成了委托的任務(wù)了。
創(chuàng)建一個(gè)類,里面有個(gè)delegate的屬性,這個(gè)delegate必須遵守協(xié)議。類內(nèi)部使用delegate實(shí)現(xiàn)任務(wù)內(nèi)部的邏輯,如游戲如何進(jìn)行和tableview如何通過(guò)代理的函數(shù)去布局,這些邏輯被委托方都不需要知道。
當(dāng)某個(gè)類需要成為委托方的時(shí)候,把這個(gè)delegate賦值給這個(gè)類,并在里面實(shí)現(xiàn)協(xié)議的方法,如tableView的屬性或游戲規(guī)則,這就完成了委托的任務(wù)了。
2019-01-17
最新回答 / 強(qiáng)啊鐵汁
description在結(jié)構(gòu)體外了 鐵汁
為什么Struct中函數(shù)改變屬性要加mutating呢! 因?yàn)閟truct是屬于值類型的, 當(dāng)新值傳入 它需要拷貝一個(gè)新的副本去防止副本的修改影響到原屬性,所以在覆蓋原屬性的操作中系統(tǒng)不知道這個(gè)新的副本要放在那里,所以加上mutating系統(tǒng)就知道這是一個(gè)覆蓋操作 不應(yīng)該開(kāi)一個(gè)新的副本
2019-01-15
半個(gè)月看完,2018.11.26 打卡!感謝bobo老師的視頻,講的非常好!
2018-11-26