`
chenniaoc
  • 浏览: 40044 次
  • 性别: 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

分享到:
评论

相关推荐

    python字符串, 列表, 字典, 集合方法说明

    4. items():返回一个包含字典中所有键值对的视图对象。 5. keys():返回一个包含字典中所有键的视图对象。 6. values():返回一个包含字典中所有值的视图对象。 7. update([other]):用来自其他字典或键值对的项...

    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 方法 返回一个由...

    测试迭代.zip,迭代器、可迭代对象、生成器、生成器表达式的实验代码

    1. **可迭代对象**:在Python中,一个对象如果可以被迭代,即它可以依次返回其所有元素,那么它就是一个可迭代对象。例如,列表、字符串、字典等都是可迭代对象。可迭代对象必须实现`__iter__`方法,该方法返回一个...

    检查控制台中的JavaScript对象方法和属性

    要查看对象的全部方法,可以使用`Object.keys(obj)`,这将返回一个包含对象所有可枚举属性(不包括其原型链上的属性)的数组。如果你也想查看对象的非枚举属性,可以使用`Object.getOwnPropertyNames(obj)`。 对于...

    以员工为编写一个程序,定义如下类:以员工为父类,该类包含员工的基本信息:姓名、年龄、部门。创建两个子类:经理类和工人类,输出经理和工人的工资。在父类中编写getSalary()方法,在子类中覆盖,实现多态。

    本案例中,我们构建了一个基本的员工类作为基类,并从它派生出两个子类:经理类和工人类。通过这些类的设计,我们可以实现对不同类型的员工进行基本信息的管理,并且能够根据不同类型的员工计算他们的工资。 ### ...

    Java集合框架,来自个人参考其他资源学习的笔记1

    Java集合框架是Java标准库中一个重要的组成部分,提供了存储和操作一组对象(集合)的方式。它包括各种接口、类以及算法,使得开发人员能够高效地管理和操作集合数据。集合框架的设计遵循了一些基本原则,如统一性、...

    Dataset转对应的实体集合

    给定的代码片段中,`EntityHelper<T>`类定义了一个泛型方法`FillModel`,该方法接收一个`DataTable`参数并返回一个`ObservableCollection<T>`。这里选择使用`ObservableCollection<T>`而非`List<T>`,可能是为了支持...

    JSP+Jquery+JSON 集合实现AJAX

    jQuery是一个流行的JavaScript库,它简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。在AJAX场景中,jQuery提供了一种简单的方式来发起异步请求,如`$.ajax()`或`$.getJSON()`函数,可以轻松地从服务器...

    JavaScript 面向对象程序设计

    这里的`Hello`函数就充当了构造器的角色,`new Hello()`会执行`Hello`函数中的代码,并返回一个对象。 JavaScript对象的属性和方法可以通过点号(`.`)或者方括号(`[]`)来引用。例如: ```javascript var array = ...

    ASP网络编程之request对象

    在ASP动态网页编程技术中,`request`对象是一个非常重要的组成部分。它主要用于从客户端获取各种信息,这些信息对于构建动态内容和服务至关重要。本文将深入探讨`request`对象的用法及其在实际开发中的应用场景。 #...

    ASP.Net内置对象的用法与区别

    这是一个键值对集合,用于获取URL中的查询参数。 - **Path**: 获取当前请求的路径信息。 - **UserHostAddress**: 获取远程客户端的IP地址。 - **Browser**: 获取有关客户端浏览器功能的信息。 2. **方法** - **...

    ADO.NET的内置五大对象实例.txt

    在IT领域,特别是数据库操作与应用开发中,ADO.NET是一个非常关键的技术框架,它为.NET开发者提供了高效且灵活的数据访问方式。ADO.NET的核心是其内置的五大对象:Connection、Command、DataReader、DataAdapter以及...

    java中map集合的用法.pdf

    创建Map对象时,通常会指定一个具体的实现类,如HashMap。例如: ```java Map, String> map = new HashMap(); ``` 这里创建了一个HashMap实例,其中键和值都是字符串类型。 2. **插入元素** 使用`put()`方法...

    xfire 使用外部类、返回collection及输入数组参数示例

    你可以创建一个接受`Person`对象的服务方法: ```java public void savePerson(Person person); ``` ### 2. 返回Collection类型 Web服务经常需要返回一组数据,这在Xfire中可以通过返回Collection类型实现。例如...

    ListView用法大集合

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常用于实现滚动列表效果。本篇文章将深入探讨ListView的各种用法,包括不同类型的Adapter及其基础——BaseAdapter。 首先,我们来看`5....

    HashCode相同equals不同的2位字符集合算法

    1. **hashCode()**:这个方法是Object类中的,返回一个整数值,代表对象的哈希码。在Java集合框架中,哈希码用于快速查找对象,特别是在哈希表结构如HashMap中。默认情况下,`hashCode()` 返回对象的内存地址的某种...

    C# request获取参数.docx

    Request 对象会依次访问 QueryString、Form、Cookies 和 ServerVariables 四个集合,如果在任意一个集合中找到了指定的参数,就立即返回。 三、Request.QueryString Request.QueryString 是 GET 传过来的值的集合...

Global site tag (gtag.js) - Google Analytics