- (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。
分享到:
相关推荐
4. items():返回一个包含字典中所有键值对的视图对象。 5. keys():返回一个包含字典中所有键的视图对象。 6. values():返回一个包含字典中所有值的视图对象。 7. update([other]):用来自其他字典或键值对的项...
isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...
isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...
isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...
1. **可迭代对象**:在Python中,一个对象如果可以被迭代,即它可以依次返回其所有元素,那么它就是一个可迭代对象。例如,列表、字符串、字典等都是可迭代对象。可迭代对象必须实现`__iter__`方法,该方法返回一个...
要查看对象的全部方法,可以使用`Object.keys(obj)`,这将返回一个包含对象所有可枚举属性(不包括其原型链上的属性)的数组。如果你也想查看对象的非枚举属性,可以使用`Object.getOwnPropertyNames(obj)`。 对于...
本案例中,我们构建了一个基本的员工类作为基类,并从它派生出两个子类:经理类和工人类。通过这些类的设计,我们可以实现对不同类型的员工进行基本信息的管理,并且能够根据不同类型的员工计算他们的工资。 ### ...
Java集合框架是Java标准库中一个重要的组成部分,提供了存储和操作一组对象(集合)的方式。它包括各种接口、类以及算法,使得开发人员能够高效地管理和操作集合数据。集合框架的设计遵循了一些基本原则,如统一性、...
给定的代码片段中,`EntityHelper<T>`类定义了一个泛型方法`FillModel`,该方法接收一个`DataTable`参数并返回一个`ObservableCollection<T>`。这里选择使用`ObservableCollection<T>`而非`List<T>`,可能是为了支持...
jQuery是一个流行的JavaScript库,它简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。在AJAX场景中,jQuery提供了一种简单的方式来发起异步请求,如`$.ajax()`或`$.getJSON()`函数,可以轻松地从服务器...
这里的`Hello`函数就充当了构造器的角色,`new Hello()`会执行`Hello`函数中的代码,并返回一个对象。 JavaScript对象的属性和方法可以通过点号(`.`)或者方括号(`[]`)来引用。例如: ```javascript var array = ...
在ASP动态网页编程技术中,`request`对象是一个非常重要的组成部分。它主要用于从客户端获取各种信息,这些信息对于构建动态内容和服务至关重要。本文将深入探讨`request`对象的用法及其在实际开发中的应用场景。 #...
这是一个键值对集合,用于获取URL中的查询参数。 - **Path**: 获取当前请求的路径信息。 - **UserHostAddress**: 获取远程客户端的IP地址。 - **Browser**: 获取有关客户端浏览器功能的信息。 2. **方法** - **...
在IT领域,特别是数据库操作与应用开发中,ADO.NET是一个非常关键的技术框架,它为.NET开发者提供了高效且灵活的数据访问方式。ADO.NET的核心是其内置的五大对象:Connection、Command、DataReader、DataAdapter以及...
创建Map对象时,通常会指定一个具体的实现类,如HashMap。例如: ```java Map, String> map = new HashMap(); ``` 这里创建了一个HashMap实例,其中键和值都是字符串类型。 2. **插入元素** 使用`put()`方法...
你可以创建一个接受`Person`对象的服务方法: ```java public void savePerson(Person person); ``` ### 2. 返回Collection类型 Web服务经常需要返回一组数据,这在Xfire中可以通过返回Collection类型实现。例如...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常用于实现滚动列表效果。本篇文章将深入探讨ListView的各种用法,包括不同类型的Adapter及其基础——BaseAdapter。 首先,我们来看`5....
1. **hashCode()**:这个方法是Object类中的,返回一个整数值,代表对象的哈希码。在Java集合框架中,哈希码用于快速查找对象,特别是在哈希表结构如HashMap中。默认情况下,`hashCode()` 返回对象的内存地址的某种...
Request 对象会依次访问 QueryString、Form、Cookies 和 ServerVariables 四个集合,如果在任意一个集合中找到了指定的参数,就立即返回。 三、Request.QueryString Request.QueryString 是 GET 传过来的值的集合...