现有Xcode中的@property已经增强过了,能够让程序员编写程序的效率大大提高。
1.@property 它是一个编译器指令,帮助程序员快速编写变量和读写方法。(是一个编译器指令,并不是OC的语言,只不过让我们少些点重复的代码而已)
2.当在类的声明中使用@property,它会自动生成标准的setter和getter方法的声明和实现
3.现在使用的是增强@property,不用在实现文件内再写@synthesize去实现。更加的方便简洁
4.变量不需要在写_下划线了,编译器自动识别
#import <Foundation/Foundation.h>//------main
#import "LSPerson.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
LSPerson *per = [[LSPerson alloc] init];//创建一个per的对象
per.age = 28;
per.name = @"龙叔叔";
per.birthday = (LSDate){1987,1,21};//给结构体赋值的时候需要加上(结构体名)
NSLog(@"age = %d",per.age);
NSLog(@"name = %@",per.name);
NSLog(@"birthday = %d年%d月%d日",per.birthday.year,per.birthday.month,per.birthday.day);//打印 1987年1月21日
// per.birthday.day = 10;不能这样直接给结构体赋值,会报错,别问我为什么,我也不知道
//可以通过以下3步来写,不过太麻烦,一般还是整体赋值
LSDate date = per.birthday;//1.定义一个同类型的变量,赋值给它
date.day = 10;//2.重新赋值
per.birthday = date;//3.在把值重新转回
NSLog(@"birthday = %d年%d月%d日",per.birthday.year,per.birthday.month,per.birthday.day);//打印 1987年1月10日
}
return 0;
}
#import <Foundation/Foundation.h>//------LSPerson.h
typedef struct _LSDate{ //定义一个日期的结构体
int year; //年
int month; //月
int day; //日
}LSDate; //重命名为LSDate
@interface LSPerson : NSObject
/*
1.@property 它是一个编译器指令,帮助程序员快速编写变量和读写方法。
2.当在类的声明中使用@property,它会自动生成标准的setter和getter方法的声明和实现
3.现在使用的是增强@property,不用在实现文件内再写@synthesize去实现。更加的方便简洁
4.这里的变量不需要在写_下划线了,编译器自动识别
*/
@property int age;
@property NSString *name;
@property LSDate birthday; //结构体类型后面不需要加*
@end
#import "LSPerson.h"//------LSperson.m
@implementation LSPerson//用来增强的@property后实现文件内就不需要在写setter和getter的实现代码了
@end