重構Oc的get,set方法
阿新 • • 發佈:2019-02-15
重構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; }