在我目前的项目中 - 我可能会在一段时间内 - 继续工作,我们已经决定使用该-Werror标志,因为我们之前的"没有警告!"政策没有达到预期的效果.
然而,这带来了一个问题:
API不能再以a)被正常构建工具链标记的方式标记为已弃用,并且b)不会破坏构建.
所以我想这个问题归结为:
有旗帜-Werror-no-${something_I_dont_want_to_promote_to_an_error}吗?
我发现#pragma clang diagnostic error到几乎达到我想要的-除了我不能赶上所有启用的警告,暗示由编译器...
提前致谢.
我有一个问题,答案在技术上并不是很难,但我更喜欢这里的大多数高级程序员的经验.
就像许多新手一样,我正在以最疯狂的方式进行版本控制,即复制粘贴我的项目目录并使用当前日期/时间重命名.你会同意这是一个非常有限的解决方案:P
我决定学习版本控制系统,但我面临很多选择,我想知道你的观点最好的是什么?
然后 :
对于更有经验的人有一些反馈是无价的,所以我和其他许多人希望在面对VCS墙时可以选择他们的路径:-)
非常感谢 !!!
由于iOS的7,NSDateFormatter 确实当与此格式的字符串呈现的确创造一个NSDate:
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ""];
NSLog(@"non–nil date, even honoring the 7–minute–offset in the time–zone on iOS 7: %@",
[formatter dateFromString:@"2011-07-12T18:07:31+02:07"]);
Run Code Online (Sandbox Code Playgroud)
对于iOS 6,答案是不使用NSDateFormatter ......
好的,到目前为止我已经读过了
关于如何使用NSDateFormatter以创建NSDate一个字符串.
我偶然发现了Peter Hosey的ISO8601DateFormatter.
看看他的实施,我想知道:
是不是有什么办法,既正确和理智来得到这样一个字符串2011-07-12T18:07:31+02:00到NSDate?
GMT前缀"+" - 符号,那将是没有问题的,但......我可以破解它为我的应用程序工作(使用格式@"yyyy'-'MM'-'dd'T'HH':'mm':'ssz':'00"),但这当然是不正确的,因为它会丢弃时区的分钟信息.
我也可以用空字符串替换最后一个冒号,但我也认为这也是一个黑客.
那么,是否有一些秘密的酱汁NSDateFormatter从上面拿出那根绳子给我一个有效和正确的NSDate?
我找到了一个小贴士,可以+[NSDate dateWithNaturalLanguageString:] …
我正在编写一个帮助器,对输入字符串执行许多转换,以便创建该字符串的搜索友好表示.
考虑以下情况:
MüllerGroßmannÇingletònBjørkÆreogrammeull,Üll等比赛MüllerGros,groß等比赛Großmanncin 等.匹配 Çingletònbjö,bjo等比赛Bjørkaereo 等.匹配 Æreogramme到目前为止,我在案例(1),(3)和(4)中取得了成功.
我无法弄清楚的是如何处理(2)和(5).
到目前为止,我尝试了以下方法无济于事:
CFStringNormalize() // with all documented normalization forms
CFStringTransform() // using the kCFStringTransformToLatin, kCFStringTransformStripCombiningMarks, kCFStringTransformStripDiacritics
CFStringFold() // using kCFCompareNonliteral, kCFCompareWidthInsensitive, kCFCompareLocalized in a number of combinations -- aside: how on earth do I normalize simply _composing_ already decomposed strings??? as soon as I pack that in, my …Run Code Online (Sandbox Code Playgroud) Objective-C/Cocoa中可接受/安全包装init方法如下:
-(id)init {
if ((self=[super init])) {
self.bar = [[Bar alloc] init];
}
return self;
}
-(id)initWithFoo:(Foo *)f {
if ((self=[self init])) {
self.foo = f;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
注意[self init]在initWithFoo.
也许这是一个简单的答案......似乎很明显,但不是标准的?
我正在尝试测量部分Linux内核代码的执行时间,发现定时器有两个不同的子系统.hrtimers代表高分辨率计时器,hpet表示高精度事件计时器.
分辨率与精度有何不同?
Clang的文档提到了一个名为的标志的可用性--system-header-prefix.
所有包含与此前缀匹配的标头的想法将被视为系统标头,而不会生成警告.
我想使用此标志而不是使用-isystem而不是包含那些标头-I.
我碰巧有一个(新)项目依赖于几个遗留库,但它本身具有非常严格的警告设置,并将这些警告视为错误.结果是(并不太令人惊讶)由于包含的遗留库的标头生成的警告而无法构建的项目.
这个想法是--system-header-prefix=legacyLib/在Xcode的OTHER_CFLAGS构建设置中使用.
但是,如果我这样做,clang会给我以下错误消息:
clang: error: unsupported option '--system-header-prefix=legacyLib/'
Run Code Online (Sandbox Code Playgroud)
我使用的是版本5.1.1(5B1008) - 即当前的公开发布.
输出clang --version是
clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud) clang ×2
xcode ×2
cocoa ×1
cocoa-touch ×1
foundation ×1
git ×1
iso8601 ×1
linux ×1
linux-kernel ×1
mercurial ×1
objective-c ×1
transform ×1
unicode ×1