【Objective-C】OC 中对象属性的设置器和访问器

在面向对象编程中,创建一个对象,肯定会包含其中的一些属性,然后会为这些属性写上相应的set,get方法(就是通常我们讲的设置器和访问器)

一):通常意义上我们写的属性的set和get方法如下:创建对象,定义声明属性,然后手动编写setXXX(),getXXX()方法,如下:Person对象

    1:Person.h

      

//
//  Person.h
//  PersonGetSet
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    //声明一个变量
    int myNumber;
}
-(int)myNumber;
-(void)setMyNumber:(int)_number;
-(void)printf;
@end
2Person.m
   
//
//  Person.m
//  PersonGetSet
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import "Person.h"

@implementation Person

-(int)myNumber{
    return  myNumber;
}
-(void)setMyNumber:(int)_number{
    myNumber=_number;
}
-(void)printf{
    NSLog(@"myNumber is %d\n",myNumber);
}
@end
这个当属性比较的少的时候还可以,如果一个对象的属性非常多的时候,我们一个个去手动写,会非常浪费开发时间,影响效率.所以在OC2.0版本之后出现了自动的设置器和访问器.
 下面我们来介绍一下OC中特有的设置和访问器
2:简化设置器和访问器.注意两个关键字@property,@synthesize
  person.h
  
//
//  Person.h
//  PersonGetSet
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    //声明一个变量
    int myNumber;
}
// 普通的get和set
//-(int)myNumber;
//-(void)setMyNumber:(int)_number;

@property(nonatomic)int myNumer; //这样声明之后,会动态创建
-(void)printf;
@end
person.m
//
//  Person.m
//  PersonGetSet
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import "Person.h"

@implementation Person

// 普通的get和set实现
//-(int)myNumber{
//    return  myNumber;
//}
//-(void)setMyNumber:(int)_number{
//    myNumber=_number;
//}
@synthesize myNumer;
-(void)printf{
    NSLog(@"myNumber is %d\n",myNumber);
}
@end
二)在@property()括号中,可以填写的属性:
   readwrite:默认
   readonly: 只读以为中么有set方法
   assign:默认,引用计数不增加
   retain:引用计数增加1
   原子性:actiomic 默认
   非原子性:nonatomic


【Objective-C】OC 中对象属性的设置器和访问器

上一篇:【Objective-C】OC中对象创建,self,super的详解


下一篇:【Objective-C】OC中NSNumber数字对象的常用处理方法