A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、首先关闭ARC

2、手动管理内存实例
  1. <font size="4">#import <Foundation/Foundation.h>

  2. #pragma mark Person类定义部分
  3. @interface Person : NSObject

  4. @property NSString *name;
  5. @property int age;
  6. @end
  7. #pragma mark Person类实现部分
  8. @implementation Person
  9. //对象的临终遗言,对象销毁时,会默认调用该方法
  10. //【注意】该方法是系统根据引用计数器自动调用的,不需要手动调用
  11. -(void)dealloc{
  12.     NSLog(@"This person dead....");
  13.     //再释放父类
  14.     [super dealloc];
  15. }
  16. @end

  17. int main(int argc, const char * argv[])
  18. {

  19.     @autoreleasepool {
  20.         //用Person类实例化一个对象
  21.         Person *p = [Person new];//此时对象的所有者是自己
  22.         
  23.         //证明该对象有一个所有者
  24.         NSInteger count = [p retainCount];
  25.         NSLog(@"count1 = %lu",count);
  26.         
  27.         //引用计数器+1
  28.         //两个指针指向一个对象,但是下面这个方法并不能是计数器+1
  29.         Person *p2 = p;
  30.         count = [p2 retainCount];
  31.         NSLog(@"count2 = %lu",count);
  32.         //只有通过retain方法可以使计数器+1
  33.         Person *p3 = [p retain];
  34.         count = [p retainCount];
  35.         NSLog(@"count3 = %lu",count);
  36.         
  37.         //想要回收对象,则要想办法是retainCount从2变成0
  38.         [p release];
  39.         [p3 release];
  40.         //想要证明person对象被释放了,可以重写其dealloc放法
  41.     }
  42.     return 0;
  43. }</font>
复制代码
打印结果:
2015-10-06 10:32:56.855 MRCDemo[925:303] count1 = 1
2015-10-06 10:32:56.857 MRCDemo[925:303] count2 = 1
2015-10-06 10:32:56.857 MRCDemo[925:303] count3 = 2

2015-10-06 10:32:56.858 MRCDemo[925:303] This persondead....

图1.png (113.37 KB, 下载次数: 2)

图1.png

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马