学习日记-property的参数解析
来源:互联网 发布:mp3购买推荐淘宝网 编辑:程序博客网 时间:2024/06/12 21:14
@property在OC中,特别是Xcode环境编写中,随处可见。这源于它的参数非常丰富,因此功能也十分强大。下面我就他的参数做一个简单的示例。
1、生成相关的get和set方法参数:readwrite/readonly
在编程中,我们为了类的成员变量的安全性,不允许外界随便修改和访问,会经常把这些成员变量做个一个包装—名曰封装。在以前我们经常用这种方法来封装我们的成员变量,例如,
- - (void)setAge :(int)age
- {
- _age = age;
- }
- - (int)age
- {
- return age;
- }
但是,我们发现每一个成员变量都需要做上述的封装,但是他们的格式都一样,因此Xcode给我们提供了一个函数property。运用@property可以让Xcode自动生成set和get方法。常用格式:@property int age(生成声明);@synthesize age = _age(生成实现的)
在Xcode4.4以后@property int age包含了@synthesize age = _age功能。它能生成带下划线的成员变量和声明实现。但是它有以下特性:当没有成员变量时,它生成的成员变量就是一个private的变量;当我们自己写了set和get方法后他就不会给我们生成带下划线的成员变量;当我们只写了set或者get方法时,他会主动补齐另一种方法。
但是在实际编写中,我们并没有写property的参数,那是因为它默认的是readwrite,即@property(readwrite)int age;@property(readonly)int age就是只生成get方法不生成set方法,即只读。
新写法:
- @property int age;
2、内存管理的相关参数:retain/assign
在做内存管理的时候,我们之前一直是在set方法加入retain/release来计数对象,但是Xcode4.4以后他给我们提供了智能的内存管理,即使property自动生成对象的内存计数器。原来set的生成方法,如下:
- - (viod)setName :(NSString *)name
- {
- if(name != _name)
- {
- [self realease];
- _name = [name retain];
- }
- }
新用法如下:
- @property(retain)NSString *name;
3、set和get的方法名的改变:setter = ***/getter = ****
有时候我们想要改变set和get的方法名称的时候我们@property也提供一个参数来改名字,用法如下:
- @property(setter = setMyName,gtter =myName, retain)NSString *name;
4、Xcode 中ARC中的强弱指针:weak/strong
在ARC中一个对对象的指针的修饰的参数即,weak/strong。这weak/strong代表强弱指针,它们只有对OC对象才使用,因此能代替retain这个参数。一般情况下property默认为strong,即,@property(strong)(NSSTring *)name。在我们对那种相互引用,即发生循环时,我们给其中的一个定义为weak,弱指针。
用法:
- @property(strong)NSString *name;
- 学习日记-property的参数解析
- 黑马程序员--IOS学习日记:09--property参数
- OC中property的参数解析
- 关于@property参数的全面解析
- 十、oc中@property参数的学习
- IOS学习—@property的解析
- @property的属性参数
- @property的参数说明
- @property的参数
- @property的参数
- 枚举的@property参数
- 黑马程序员-----@property参数学习
- Hibernate的Property解析
- Hibernate的Property解析
- Hibernate的Property解析
- 黑马程序员_object c学习日记④_内存管理二:@property参数强化、@class及autorelease
- @property 参数(property 的进阶用法)
- 黑马程序员-我的第十三篇学习日记:OC中dealloc方法和@property作用
- 第十二届浙江省大学生程序设计大赛-Demacia of the Ancients
- IE中js不兼容new Date()带参
- char 与 unsigned char的本质区别
- html中锚点的使用
- Deep Learning(深度学习)学习笔记整理系列之(七)
- 学习日记-property的参数解析
- js函数的几种写法
- MiniTwitterSimulate记住密码
- 关于皕杰报表授权出现的几种错误
- 几种常见的排序算法,选择排序,冒泡排序,希尔排序,堆排序,快速排序,归并排序,基数排序的比较
- 安卓电源键
- Android批量图片加载经典系列——Volley框架实现多布局的新闻列表
- 读取jar包中图片文件,并转换为BufferImage
- Java学习——何为JNDI