IOS-getter和setter方法

原创 2014年05月27日 14:02:02

--点语法

可以不使用[student  age],用student.age来访问变量

虽然看起来student.age是直接访问变量,但本质还是调用了方法来访问变量


为什么要设计点语法?

方便程序员快速入手OC

简化程序设计

隐藏了内存管理细节

隐藏了多线程、同步、加锁细节

方法调用

Student *stu = [[Student alloc] init];

[stu setAge:100];

int age = [stu age];


点语法

stu.age = 100;

int age = stu.age;

点语法本质

其实点语法的本质还是方法调用

当使用点语法时,编译器会自动展开成相应的方法

stu.age = 10;    展开为  


[stu  setAge:10];


int  age = stu.age;     展开为

int  age = [stu  age];

@property

@property让编译器自动生成getter和setter的声明

@property int age;就可以代替下面的两行

- (int)age;   // getter

- (void)setAge:(int)newAge;  // setter

#import <Foundation/Foundation.h>

@interface Student {

int age;

}

- (int)age;   // getter

- (void)setAge:(int)newAge;  // setter


@property int age;

@end

@synthesize

@synthesize让编译器自动实现getter和setter

@synthesize age;就可以代替

- (int)age{

return age;

}

- (void)setAge:(int)newAge{

age = newAge;

}

#import "Student.h"

@implementation Student 

@synthesize age;

- (int)age{

return age;

}

- (void)setAge:(int)newAge{

age = newAge;

}

@end


在类内部可以直接访问成员变量,如
age = 100;
int  temp = age + 10;
self.age不是直接访问成员变量,而是调用了getter或者setter方法
self.age = 100; 
// 相当于 [self  setAge:100];
// 不要在setAge:中写self.age = 100; 会造成死循环
int  temp = self.age + 10;  // int  temp = [self  age] + 10;

@synthesize age = _age; 展开


- (int)age{

return _age;

}

- (void)setAge:(int)newAge{

_age = newAge;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS开发之getter与setter方法

1.在xxx.h文件中用@property进行申明 // // Student.h // property // // Created by skythinking on 15/12/7. //...

IOS retain copy assign alloc atomic nonatomic 内存管理和getter setter方法!

IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 ...

iOS开发学习第十四课——实例变量可见度、方法、setter、getter

在昨天对类和对象进行了一定认识之后,今天又进一步的学习了实例变量可见度相关的知识.     1.OOP的特性     面向对象编程的三大特性:1.封装 2.继承 3.多态   ...

黑马程序员——OC 基础:setter和getter方法

1.setter方法(设置器)     在开发过程中,考虑到安全性的要求,我们一般不再成员变量名前面使用@public、@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值...

OC - @property与setter,getter方法

先说说setter与getter方法的作用先上一段.m/*================================================= 设计一个K线类, 有三个属性, 最高价格...

Jfinal自动生成带setter和getter等常用方法的Model文件方案--注mysql数据库版

Jfinal自动生成带setter和getter等常用方法的Model文件方案 Jfinal的数据操作方式是get与set,但是要记住表名与字段名。笔者自己写了个Model生成工具: 1.自动...

Socket类的getter和setter方法

在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)