// 结构体作为对象的属性
#import <Foundation/Foundation.h>
/*
事物:学生
属性:姓名 生日
行为:可以说出自己姓名和生日
*/
typedef struct{
int year;
int month;
int day;
} Date;
@interface Student : NSObject
{
@public
NSString * _name;
Date _birthday;
}
-(void)say;
@end
@implementation Student
-(void)say{
NSLog(@"name = %@, year = %i, month = %i, day = %i",_name,_birthday.year,_birthday.month,_birthday.day);
}
@end
int main(int argc, const char * argv[]) {
Student *stu = [Student new];
stu->_name = @"wj";
//结构体只能在定义的时候初始化,但是在创建student类的对象的时候,已经初始化为0了,所以下面的代码会报错
//stu->_birthday = {1991,08,18};
//可以通过加一个类型转换来让编译器确定birthday是date类型,而不是数组,如下
stu->_birthday = (Date){1991,8,18};
//本质是将一个值是{1991,8,18}的Date结构体拷贝一份给stu的birthday 即
//Date d = {1991,8,18};
//stu->_birthday = d;
//亦可以写为
//stu->_birthday.year = 1991;
//stu->_birthday.month = 8;
//stu->_birthday.day = 18;
[stu say];
return 0;
}