点语法和@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的更多相关文章

  1. iOS开发-OC语言 (一)oc数据类型

    分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型.指针数据类型 基本数据类型:数值型.字符型(char).布尔型.空类型(void) 指针数据类型: ...

  2. iOS开发-OC语言 (四)数组

    知识点 1.NSArray 2.NSMutableArray 1.数组的基本用法: 2.数组的遍历 3.数组排序 ===========   NSArray  不可变数组  ============= ...

  3. iOS开发-OC语言 (七)继承、多态、类别

    继承.多态.类别 学习目标 1.继承的含义 2.父类子类的别称 3.字段和消息的继承 4.重写和重写消息的调用 5.多态 6.类别(Category) ======================== ...

  4. iOS开发-OC语言 (三)字符串

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 24.0px "PingFang SC" } p ...

  5. 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. ...

  6. iOS开发-OC语言 (五)字典

    字典 主要知识点: 1.NSDictionary 类 2.NSMutableDictionary 类 3.了解NSMutableDictionary 与 NSDictionary 的继承关系 4.补充 ...

  7. Android与Swift iOS开发:语言与框架对比

    Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...

  8. Android &Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  9. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

随机推荐

  1. uva 11181 - Probability|Given

    条件概率公式:P( A|B ) = P( AB ) / P( B ) 表示在事件B发生的前提,事件A发生的可能性: 问题的: 复位事件E:r个人买东西: 事件Ei:文章i个人买东西: 的要求是P( E ...

  2. leetcode[61] Unique Paths

    题目:给定一个m*n的矩阵,从头开始,只能往右边和下边走,一次走一格,知道走到最后一个(右下角)为止.总共有多少种走法. 典型的动态规划吧.其实从头走到尾部,和从尾部开始走到头是一样的次数.我们用一个 ...

  3. 六大利器助Java程序开发事半功倍

    实用的开发工具对于Java程序开发者来说,工作起来事半功倍.本文中小编将为大家列举包括开发环境.分析测试.代码保护等实用工具. 开发环境 Sonarqube Sonarqube是一个开源平台,是一款代 ...

  4. PL/SQL Developer 连接Oracle数据库详细配置方法

    PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...

  5. easyui datagrid 前台分页

    核心方法 //分页data function pagerFilter(data, pagegrid) { if (typeof data.length == 'number' && t ...

  6. 六白话经典算法系列 高速分拣 高速GET

     高速分拣,因为相同的排序效率O(N*logN)几个订购流程更高效,因此,经常使用,再加上高速分拣思想----分而治之的方法也是非常有用的,如此多的软件公司书面采访.它包含了腾讯,微软等知名IT企业宁 ...

  7. 介绍一款基于jquery好用的编辑框htmlbox.full.js

    1. 可选择背景颜色,自主选择工具,感觉挺好用的,不过需要注意,添加引用后找不到工具图标的图片,找到脚本修改idir:属性改成自己的图片文件夹存放路径即可. asp.net mvc3提交内容报错提示含 ...

  8. SHELL 近期学习

    由于项目中很少使用到shell脚本所以.只是偶尔自学一点.慢慢积累.下面就把近段时间积累的发出来.学习. #sort sort 按首字母排序 sort -n 按数字大小 从小到大排序 sort -rn ...

  9. Android手机外置SD卡(TF卡)的获取方法

    Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此 ...

  10. Java 8新特性前瞻

    快端午小长假了,要上线的项目差不多完结了,终于有时间可以坐下来写篇博客了. 这是篇对我看到的java 8新特性的一些总结,也是自己学习过程的总结. 几乎可以说java 8是目前为止,自2004年jav ...