iOS-property属性介绍
Ios property属性详解
Property是Objective-c为自动生成setter和getter方法而加入的属性。其不仅可以帮助我们管理存储器还有一些其他特殊作用比如多线程控制、内存管理。
@property的关键字分为三类:原子性、操作性、内存管理。通常默认为atomic、readwrite、assign,因此其关键字最多可以设置三个。
原子性:
1) atomic:atomic指的是原子操作,意味着同时只有一个线程可以访问实例变量,可以在多线程操作时使用以确保线程安全。
2) nonatomic:nonatomic跟atomic正好相反,表示非原子操作,可以被多个线程同时访问。它的效率比atomic快,不能确保线程安全,一般在单线程中使用。
操作性:
1) readwrite:表示可以同时进行读和写操作(即拥有getter和setter方法)。
2) readonly:表示只有getter方法没有setter方法。
内存管理:
1) assign:assign用于值类型,如int、float、double、NSInteger、CGFloat等表示单纯的复制。另外delegate一般用assign
2) retain:在setter方法中需要对传入的对象进行引用计数加1的操作。就是对传入的对象拥有所有权使其不会被释放。
retain声明实例变量setter方法:
- (void)setRetainStr:(NSString *)RetainStr {
if (_RetainStr!=RetainStr) {
[_RetainStr release];
_RetainStr=[RetainStr retain];
}
}
3) strong:strong是retain的一个可选的替代。和retain的意思一样表示实例变量对传入的对象拥有所有权,即强引用(strong)。
4) weak:在setter方法中对传入的对象不进行引用计数器加1操作即对传入的对象没有所有权。当对象释放后永weak声明的实例变量之乡nil。
5) copy:copy为深复制,指的是实例变量对传入对象的副本拥有所有权。修改副本原对象不发生改变。
转载于:https://www.cnblogs.com/love-xin/p/4373955.html
iOS-property属性介绍相关推荐
- iOS屏幕尺寸和分辨率了解
1.截至目前为止,主流的iOS设备屏幕有以下几种: --------------- iPhone ---------- -------- iPad ------------ 2.iOS设备屏幕分 ...
- ios plist_iOS属性列表(plist)示例
ios plist There are many better ways to keep persistent data in our application rather than hardcodi ...
- iOS 打点上报、无痕埋点
最近研习了美团等大厂的一些埋点方案. 还要感谢大神<xuhaoranLeo>的指点.(既然大神没空写博客.但我可以代劳哈). 本文的宗旨是尽量全面.精简.满足我能想到尽量多的埋点需求. 主 ...
- 2018 iOS 面试题大全(补充完整版)
原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 整理的一些iOS面试相关问题,持续更新,敬请关注 2018 iOS面试题大全---全方面剖析面试 1.2018 ...
- 面向对象编程之属性方法property
面向对象编程之属性方法 八股文如下: property属性介绍 property属性就是负责把一个方法当做属性进行使用,这样做可以简化代码使用.当修改值或者设置值的时候只需要像属性那样使用. 定义pr ...
- 【IOS 开发学习总结-OC-60】ipad应用开发的一些知识
[IOS 开发学习总结-OC-60]ipad应用开发的一些知识 ipad与iPhone上 管理有层次的工作流的不同 iPhone上:通过NavigationController,用户可以从上一层界面A ...
- iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍) 本来仅仅是打算介绍一下addChildViewController这种方法的,正好今天朋友去换工作面试问 ...
- IOS之@property 的理解
大神的bolg: http://www.cocoachina.com/ios/20150803/12872.html @synthesize合成实例变量的规则是什么? @synthesize表示由编译 ...
- 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...
最新文章
- Java Timer 定时器的使用
- day1简述、输入输出、运算符、条件语句、文件读写、三元运算
- python通过什么连接数据库_python中常用的各种数据库操作模块和连接实例
- 用python定义一个员工类_python3 类的定义
- 【cJSon】cJSON学习笔记(一)
- 走出囚徒困境的方法_囚徒困境的一种计算方法
- PWA(Progressive Web App)入门系列:Sync 后台同步
- qt android 网络编程实例,QT网络编程Tcp下C/S架构的即时通信实例
- 技术人的折腾(二)-缺少的东西,你迟早要补起来
- [人脸识别]什么叫One-shot learning
- dcs world f15c教学_视频教学知识归纳 | 广东中考必备英语:中考语法知识 冠词
- 2014年十大云计算发展趋势分析及预测
- 书单丨压箱底儿的10本传世计算机经典著作
- jqgrid 列排序
- ajax回调函数 异步延迟
- Excel如何如何比较两列同行内容是否一致
- c语言常用的运行速度优化,C语言程序设计优化(提速)
- C语言将一个十进制数转化为二进制
- HDU 5242 上海大都会 G题
- vue页面自适应屏幕宽高_vue组件页面高度根据屏幕大小自适应
热门文章
- 《Python编程从入门到实践》第10章文件和异常动手试一试答案(附代码)
- 请不要把数据分析和机器学习混为一谈
- C++ vector类型要点总结(以及各种algorithm算法函数)
- OpenCV属性页配置问题~
- 用python写helloworld_Python基于Tkinter的HelloWorld入门实例
- c语言调用机器码,演示几种用C语言来执行shellcode(其实也就是机器码)的方式
- linux几种常见的文件内容查找和替换命令
- vue 类型字段除了用select框_10个好用的 HTML5 特性
- [BZOJ3669] [NOI2004] 魔法森林 LCT维护最小生成树
- Leetcode883.Projection Area of 3D Shapes三维形体投影面积