一.define和const常量的区别
define 是定义宏的指令,程序在预处理阶段进行替换,在程序运行时并没有用 define 定义的宏,系统不会为其分配内存并在编译时也不会进行数据类型检查,大量使用宏会导致二进制文件变大。
const 定义的常量是在程序运行时存放在常量表中,系统为其分配内存并在编译时进行数据类型检查。
define 不能调试,const可以调试;
define 可以定义简单函数,const只能定义常量
// 宏 |
二.结构体( struct )和类( class )的区别
struct 和 class都可以将多个数据封装为一个整体
// 结构体(struct) |
- struct 只能封装数据,class可以封装行为
- struct 变量分配在栈空间(如果是一个局部变量的情况下),class对象分配在堆空间。
- 赋值 :结构体是(拷贝),对象之间是(地址)
- 如果待封装的数据有属性也有方法,只能使用class
- 如果属性较少,使用struct(分配在栈,提高运行效率);属性较多时使用class
三.@synthesize和@dynamic的区别
@dynamic 需要自己实现 setter getter方法
@synthesize 系统会自动生成 setter getter方法,默认定义一个属性时,系统会自动生成,不需要自己手动写,自己手动添加 setter 或 getter方法后会覆盖系统默认的 setter 和 getter 方法。