带有格式的NSString文字,在Obj-C类方法中崩溃

时间:2013-01-12 10:18:05

标签: class crash nsstring arguments nsobject

我正在某些地方遇到崩溃,我正在使用NSLog的替代品。

(我主要使用替换文件来写入文件和屏幕上的文本字段,但目前我将其留给打印到控制台)

我尝试过以下两种实现(顺便说一句,感谢原作者): http://www.platinumball.net/blog/2009/07/18/nslog-sucks/ http://www.karlkraft.com/index.php/2009/03/23/114/

它们都在我的代码中的某些位置为我工作,但似乎当我从某些地方调用它们时,它们会导致崩溃,通常在堆栈跟踪的顶部有CFStringAppendFormatCore,但并非总是如此(最近一次,它是在“0 flockfile”上。崩溃似乎总是在程序集中的CMPL或JMP周围。

我打算以这种方式使用它:

+ (void)saveProfile:(NSString *)reason {
    DebugLog(@"Saved profile: %@", reason);
}

但是,当我执行以下操作时,我甚至会崩溃:

+ (void)saveProfile:(NSString *)reason {
    DebugLog(@"Saved profile.");
}

我注意到,当我遇到崩溃时,我似乎总是在NSString上获得Summary Unavailable,但是如果我把它放在其他日志的位置,NSLog仍然可以工作。我已经在这些地方安装了几个星期的NSLog,总是将配置文件保存到控制台,但现在我已经尝试更换它,我得到了这个崩溃。

我已经更换了所有的NSLog,几乎所有的NSLog都运行良好。我试图发现一个模式,似乎它总是在类级别的方法中崩溃。据我所知,我没有对我的Profile类做任何想象。它派生出NSObject,并且只有类方法。

我最初将此日志记录功能的导入作为我的前缀PCH文件中的最后一项,并且想知道是否导致了这个问题,所以我使用该函数的所有文件现在都导入了标题,它不再是在PCH。

我尝试的另一件事是将id替换为(NSString *)作为第一个参数,因为我读到了一个CFStringAppendFormatCore帖子,当要求NSString时,它会传递除NSString之外的其他内容。这是有道理的,因为我有时会在我认为通过[theNsObject description]记录的其他参数中传递一个NSObject。但即使将我的代码减少到上面的第二个例子,没有格式 - 只是一个字符串文字 - 崩溃仍然发生。

最后一件事 - 这是在iOS 6.0 SDK和Xcode 4.5.2的iPhone 6.0模拟器上运行。

有什么想法吗?

谢谢!

0 个答案:

没有答案