`
chenniaoc
  • 浏览: 38775 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何从一个方法中返回来自于集合的对象

 
阅读更多

 

- (ImageScrollView *)dequeueRecycledPage
{
    ImageScrollView *page = [recycledPages anyObject];
    if (page) {
        [[page retain] autorelease];
        [recycledPages removeObject:page];  //注释1
    }
    return page;
}

 上述方法返回一个从NSmutableSet获得的一个任意对象。

需要指出的是,这个对象从集合中取得以后,将会在最后执行一次remove操作。

 

如果去掉注释1的代码块的话,将会造成BAD ACCESS异常。

 

原因:

因为removeObject方法会隐式的执行该对象的release方法,如果不在remove之前做一次retain的话,会造成对象在返回给caller方法之前被清理掉。所以必须要retain一下,但这还不够如果caller没有持有这个对象,那么这个retain就会造成memory leak,所以还要补上一个autorelease。叫做pending release

分享到:
评论

相关推荐

    javascript文档

    isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...

    微软JavaScript手册

    isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...

    JScript 语言参考

    isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...

    c#学习笔记.txt

    · 一个名为 MoveNext 的 bool 方法,它递增项计数器并在集合中存在更多项时返回 true。 有三种使用集合的方法: 使用上述指导创建一个集合。此集合只能用于 C# 程序。 1. 使用上述指导创建一个一般集合,另外实现 ...

    C++ 面向对象教程 21 courses#

    2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 ...

    EL表达式的详细使用

    它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。 EL 提供了在 JSP 脚本编制...

    jQuery详细教程

    您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中: $(document).ready(function(){ --- jQuery functions go here ---- }); 这是为了防止文档在完全加载(就绪)之前运行 jQuery...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    jsdiff2mongo:流星包比较两个可序列化的对象并生成相应的mongo更新查询

    安装流星添加vjau:jsdiff2mongo用法该包导出单个函数jsDiff2mongo(oldObject,newObject) 假设您有一个来自minimongo的物体var oldObj = Coll . findOne ( { } ) ;console . log ( oldObj ) ;// {_id:"xyz123", a...

    flex3的cookbook书籍完整版dpf(包含目录)

    遍历集合对象并记录位置 13.7节. 创建HierarchicalViewCollection对象 13.8节. 过滤和排序XMLListCollection 13.9节. 对集合的多个字段进行排序 13.10节. 对集合的日期类型数据进行排序 13.11节. 创建...

    vb源程序呀呀

    Spreadsheet.Range 该方法接受一个区域引用(例如A1:B2或A:B),返回一个Range对象。 Spreadsheet.ActiveSheet 当前激活Sheet页 Spreadsheet.Cells 单元格集合 Spreadsheet.ActiveSheet.ActiveCell 当前激活单元格 ...

    超爽的自学课件(java)

    <br>(12) 第12章:传递和返回对象 由于我们在Java中同对象沟通的唯一途径是“句柄”,所以将对象传递到一个函数里以及从那个函数返回一个对象的概念就显得非常有趣了。本章将解释在函数中进出时,什么才是...

    JSTL详细标签库介绍

    因为可能除数为0是会出现异常,我们查找java.lang包中各个Exception类,发现RuntimeException类集合中的ArithmeticException可以处理运算异常,我们就让一个DivideByZeroException(继承于ArithmeticException) ...

    Comparable接口和Comparator接口的比较

    1.Comparable详解 1.1Comparable概述 ...此 接口只有一个方法compareTo,比较此对象与指定对象的顺序,如果该对象小 于、等于或大于指定对象,则分别返回负整数、零或正整数。 对于String类实现了这个Comparab

    C++高级参考手册 完全自学 内容详细 讲解通俗易懂

    2.2 一个袖珍C库 2.3 放在一起:项目创建工具 2.4 什么是非正常 2.5 基本对象 2.6 什么是对象 2.7 抽象数据类型 2.8 对象细节 2.9 头文件形式 2.10 嵌套结构 2.11 小结 2.12 练习 第3章 隐藏实现 3.1 ...

    C++编程思想(中文)

    2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 ...

    C++编程思想(中文)

    2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 ...

    免费下载:c++编程思想(中文)

    2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 ...

Global site tag (gtag.js) - Google Analytics