iOS内存管理

内存五大区:

  • 代码区:存放我们写的代码
  • 常量区:存储常量字符串和const常量
  • 静态区:存储全局变量和静态变量。在程序结束后系统来释放,常用的单例就是保存在这个区间。
  • :这一块的内存由开发人员管理
  • :这一块内存系统会自己管理

strong:表示拥有对象,修饰的对象引用计数+1,只要引用计数不为0就不会被销毁。(强制置为nil还是被销毁的)
weak:表示指针指向该对象但不拥有,修饰的对象引用计数不会增加。
assign:修饰基本的数据类型,这些值存在于栈中。
weak和assign:weak修饰对象,assign修饰基本类型。若是assign修饰对象会造成对象释放后指针地址还存在造成野指针,在堆中会早成程序崩溃,在栈中的内存系统会自动处理。
copy和strong:strong本质上是将指针指向同一份内存地址。copy实际上是在内存中拷贝一份对象,指针指向不同的地址

block的存储形态有三种:
_NSConcretStackBlock(栈)、_NSConcretGlobalBlock(全局)、_NSConcretMallocBlock(堆)

你可能感兴趣的:(iOS内存管理)