【IOS】oc中property属性值详解

1. atomic与nonatomic

  • atomic:原子属性确保属性的读取和写入操作在多线程环境中是线程安全的。这意味着,当一个线程正在读取或写入属性时,其他线程不能同时访问该属性。虽然这提供了线程安全性,但它也引入了性能开销,因为每次访问都需要加锁和解锁。
  • nonatomic:非原子属性不提供线程安全性。多个线程可以同时访问和修改同一属性,这可能导致数据不一致。然而,非原子属性通常具有更高的性能,因为它们不需要加锁。

2. assign、retain与copy

  • assign:该属性通常用于基本数据类型(如int、float、BOOL等)和C指针。对于OC对象类型,assign只是简单地将指针值赋给属性,不会增加对象的引用计数。这意味着,如果对象被释放,而指针仍然保留,则会出现悬挂指针。
  • retain:该属性用于OC对象类型。当属性设置为一个对象时,该对象的引用计数会增加。当属性设置为nil或另一个对象时,之前的对象的引用计数会减少。这有助于防止内存泄漏,但可能会增加内存使用。
  • copy:该属性也用于OC对象类型,特别是可变对象(如NSMutableArray、NSMutableString等)。当属性设置为一个对象时,会创建一个该对象的不可变副本,并将属性设置为该副本。这有助于防止外部对象修改属性的值,但可能会增加内存使用。

3. strong与weak

  • strong:强引用表示属性对其拥有的对象具有所有权。当属性设置为一个对象时,对象的引用计数会增加。当属性被释放或设置为另一个对象时,之前的对象的引用计数会减少。如果引用计数降为0,对象将被释放。
  • weak:弱引用表示属性对其拥有的对象没有所有权。当对象被释放时,属性的值会自动设置为nil。这有助于防止循环引用,但需要注意的是,如果对象被释放,弱引用属性将不再有效。

4. readonly与readwrite

  • readonly :只读属性意味着属性只能被读取,不能被修改。这可以通过在属性声明中添加readonly关键字来实现。只读属性通常用于表示对象的常量状态。
  • readwrite:读写属性允许属性的读取和修改。这是属性的默认行为,可以在属性声明中省略。
相关推荐
游戏开发爱好者824 分钟前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
黑码哥1 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
2501_915106322 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106322 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
熊猫钓鱼>_>3 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
徐同保1 天前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵2 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte12 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone