2016-04-06 54 views
1

我正在发送一个HTTP请求,其中我必须发送一个bool值。我尝试了他们两个。@(YES)vs [NSNumber numberWithBool:YES]

而且两者都以相同的方式工作。我很困惑哪个更好?他们之间有什么不同?

+0

“更好”的是什么? –

回答

3

@(YES)是与[NSNumber numberWithBool:YES]相同的文字。我不知道文字表现是否会比直接调用慢一点。

2

其中之一是literal。另一个是通过快速初始化器创建的。

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

2

这两种方法之间没有区别,你应该没问题。我更喜欢的是[NSNumber numberWithBool:YES],因为它有时更容易阅读,有时如果你回到代码进行调试。 @(是)是nsnumber的字面语法,当您使用@“string”时,它与您创建NSString时完全相同

2

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

2

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

-1

要发送布尔试试这个:[NSNumber numberWithInt:1]