美文网首页
10.说一下对 retain,copy,assign,weak,

10.说一下对 retain,copy,assign,weak,

作者: lucdwy | 来源:发表于2019-01-17 10:28 被阅读0次

    Strong

    Strong 修饰符表示指向并持有该对象,其修饰对象的引用计数会加1。该对象只要引用计数不为0就不会被销毁。当然可以通过将变量强制赋值 nil 来进行销毁。

    Weak

    weak 修饰符指向但是并不持有该对象,引用计数也不会加1。在 Runtime 中对该属性进行了相关操作,无需处理,可以自动销毁。weak用来修饰对象,多用于避免循环引用的地方。weak 不可以修饰基本数据类型。

    assign

    assign主要用于修饰基本数据类型, 例如NSInteger,CGFloat,存储在栈中,内存不用程序员管理。assign是可以修饰对象的,但是会出现问题。

    copy

    copy关键字和 strong类似,copy 多用于修饰有可变类型的不可变对象上 NSString,NSArray,NSDictionary上。

    __unsafe_unretain

    __unsafe_unretain 类似于 weak ,但是当对象被释放后,指针已然保存着之前的地址,被释放后的地址变为 僵尸对象,访问被释放的地址就会出问题,所以说他是不安全的。

    __autoreleasing

    将对象赋值给附有 __autoreleasing修饰的变量等同于 ARC 无效时调用对象的 autorelease 方法,实质就是扔进了自动释放池。

    转自:https://github.com/liberalisman/iOS-InterviewQuestion-collection/blob/master/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/10.%E7%AC%AC%E5%8D%81%E9%A2%98.md

    相关文章

      网友评论

          本文标题:10.说一下对 retain,copy,assign,weak,

          本文链接:https://www.haomeiwen.com/subject/hlibdqtx.html