- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在调试我正在尝试编写的 iPhone 应用程序时遇到问题,这让我陷入困境。
该应用程序从网站获取 XML 文档,将其解析为数组,然后将其显示在 TableView 中。我将解析器放在一个单独的文件中。 RootViewController 中的 ViewDidLoad 向其发送一个 url,解析器开始工作,然后返回一个 NSMutableArray。
当我运行该应用程序时,它可以很好地处理小型 XML 文件(5 个条目左右,以及 1-3 个部分),但是当我使用较大的 XML 文件(20+ 行,超过 12 个部分)时,我收到错误“-[CFString length]:当我滚动到表格 View 底部附近时,消息发送到已释放的实例 0x3881940",准确地说,就像最后一个部分标题即将出现在屏幕上的可视区域一样。
如果我在此方法中返回静态字符串而不是数组中的对象,它不会崩溃,但我可以使用 NSLog 调用该数组,并且它返回标题没有问题。
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)indexPath {
return [[returnedEvents objectAtIndex:indexPath ] objectAtIndex:0];
}
returnedEvents 数组在 -(void) dealloc {} 之前不会被释放
我已经阅读了这里的其他一些帖子,以及一些有关调试的指南,但到目前为止我还找不到任何能够帮助我的东西,我非常乐意在这里发布一些代码等等信息,我只是不知道从哪里开始。
预先感谢任何愿意帮助我的人。
** 更新
这是单元格 View 代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// Configure the cell.
[[cell detailTextLabel] setText:[[[returnedEvents objectAtIndex:indexPath.section] objectAtIndex:indexPath.row + 1] objectForKey:@"Summary"]];
[[cell textLabel] setText:[[[returnedEvents objectAtIndex:indexPath.section] objectAtIndex:indexPath.row + 1] objectForKey:@"title"]];
return cell;
}
*另一个更新
这是程序崩溃时调试器中出现的内容。通过一些调试教程,我了解到这是堆栈跟踪,如果看起来错误,请告诉我。
#0 0x01be33a7 in ___forwarding___
#1 0x01bbf6c2 in __forwarding_prep_0___
#2 0x00066f13 in -[UITableView(UITableViewInternal) _delegateWantsHeaderForSection:]
#3 0x00069fe2 in -[UITableView(_UITableViewPrivate) _updateVisibleHeadersAndFootersNow]
#4 0x000727e4 in -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow]
#5 0x00069953 in -[UITableView layoutSubviews]
#6 0x02f482b0 in -[CALayer layoutSublayers]
#7 0x02f4806f in CALayerLayoutIfNeeded
#8 0x02f478c6 in CA::Context::commit_transaction
#9 0x02f4753a in CA::Transaction::commit
#10 0x02f4f838 in CA::Transaction::observer_callback
#11 0x01bbb252 in __CFRunLoopDoObservers
#12 0x01bba65f in CFRunLoopRunSpecific
#13 0x01bb9c48 in CFRunLoopRunInMode
#14 0x01d6078d in GSEventRunModal
#15 0x01d60852 in GSEventRun
#16 0x00023003 in UIApplicationMain
#17 0x00002a20 in main at main.m:14
这是我用来获取数组的代码:
NSURL *XMLURLPath = [[NSURL alloc] initWithString:@"http://www.localendar.com.au/events/database_xml.php?day=2010-05-01&endday=2010-05-30"];
returnedEvents = [[NSMutableArray alloc] initWithArray:[localoXMLParser parseXMLDataWithURL:XMLURLPath]];
[XMLURLPath release];
也许这是不好的做法?该数组有几层深,应用程序是否可能以某种方式释放数组中的某些对象?
最佳答案
看不出代码有任何问题,但我们可以根据您提供的信息确定以下内容。
该错误表明代码在某处失败,因为长度请求被发送到已发布的字符串(拥有堆栈跟踪会有所帮助)。
它与 ~5 一起工作的事实看起来可能与滚动时单元格出列有关。
当您迭代数组并访问所有成员时,我认为这是在 cellForRowAtIndexPath
中,并且您在滚动时记录文本?如果是这样,那么数组也没有问题。
这可能与indexPath.row + 1
有关吗?您是否有一个额外的单元格用于存储其他数据?
关于iphone - -[CFString长度] : message sent to deallocated instance 0x3881940 when i scroll to near the bottom of a table on iphone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711276/
我知道我的问题有点含糊,但我不知道如何描述它。我问过很多地方,但似乎没有人理解我为什么要这样做。但请耐心等待,我会解释为什么我想要这样的东西。 我使用 Liquid Templates 允许用户在我的
这个问题在这里已经有了答案: what is the difference between null != object and object!=null [duplicate] (2 个回答) 7年
当我在我的本地主机 Google App Engine 应用程序中将日志记录级别更改为 FINE 时,我开始在我的跟踪堆栈中看到这些: Apr 17, 2013 4:54:20 PM com.goog
Python 有内置函数 type : class type(object) With one argument, return the type of an object. The return v
我正在使用深度学习进行语义分割,我遇到了以下术语:语义分割、实例检测、对象检测 和对象分割. 它们有什么区别? 最佳答案 这些术语的某些用法对用户而言是主观的或依赖于上下文,但据我所知对这些术语的合理
我面临 -[NSConcreteMutableData release] 的问题:消息发送到已释放的实例,我也附上了我的示例代码。 - (IBAction)uploadImage { NSString
我试图显示模型中的单个实例(数据库行),其中多个实例共享多行的相同字段(列)值。为了澄清这一说法,我有以下情况: ID/Title/Slug/Modified 1 Car A 1s ag
我正在尝试使用mockito来模拟服务。然而,我没有找到一种方法来告诉mockito,给定一个类的实例返回给我相同的实例: 类似于: given(service.add(any(Individua
我知道如何从父类(super class)原型(prototype)创建子类原型(prototype)。但是,如果我已经有了父类(super class)对象的实例来创建子类对象怎么办? 在 JS 中
鉴于 Kotlin 1.1。对于某个类的 instance,instance::class.java 和 instance.javaClass 似乎几乎是等价的: val i = 0 println(
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: Find out the instance id from within an ec2 machine 我正在寻找从
为什么我的 Instantiate 函数没有创建 That 的“空白”实例? 我有以下最小类: classdef That < handle properties This = '' end
Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTra
考虑以下几点: public class A { public String name = "i am a A instance"; } public class B extends A {
我正在使用 Scalr 来扩展网站服务器。 在 Apache 服务器上,我安装了 Sakai,并为 Linux 机器创建了一个启动脚本。 问题是,如何确保MySQL实例在Apache服务器启动之前启动
Android Realm DB 允许使用 Realm.getInstance() 获取多个实例。这些中的最佳实践是什么? :1.创建单个实例(应用程序范围)并在任何地方使用它2. 在需要时获取一个新
我很难理解为什么修改实例 a 中的属性会修改实例 b 中的相同属性。 var A = function (){ }; A.prototype.data = { value : 0 }; var
我将 Weka 用作更长管道的一部分,因此,我无法承受将所有数据写入文件或数据库只是为了创建一个 Instances。目的。我可以即时做的是创建 Instance 的列表对象。 来自 this pag
class C: def func(self, a): print(a) c = C() print(c.__dict__) # {} c.func = c.func # c.func i
Angular Routing 文档提到了组件实例创建、组件实例激活和路由激活。 文档没有解释这些概念的区别,以及每次创建/激活发生的时间。 问题 实例创建和实例激活有什么区别? 实例激活和路由激活有
我是一名优秀的程序员,十分优秀!