一、定义一个结构体
typedef struct {
int age;
//在结构体中定义OC对象会报错:ARC forbids Objective-C objects in structs
//需要添加__unsafe_unretained
__unsafe_unretained NSString * name;
} LYMStruct;
二、使用
LYMStruct myStruct = {22,@"张三"};
// 两种赋值方法
// myStruct.age = 22;
// myStruct.name = @"张三";
NSLog(@"%@-- %d",myStruct.name,myStruct.age);
三、结构体和OC类的区别
结构体:
- 只能封装属性,不能封装方法;
- 分配在栈上
OC类:
- 可以封装属性和方法;
- 分配在堆上
四、如何选择结构体还是OC类
- 因为栈空间相对堆来说比较小,但是数据访问效率比堆要高,所以我们定义很多属性的话,在堆中使用OC类
- 如果不需要定义很多的属性,并且不需要定义方法的话,我们在栈中使用结构体
网友评论