- 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/
如何编译它? 在此函数的第二行: func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWi
我使用此代码获取 ABPerson 的姓氏 CFStringRef lastNameRef = ABRecordCopyValue((ABRecordRef)personRecordRef, kABP
我想在子函数中为 CFString 分配空间。像这样: void fun(CFStringRef *ref) { ref = CFStringCreateWithCString(NULL, "
我正在为 iPhone 开发应用程序,遇到了一些内存管理问题。在应用程序执行期间,事件字节数不断增加而不受限制。我试图在我的代码中找出问题,但似乎找不到任何会导致事件字节数急剧增加的东西。我在执行过程
不知何故,下面的代码使我的应用程序崩溃: NSString *filename = [NSString stringWithFormat:@"%@%@", dbPath, @"BAR"]; NSStr
我正在开发的一个应用程序在 iPhone 上运行时不断崩溃,但在模拟器上却没有(尽管在没有符号 malloc_error_break 的情况下运行时会显示警告,但该应用程序在 Sim 上仍然运行) 我
我想知道一个字符串是否是单字节编码。 CFShowStr 可以完成这项工作,但它将消息输出到控制台。 CFShowStr 函数输出消息如下所示,IsEightBit 项就是我想要的: Length 7
我有一个CFMutableDictionaryRef ,调试器中的部分内容是: "device-id" = ; model = ; "vendor-id" = ; 现在我可以获得 key model
我正在应用程序上运行仪器。根据仪器,未检测到任何泄漏。 但是,类别CFString (store) 一直在上升。有谁知道 CFString (store) 是什么? 这是否意味着我有泄漏? 最佳答案
我看过问答 here about the self keyword in Swift . 但是,对我来说,这并不能解释在 this question 的以下代码片段中使用 .self let attr
我有以下代码将 String 转换为 CFString 和 backwarts: string path = @"C:\Users\ayi\Desktop\Failed\AngryBirds.ipa"
在 xcode 中使用内存图调试器时,我看到了一些内存泄漏。 Backtrace 没有直接链接到我的任何代码,而是通过跟踪猜测它的保存以假设它与组合和一些 DataTaskPublisher 相关。
首先,这与古代技术有关。我正在处理的程序端口在 Metrowerks Codewarrior 9 中维护,目标是 PPC。 用于 MSL C 的 FSRefParentAndFilename_fope
这个问题在这里已经有了答案: NSString is exactly the same as CFString? (1 个回答) 关闭 9 年前。 我没有理解 iOS 中 CFString 和 NS
我很快就开始使用 Cocoa 编程 Mac OS X 应用程序,所以这确实是一个新问题。为此事道歉。 首先我的代码片段: - (id)tableView:(NSTableView *)tableVie
自 Swift 2 起,可以从 Swift 调用采用 C 回调的 C 函数,而无需中间包装器。 许多 C 事件处理 API 都遵循首先创建上下文的模式: struct Context { CF
我正在尝试掌握在 Mac OS X 中使用 JNA 的窍门。我想访问 Carbon 库,但 Cocoa 没有对应的库,因此 Rococoa 无法帮助我(我认为...) 当我尝试调用需要 CFStrin
我有一个返回 CFString 的库,我试图在 C# 中获取该字符串值。问题是我不知道如何在 C# 中执行此操作。 使外部函数返回 CFString 将不起作用,因为它会引发异常“传递给非托管代码的类
我正在解决我的 iPad 应用程序中的一些内存分配问题,并且花了很长时间观察 CFString 在zombies instrument,直到我切换到 Leaks or allocations inst
我最近更新到 Xcode 6.1 以便能够与 iOS 8.1 一起工作,但现在我的最新项目面临错误。 对于以下行,我收到错误消息“CFString!不符合协议(protocol) Hashable”:
我是一名优秀的程序员,十分优秀!