oc的内存管理

1, set内存管理
 -> 值类型的属性(实例变量)

  - (void)setAge:(int)age {
   _age = age;
  }

 -> 引用类型

  - (void)setCar:(Car *)car {
   if (_car == car) return;
   [_car release];   // 引用计数 -1
   _car = [car retain];
  }

2, @property 完整的语法
 -> MRC
  原子性: nonatomic, atomic
  读写性: readwrite, readonly
  set:  值类型: assign
    引用类型: retain
    字符串: copy
 -> ARC
  原子性: nonatomic, atomic
  读写性: readwrite, readonly
  set:  值类型: assign
    引用类型: strong, weak
    字符串: copy

3, @class
 一般, 在 .h 文件中使用 @class, 在 .m 文件中使用 #import

4, NSString 的内存管理

5, 自动释放池 (MRC)
 -> 它其实就是一个 "数组"
 -> 入池的对象, 就是加入到了 "数组" 中
 -> 池结束的时候, 会自动的为 "数组" 中的对象发送 release 消息

 注意: 必须在 释放池的语法范围内 入池才有效

 @autoreleasepool {
  Person *p = [[Person alloc] init];

  [p autorelease];   // 入池
  
  // [p addIntoPool];

 

 }


6, ARC 与 MRC 区别

 本质是一样的, 最后生成的代码是一样的
 MRC 是手动的 添加 引用计数 +1 -1 的代码, 或入池的代码 等
 ARC 是编译器自动的 添加 引用计数 +1 -1 的代码, 或入池的代码 等


7, ARC 基本原理(强指针)

 

8, 在 ARC 中兼容 MRC
 将 MRC 转换为 ARC

9, Category 的基本概念
 
 @interface 类名 (分类名)

 @end

 @implementation 类名 (分类名)

 @end

 功能:
 1> 扩展现有类的方法
 2> 将类的定义进行分组

@interface NSString : NSObject

....

@end


....


@interface NSString (numeric)

- (BOOL)isNum;

@end

....


// 换了一种编译顺序

 

 

 

 

 

 

 

 

 

 

 


 

! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值