gpt4 book ai didi

iphone - 应用程序在模拟器上崩溃,但在 iPod 3.1.3 上运行良好。当应用程序在模拟器中运行时, super 类的 init 方法没有被命中(即使在调试时)

转载 作者:行者123 更新时间:2023-12-03 17:43:19 25 4
gpt4 key购买 nike

所有这些可能看起来太微不足道,但请仔细阅读 -

我有简单的类(A)和父类(super class)(B)。我在这两个(A 的指定初始化程序 initWithData 和 B 的常规(id)init)上都有 init 方法。我在我的 super (B) 上定义了一个委托(delegate),它由 [instanceofA setDelegate:self] 调用。当然,我有以下代码行 - @interface A:B { //declarations }
因此,当我在 iphone 模拟器(版本 3.2)上运行我的应用程序时,调用 set Delegate 运行失败并显示消息“-[A setDelegate:]: unrecognized selector sent to instance 0x4c59e10”,因此应用程序崩溃

当我调试我的应用程序时,A 的初始化程序中的 [super init] 调用不会调用它的 super ,即 B(即使我在 B 的 init 方法中保留了一个调试指针)

如果我在我的 iPod (SDK 3.1.3) 上运行该应用程序,所有这些都可以正常工作- 连调试点都被命中

由于某种原因,在运行时模拟器无法找到类 A 的父类(super class) B。

我已经尝试在我的 iPhone 模拟器上重置“内容和设置”,但没有成功。我也尝试过多次重建,将我所有的类(class)都标记为“感动”。没有任何工作。这是清理现有目标的问题吗?我们如何清理 XCODE 中的目标?

我不确定这里是否正在讨论其相关但略有相似的问题 -
[http://stackoverflow.com/questions/3706068/app-crashes-on-simulator-works-on-iphone-device][1]

更新!

我知道问题所在——请忽略上面所有的 super int 内容。问题在于这条消息(它在我的调试器控制台上预先显示 - 虽然不是警告) -

objc[34514]: Class Connection is implemented in both /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk/System/Library/PrivateFrameworks/Message.framework/Message and /Users/admin1/Library/Application Support/iPhone Simulator/3.1.3/Applications/xxxyyyyzzzzbbbbb/MyApp.app/MyApp. One of the two will be used. Which one is undefined.



所以我删除了“messageUI.framework”并删除了我在代码中对它的所有引用,例如 MFMailComposeViewController、canSendMail 等,一切都恢复正常。我应该知道,那是我最后一组实现。我并没有真正进行任何单元测试,因此当我开始测试我的应用程序时并没有意识到这一点。

我当然搜索了以下网址 - groups.google.com/group/objectiveresource/tree/browse_frm/month/2009-07/d8b3f3664c39785b?rnum=1&_done=%2Fgroup%2Fobjectiveresource%2Fbrowse_frm%2Fmonth%2F2009-07%3F

链接到 -
groups.google.com/group/objectiveresource/browse_thread/thread/349756a5e01eb8b1/8712f5fde9e9b47c?lnk=gst&q=prefix#8712f5fde9e9b47c

objective-c 的类名称相关指南是什么?任何讨论如何避免类名冲突的在线资源(苹果/非苹果)?现在,我将尝试找出我的哪个类(class)导致了这场冲突......

最佳答案

在回答您修改后的问题时,Objective-C 缺少 namespace ,这就是为什么您会看到与您的案例中发生的冲突类似的原因。这就是为什么在您的自定义类名称之前使用两个或三个字母前缀的约定(例如,在您的情况下,SBHConnection 可以避免这个问题)。

请参阅问题“What is the best way to solve an Objective-C namespace collision?”以获取有关此问题的详细讨论,尽管这会转向更多技术领域。参见 Scott Stevenson 的 Cocoa Style for Objective-C对您在 Cocoa 和 Cocoa Touch 应用程序中常见的一些样式元素进行更实际的解释。

关于iphone - 应用程序在模拟器上崩溃,但在 iPod 3.1.3 上运行良好。当应用程序在模拟器中运行时, super 类的 init 方法没有被命中(即使在调试时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169065/

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