// OC 中的 getter setter
来源:互联网 发布:类似openvpn的软件 编辑:程序博客网 时间:2024/05/17 06:20
Objective-C - setter/getter方法的自动生成:
大前提:Xcode在4.4版本之前@property,@synthesize的用法和使用注意:
@property:(写在@interface中)
1> 作用
自动生成setter/getter方法的声明.
2> 语法格式
@property 数据类型 数据名称.
3> 工作原理
编译器在编译的时候会自动的生成setter方法的声明:- (void)set首字母大写的数据名称:(数据类型)数据名称;
自动的生成getter方法的声明:- (数据类型)数据名称;
4>使用注意
1, @property的数据类型和数据名称要和属性一致,属性的数据名称不带下划线;
2, @property的数据类型相同的时候可以批量的声明,数据类型不同是不可以批量声明的;
@synthesize:(写在@implementation中) 1> 作用 自动生成setter/getter方法的实现. 2> 语法格式 @property 数据名称. 3> 工作原理 1, 编译器在编译的时候会自动的生成一个与@property相对应的真私有属性,即声明在@implementation中的. 2, 自动生成setter方法的实现,在方法的内部直接将参数赋值给了它自动生成的真私有属性. 3, 自动生成getter方法的实现,在方法的内部直接返回它自动生成的真私有属性的值.如下代码: @interface YYPerson : NSObject { NSString *_name; } @property NSString *name; @end @implementation YYPerson @synthesize name; @end等价于: @interface YYPerson : NSObject { NSString *_name; } - (void)setName:(NSString *)name; - (NSString *)name; @end @implementation YYPerson { NSString *name; } - (void)setName:(NSString *)name { self->name = name; } - (NSString *)name { return self->name; } @end 4> 使用注意 1, 因为@synthesize自动生成了一个与@property相对应的不带下划线的真私有属性,而使得在@interface中声明的的带下划线 的属性显得多余,因此可以将@interface中声明的的带下划线的属性注释掉; 但@synthesize自动生成的不带下划线的真私有属性又很不规范,所以@synthesize的时候使用以下格式: @synthesize @property名称 = 定义在@interface中的带下划线的属性名,即: @synthesize name = _name; 这样写的意义: 1,@synthesize不会自动生成私有属性; 2,自动生成setter方法的实现,在方法的内部直接将参数的值赋值给后面指定的属性. 3,自动生成getter方法的实现,在方法的内部直接返回后面指定的属性的值.此时代码如下: @implementation YYPerson @synthesize name = _name; @end等价于: @implementation YYPerson { NSString *name; } - (void)setName:(NSString *)name { _name = name; } - (NSString *)name { return _name; } @end 2, @synthesize生成的setter方法的实现,没有逻辑判断,是直接赋值或返回的. 如果需要逻辑判断,则需要重写setter方法. 3, @synthesize也可以批量生命,数据类型不同也可以批量声明.
*/
0 0
- // OC 中的 getter setter
- OC中的setter getter
- oc - getter,与 setter
- 二、oc中的setter与getter方法以及点语法
- oc中的 getter 和setter方法 浅析示例
- javascript 中的getter,setter
- C#中的setter和getter
- js中的getter和setter
- java中的getter()和setter()
- JAVA中的setter//getter()方法
- OC学习之getter 和 setter
- OC的setter和getter笔记
- [黑马程序员][OC]setter和getter
- OC坑集: ARC 下覆写 setter/getter
- IOS--OC--Lesson 封装 setter getter
- 黑马程序员-OC-getter & Setter方法
- OC - @property与setter,getter方法
- OC中getter和setter的运用
- 技术文章url
- Java 基础 字符串 方法
- Android4.4深入浅出之SurfaceFlinger总体结构
- Centos7 修改运行级别
- 生成gtest静态库 libgtest.a文件
- // OC 中的 getter setter
- LeetCode257. Binary Tree Paths(dfs)
- LeetCode3. Longest Substring Without Repeating Characters
- 矩阵及其压缩存储
- Mysql单文件存储删除数据Bug文件容量不会减少
- LeetCode100. Same Tree
- iOS 保留两位小数 不四舍五入
- SpringMVC Controller 介绍
- 【产品评测】RPLIDAR A2 在WIN下测试