如何在Xcode 4中的GDB输出窗口中显示Invisibles?

时间:2011-05-09 15:46:19

标签: iphone objective-c gdb xcode4

由于字符串长度不匹配,我只是追踪了字符串相等错误。额外的字符是'\ r',它根本没有显示在Xcode 4的输出窗口中。如果有的话,我就不必花费的时间和追踪问题的时间差不多。

是否可以在输出窗口中显示空白字符?如果是这样,我必须背诵什么神奇的咒语来启用它?

我在编辑器菜单下尝试了Show Invisibles,但这只适用于代码编辑器,而不适用于输出窗口。我在iOS应用程序上使用Xcode 4。

2 个答案:

答案 0 :(得分:1)

我现在只想到一个解决方案:创建一个类别:

<强>的NSString + myAdditions.h

@interface NSString (myAdditions) 

- (NSString *)showInvisibles;

@end

<强>的NSString + myAdditions.m

#import "NSString+myAdditions.h"

@implementation NSString (myAdditions)

- (NSString *)showInvisibles
{
    NSString *regexToReplaceWhitespaces = @"([\\s])";   

    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexToReplaceWhitespaces
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];

    NSString *result = [regex stringByReplacingMatchesInString:self
                                                       options:0
                                                         range:NSMakeRange(0, [self length])
                                                  withTemplate:@"␣"];

    return result;
}

@end

<强>用法

NSLog(@"show me the unseen: %@", [@"soo      many    whitespace in here  \t\t <- look two tabs!" showInvisibles]);

<强>输出

soo␣␣␣␣␣␣many␣␣␣␣whitespace␣in␣here␣␣␣␣␣<-␣look␣two␣tabs!

答案 1 :(得分:0)

你可以百分之百逃避你的字符串。你可以在第三个参数(我包括所有常见的参数)中指定转义的字符,其余的将被转义:

NSLog(@"%@", CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)yourString, (CFStringRef)@" <>#%{}|\^~[]`;/?:@=&$", NULL, kCFStringEncodingUTF8);