//  main.m
//  循环retain#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"int main(int argc, const char * argv[]) {Person *p = [Person new];Dog *d = [Dog new];// 如果A对用要拥有B对象, 而B对应又要拥有A对象, 此时会形成循环retain// 如何解决这个问题: 不要让A retain B, B retain A// 让其中一方不要做retain操作即可p.dog = d; // retaind.owner = p; // retain  assign
    [p release];[d release];return 0;
}

//  Dog.h#import <Foundation/Foundation.h>
@class Person;@interface Dog : NSObject//@property(nonatomic, retain)Person *owner;
@property(nonatomic, assign)Person *owner;
@end

//  Dog.m#import "Dog.h"
#import "Person.h"@implementation Dog-(void)dealloc
{NSLog(@"%s", __func__);
//    [_owner release];
//    self.owner = nil;
    [super dealloc];
}
@end

//
//  Person.h#import <Foundation/Foundation.h>
@class Dog;@interface Person : NSObject@property(nonatomic, retain)Dog *dog;
@end

//  Person.m#import "Person.h"
#import "Dog.h"@implementation Person- (void)dealloc
{NSLog(@"%s", __func__);
//    [_dog release];self.dog = nil;[super dealloc];
}
@end

转载于:https://www.cnblogs.com/yaowen/p/7428389.html

oc51--循环retain相关推荐

  1. OC之非ARC环境下循环retain问题

    观察上述情况,上述就是著名的循环引用问题,对于此类问题,"你包含我,我包含你",里面相关的对象占用的内存永远回收不了,解决办法很简单,与常规方法不同.正常情况下,我们应在Perso ...

  2. iOS内存管理策略和实践

    来源:http://www.baidu.com/link?url=irojqCBbZKsY7b0L2EBPkuEkfJ9MQvUf8kuNWQUXkBLk5b22Jl5rjozKaJS3n78jCnS ...

  3. iOS攻防——(四)class-dump-与-Dumpdecrypted-使用

    1 class dump class dump 是一个用于检查保存在 Mach-O 文件中的 objective-c 运行时信息的工具,攻防中最常用.实用的命令行工具. 1.1 class dump ...

  4. OC 知识:彻底理解 iOS 内存管理(MRC、ARC)

    1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的 ...

  5. 《Objective-c》-(内存管理之三:@property的内存管理)

    内存管理之三--<@property的内存管理> 1.@property中与setter内存管理相关的参数 retain : release旧值,retain新值(适用于OC对象类型): ...

  6. 【译文练习】ReactiveCocoa概要:了解和使用RACCommand

    原文地址 点击这里 这几天部门的前辈再用RAC的时候问到一个问题,RACCommand在RAC中具体的作用和起到的功能,到底应该如何应用它. 关于RAC的使用文章非常多,但是大多仅限于介绍和基本的使用 ...

  7. ios 内存管理的理解(一) 简述

    1. 内存管理的范围 所有的OC对象(继承自NSObject类) 本质原因:是因为对象和其他数据类型在系统中的存储空间不一样,其他局部变量主要存放于栈中,而对象存储于堆中. 当代码块结束时,这个代码块 ...

  8. Objective-C中的@Property详解

    Objective-C中的@Property详解 @Property (属性) class vairs 这个属性有nonatomic, strong, weak, retain, copy等等 我把它 ...

  9. OC-引用计数器,内存管理,野指针

    总结 全局断点 →-->+-->Add Exception Breakpoint 开启僵尸监听 打开Edit scheme -->Diagnostics-->Enable Zo ...

最新文章

  1. IDEA下找不到diagrams按钮选项的解决方案
  2. c++ 10.跳转语句
  3. android String的replace和replaceAll的使用
  4. [Java基础]String对象的特点(易错点)
  5. 2019北妈和你:活着就意味必须要做点什么,请好好努力
  6. JavaScript 作用域不完全指北
  7. 电力能耗监测在山东青岛机场的应用
  8. m3u8下载时出现跨域的解决方法
  9. Linux命令-PV
  10. ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装
  11. html可以联机玩的小游戏,数学趣味小游戏,在家也可以和孩子一起玩
  12. Vue3基础难点总结
  13. DeFi:过去、现在和未来
  14. argc和argv的定义和用法
  15. Win10远程桌面,用户账户无效的解决方法
  16. 练习6-11 城市:创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应
  17. 前端在线预览word,excel,pdf
  18. 超前进位加法器(较为详细讲解)
  19. JavaWeb项目导入IDEA出现错误
  20. 使用Python编写简单的小程序、成绩计算器

热门文章

  1. USACO 6.1.3 Cow XOR
  2. 知其所以然~redis的原子性
  3. 多个相同参数表单提交
  4. 一天学一个模式_第一天:策略模式
  5. 时隔一年俺又回来了..
  6. Android应用开发—RecyclerView绘制蒙层
  7. linux删除文件操作
  8. git ssh拉取代码_阿里云搭建git服务器
  9. java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...
  10. 安装安全类软件进行了android签名漏洞修补,魅族MX3怎么升级固件体验最新比较稳定的版本...