iOS开发-OC语言 (六)点语法和@property
点语法和@property
知识点
1.setter/getter函数
2.点语法
3.@property语法和属性
========================================
一、setter和getter函数
1.setter和getter函数的作用
setter 方法: 修改对象的字段/实例变量
getter 方法: 读取对象的字段/实例变量
setter 方法: 可以带有多个参数,可以同时给多个变量赋值
getter方法: 不带参数,只能返回一个变量的值。
2.setter和getter如何命名
setter 方法的命名:
xxx: 表示的是成员变量的名字
//带有一个参数
- (void)setXxx:(参数类型)参数1;
//带有多个参数
- (void)setXxx:(参数类型)变量名字 xxx:(参数类型)变量名字 ……;
getter 方法的命名:
- (返回值类型)xxx;
=======================================
二、点语法 为了让程序设计简单化
隐藏了内存管理细节
隐藏了多线程、同步、加锁
2.点语法的作用
属性可以在不适用 【对象 方法名字】 的情况下使用点语法
无需调用[foo value] 可以调用foo.value 来访问. 注意跟结构体的区别
虽然foo.value 看起来像是直接访问value变量,但是属性始终调用
方法,而这些方法又可以访问对象的数据。
3.点语法的调用
//一个参数的set方法可以使用点语法赋值
[xiaoxin setName:@“小新”];
//这不是使用成员变量,是使用set方法
xiaoxin.name = @"小新";
//可以通过.语法调用get方法
NSString * ret = [xiaoxin name];
//xiaoxin.name在等号左边就是set方法,使用这个表达式的值,就是get方法
ret = xiaoxin.name;
【注】点语法只是访问setter getter方法,不是使用成员变量。
4.点语法和setter/getter函数的关系
【点语法和[]写法】本质一样,同样是发送set和get消息,只不过写法不同。
dog.name = @“xiaobai”;
展开成: [dog setName: @“xiaobai”];
NSString *nameString = dog.name;
展开成: NSString *nameString = [dog name];
=======================================
三、属性(@property)和合成(@synthesize)
1.当一个类中的成员变量非常多的时候,setter和getter是否会显得非常臃肿,@property和@synthesize可以使代码变得简洁。
2.@property用处
1) 让编译器自动声明setter和getter
3.@property使用
1) @property 成员变量类型 变量名;
4.@synthesize用处
1)让编译器自动实现setter和getter函数
5.@synthesize可以省略(Xcode4.6以后可以省略)
//声明一个属性,相当于声明了下面两个方法
@property NSString * name;
//- (void)setName:(NSString *)name;
//- (NSString *)name;
@synthesize name = _name;
//Xcode4.6以前,需要这样实现,如同实现了下面两个方法
//Xcode4.6起,无需写@synthesize,自动实现下面两个方法,会自动关联名位_XXX的变量
//如果类中并没有对应的变量,会自动生成相应的变量。
======================================
@property属性
1.原子操作
atomic(缺省)/nonatomic
2. assign 直接赋值修饰符(缺省),一般用在基本类型。
//缺省(默认)修饰符
@property (assign) NSString * name;
//同时生成set、get方法
直接赋值,展开的set方法:
- (void)setName:(NSString *)name
{
_name = name;
}
3.读写操作
readonly/readwrite(缺省)
//只读修饰符
//只生成getter,没有setter
@property (readonly) NSUInteger age;
/缺省修饰符
//同时生成set、get方法
@property (readwrite) NSString *name;
4. 给set方法和get方法起别名
//getter修饰符
//给get方法起别名
@property (getter = myWeight) NSUInteger weight;
//setter修饰符
//给set方法起别名
@property (setter = setLife:) BOOL alive;
//一个属性可以添加多个修饰符,多个修饰符间用逗号隔开。
@property (setter = setUsername:, getter = getUsername) NSString *name;
5. 多个属性修饰符,需要用逗号隔开
@property (nonatomic, readonly,getter = birth)
NSString * birthday;
iOS开发-OC语言 (六)点语法和@property的更多相关文章
- iOS开发-OC语言 (一)oc数据类型
分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型.指针数据类型 基本数据类型:数值型.字符型(char).布尔型.空类型(void) 指针数据类型: ...
- iOS开发-OC语言 (四)数组
知识点 1.NSArray 2.NSMutableArray 1.数组的基本用法: 2.数组的遍历 3.数组排序 =========== NSArray 不可变数组 ============= ...
- iOS开发-OC语言 (七)继承、多态、类别
继承.多态.类别 学习目标 1.继承的含义 2.父类子类的别称 3.字段和消息的继承 4.重写和重写消息的调用 5.多态 6.类别(Category) ======================== ...
- iOS开发-OC语言 (三)字符串
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 24.0px "PingFang SC" } p ...
- iOS开发-OC语言 (二)类的设计
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...
- iOS开发-OC语言 (五)字典
字典 主要知识点: 1.NSDictionary 类 2.NSMutableDictionary 类 3.了解NSMutableDictionary 与 NSDictionary 的继承关系 4.补充 ...
- Android与Swift iOS开发:语言与框架对比
Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...
- Android &Swift iOS开发:语言与框架对比
转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...
- iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...
随机推荐
- Solr安装(Tomcat)
Solr安装(Tomcat) 安装环境 Windows 7 64bit Apache-tomcat-8.0.9-windows-x64 Solr-4.9.0 JDK 1.8.0_05 64bit ...
- javascript保留两位
原文:javascript保留两位 //保留两位小数 //功能:将浮点数四舍五入,取小数点后2位 function toDecimal(x) { var f = parseFloat(x); if ( ...
- CentOS下JAVA WEB 环境搭建
首先介绍下我的软件环境.虚拟机Vmware9.0(已经汉化),CentOS6.4(选择安装语言为简体中文),xshell4.0(强大的安全终端模拟软件),xftp4.0(FTP工具). 方便大家环境搭 ...
- wpf的datagrid和winform的datagridview刷新
DataGrid的数据源的加载需要大量IO操作,不可能等数据全部读取之后才显示到UI上.由于对WPF数据绑定不很熟悉,对ObserveCollection等内容没有太多时间去研究,只能用一些取巧的办法 ...
- 读书笔记—CLR via C#章节1-2
这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深 ...
- 深入浅出SQL注入
原文:深入浅出SQL注入 之前在做学生信息管理系统和机房收费系统的时候,对于SQL注入的问题已经是司空见惯,但是并没有真正的地形象生动的理解SQL注入到底是什么玩意儿.直到这次做牛腩才在牛老师的举例之 ...
- iis7 下配置MVC问题
HTTP 错误 404.0 - Not Found 您要找的资源已被删除.已更名或暂时不可用. 详细错误信息 模块 IIS Web Core 通知 MapRequestHandler 处理程序 Sta ...
- ThoughtWorks 面试
ThoughtWorks 面试备忘录 ThoughtWorks 面试备忘录 前言 前段时间 ThoughtWorks 在网上和拉勾网合作搞了一次网络招聘,名为抛弃简历!让代码说话!可谓赚足了眼球, ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(1)
Asp.net MVC的Model Binder工作流程以及扩展方法(1)2014-03-19 08:02 by JustRun, 523 阅读, 4 评论, 收藏, 编辑 在Asp.net MVC中 ...
- C#外挂QQ
C#外挂QQ找茬辅助源码,早期开发 这是一款几年前开发的工具,当年作为一民IT纯屌,为了当年自己心目中的一位女神熬夜开发完成.女神使用后找茬等级瞬间从眼明手快升级为三只眼...每次看到这个就会想起 ...