1. 程式人生 > >重構Oc的get,set方法

重構Oc的get,set方法

重構Point2類

本案例使用四種屬性定義方式(本質->宣告式->IOS5.0->IOS6.0)重構Point2類,類中有橫座標x、縱座標y兩個屬性,並且有一個能顯示位置show方法。在主程式中建立兩個Point2類的物件,設定其橫縱座標,並將它們顯示出來。

Point2.h

//
//  Point2.h
//  Oc-Day1
//
//  Created by spare on 16/4/9.
//  Copyright © 2016年 spare. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Point2 : NSObject
{
//    int x;
//    int y;
    //與宣告式方式的區別盡在於此,此處不需要再宣告例項變量了。
}
//-(void)setX:(int)x1;
//-(int)getx;
//-(void)setY:(int)y1;
//-(int)getY;
//直接使用@property定義例項變數和生成例項變數setter函式和getter函式的宣告。
@property int x,y;
-(void)show;
@end


Point2.m

//
//  Point2.m
//  Oc-Day1
//
//  Created by spare on 16/4/9.
//  Copyright © 2016年 spare. All rights reserved.
//

#import "Point2.h"

@implementation Point2

//-(void)setX:(int)x1{
//    x=x1;
//}
//-(int)getx{
//    return x;
//}
//-(void)setY:(int)y1{
//    y=y1;
//}
//-(int)getY{
//    return y;
//}
//與iOS5.0方式不同,此處不需要再宣告屬性的實現了,即@synthesize部分。
@synthesize x,y;

-(void)show{
    NSLog(@"x=%d,y=%d",x,y);
}

@end

main.m

//
//  main.m
//  Oc-Day1
//
//  Created by spare on 16/4/9.
//  Copyright © 2016年 spare. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"
#import "Point2.h"


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
//        Student *stu=[[Student alloc]init];
//        [stu setAge:15];
//        [stu setSalary:10000];
//        [stu setGender:'M'];
//        
//        [stu printInfo];
        
        Point2 *p = [[Point2 alloc] init];
//        [p setX:10];
//        [p setY:20];
        p.x=10;//使用屬性的點運算子為屬性賦值。
        p.y=20;
        [p show];
        Point2 *p1 = [[Point2 alloc] init];
//        [p1 setX:55];
//        [p1 setY:77];
        p1.x=55;
        p1.y=77;
        [p1 show];
  
        
    }
    return 0;
}