IOS面试题object-c 149-152

news/2024/7/20 21:14:18 标签: ios, objective-c, 面试题, 面试
149. 简述使用 nonatomic 一定是线程安全的吗 ?
nonatomic 的内存管理语义是非原子的, 非原子的操作本来就是线程不安全的, 而 atomic 的操作是原子的, 但是并不意味着它是线程安全的,
它会增加正确的几率, 能够更好的避免线程的错误, 但是它仍然是线程不安全的.
当使用 nonatomic 的时候, 属性的 setter 和 getter 操作是非原子的, 所以当多个线程同时对某一属性进行读和写的操作, 属性的最终结果是不
能预测的.
当使用 atomic 时, 虽然对属性的读和写是原子的, 但是仍然可能出现线程错误: 当线程 A 进行写操作, 这时其他线程的读或写操作会因为该操
作的进行而等待. 当 A 线程的写操作结束后, B 线程进行写操作, 然后当 A 线程进行读操作时, 却获得了在 B 线程中的值, 这就破坏了线程安
全, 如果有线程 C 在 A 线程读操作前 release 了该属性, 那么还会导致程序崩溃. 所以仅仅使用 atomic 并不会使得线程安全, 我们还需要为线
程添加 lock 来确保线程的安全.
🚀🚀🚀🚀🚀🚀
150. 简述+ (void)load; 和 + (void)initialize; 有 什么用处 ?
当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息.
load 方法还是非常的神奇的, 因为它会在每一个类甚至分类被引入时仅调用一次, 调用的顺

http://www.niftyadmin.cn/n/5434944.html

相关文章

go docker sdk 第三章

go docker sdk 第三章 容器数据卷操作 创建数据卷 本地创建一个数据卷myvolume,并将容器/root 目录与容器卷关联,命令行docker volume inspect myvolume可查看本地数据卷存放位置 package containers_testimport ("context""fmt""log""…

深度学习pytorch——基本运算(持续更新)

基本运算——加、减、乘、除 建议直接使用运算符,函数和运算符的效果相同 代码演示: #%% # 加减乘除 a torch.rand(3,4) b torch.rand(4) # 这里a、b可以相加,别忘了pytorch的broadcast机制 print(ab) print(torch.add(a,b)) print(torc…

Stability AI推出StableLM:开源ChatGPT替代方案

稳定性AI推出StableLM:开源ChatGPT替代品 与效果**:稳定性AI强调,参数数量可能不是衡量LLM效果的准确指标。 数据集与性能 训练数据集:StableLM在一个基于The Pile的新实验数据集上训练,但规模是其三倍,…

AndroidStudio 由dolphin升级到giraffe,出现“gradle project sync failed“

1 现象描述 将AS由之前的dolphin版本升级到giraffe之后,接着打开以前的Android project,出现了"Gradle project sync failed…"的异常提示,在build面板中并没有出现project sync过程中报错的日志。 异常提示如下图所示&#xff1a…

万字长文深入浅出数据库连接池 HikariCP/Commons DBCP/Tomcat/c3p0/druid 对比

拓展阅读 万字长文深入浅出数据库连接池 HikariCP/Commons DBCP/Tomcat/c3p0/druid 对比 从零开始手写 mybatis (三)jdbc pool 如何从零手写实现数据库连接池 dbcp? 万字长文深入浅出数据库连接池 HikariCP/Commons DBCP/Tomcat/c3p0/drui…

c语言实现https服务器(纯享版)

参考 1.90行代码实现C语言版https服务器,基于openssl 2.使用OpenSSL生成自签名SSL/TLS证书和私钥 注意:证书和私钥文件(server.crt,server.key)的生成请参考此链接 代码 #define SERVER_PORT 8080 //设置端口号 #in…

Qt的XML文件读取测试01

用Qt读取XML文件中的配置并且进行打印。 主函数main.cpp进行模拟,DataManager进行数据读取,具体实现如下: Pro文件 QT - gui QT xmlCONFIG c11 console CONFIG - app_bundle# The following define makes your compiler emit warnings if…

HCIP —— 交换 (VLAN)

VLAN --- 虚拟局域网 在 HCIA 中 ,已经学过交换机的一些基础配置,下面进行回顾一些简单的内容。 1.创建VLAN VLAN ID --- 区别和标识不同的VLAN 使用范围:0-4095 , 由12位二进制构成。 0 和 4095 作为 保留的VLAN。 …