gpt4 book ai didi

iPhone:调用 [NSBundle mainbundle] 在设备上但不是模拟器上崩溃

转载 作者:行者123 更新时间:2023-12-03 15:51:13 26 4
gpt4 key购买 nike

基本上问题正是标题所说的。

我的应用程序在模拟器上运行顺畅,没有任何崩溃。
事实上,以前的版本在应用商店。我在这里和那里做了一些小改动,突然它开始在一个非常奇怪的地方崩溃。

我用 [NSBundle mainBundle] resourcepath]在代码中的不同位置访问 plist 文件、图像等。前几次调用 NSBundle mainBundle]完全正常 - 正如预期的那样 - 但是,在某些时候它会返回......

-[NSBundle < null selector>]: unrecognized selector sent to instance 0x10a0e0

...并在设备上崩溃。这是确切的代码片段:
-(void) setImageName:(NSString *)s
{
[imageName release];
imageName = [s copy];
NSLog(@"last line before crash");
NSString *imagePath =[[NSBundle mainBundle] resourcePath];
NSLog(@"Why would it crash before here???");

imagePath = [imagePath stringByAppendingString:imageName];
imageUI = [[UIImage alloc] initWithContentsOfFile:imagePath];
[self setNeedsDisplay];
}

为了检查那个电话是否真的有问题,我保存了 resourcePath在第一次调用 [NSBundle mainbundle] 时变成一个字符串在项目中(如我上面所述,前几个电话完全正常)并使用了 resourcePath我需要 [NSbundle mainbundle] 的任何地方的字符串,瞧!没有崩溃/泄漏,没有...

我完全糊涂了..为什么该调用会使我的应用程序在设备上崩溃而不是模拟器?

编辑:使用...
NSArray *array = [NSBundle allBundles];
NSBundle *bundle = [array objectAtIndex:0];
NSString *imagePath = [bundle bundlePath];

...而不是 [[NSBundle mainBundle] resourcePath]也可以。我想我正在做一些只影响这个特定调用的事情。

编辑 2 :这是我在 -[NSObject doesNotRecognizeSelector:] 中设置断点时的回溯:
#0  0x30e27b98 in -[NSObject doesNotRecognizeSelector:]
#1 0x30dacb18 in ___forwarding___
#2 0x30da3840 in __forwarding_prep_0___
#3 0x0000bcfe in -[CustomTableViewCell setImageName:] at CustomTableViewCell.m:93
#4 0x0000499e in -[RootTableViewController tableView:willDisplayCell:forRowAtIndexPath:] at RootTableViewController.m:469
#5 0x3364d5d0 in -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:]
#6 0x3364cde0 in -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:]
#7 0x335f832c in -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow]
#8 0x335f6514 in -[UITableView layoutSubviews]
#9 0x335f22d8 in -[UIView(CALayerDelegate) _layoutSublayersOfLayer:]
#10 0x32bac1c0 in -[CALayer layoutSublayers]
#11 0x32babedc in CALayerLayoutIfNeeded
#12 0x32bab844 in CA::Context::commit_transaction
#13 0x32bab474 in CA::Transaction::commit
#14 0x32bb35dc in CA::Transaction::observer_callback
#15 0x30da1830 in __CFRunLoopDoObservers
#16 0x30de9346 in CFRunLoopRunSpecific
#17 0x30de8c1e in CFRunLoopRunInMode
#18 0x332e7374 in GSEventRunModal
#19 0x335adc30 in -[UIApplication _run]
#20 0x335ac230 in UIApplicationMain

... 其中 #3 - CustomTableViewCell.m:93 是 NSString *imagePath =[[NSBundle mainBundle] resourcePath];在我上面发布的代码部分。

最佳答案

打开 NSZombieEnabled,你会发现问题出在哪里。

关于iPhone:调用 [NSBundle mainbundle] 在设备上但不是模拟器上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com