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

观察上述情况,上述就是著名的循环引用问题,对于此类问题,“你包含我,我包含你”,里面相关的对象占用的内存永远回收不了,解决办法很简单,与常规方法不同。正常情况下,我们应在Person.h文件中加上:@property (nonatomic, retain) Card *card;,在Card.h文件中加上@property (nonatomic, retain) Person *person;。为了解决这个循环引用问题,我们应把其中一个retain改成assign,另一个不变即可。比如把Card.h中的改为:@property (nonatomic, assign) Person*person;

这样就可以解决循环引用的问题了。

综上,两端循环retain引用解决方案:

一端用retain,一端用assign

时间: 2024-09-17 23:59:17

OC之非ARC环境下循环retain问题的相关文章

ios-IOS获取系统相册图片名称在非ARC模式下报错

问题描述 IOS获取系统相册图片名称在非ARC模式下报错 dispatch_async(dispatch_get_main_queue(), ^{ ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset){ ALAssetRepresentation *representation = [myasset defaultRepresentation]; NSString *fileName = [represen

c语言-在VC编的程序如何在非VC环境下运行呢?

问题描述 在VC编的程序如何在非VC环境下运行呢? 小白一枚,用C抄了一个猜拳游戏,生成的exe文件貌似不能在别的电脑上运行,有什么方法可以解决呢?静态链接如何实现呢? 解决方案 在VC中,是静态.还是动态,在工程的设置中修改一些设置即可.生成的 EXE 不能在另的电脑上运行,也就是说可以在自己的电脑上运行了.是不是?如果是,先修改为静态链接试试. 解决方案二: 解决方案三: 一个办法是在项目属性里改为MFC静态连接.另一个办法是新电脑运行时缺什么你就拷什么. 解决方案四: 看什么程序,如果是控

非域环境下使用证书设置数据库镜像

数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中.镜像不能直接访问;它只用在错误恢复的情况下才可以被访问. 要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境.主服务器被称为"主机",第二个服务器被称作"备机".主机数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝.当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中. 除了

MySQL非主从环境下数据一致性校验及修复程序

1. 简介 项目地址:https://github.com/seanlook/px-table-checksum 主从环境下数据一致性校验经常会用 pt-table-checksum 工具,它的原理及实施过程之前写过一篇文章:生产环境使用 pt-table-checksum 检查MySQL数据一致性.但是DBA工作中还会有些针对两个表检查是否一致,而这两个表之间并没有主从关系,pt工具是基于binlog把在主库进行的检查动作,在从库重放一遍,此时就不适用了. 总会有这样特殊的需求,比如从阿里云R

在非容器环境中实现DevOps

采用DevOps方式实现软件交付的原因之一是为了消除生产部署过程中的瓶颈,对于服务器端软件,通常涉及以下部分: 应用程序环境,如操作系统参数第三方组件,如应用程序服务器,web服务器和数据库顶部运行的应用软件 为了消除部署瓶颈,DevOps旨在打破开发人员和IT运营人员之间的障碍(也是DevOps得名的原因),以促进协作的工作环境.因此,需要确保生产环境与开发环境保持同步,并且所有部署过程一起执行.实现这一目标的方式之一是通过使用容器,如Docker或Kubernetes.事实上,很多人将容器和

ERP环境下内部控制系统建立与实施要点

ERP虽然在技术上依托于现代信息技术,但本质上是个管理工程,其目的是要把根据企业实际情况提炼出来的先进管理流程.管理方法.管理技术及管理理念,用现代IT技术固化成型,从而提升企业的工作效率.而内部控制作为一种先进的组织管理制度在现代企业管理中有着重要的地位,它对于确保企业经营目标的实现.国家法规制度的贯彻.财会信息质量的保证.以及财产物资的安全与审计工作的开展等诸多方面都有着非常重要的作用.因而,在ERP环境下建立内部控制系统是ERP项目实施中不可缺少的一部分.ERP的引入,一方面可以帮助企业节

微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件

原文:微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件 开篇介绍 大多数情况下我们的 SSIS 包都会配置在 SQL Agent Job 中周期性的按计划执行,比如每天晚上调用 SSIS 包刷新数据,处理 Cube 等.一旦 SSIS 包中出现任何异常,报错,那么配置在 SQL Agent Job 中的通知,邮件提醒就会把这些错误信息发邮件到指定的用户或者系统维护者,这样就起到了一个错误监控的作用. 但是在有的情况下,有一些

ARC模式下的循环引用引起内存泄漏

自从iOS 5时代自动引用计数(Automatic Reference Counting)技术发布,Cocoa工程师们才扔下了内存管理的包袱,从此在Objective-C修行道路上的一座大山被削平.然而,即使ARC很强大,我们日常搬砖时同样是有内存泄漏风险的,今天我就跟大家聊聊这些你可能还没有注意到的坑. 测试原理 我们知道ARC模式下,NSObject的MRC相关方法都不可以使用了,但dealloc方法如果实现了,同样还是会调用的,只是不允许在dealloc方法中调用[super deallo

浅析非IMU模式下DML语句产生的REDO日志内容格式

实验内容:非IMU模式下DML语句产生的REDO日志内容格式解读,数据库版本:11.2.0.4 最详细的解读是UPDATE的. 实验环境准备 11G中默认是开启IMU特性的,做此实验需要关闭此特性. alter system set "_in_memory_undo"=false; alter system set "_in_memory_undo"=true;  --实验结束后使用此语句改回使用IMU特性. 修改参数完成后,重启数据库: shutdown imme