繁体   English   中英

应用程序在模拟器上崩溃,但在iPod 3.1.3上运行良好。 当应用程序在模拟器中运行时,超级类的init方法没有被击中(甚至在调试时)

[英]App crashes on simulator but runs fine on iPod 3.1.3. The Super class' init method is not being hit (even at debug) when app runs in simulator

所有这些看起来太琐碎,但请通读-

我有简单班(A)和超级班(B)。 我在两个方法上都有init方法(为A指定初始化程序initWithData,为B指定常规(id)init)。 我在我的上级(B)上定义了一个委托,该委托由[instanceofA setDelegate:self]调用。 当然,我有以下代码行- @interface A:B { //declarations }

因此,当我在iphone模拟器(版本3.2)上运行我的应用程序时,调用Set Delegate的运行失败,并显示消息“-[A setDelegate:]:无法识别的选择器发送到实例0x4c59e10”,因此应用程序崩溃

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

如果我在iPod(SDK 3.1.3)上运行应用程序,那么所有这些工作都可以正常工作 -甚至碰到了调试点

由于某种原因,在运行时模拟器无法找到类A的超类B。

我已经尝试在iPhone模拟器上重设“内容和设置”,但徒劳无功。 我还尝试了多次重建,将所有班级都标记为“感动”。 什么都没用。 清理现有目标是否存在此问题? 我们如何在XCODE中清除目标?

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

更新!

我知道这个问题-请忽略上面所有的super int内容。 问题出在此消息上(它在我的调试器控制台上显示在前面-虽然不像警告那样)-

objc [34514]:在/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk/System/Library/PrivateFrameworks/Message.framework/Message和/ Users / admin1 / Library / Application中都实现了类连接支持/ iPhone模拟器/3.1.3/Applications/xxxyyyyzzzzbbbbb/MyApp.app/MyApp。 将使用两者之一。 哪一个未定义。

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

我在google上搜索,碰到了以下网址-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

与目标C相关的与类名相关的准则是什么? 任何在线资源(苹果/非苹果)都在谈论如何避免类名冲突? 现在,我将尝试找出导致该冲突的是我的哪类。

它在我的班级以及messageUI.framework中都被命名为“ Connection”。我应该更仔细地阅读东西!

答案一直在我面前!! 我想它总是...

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

有关此问题的详细讨论,请参见问题“ 解决Objective-C名称空间冲突的最佳方法是什么? ”,尽管这会涉及更多技术领域。 有关在Cocoa和Cocoa Touch应用程序中通常会看到的一些样式元素的更深入的解释,请参阅Scott Stevenson的Objective-C可可样式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM