- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
阅读所有关于此错误与内存相关并尝试访问不再存在的内容的帖子。
问题:几乎以随机的间隔弹出错误。它可以在杀死第一个敌人或杀死第N个敌人后出现。然而,它只会在敌人被杀死时出现。
测试:在 iPhone 5s 上运行 iOS 8 beta 5、Xcode 6 beta 5。
代码流程:
敌人 SKNodes 类实例在关卡开始时创建并存储在 NSMutableArray 中以供引用:
Goblin *newGoblin = [[Goblin alloc] initFacingDirection:1];
// set various properties…
[enemyGoblins addObject:newGoblin];
玩家的剑与敌人接触:
NSMutableArray *discardedItems = [NSMutableArray array];
for(Goblin *object in enemyGoblins)
{
[object runBloodBurst:true damagePoints:_player.swordDamage];
if(object.goblinHealth < 0)
[discardedItems addObject:object];
}
if([discardedItems count] > 0)
[enemyGoblins removeObjectsInArray:discardedItems];
在 Goblin 类中,“die”代码是:
if(self.goblinHealth < 0)
{
SKAction *wait0 = [SKAction waitForDuration:1.0];
SKAction *block0 = [SKAction runBlock:^{
[self removeActionForKey:@"animation"];
[self runAction:[_animations goblin_dieLeft]];
}];
SKAction *block1 = [SKAction runBlock:^{
[self removeFromParent];
}];
[self runAction:[SKAction sequence:@[block0, wait0, block1]]];
}
我尝试过的:我禁用了“discardedItems”代码,因为我认为一旦引用丢失,ARC 可能会从内存中转储对象,并且后续的 Goblin 类的“die 动画”会导致崩溃,但这并没有解决问题。我尝试了僵尸和断点,但也没有得到任何有用的线索。
对于我所尝试的内容,我是否找错了方向,或者有人在 Beta 5 中遇到过类似的问题吗?
编辑
这是回溯:
(lldb) bt * thread #1: tid = 0x3264b, 0x000000018cb13434 SpriteKit
SKCSprite::update(double) + 404, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x7000000000000018)
SKCSprite::update(double) + 404 frame #1: 0x000000018cb13440 SpriteKit
frame #0: 0x000000018cb13434 SpriteKitSKCSprite::update(double) + 416
SKCSprite::update(double) + 416 frame #3: 0x000000018cacbf28 SpriteKit
frame #2: 0x000000018cb13440 SpriteKit-[SKScene _update:] + 140
-[SKView(Private) _update:] + 568 frame #5: 0x000000018cae3a10 SpriteKit
frame #4: 0x000000018cae63f8 SpriteKit-[SKView renderCallback:] + 764
__29-[SKView setUpRenderCallback]_block_invoke + 60 frame #7: 0x000000018cb0d890 SpriteKit
frame #6: 0x000000018cae0a9c SpriteKit-[SKDisplayLink _callbackForNextFrame:] + 272
-[DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 168 frame #9: 0x000000018c615b90 QuartzCore
frame #8: 0x000000010042ca9c libglInterpose.dylibCA::Display::DisplayLinkItem::dispatch() + 32
CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 324 frame #11: 0x00000001897dddc0 IOKit
frame #10: 0x000000018c615a28 QuartzCoreIODispatchCalloutFromCFMessage + 376
__CFMachPortPerform + 180 frame #13: 0x00000001885f1b38 CoreFoundation
frame #12: 0x00000001885dcf34 CoreFoundation__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
__CFRunLoopDoSource1 + 436 frame #15: 0x00000001885efa18 CoreFoundation
frame #14: 0x00000001885f1a98 CoreFoundation__CFRunLoopRun + 1640
CFRunLoopRunSpecific + 396 frame #17: 0x000000019154f5a4 GraphicsServices
frame #16: 0x000000018851d664 CoreFoundationGSEventRunModal + 168
UIApplicationMain + 1488 * frame #19: 0x0000000100165530 CarcerQuest
frame #18: 0x000000018ccd6164 UIKitmain(argc=1, argv=0x000000016fdab9d8) + 116 at main.m:16
start + 4 (lldb)
frame #20: 0x000000019885aa08 libdyld.dylib
最佳答案
改变
[self runAction:[SKAction 序列:@[block0, wait0, block1]]];
到
[self runAction:[SKAction 序列:@[block0, wait0]] 完成:^{
[_self 从Parent 删除];
}];
在更新 IOS7 代码以在 IOS8 上运行时,我遇到了同样的问题,并使用完成 block 修复了该问题。
关于sprite-kit - 线程1 : EXEC_BAD_ACCESS (code=1), 地址=0x6000000000000018),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140981/
我有以下代码: UIImage *img = [UIImage imageNamed:@"BRBlueCircleMask"]; CGImageRef activeCirleMaskImage = i
我正在使用 OpenEXR 库加载图像。 这工作正常,除了图像加载旋转 180 度。我使用下面显示的循环来反转数组,但有时程序会退出并且 xcode 会给我一个 EXEC_BAD_ACCESS 错误(
我有一些数组,我只需要在我的 .M 文件中,所以我认为我在接口(interface)括号中声明它们,就像在 MyViewController.m 中一样(通过这个,我将它们设为私有(private)变
我有一个试图释放的 NSString。 问题是,在某些情况下,当我尝试释放它时,我得到 EXC_BAD_ACCESS。 NSString 有一个分配给它的地址(我可以在底部页面看到它在 0xABCDE
我的 UITableView 正在返回 EXEC_BAD_ACCESS,但为什么! 请看这段代码! 加载 UITableView 工作正常,所以 allXYZArray != nil 并被填充! 然后
我从事一个项目已经有一段时间了,我决定跳转到 ARC。我遇到了一些每次都被炸毁的代码,我想知道为什么。我设法将它简化为这个片段: typedef __strong id MYID; int main(
在我的 OS X 应用程序中,我尝试保存和检索单选按钮的标签。错误发生在 setPreferenceRotor 中标记为“<-HERE”的行上。有一个有效的标签传入。 // PreferenceCo
下面的简单程序在运行时会产生 EXEC_BAD_ACCESS(段错误),我不明白为什么: #include int main(void) { const GLubyte * strVersion
我是一名非常新的 iOS 开发人员(我几天前才开始),我正在尝试利用 WebViewJavascriptBridge class与我的 Storyboard 上的 UIWebView 。每当我尝试使用
我正在使用最新的 SDK 开发 iOS 应用程序。 此应用有一些 C++ 类。 当我调用该类的方法时出现错误: 这是 C++ 类的一部分。 #ifdef __APPLE__ const cha
我试图用一些局部变量发出通知。在模拟器中,一切正常,没有错误——甚至通知也能正常显示,但如果我在 iPhone 上测试它,应用程序就会崩溃。 func getContent(fromName:
我正在尝试使用 Swift2.1.1 中的 Xcode:7.2.1 为 Mac OSX 编写套接字服务器应用程序。引用CocoaEcho sample code .但是我不能在 socketCallB
阅读所有关于此错误与内存相关并尝试访问不再存在的内容的帖子。 问题:几乎以随机的间隔弹出错误。它可以在杀死第一个敌人或杀死第N个敌人后出现。然而,它只会在敌人被杀死时出现。 测试:在 iPhone 5
我将一个正在进行的项目从 Xcode 3 迁移到 Xcode 4。LLVM 2.0 编译器的临时构建在 iPod Touch 2G (iOS 4.2.1) 上崩溃,但在 iPad (iOS 4.3)
因此,我有一个应用程序使用 tableViewController 来填充不同游戏类型的列表。选择游戏后,它会使用该名称执行 segue。 在我为其中一种游戏模式结束时添加一个统计菜单之前,它一直运行
我面临着一个相当奇怪的问题。具体来说,子类化一些 NSView、NSTableView 和 NSScrollView。 情况:我正在为 macOS 开发一个相当古老(大约 7 年)的项目。代码库大约
我创建了 swift 项目。添加 SpatialDBKit pod 和其他一些库。 当我尝试使用 打开数据库时 let db = SpatialDatabase(path: NSBundle.main
好吧,这已经困扰我一段时间了...... 我已经检查过了,所有其他问题/答案都与非 ARC 项目有关。 每当我展示 MFMCvc 并快速取消消息时,我都会在 iPhone 上收到 Thread1:EX
我是一名优秀的程序员,十分优秀!