以<

2016-03-08 30 views
2

Objective-C的命令行参数我解析使用standardUserDefaults命令行参数的建议一样在另外一个问题,但是,当一个参数与<它无法启动此工作的情况下的99%。以<

作品:

./prog -arg1 'hello<>asdf 

不工作:[:键默认stringForKey]刚刚返回NULL

./prog -arg1 '<hello' 

当提供的参数与<然后开始。基本上几乎一切似乎工作,除非它开始于<,我不认为它与bash /转义/管道有任何关系。

#import <Foundation/Foundation.h> 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     NSLog(@"arg1: %@", [defaults stringForKey:@"arg1"]); 
//  NSLog(@"%@", [defaults dictionaryRepresentation]); 
    } 
    return 0; 
} 

回答

3

我猜你发现了一个错误。您报告的行为是发生的情况,并且快速检查可能的其他特殊字符也会显示以短划线开头的值,例如, ./prog -arg1 '-fred',也不起作用 - 其他符号,如'>',';'和'|'做工作。

minimal documentation没有提供任何理由的行为。

报告在http://bugreport.apple.com

在你的代码中的错误,你可以处理自己的论点。如果您希望使用C风格字符串进行分析,则可以使用argc & argv;或NSProcessInfo.processInfo.arguments会给他们作为NSStringNSArray

HTH

+0

好感谢,我不很了解的Objective-C /所以NSUserDefaults的我不知道,如果它是可以被关闭,找不到在什么一些奇怪的特殊行为或限制文档。我恰巧在使用开源“终端通告”工具时遇到了这个问题,并希望这将是一个简单的解决方案。 – Ecko

相关问题