ObjC 记录_by jiang_ss 20150902
来源:互联网 发布:高校网络工程项目 编辑:程序博客网 时间:2024/06/18 18:07
六、属性声明/6.5 属性声明的修饰类型
声明类变量property的语法:
@property(属性参数1,属性参数2,…)类型名字
@propety (attributes)type name;
其中参数的主要分为4类:
1) 数据读写访问属性:readwrite(默认读写)/readonly(只有get方法)
2)内存设置属性:assign(default),retain or copy
3)多线程原子性属性:atomic(default)/nonatomic(防止线程安全:非原子化操作,该方法不需要多线程保护,节省开销,提高程序性能)
4)自定义设置访问方法名称属性:getter=…,setter=....(用于改变默认名称)
//其中各参数意义如下:
readwrite:产生setter/getter方法;
readonly:只产生简单的getter方法,没有setter方法;
assign:默认类型,setter方法中适用于基本数据类型的实例变量直接赋值,而不进行引用计数+1操作。
retain:setter方法中会对实例变量旧空间释放,使得新旧两个指针变量指向同一个对象(新对象),再进行retain操作,新空间引用计数再次加1。
copy:setter方法中会对实例变量旧空间释放,再对新对象进行copy操作,赋值给旧对象(两个指针变量分别指向各自的对象,互不影响)
atomic:支持多线程,如果使用多线程,有时会出现两个线程相互等待对方导致”死锁“,使用atomic会防止出现此情况,但是会消耗一定的资源。
nonatomic:禁止多线程,提高性能。(该方法不需要多线程保护,节省开销。)
变量的起别名:在类外对变量访问起保护作用(封装性);
例://在.h文件中声明
@property (nonatomic) int _radius; //给radius变量起别名_radius
//在.m文件中
@synthesize radius;
//主函数中:
circle.radius=100;//error:类外无法访问内部变量名称
circle._radius=100;//ok:访问使用别名(封装性)
getter=访问方法名:用户自定义访问变量的方法名。
setter=设置方法名:用户自定义设置变量的方法名。
七、类的组合
7.1组合的概念:在oc中,你可以使用像c++中类与类的关系来实现代码的复用,并提高程序的编写速率,即oc中类的组合关系。
例:Circle=XYpoint+radius;//圆类由点类组合而成(”has-a“关系)
具体实现:先定义XYpoint类的接口;再定义Circle类的接口。
声明类变量property的语法:
@property(属性参数1,属性参数2,…)类型名字
@propety (attributes)type name;
其中参数的主要分为4类:
1) 数据读写访问属性:readwrite(默认读写)/readonly(只有get方法)
2)内存设置属性:assign(default),retain or copy
3)多线程原子性属性:atomic(default)/nonatomic(防止线程安全:非原子化操作,该方法不需要多线程保护,节省开销,提高程序性能)
4)自定义设置访问方法名称属性:getter=…,setter=....(用于改变默认名称)
//其中各参数意义如下:
readwrite:产生setter/getter方法;
readonly:只产生简单的getter方法,没有setter方法;
assign:默认类型,setter方法中适用于基本数据类型的实例变量直接赋值,而不进行引用计数+1操作。
retain:setter方法中会对实例变量旧空间释放,使得新旧两个指针变量指向同一个对象(新对象),再进行retain操作,新空间引用计数再次加1。
copy:setter方法中会对实例变量旧空间释放,再对新对象进行copy操作,赋值给旧对象(两个指针变量分别指向各自的对象,互不影响)
atomic:支持多线程,如果使用多线程,有时会出现两个线程相互等待对方导致”死锁“,使用atomic会防止出现此情况,但是会消耗一定的资源。
nonatomic:禁止多线程,提高性能。(该方法不需要多线程保护,节省开销。)
变量的起别名:在类外对变量访问起保护作用(封装性);
例://在.h文件中声明
@property (nonatomic) int _radius; //给radius变量起别名_radius
//在.m文件中
@synthesize radius;
//主函数中:
circle.radius=100;//error:类外无法访问内部变量名称
circle._radius=100;//ok:访问使用别名(封装性)
getter=访问方法名:用户自定义访问变量的方法名。
setter=设置方法名:用户自定义设置变量的方法名。
七、类的组合
7.1组合的概念:在oc中,你可以使用像c++中类与类的关系来实现代码的复用,并提高程序的编写速率,即oc中类的组合关系。
例:Circle=XYpoint+radius;//圆类由点类组合而成(”has-a“关系)
具体实现:先定义XYpoint类的接口;再定义Circle类的接口。
0 0
- ObjC 记录_by jiang_ss 20150902
- ObjC 记录_by jiang_ss
- ObjC 记录_by jiang_ss 20150901
- ObjC 记录_by jiang_ss 20150907
- ObjC 记录_by jiang_ss 20150908
- ObjC 记录_by jiang_ss 20150909
- -Objc
- -ObjC
- Objc
- objc
- 手把手VIM配置_by吴根
- 基于ObjC的iPhone开发成长记录 2009-04-12 01:26
- ios objc 方法调用记录插件(支持arm64+devlog):itracer v1.2
- JDBC连接MySQL程序_by 老大&stone
- CSDN第一篇博客_by vv
- php写的JS _BY master
- ObjC websites
- objc 语法
- 搭建wnmp开发环境
- 两种高性能I/O设计模式(Reactor/Proactor)的比较
- windows下 搭建 wxWidgets 开发环境
- 《深度学习的艺术:知乎采铜自选集》读书笔记
- Android使用pull方法解析XML文件
- ObjC 记录_by jiang_ss 20150902
- jquery 选择 取消 checkbox
- ps5
- structs原理
- linux安装teamviewer
- ObjC 记录_by jiang_ss 20150907
- 敏捷的原则和宣言
- Android——listView多选的实现
- Android中Handler引起的内存泄露