Objective-c的属性
来源:互联网 发布:小米max2保护壳淘宝 编辑:程序博客网 时间:2024/05/16 04:38
一. property (属性)
在OC里, 为成员变量赋值的方法称作setter(设置器): -(void)set成员变量名; //首字母大写, 忽略下划线
读取成员变量值的方法称作getter(访问器): -(成员变量类型)成员变量名;
写法如下:
//setter方法完整内部实现
-(void)setSex:(NSString *)sex
{
if (_sex != sex) {
[_sexrelease];
_sex = [sex retain];
}
}
//getter方法内部实现
-(NSString *)sex
{
return [[_name retain]autorelease];
}
property(属性)是Objective - C 2.0 定义的语法, 它的功能: 让编译器自动编写一对相应的方法声明(setter&getter), 自动添加一个成员变量. 这样不但简化了编写过程, 而且还增强了安全性.
属性的声明(如): @property (readwrite,nonatomic,retain)NSString *name;
属性的实现(如): @synthesize name = _name;
二. 点语法
点语法是Objective - C 2.0 中定义的语法格式. 提供了一种便捷的属性访问方式. 属性是一对setter, getter方法, 点语法取代消息语法, 是属性的另一种调用格式.
(注): 凡是符合系统默认setter&getter书写格式的方法, 都可以使用点语法.
如:
Teacher *laoMeng = [[[Teacheralloc]init]autorelease];
[laoMengsetName:@"老孟"];
//[laoMeng setSex:@"不明"];
laoMeng.sex =@"男"; //点语法 相当于 语法糖 调用setter方法
NSLog(@"%@", laoMeng.sex); //点语法调用getter方法
//laoMeng.sex = @"不明"; 运行时会转变成 [laoMeng setSex:@"不明"];输出出来
// 一般等号左面的.(点) 是调用setter方法 , 等号右面的.(点)是调用getter方法
三. 属性(property)的特性(attribute)
属性的特性:Objective - C为属性提供了一些关键字, 用以控制setter&getter的实现细节, 这些关键字我们称为属性的特性(attribute), 一般分为三大类: 读写特性, 原子性, 语义特性.
1. 读写特性:
readonly:只声明getter方法, 不能修改.
readwrite:(默认设置) 既声明setter 又声明getter
2. 原子性:
atomic(原子性): (默认设置) setter&getter方法在多线程访问下是绝对安全的, 即setter&getter内部做了多线程访问处理. 但反复的加锁解锁, 占用系统资源, 影响效率.
nonatomic(非原子性): setter&getter方法内部不会做多线程访问处理, 允许并发访问, 不安全, 但效率更高, 所以我们一般都使用非原子性.
3. 语义特性:(控制内部内存管理)
assgn:setter&getter内部实现是直接赋值. (属性是非对象类型int, float...)
retain:setter&getter的内部实现会做内存优化. (属性是对象类型NSString, Person...)
copy: setter&getter的内部实现也会做内存优化. (属性是对象类型并且想得到参数的COPY)
属性的具体实现*****这里是重点, 了解其原理.
- Objective-c的属性
- objective - c的属性参数
- 《Effective Objective-C 2.0》4、Objective-C类的属性
- objective-c 自动封装类的属性
- 编程笔记(Objective-c:属性的实现)
- objective-c中property的属性
- 编程笔记(Objective-c:属性的实现)
- Objective C - 属性的内存管理:
- objective-c的属性扩展:objc_setAssociatedObject
- 【Objective-C】@property的所有属性详解
- iOS Objective-C @property属性的用法
- 特性二、Objective-C的Attributed属性
- Objective-c的@property,属性介绍
- Objective-C中copy属性的概述
- iOS-Objective-C的属性修饰符
- Objective-C的属性(property)解析:
- Objective-C属性介绍
- Objective-C属性介绍
- 最大子数组和 (Maximum Subarray)
- ACM中常用字符串函数
- FFplay的原理(2)
- ubuntu下使用codeblocks编程运行时终端不能复制粘贴的解决方法
- POJ 2028 When Can We Meet? (又是一道水题)
- Objective-c的属性
- Ubuntu——软件源(非LTS长久支持版)
- 网络请求回来的时间字符串进行一下小转换
- 妙用void *型指针(万能指针|泛型指针)
- 【环境配置】DOSBox运行TT打字软件
- 题目1514:数值的整数次方
- mysql 字符串函数
- ubuntu 下android项目单元测试
- 大数相乘模板