IOS之Accessor method
1 前言
本章主要介绍了Objective-C中的存取方法的相关概念。
2 详述
存储方法是一个可以获得或者设置一个对象的属性值的实例方法。在Cocoa的术语中,一个检索对象属性值的方法提及为getter方法,或者"getter;",一个改变对象属性值的方法提及为setter方法,或者“setter.”这些方法通常成对建立,提供获得或者设置对象属性值的API。
我们应该使用存储方法而不是直接存储状态数据因为他们提供了一个抽象的层。下面是存储方法所提供的两个好处:
·我们不需要重写我们的代码如果一个描述或者存储属性的方法改变。
·存储方法常常实现重要行为是无论何时一个值被检索或者设置都会被重现。例如,设置方法频繁的实现内存管理代码并且通知其他对象当一个值被改变的时候。
2.1 命名规则
因为这种模式的重要性,Cocoa定义了一些命名存储方法的规则。给出一个属性的类型type和称呼name,我们应该通过下面的格式,典型的实现存储方法:
-(type)name;
-(void)setName:(type)newName;
有个例外是属性为Boolean值。getter方法名字应该是isName。例如:
-(BOOL)isHidden;
-(void)setHidden:(BOOL)newHidden;
这种命名惯例很重要因为在Cocoa中的很多其他的功能都依赖它,特别的key-value coding。Cocoa不使用getName因为以get开始的方法表明方法返回引用类型的值。
3 结语
以上是所有内容,希望对大家有所帮助。
IOS之Accessor method的更多相关文章
- 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- iOS运行时与method swizzling
C语言是静态语言,它的工作方式是通过函数调用,这样在编译时我们就已经确定程序如何运行的.而Objective-C是动态语言,它并非通过调用类的方 法来执行功能,而是给对象发送消息,对象在接收到消息之后 ...
- IOS 开发之 Method Swizzling + Category
ios 分类中如果增加的方法与被扩展的类方法名重复,则原方法就没法被调用….看以下例子 例如: @interface ClassA : NSObject - (NSString *) myMethod ...
- iOS执行时与method swizzling
C语言是静态语言,它的工作方式是通过函数调用,这样在编译时我们就已经确定程序怎样执行的.而Objective-C是动态语言,它并不是通过调用类的方法来执行功能,而是给对象发送消息,对象在接收到消息之后 ...
- IOS 开发之 Method Swizzling
ios 分类中如果增加的方法与被扩展的类方法名重复,则原方法就没法被调用….看以下例子 例如: @interface ClassA : NSObject - (NSString *) myMethod ...
- accessor method & mutator method
import java.time.*; public class MyTest{ public static void main(String[] args){ LocalDate date = Lo ...
- ios swift reduce Method
Swift’s API includes many functions and instance methods that reflect its functional programming her ...
- iOS编码规范
The official raywenderlich.com Objective-C style guide. This style guide outlines the coding con ...
- Accessor Search Implementation Details
[Accessor Search Implementation Details] Key-value coding attempts to use accessor methods to get an ...
随机推荐
- cocos2d-js Shader系列1:cocos2d-js Shader和OpenGL ES2.0
cocos2d的Shader也就是差不多直接跟GPU打交道了,跟Flash的Stage3D(AGAL)类似,不过没有AGAL这么恶心,不需要直接编写汇编语言.而Fragment Shader又跟Fla ...
- oracle12c安装报错:PRVF-0002的解决方法
出错信息: 安装oracle12c, ./runInstaller 启动图形化报错 PRVF-0002 : Could not retrieve local nodename. 原因: 找不到主机名的 ...
- VBA遍历数组的2种方式
1.情景展示 VBA编程,如何对数组进行遍历? 2.解决方案 方式一:使用for循环 Sub 遍历数组1() '声明一个变量 Dim Arr As Variant '声明一个数字变量 Dim i ...
- 〖Android〗存在多个Android设备时,使用Shell脚本选择一个Android设备
Shell脚本: #!/bin/bash devices=( $(adb devices|grep device$|awk '{print $1}'|xargs echo) ) case ${#dev ...
- java 封装02
//Person.java public class Person{ private String name; private int age; private String sex; public ...
- Windows下 VS2015编译levelDB(nmake)
VS2015编译levelDB Leveldb是一个google实现的非常高效的kv数据库,非常适合嵌入到程序中.如果有简单的key-value数据库需求,而又想使用一个数据库服务的话,levelDB ...
- 适配新路由3(D2)的LEDE/OpenWrt固件
使用MediaTek系列的芯片方案 Y1(R6830): MT7620A + MT7612EN(5G 866M) + winbond 25Q128FVFG + winbond W971GG6KB-25 ...
- 递归查询构造jquery tree
1 现在有如下的一张表: CREATE TABLE [dbo].[ThemeCategory] ( [ID] [int] NOT NULL, [ThemeCategoryName] [nvarchar ...
- HDFS分布式文件系统(The Hadoop Distributed File System)
The Hadoop Distributed File System (HDFS) is designed to store very large data sets reliably, and to ...
- Spring AOP之Introduction(@DeclareParents)简介
Spring的文档上对Introduction这个概念和相关的注解@DeclareParents作了如下介绍: Introductions (known as inter-type declarati ...