3

为 NSString 实现 getter 或 setter 时,它显示为

-(NSString *)nameOfSomething

但是,当您获取或设置布尔值时,您不会使用星号来指向某些东西

-(BOOL)nameOfSomething

我想知道为什么你必须这样做?不应该仍然需要星号来指向吗?布尔值不需要一个是否有某种原因?

谢谢

4

3 回答 3

4

在尝试编写 iOS 之前学习 C 是个好主意,因为您将使用 Objective-C,而 Objective-C 是 C。纯数据类型和指针之间存在差异。星号与指针有关。(Objective-C 的“对象”类型都是指针,但 C 有其他类型。)

这里讨论了 iOS 编程所需的 C 语言最重要的方面:

http://www.aeth.com/iOSBook/ch01.html

正如该章所解释的, BOOL 就像一个 NSInteger - 它只是一个数字,而不是一个对象。

于 2013-03-24T16:01:15.680 回答
1

它是一种原始类型,就像 int 一样。理论上,它可以是一个对象,但它是一个非常简单的概念,几乎没有用。

考虑这个类比。(左边是原始类型,右边是类)

int  : Integer    (Integer from java)
BOOL :  ---
 --- : NSString

等等。

如果您真的需要一个对象,请制作一个包装器。

于 2013-03-24T15:56:10.390 回答
0

BOOL只是signed char,你不要拿它的地址/参考。

您直接分配给它。

如果你看到它的定义是:

typedef signed char     BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used.

#if __has_feature(objc_bool)
#define YES             __objc_yes
#define NO              __objc_no
#else
#define YES             ((BOOL)1)
#define NO              ((BOOL)0)
#endif

你用%dnot来查看它的价值%@

于 2013-03-24T15:55:12.403 回答