参考内容:http://blog.csdn.net/lonelyroamer/article/details/7665112
(1)、设置访问方法的名字
默认的getter和setter器的名称是和变量名关联的,一定是setVariableName和variableName,比如上面的变量age,setter是setAge,getter是age。
可以通过设置@property中的setter和getter属性来修改setter和getter器的方法名。
getter=getterName
setter=setterName
举个例子:
@property (getter=show1,setter=show2:)int age;//现在,它的getter和setter的方法名字就变了
(2)、设置只读或读写
下面两个属性很好理解,
readwrite:表示既有getter,也有setter
readonly:表示只有getter,没有setter
这两个属性是互相排斥的,只能存在一个。
注意:如果你设置了readonly属性的话,那么你就不应该设置setter属性,要不然会给出一个编译器的警告。
(3)、定义setter的语义
下面的属性指定setter语义设置访问器。他们是互相排斥的。
strong:指定有很强的(拥有)关系到目标对象。
weak:指定有弱(non-owning)关系到目标对象。如果目的地对象销毁,属性值将自动设置为nil。(弱属性不支持OS X上的v10.6和iOS 4,使用指定取而代之)。
copy:调用原始对象的copy()方法,创建一个原始对象的副本,用于分配给新的引用。原始的对象在调用release方法。当然这个属性只用于实现了NSCopying协议的对象类型。
assign:指定使用简单的赋值的setter。这个属性是违约。 使用这个属性对于标量的类型(如NSInteger和CGRect等);
retain: 指定retain应该调用对象上的。原始的对象在调用release。在OS X v10.6和之后,您可以使用这个关键字用于内存管理方面。
(4)、访问属性的线程安全
nonatomic:表示不考虑线程安全
相关推荐
#### 四、小结 通过上述介绍,我们了解了Object-C中类的基本结构以及属性的声明和使用方法。在实际开发过程中,合理地利用这些概念可以帮助开发者构建出高效且易于维护的应用程序。无论是对于初学者还是有经验的...
#### 小结 - `retain`与`assign`主要用于区别对象类型的引用管理方式。 - `readonly`与`readwrite`则用于控制属性的可读写性。 - `nonatomic`与`atomic`关注于多线程环境下的数据安全性。 通过以上解释,我们可以...
- `Property Let` 和 `Property Set` 不再使用,现在使用 `Property` 关键字。 - `Currency` 数据类型不再支持,取而代之的是 `Decimal`。 - `Variant` 类型被 `Object` 替代,`Object` 兼具VB6的 `Object` 和 `...
Matlab 二维曲线绘制小结 Matlab 是一种功能强大的编程语言,广泛应用于科学计算、数据分析和可视化领域。绘制二维曲线是 Matlab 中最基本也是最常用的功能之一。本文将详细介绍 Matlab 中绘制二维曲线的方法和技巧...
### Hibernate小结 #### 一、概述 在本篇文章中,我们将对Hibernate框架进行一个较为全面的小结。主要内容包括:Hibernate映射中的Lazy加载策略、Hibernate查询语言(HQL)的使用方法,以及一些基本配置与操作技巧...
- 使用`@property`关键字声明属性,通常建议使用`nonatomic`属性以提高性能,除非需要线程安全的访问,才使用`atomic`。对于实例变量,使用`_ivar`作为前缀,而不是传统的`iVar`。 5. **分类(Category)**: ...
例如,`object.propertyName = "value"`或`object["propertyName"] = "value"`。 - 方法调用:同样使用`.`或`[]`。例如,`object.methodName()`或`object["methodName"]()`。 3. **window对象的常用方法** - `...
大多数开发者都知道inherit关键字,但有几个新的CSS3继承特性你可能不知道… property: inherit; inherit关键字代表“使用指定给父元素的所有值”。如果父元素中没有明确的值定义,浏览器搜寻DOM树直到找到相应的...
创建了`Circle`对象后,我们可以调用其方法来获取圆的面积和直径: ```javascript var myCircle = new Circle(20); alert("area=" + myCircle.area()); // alerts 1256 alert("diameter=" + myCircle.diameter...
1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...
1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...
1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...
1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...
**1.4 小结** 本章介绍了.NET框架的核心概念及其对于未来计算的影响。同时,详细探讨了C#作为一种现代编程语言,在.NET框架中的角色和特点,为后续深入学习打下了坚实的基础。 **第二章 运行环境:全面了解.NET**...
需要注意的是,`#define`后的替换内容可以是常量、字符、字符串或特殊字符,但不能包含表达式,例如 `#define N = 5` 或 `#define N 5;` 都会导致语法错误。 2. **带参数的宏定义** 带参数的宏定义允许传递参数,...
- 使用@property关键字声明。 - **方法用来定义对象的行为**: - 方法定义了对象能够执行的操作。 - 包括实例方法和类方法。 - **方法参数**: - 方法可以接受参数,用于传入额外的信息。 - 参数可以是任意...
1. 报错提示Cannot read property 'replace' of undefined 这通常发生在尝试在一个未定义(undefined)或null类型的变量上调用replace()方法时。例如,在异步文件读取中,由于文件读取是异步的,直接调用replace()...