IOS-getter和setter方法
2014-05-27 14:02
246 查看
--点语法
可以不使用[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;
}
可以不使用[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开发学习第十四课——实例变量可见度、方法、setter、getter
- iOS setter 与 getter方法
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
- IOS model的getter和setter方法
- 关于iOS中属性变量setter与getter方法的理解
- ios 同时重写setter和getter方法
- iOS-OC为什么需要重写setter或getter方法?
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
- iOS中@Property声明的属性同时重写getter和setter方法报错问题
- iOS开发之getter与setter方法
- iOS开发--线程同步的getter与setter方法
- 《ios_oc》重复引用、交叉引用、可见度、方法,setter、getter、自定义初始化init的修改
- iOS积累-为什么使用属性之后, 同时重写setter,getter方法会报错
- Objective-C,ios,属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter
- ios-Swift中的懒加载和getter、setter方法
- Struts2的getter()和setter()方法
- getter和setter方法
- 谈谈struts2、spring的getter、setter方法及令人崩溃的错误
- Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)
- Java网络编程从入门到精通(17):Socket类的getter和setter方法(1)