15.5 Swift隐式强引用

来源:互联网 发布:linux获取cpu个数 编辑:程序博客网 时间:2024/04/28 01:44

        /**

         15.5-隐式强引用

         */

        

        class Student {

            var name:String

            init(name:String) {

                self.name = name

            }

            

            func show() ->Void {

                print("name==\(name)")

            }

            deinit {

                print("\(name) deinit!")

            }

        }

        

        // 此时, stu0 stu1都引用了同一个对象

        var stu0:Student? = Student.init(name:"Tom")

        var stu1 = stu0

        

        

        stu0 = nil

        stu1 = nil

        

        /**

         上面的这个是显式的强引用

         */

        

        

        

        /**

         什么是隐式的强引用呢?

         对象加入数组中,对象如果是引用数据类型,那么数组会强引用该对象。

         数组让该对象的引用计数加1

         */

        var stuarray = [Student.init(name:"zhangsan"), Student.init(name:"lisi")]

        stuarray[0].name ="zhangsanfeng"

        /**

         1)当某个对象不在属于数组时,该对象的引用计数会减1

         2)数组本身被销毁的时候,它包含的所有对象不再属于它,因此如果对象是引用数据类型,该对象的引用计数减1

         */

        

        

        /**

         这就是隐式强引用的一个例子。

         还有一些其他的例子,比如说我们的定时器,需要注册一个对象,定时器被这个对象引用也是一个强引用;

         子试图加入到父视图以后,父视图对子视图的引用也是强引用。

         只要不是循环强引用,就没啥事。

         */


0 0
原创粉丝点击