15 5 Swift隱式強引用

2021-07-25 13:28:09 字數 964 閱讀 8248

/**

15.5-

隱式強引用 */

class

student

func

show() ->

void

deinit }

// 此時,

stu0

和stu1

都引用了同乙個物件

varstu0:

student

? =

student

.init

(name:

"tom")

varstu1 = stu0

stu0 =

nil

stu1 =

nil

/**上面的這個是顯式的強引用 */

/**

什麼是隱式的強引用呢?

物件加入陣列中,物件如果是引用資料型別,那麼陣列會強引用該物件。

陣列讓該物件的引用計數加1

*/ varstuarray = [

student

.init

(name:

"zhangsan"

), student

.init

(name:

"lisi")]

stuarray[0].

name

= "zhangsanfeng"

/** (

1)當某個物件不在屬於陣列時,該物件的引用計數會減1

(2)陣列本身被銷毀的時候,它包含的所有物件不再屬於它,因此如果物件是引用資料型別,該物件的引用計數減1

*/

/**

這就是隱式強引用的乙個例子。

還有一些其他的例子,比如說我們的定時器,需要註冊乙個物件,定時器被這個物件引用也是乙個強引用;

子試圖加入到父檢視以後,父檢視對子檢視的引用也是強引用。

只要不是迴圈強引用,就沒啥事。 */

隱式解引用

引用和指標 引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下 int nvalue 5 int const pnvalue nvalue int rnvalue nvalue pnvalue and rnvalue evaluate identically.as a re...

隱式解引用

引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下 int nvalue 5 int const pnvalue nvalue int rnvalue nvalue 同樣,乙個const引用的行為就像乙個const指標指向const物件是隱式解引用。因為引用總是 點 來有效...

Swift隱式解析,可選,斷言

swift 可選 注意 c 和objective c 中並沒有可選這個概念。最接近的是 objective c 中的乙個特性,乙個方法要不返回乙個物件要不返回 nil,nil表示 缺少乙個合法的物件 然而,這只對物件起作用 對於結構體,基本的 c 型別或者列舉型別不起作用。對於這些型別,object...