struct与class区别

OC:

struct Class
不同点 值类型 Value Type 引用类型 reference type
结构体只能封装数据 而类可以封装数据,还可以封装行为(实现函数)
结构体变量分配在栈空间 而对象分配在堆空间
赋值为拷贝 类是指向地址
没有继承 有继承
相同点 都可以将多个数据封装为1个整体 都可以将多个数据封装为1个整体
struct dataStruct{
	NSInteger age;
	NSInteger year;
	__unsafe_unretained NSString *name;//1.在`ARC`环境下,在结构体中使用`objc`对象,必须使用  `__unsafe_unretained`,这个是苹果的规定。否则会报错:ARC forbids Objective-C objects in struct
//	NSDictionary *data;// 2.或者指定单独
};


[@interface](https://my.oschina.net/u/996807) ClassAndStruct()
{
	NSInteger age;
	NSInteger year;
	NSString *name;
	NSDictionary *data;
}
[@end](https://my.oschina.net/u/567204)

swift

struct Class
不同点 值类型 Value Type (不涉及引用计数) 引用类型 reference type
struct更适合看成是一个数据结构的实现体 class更适合看成是一个对象的实现体
struct 没有继承 class 有继承功能

参考文章: OC结构:https://www.yiibai.com/objective_c/objective_c_structures.html OC:http://blog.csdn.net/yi_zz32/article/details/48582339?locationNum=11&fps=1 swift:https://www.cnblogs.com/linganxiong/p/5853090.html, http://blog.csdn.net/see_you_in_the_past/article/details/44653249, https://www.jianshu.com/p/8011b638b3a9

struct与class性能差异:https://www.jianshu.com/p/394e4fe614a0?utm_campaign=maleskine&utm_content=note&utm_medium=writer_share&utm_source=weibo&open_source=weibo_search

猜你喜欢

转载自my.oschina.net/u/2319073/blog/1629761