我已经定义了一个类,POI.h:
@interface POI : NSObject它只是一个简单的类,它具有某些属性和定义如下的方法:
- (NSString *) getValue:(NSString *)key;在我的控制器中,当我尝试记录该方法的调用时:
NSLog(@"Name: %@", [poi getValue:@"name"]);我得到了
Apple编译器4.2错误命令 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 退出代码254失败
基于以前的一些这样的答案,当尝试从void方法记录返回值时,我发现了这个错误254。因此,我得出结论,我的编译器试图调用的方法实际上是
- (void)getValue:(void *)value;在NSValue.h中定义,它是空类型的。
现在,我真的很想知道为什么会发生这种情况。我对getValue方法的错误和愚蠢的命名是唯一的原因吗?我怎么才能避免呢?
实际错误消息:
LBSViewController.mm
@"\01-[LBSViewController initializeLBS]"上运行pass 'ARM指令选择‘clang:错误:无法执行命令:分段错误: 11
clang:错误: clang前端命令由于信号而失败(使用-v查看调用)
Apple LLVM 4.2版(clang-425.0.27) (基于LLVM 3.2svn)
目标: arm-apple-darwin12.5.0
线程模型: posix
clang:注意:诊断消息:请向http://developer.apple.com/bugreporter/提交一个bug报告,并包括崩溃回溯、预处理源代码和相关的运行脚本。
clang:注意:诊断信息:
请将下列文件附加到错误报告中:
预处理源和相关的运行脚本位于:
clang:注意:诊断信息: /var/folders/y_/h89vdcjj7zs8s5zjh77x4h0h0000gn/T/LBSViewController-A4zhXy.mm
clang:注意:诊断信息: /var/folders/y_/h89vdcjj7zs8s5zjh77x4h0h0000gn/T/LBSViewController-A4zhXy.sh
clang:注意:诊断信息:
发布于 2013-11-21 17:24:32
这是一个编译器崩溃,与如何编写该代码或它在运行时的行为无关。
按照说明并提交一个bug。
更有可能的是,崩溃是由错误位置的垃圾字符造成的,或者更有可能的是,您的语法在其他地方是如此的混乱,导致编译器变得不合群。
发布initializeLBS方法的代码,因为这是触发崩溃的原因(根据编译器的错误消息)。
注意,方法不应以get作为前缀。不会导致编译器崩溃,但它是错误的形式。
有关您可能希望遵循的类似API模式,请参见键值编码和NSDictionary。
发布于 2013-11-21 15:51:18
你的问题是,这是因为命名,是的。在这两种情况下,调用的选择器归结为: getValue:
在这个级别上没有参数类型信息,也没有返回类型信息。不允许根据目标c中的参数或返回类型重载函数。
发布于 2013-11-21 17:33:22
按下这些按钮--按一下顺序移动的⌘K--这可能有效,你命名的类很可能和它没有什么关系,这就是为什么我建议你清理它,这对你的程序是有好处的,这就像给你的程序做个按摩,减轻它的压力,或者在电脑里任何数据挂起:D。
https://stackoverflow.com/questions/20124868
复制相似问题