iOSiOS-开发

iOS-底层原理 10:strong©&weak底层分析

2020-09-19  本文已影响0人  Style_月月

iOS 底层原理 文章汇总

在clang编译的cpp文件中可以发现 strong & copy & weak 修饰的属性在编译的底层代码中是有区别的

strong & copy & weak 底层分析

这里就有疑问了,为什么copy修饰的属性使用了objc_setProperty,而strong修饰的没有

上述的几个name分别对应objc-781源码中的如下方法


对应的objc-781源码

然后通过汇编调试发现,最终都会走到objc_storeStrong

void
objc_storeStrong(id *location, id obj)
{
    id prev = *location;
    if (obj == prev) {
        return;
    }
    objc_retain(obj);//retain新值
    *location = obj;
    objc_release(prev);//release旧值
}

结论

补充知识: Type Encoding & Property Type String

Type Encoding-官方文档

Property Type String-官方文档

clang中的方法签名

Type encoding

clang中编译后,方法列表的这些字符的含义是什么


clang编译后的方法列表

@16@0:8为例

更多的可以查看官网的以下列表


Type encoding表

clang编译后的属性的attribute

clang编译输出了属性的attribute ,同样也可以通过property_getAttributes方法获取

clang编译后的attribute

更多的可以查看官网的以下列表


property type string表
上一篇 下一篇

猜你喜欢

热点阅读