`
阿尔萨斯
  • 浏览: 4190246 次
社区版块
存档分类
最新评论

OC-属性setter和getter以及点语法(2)

 
阅读更多

1.setter和getter是鉴于非@public的私有属性提供给外界操作属性值的方法.

-声明

@property int age;

-定义

@synthesize age;

-调用

Persoon *p=[[Persoon alloc] init];
[p setAge:20];//存
[p age];//取

详细代码如下:

/*
 @property int age;
    xCode4.4前 声明一个对象的setter getter方法
    xCode4.4后 声明 定义一个对象的setter getter方法 并声明一个私有对象
 
 
 @synthesize age;
 该句产生了一个变量,先判断声明有没有,如果没有,创建一个私有的同名变量 
 @synthesize age=_age;
 该句产生了一个变量,先判断声明有没有,如果没有,创建一个私有的_age变量
 
 */
#import <Foundation/Foundation.h>

@interface Persoon : NSObject
{
    int age;
}
@property int age;

@end

@implementation Persoon

@synthesize age;

@end

int main()
{
    Persoon *p=[[Persoon alloc] init];
    [p setAge:21];
    NSLog(@"%d",[p age]);
    return 0;
}

假设只有声明和定义即:

@property int age;

@synthesize age;

那么以@synthesize age;为主,判断age后面有没"="号 假设有,判断有没这个属性,没有则创建,

如果没有等号 则判断有没跟age同名的属性,没有则创建

假设只有声明,即

@property int age;

则在xcode4.4后会创建一个一个_age属性,并生成setter getter定义


2.点语法(调用)

当我们访问一个对象的属性的时候,如上代码

[p setAge:20];

[p age];

都可以通过p.age来访问,系统会检测有没赋值,如果没有 则调用getter方法.




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics