相当于在该行:
- (id)initWithName:(NSString *)name;
(NSString *)
仅仅是参数的类型 - 一个字符串对象,它是Cocoa中的NSString类。在Objective-C中,您总是处理对象引用(指针),所以“*”表示参数是对对象的引用。
在这个例子中:
person.height = (NSObject *)something;
的东西有点不同的正在发生的事情:(NSObject *)
再次指定类型,但是这一次它是一个“类型转换”的操作 - 这是什么意思是取“的东西“对象引用(可能是NSString
,NSNumber
或...)并将其视为对NSObject
的引用。
更新 - 在谈到Objective-C对象(而不是原始的类型,如整数或浮点数),一切都少不了一个指针,以便转换操作的意思是“取这个指针的X
,并把它当作如果它指向一个Y
“。举例来说,如果你有一个容器类(如NSArray
)持有通用NSObject
S,但你知道的对象实际上是字符串,你可能会说:
NSString *myString = (NSString *)[myArray objectAtIndex:0];
,这意味着“从获取的第一个对象数组,将其视为字符串“。
该转换实际上并没有转换该值,它只是对编译器说的一种方式:“嘿,我知道我在这里给X分配一个Y,所以不要给我一个警告” 。
铸造操作是否改变了数值类型?意思是,如果期待一个int,它会变成一个bool,这是正确的吗? – 2010-05-25 14:38:24