@(YES)vs [NSNumber numberWithBool:YES]

时间:2016-04-06 05:37:54

标签: ios objective-c http boolean nsnumber

我正在发出xdoc.Descendants("grandparent") .Elements("parent") .FirstOrDefault(o => (string)o == "targetvalue") .Add(new XElement("grandchild", grandchildvalue)); 请求,我必须在其中发送HTTP值。我和他们两个都试过了。

两者都以同样的方式运作。我很困惑哪个更好?他们之间有什么区别吗?

5 个答案:

答案 0 :(得分:4)

gcc -dM -E - </dev/null | sort是与@(YES)相同的文字。我不知道直接调用文字表现是否会有点慢。

答案 1 :(得分:2)

一个是literal。另一个是通过方便初始化程序创建的。

它们最终成为具有相同内容的相同类型的对象,但我怀疑第一个对您(以及其他查看您的代码的人)更容易阅读。

答案 2 :(得分:2)

两种方法没有区别,你应该没问题。我更喜欢的是[NSNumber numberWithBool:YES],因为如果你回到你的代码进行调试,它有时更具可读性。 @(是)是nsnumber的文字语法,当你使用@&#34; string&#34;时,它们完全一样。这会为你创建NSString

答案 3 :(得分:2)

不。编译器会将@YES转换为[NSNumber numberWithBool:YES]

答案 4 :(得分:2)

@(YES)是编译器的特性。实际上,@(YES)转换为[NSNumber numberWithBool:YES],性能没有差异。它是为了方便和可读性而提供的(类似于@ [],@ {})。