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

Objective-C,ios,属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter

属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter...

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

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

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

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

iOS swift学习之入门详解(getter和setter)

//撸码狗 class CodingDog : Dog{ //撸代码年数 var codingYears:Double //撸代码总行数 var codeLines:I...

java基础之反射-通过反射调用某个属性的setter和getter方法

Java代码   package com.gui.test.reflection;      import java.lang.reflect.Method;   import j...

Java反射机制-调用setter及getter方法

回应面向对象部分的强调:“类中的属性必须封装,封装后的属性要通过setter和getter方法设置和取得”。那么在使用反射机制进行调用方法操作时, 最重要的调用类中的setter和getter方法。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS-getter和setter方法
举报原因:
原因补充:

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