objective-c在其对象拥有成员变量时,我们为了保持代码的封装,会将成员变量设置为@protected,并为成员变量编写setter和getter方法。

如:

@interface Person : NSObject
{
@protected
int _age;
}
- (int)get;
- (void)setAge:(int)age;
@end @implementation Person
- (int)get
{
return _age;
}
- (void)setAge:(int)age
{
_age = age;
}
@end

在Xcode中,为了让我们摆脱这种枯燥的格式化代码,增加了@property属性设置,使用@property属性,编译器会自动帮我们实现这些代码,

如:

@interface Person : NSObject
@property int age;
@end @implementation Person
@end

这段代码经过编译器编译后与上面的代码完全相同。

但是,在实际应用中,内存管理,多线程,成员变量是否只读等等需求很多,所以@property为我们提供了很多参数来实现这些不同的需求,如下:

1.内存管理相关:

*retain:release旧值,retain新值(适用于对象类型的成员变量)

*assign:直接赋值(默认参数,适用于基本数据类型的成员变量)

*copy: release旧值,copy新值

注:关于内存管理,请阅读http://www.cnblogs.com/yoran-yang/p/4293546.html

以retain为例:

@interface Person : NSObject
@property (retain) Book *book;
@end

等同于:

@interface Person : NSObject
{
@protected
Book *_book;
}
- (Book *)get;
- (void)setBook:(Book *)book;
@end @implementation Person
- (Book *)get
{
return _book;
}
- (void)setBook:(Book *)book
{
if(book != _book)
{
[book release];
_book = [book retain];
}
}
@end

2.读写控制相关

*readwrite:同时生成getter与setter的声明和实现(默认参数)

*readonly:只生成getter方法

3.多线程相关

*nonatomic:禁止多线程,变量保护,提高性能,读写成员变量的操作效率可以提高数倍(强烈建议在非多线程环境的程序加上此参数)

*atomic:线程安全的,性能低(默认参数为线程安全的,即加线程锁)

4.setter和getter方法的名称

*getter =(getter的方法名)

*setter =(setter的方法名)注意:此方法名必须加上后面的“:”。

objective-c在Xcode中@property相关参数的解释的更多相关文章

  1. 释义Oracle 11r2中并行执行相关参数

    因最近对现场某些服务器进行诊断和调整,用到了这类参数,因此对这类参数做了详尽的查阅和研究,现将该类参数释义如下,以方便同行和自己参考,禁止转载: 1.PARALLEL_ADAPTIVE_MULTI_U ...

  2. property相关参数介绍

    1.copy 使用类型 :NSString,block 2.assign使用类型 :delegate,int,float,NSInteger,bool,枚举,结构体... 3.retain使用类型 : ...

  3. 梯度优化算法总结以及solver及train.prototxt中相关参数解释

    参考链接:http://sebastianruder.com/optimizing-gradient-descent/ 如果熟悉英文的话,强烈推荐阅读原文,毕竟翻译过程中因为个人理解有限,可能会有谬误 ...

  4. Xcode 中armv6 armv7 armv7s arm64 i386 x86_64 归纳 (Architectures, Valid Architectures, Build Active Architecture Only)

    http://www.jianshu.com/p/09b445300d40 简介: armv7|armv7s|arm64都是ARM处理器的指令集 i386|x86_64 是Mac处理器的指令集 目前i ...

  5. spring 配置参数从配置文件中加载到PropertiesFactoryBean 和配置参数从数据库加载到PropertiesFactoryBean 的实现,及项目中的相关应用

    1.加载.properties文件中的配置参数加载到PropertiesFactoryBean容器中 <bean id="configProperties" class=&q ...

  6. 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)

    电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 目录 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 写在前面 正文 电机噪声 谐波的产生 什么 ...

  7. strong,weak, retain, assign的区别@property的参数

    strong,weak, retain, assign的区别@property的参数 先说经验 使用场合 copy:NSString,block, weak:UI控件,代理 strong:一般对象.自 ...

  8. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [转]iOS开发中@property的属性weak nonatomic strong readonly等介绍

    转载地址: http://www.lvtao.net/ios/504.html @property与@synthesize是成对出现的,可以自动生成某个类成员变量的存取方法.在Xcode4.5以及以后 ...

随机推荐

  1. [codevs2170]悠闲的漫步

    题目来源 http://codevs.cn/problem/2170/ http://www.tyvj.cn/p/1033 背景 USACO OCT09 5TH 描述 Bessie透过牛棚的大门向外望 ...

  2. vim+gdb+ddd+xxgdb精彩的程序调试

    //-------------------------------------------------------------------------------------------------- ...

  3. VPS选购及辨别vps虚拟化技术

    现在国内外的VPS(Virtual Private Server)服务商非常多,每个服务商使用的VPS架构都不同.VPS属于虚拟化服务器,中文名:虚拟专用服务器. 常见的VPS虚拟化架构有多种:Ope ...

  4. CodeForces 352C. Jeff and Rounding(贪心)

    C. Jeff and Rounding time limit per test:  1 second memory limit per test: 256 megabytes input: stan ...

  5. iOS不勾选设置,实现某个界面强制横屏

    1.在不勾选横屏的前提下,实现某一个界面横屏显示,比如播放视频.图表显示等. 2.只能Present跳转,Push会无效. 3.实现代码 在需要横屏的VC里,添加如下代码 #pragma mark 强 ...

  6. C++/C#/java开发支持求解

    本人大一学C语言,大二学VB,大三学VC,毕业后工作前两年用C++,接着两年用C#,最近几个月Android开发用Java. 以下本人总结以下,有些疑惑希望大师帮忙解答. 1. C语言,精简,灵活,适 ...

  7. 判断richtextbox选中的是否为图片

    ) { Text = "Img"; } else { Text = "Form1"; }

  8. android的Broadcast receiver

    broadcast receiver是用来监听intent的. android大量使用了broadcast receiver,比如:开机.电话打进来.发送消息,手机电量过低 有两种方式注册broadc ...

  9. CSS3画腾讯QQ图标 无图片和js参考

    css代码: body { font: 12px Tahoma,arial,sans-serif; margin:; padding:; } #mask { left:; opacity: 0.2; ...

  10. locale 详解

    locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面: 看中文,写中文,与 window中文系统的兼容和通信.从实际经 ...