oc51--循环retain
// 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相关推荐
- OC之非ARC环境下循环retain问题
观察上述情况,上述就是著名的循环引用问题,对于此类问题,"你包含我,我包含你",里面相关的对象占用的内存永远回收不了,解决办法很简单,与常规方法不同.正常情况下,我们应在Perso ...
- iOS内存管理策略和实践
来源:http://www.baidu.com/link?url=irojqCBbZKsY7b0L2EBPkuEkfJ9MQvUf8kuNWQUXkBLk5b22Jl5rjozKaJS3n78jCnS ...
- iOS攻防——(四)class-dump-与-Dumpdecrypted-使用
1 class dump class dump 是一个用于检查保存在 Mach-O 文件中的 objective-c 运行时信息的工具,攻防中最常用.实用的命令行工具. 1.1 class dump ...
- OC 知识:彻底理解 iOS 内存管理(MRC、ARC)
1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的 ...
- 《Objective-c》-(内存管理之三:@property的内存管理)
内存管理之三--<@property的内存管理> 1.@property中与setter内存管理相关的参数 retain : release旧值,retain新值(适用于OC对象类型): ...
- 【译文练习】ReactiveCocoa概要:了解和使用RACCommand
原文地址 点击这里 这几天部门的前辈再用RAC的时候问到一个问题,RACCommand在RAC中具体的作用和起到的功能,到底应该如何应用它. 关于RAC的使用文章非常多,但是大多仅限于介绍和基本的使用 ...
- ios 内存管理的理解(一) 简述
1. 内存管理的范围 所有的OC对象(继承自NSObject类) 本质原因:是因为对象和其他数据类型在系统中的存储空间不一样,其他局部变量主要存放于栈中,而对象存储于堆中. 当代码块结束时,这个代码块 ...
- Objective-C中的@Property详解
Objective-C中的@Property详解 @Property (属性) class vairs 这个属性有nonatomic, strong, weak, retain, copy等等 我把它 ...
- OC-引用计数器,内存管理,野指针
总结 全局断点 →-->+-->Add Exception Breakpoint 开启僵尸监听 打开Edit scheme -->Diagnostics-->Enable Zo ...
最新文章
- IDEA下找不到diagrams按钮选项的解决方案
- c++ 10.跳转语句
- android String的replace和replaceAll的使用
- [Java基础]String对象的特点(易错点)
- 2019北妈和你:活着就意味必须要做点什么,请好好努力
- JavaScript 作用域不完全指北
- 电力能耗监测在山东青岛机场的应用
- m3u8下载时出现跨域的解决方法
- Linux命令-PV
- ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装
- html可以联机玩的小游戏,数学趣味小游戏,在家也可以和孩子一起玩
- Vue3基础难点总结
- DeFi:过去、现在和未来
- argc和argv的定义和用法
- Win10远程桌面,用户账户无效的解决方法
- 练习6-11 城市:创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应
- 前端在线预览word,excel,pdf
- 超前进位加法器(较为详细讲解)
- JavaWeb项目导入IDEA出现错误
- 使用Python编写简单的小程序、成绩计算器
热门文章
- USACO 6.1.3 Cow XOR
- 知其所以然~redis的原子性
- 多个相同参数表单提交
- 一天学一个模式_第一天:策略模式
- 时隔一年俺又回来了..
- Android应用开发—RecyclerView绘制蒙层
- linux删除文件操作
- git ssh拉取代码_阿里云搭建git服务器
- java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...
- 安装安全类软件进行了android签名漏洞修补,魅族MX3怎么升级固件体验最新比较稳定的版本...