美文网首页iOS面试
iOS 内存管理面试题(说一下对 retain,copy,ass

iOS 内存管理面试题(说一下对 retain,copy,ass

作者: 程序员_秃头怪 | 来源:发表于2019-08-07 15:28 被阅读13次

    说一下对 retain,copy,assign,weak,_Unsafe_Unretain 关键字的理解。

    Strong

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

    Weak

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

    assign

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

    copy

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

    __unsafe_unretain

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

    __autoreleasing

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

    热文推荐

    2019 全网 iOS 面试题以及答案总结!

    相关文章

      网友评论

        本文标题:iOS 内存管理面试题(说一下对 retain,copy,ass

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