iphone--使将对象加入NSMutableArray中 引用计数不加1

FPGA新手必看:用USB转TTL实现串口通信的完整流程(附CH340G电路详解) 本文为FPGA新手提供了通过USB转TTL模块实现串口通信的完整实战指南。详细解析了CH340G电路设计要点、硬件连接方法,并分享了经过验证的Verilog代码框架,帮助读者快速掌握FPGA与PC通信的核心技术,解决电平匹配与波特率设置等常见问题。 阅读详情

当我们在将某个对象加到NSMutableArray(NSMutableDictionary),addobject 时会自动对象的引用计数加1,这时当我们想在对象释放自己调用dealloc方法时,同时将对象从NSMutableArray中移除时,就有问题了。因为我们加到NSMutableArray中时,对象的引用计数被加1,就是说如果不先从NSMutableArray remove的话,那对象引用计数永远都不会为0(按正确的释放),不会调用dealloc 方法,那这个解决的方法时,在添加进NSMutableArray对象时不要为对象引用计数加1,就可以了;

具体的做法是,用所要添加的对象,用另外的对象包装一下,再添加到NSMutableArray中

#import <Foundation/Foundation.h>

/**
 *	@brief	用于封装侦听对象,防止加入容器时引用计数被加1,无法释放
 */
@interface FEDownloadListenerItem : NSObject

@property (nonatomic, readonly, assign) id listener;

- (id)initWithListener:(id)listener;
@end

#import "FEDownloadListenerItem.h"

@implementation FEDownloadListenerItem

@synthesize listener = _listener;

- (id)initWithListener:(id)listener

{

    if (self = [super init]) {

        _listener = listener;

    }

    return self;

}

@end

//

//上面用来是用封装对象的类,里面只是将传入的对象保持引用,但没有retain
//下面是使用,的方法


/**
 *	@brief	根据附件ID 监听某个任务
 *
 *	@param 	attachmentId 	附件ID
 */
- (void)listenTask:(NSObject*)listener attachmentId:(NSString*)attachmentId
{
    if (task == nil) {
        return;
    }

    NSMutableArray *listens;
    if (listens == nil) {
        listens = [[[NSMutableArray alloc] init] autorelease];
    }
    for (FEDownloadListenerItem* listenerItem in listens) {
        if (listenerItem.listener == listener) {
            return;
        }
    }

    FEDownloadListenerItem* listenerItem = [[FEDownloadListenerItem alloc] initWithListener:listener];
    [listens addObject:listenerItem];
    [listenerItem release];

}

/**
 *	@brief	根据附件ID 去除监听某个任务
 *
 *	@param 	listener 	监听都
 *	@param 	attachmentId 	附件ID
 */
- (void)removeListenTask:(NSObject*)listener attachmentId:(NSString*)attachmentId
{
    NSMutableArray *listens ;
    if (listens != nil && listener != nil) {
        for (FEDownloadListenerItem* listenerItem in listens) {
            if (listenerItem.listener == listener) {
                [listens removeObject:listenerItem];
            }
        }
    }
    
}








        
Silly Tavern酒馆ai角色卡与世界书导入超详细教程! 前几天,我在设置 Silly Tavern 的时候,想导入一个喜欢的角色卡,结果发现不少朋友其实已经下载好了角色资源,但却不知道怎么正确导入使用。这篇文章就作为一份完整的新手向教程,一步步教你如何在 Silly Tavern 中导入角色卡、世界书,并实现与 AI 角色的真实互动。如果你是第一次接触这个功能,建议先收藏慢慢看~点击菜单栏上的 图标,打开角色界面。初始状态下,你应该只看到默认角色 Seraphina。你可以先点击她的头像尝试聊天,也可以导入自己喜欢的角色。点击导入按钮,选择你下载好的角色卡(通 阅读详情

相关推荐

Linux下自动化解析q7签名文件的有效期与时间戳

本文详细介绍了在Linux环境下自动化解析q7签名文件有效期与时间戳的方法。通过编写高效脚本,开发者可以批量提取签名时间信息,验证签名有效性,并集成到CI/CD流程中。文章提供了完整的脚本实现,包括错误处理、批量处理功能,并解决了常见环境问题,特别适用于国产操作系统如UOS的开发场景。

weixin_30872499的博客 519

iOS 问题整理07----内存管理

1.对于block,理解,mrc和arc下有什么区别,使用注意事项 mrc 下栈上的 block,在 arc 中并且符合一定条件的情况下会自动被拷贝到堆上 block 内部如果使用了 __block 修饰的局部变量,在 mrc 下 block 不会对这个变量产生强引用,在 arc 下 block 会对这个变量产生强引用。block 从栈上拷贝到堆上的时候,如果是在 mrc 下,那么 block ...

weixin_34280237的博客 708

YOLOv5实战:无人机巡检图片差异对比与违建标记(附完整代码)

本文详细介绍了如何利用YOLOv5目标检测技术实现无人机巡检图片差异对比与违建标记。通过图像对齐、目标检测、差异分析和可视化标记四个步骤,构建高效的违建识别系统,显著提升城市管理效率。文章包含完整代码实现和性能优化技巧,为计算机视觉在无人机巡检中的应用提供实用指南。

weixin_42535720的博客 280

IOS学习中的几个问题

1.描述IOS中MVC得具体体现。 答:MVC中的M是Model,即模型的意思。表示对数据的访问、处理和操作。V即View视图,用于显示界面。C是Controller控制器,用来控制和管理M和C,相当于它们之间交互的桥梁。IOS中充分运用了MVC模式,将数据的访问、业务逻辑与视图的显示分离开,用控制器来控制二者,来降低程序各模块间的耦合。例如,数据库的访问、持久化数据为Model,用UIView

wall_cow_LY的专栏 953

海光(hygon)CPU ESXI vSphere 紫屏问题修复记录

海光服务器ESXI 紫屏问题修复

edison202302的博客 3552

OpenClaw进阶实战(二十三):微信公众号接入——被动回复、客服消息、素材管理

本文介绍了将OpenClaw接入微信公众号的完整方案,重点包含以下内容: 接入方案选型:对比官方插件、三方服务和自建中转三种方式,选择自建Node.js中转服务实现灵活控制 核心原理:通过中转服务器完成微信消息协议转换,处理5秒超时限制和异步回复机制 实战开发: 搭建Express中转服务 实现Token管理和消息处理 采用内存缓存对话历史 通过客服接口异步回复 官方插件方案:介绍2026年发布的ClawBot插件,支持文本/图片/文件收发 进阶功能:包括素材管理接口调用示例 该方案适用于需要深度定制公众号

PeterPan的博客 142

iOS—属性关键字

iOS 学习属性关键字

cyberjack的博客 573

玩转Docker小游戏项目系列:Docker部署魔塔网页经典小游戏

玩转Docker小游戏项目系列:Docker部署魔塔网页经典小游戏

jks212454的博客 1063

OC学习篇之---数组对象的引用计数问题和自动释放池的概念

之前一片文章中我们介绍了OC中的两个关键字@property和@synthesize的使用的使用: http://blog.youkuaiyun.com/jiangwei0910410003/article/details/41925967 今天我们来看一下OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一、数组对象是如何处理对象元素的引用计数问题 // // ma...

modabobo 342

基于STM32设计的智能家居控制系统(华为云)_363

本项目设计并实现了一种基于STM32的智能家居控制系统,融合了语音识别、远程控制、环境监测与安全报警等功能。系统以STM32F103C8T6单片机为核心控制器,集成ESP8266 Wi-Fi模块实现与华为云IOT物联网平台的数据交互,采用MQTT协议进行通信。用户可通过语音识别模块控制风扇、空调、窗帘、卧室灯、客厅灯和电视等家电的开关操作,同时也可通过Android手机APP或Windows电脑上位机进行远程控制。系统还具备温湿度、光照强度、烟雾浓度和火焰检测功能,当检测到异常情况时,自动触发蜂鸣器报警并向

880

【WRF-Chem教程第四期上】运行 WRF-Chem 模型

完整介绍运行 WRF-Chem 模型的详细步骤

WW、forever的博客 3109

NSMutableArray使用中忽视的问题

导语: NSMutableArray提供的API能解决绝大部分的需求,但是在实际iOS开发中,在某些场景下,需要考虑线程安全 或 弱对象引用 或 删除元素这三个问题。 一、线程安全的NSMutableArray NSMutableArray本身是线程不安全的。简单来说,线程安全就是多个线程访问同一段代码,程序不会异常、不Crash。而编写线程安全的代码主要依靠线程同步。 1、不使用atomic修饰属

学到老 1427

SAP 系统间信任关系配置全攻略:从 SM59 到 SMT1 的实践与风险控制

本文介绍了在SAP系统间配置信任关系的详细流程与最佳实践。文章以SAP Gateway与后端系统架构为场景,从SM59创建RFC目的地开始,到SMT1建立信任关系,再到授权对象S_RFCACL的配置,提供了完整的操作指南。重点包括:使用标准命名规范创建专用RFC连接、通过向导完成系统间信任登记、严格控制S_RFCACL授权范围等。文中还分享了真实项目案例、可复用的检查清单以及常见问题的排查思路,帮助用户实现稳定可靠的跨系统无密码调用,同时确保安全性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 323

iphone 对NSMutableArray数组排序

自定义一个类,并初始化该类,然后添加到NSMutableArray数组中,并对数组进行排序。 1.结构定义: //每一个房态的状态 @interface RoomStatus : NSObject { double _price; } @property (

think12的专栏 3387

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

iphone NSmutableArray内存管理

1:原文摘要: http://www.cnblogs.com/speeding/archive/2011/09/16/2178355.html iPhone程序开发中的内存泄漏问题是新手非常头痛的事情,可能是用C#这类自动垃圾释放的语言太习惯了,用xcode中的profile工具查了一下我写的小程序,内存泄漏了一大堆,经过一阵子排查,在NSMutableArray中添加对象后不正确维护对象的引用计...

weixin_33907511的博客 90

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

iPhone开发笔记[12/50]:内存泄漏是必然要经历的痛,NSMutableArray的正确使用...

iPhone程序开发中的内存泄漏问题是新手非常头痛的事情,可能是用C#这类自动垃圾释放的语言太习惯了,用xcode中的profile工具查了一下我写的小程序,内存泄漏了一大堆,经过一阵子排查,在NSMutableArray中添加对象后不正确维护对象的引用计数是一个主要原因。 在NSMutableArray how to properly addObjects and release这个讨论主题中...

申龙斌的程序人生 261

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IOS 编程中NSMutableArray的 replaceObjectAtIndex 异常问题

写此文主要用来记录开发过程中遇到的问题和解决思路,一方面用来日后提醒,另外一个方面也可以给遇到此类问题的童鞋一点提醒。 在开发一个IPHONE程序,在数据处理过程中用到了NSMutableArray用来处理和替换数据,但是在如下代码的时候出现异常 [buttonsIsSeleted replaceObjectAtIndex:ub.tag withObject:[[NSStrin

瞎几把学 9892

2S电池组均衡系统设计:从硬件架构到调试实践

在电池管理系统中,串联电芯的电压不一致是影响容量利用率和寿命的核心问题,而电池均衡技术则是解决这一短板效应的关键手段。通过高精度电压采样、压差判断与可控能量耗散,能够有效抑制电芯间的差异累积。储能机柜与备用电源等应用场景对均衡的持续性、可靠性及待机功耗提出了严苛要求。本文以2S串联电池作为最小验证系统,围绕MCU与专用恒流控制芯片构建被动均衡电路,详述了分压电阻精度、滞回状态机、故障保护机制及低功耗设计等工程实践,并深入剖析了调试中遇到的地弹干扰、基准漂移与接触电阻问题,为更大规模的BMS设计与均衡策略部署

weixin_34056162的博客 174

[iphone]NSArray和NSMutableArray

Objective-C语法之NSArray和NSMutableArray     Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。 1、NSArray 不可变数组 [array count] : 数组的长度。

yhqbsand 687

iPhone开发笔记[12/50]:内存泄漏是新手必然要经历的痛,NSMutableArray的正确使用...

iPhone程序开发中的内存泄漏问题是新手非常头痛的事情,可能是用C#这类自动垃圾释放的语言太习惯了,用xcode中的profile工具查了一下我写的小程序,内存泄漏了一大堆,经过一阵子排查,在NSMutableArray中添加对象后不正确维护对象的引用计数是一个主要原因。 在NSMutableArray how to properly addObjects and release这个讨论主题中...

weixin_34023982的博客 229

iPhone开发笔记[9/50]:NSMutableArray中的自动释放对象让我郁闷了一整天

在做一个TableView程序时,要在表格里显示一个文件夹内所有文件的清单,程序在一开始显示时正常,但是一滚动窗口时就崩溃,查找这个错误整整花了我一天的时间,原来出在NSMutableArray初始化时用的方法不正确,都是因为Objective-C的基础知识没学好。 在一个UITableViewController类中声明了一个NSMutableArray *localFiles这样一个数组,作...

weixin_33928137的博客 191

[iphone] NSDictionary / NSMutableDictionary 及 NSArray / NSmutableArray (实例)

NSDictionary 和 NSArray一样是不可变的对象。用来实现字典集合,在给定关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象)。  NSDictionary使用类方法 dictionaryWithObjectAndKeys: 来创建字典;使用方法objectForKey: 来获取字典中的值。  Java代码   NSDicti

This is bill的专属博客 1381

ios/iphone NSArray和NSMutableArray的常用方法

/* 初始化方法:     1.init返回一个空数组      2.initWithArray从已有数组初始化      3.initWithContentsOfFile//从plist文件加载      4.initWithContentsOfUrl//从网络地址上获取      5.initWithObject用一个对象初始化      6.initWithObjects从多对象

xyxdasnjss的专栏 1万+

ios+iphone NSDictionary / NSMutableDictionary 及 NSArray / NSmutableArray (实例)

NSDictionary 和 NSArray一样是不可变的对象。用来实现字典集合,在给定关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象)。   NSDictionary使用类方法 dictionaryWithObjectAndKeys: 来创建字典;使用方法objectForKey: 来获取字典中的值。 C代码   NSDic

yangtb2010的专栏 3189

添加CGRect, CGPoint等到NSMutableArray

因为CGRect,CGPoint等不是NSObject的子类,因此不能够直接添加到NSMutableArray中,所以要先将其转换成NSObject的子类。NSValue类可以解决这个问题,见NSValue类的声明: @interface NSValue (NSValueUIGeomet...

cheshu134615564的博客 186

如何添加CGRect, CGPoint等到NSMutableArray

http://blog.youkuaiyun.com/waiwaiwaiwaijijijiji/article/details/8179757 因为CGRect,CGPoint等不是NSObject的子类,因此不能够直接添加到NSMutableArray中,所以要先将其转换成NSObject的子类。NSValue类可以解决这个问题,见NSValue类的声明: [html

qhexin的专栏 990
上一篇: iphone--UIMenuController使用
下一篇: Cocos2d-x游戏开发之一 CocosBuilder编辑器使用
CJsen
博客等级 码龄17年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值