2

我不明白何时使用(NSString *)名称以及何时使用(NSString)*名称。我希望有一个人可以帮助我/

4

2 回答 2

3

括号构成强制转换运算符。也就是说(NSString*) name,编译器应该解释name为指向 NSString 的指针;而(NSString) *name意味着编译器应该将取消引用的值(即值name指向的值)解释为 NSString。

于 2012-04-28T21:26:10.383 回答
3

您永远不需要使用(NSString)*name. NSString *是一种类型:指向NSString. 所以在这样的方法声明中:

- (NSString *)capitalisedString: (NSString *)string

每次(NSString *)出现都表示“后面的东西有类型NSString *”。第一个表示方法的返回值是一个NSString实例,第二个表示参数的类型string是一个NSString实例。

此讨论也适用于强制转换,即当您告诉编译器将变量视为特定类型时。因为NSString *是一个类型,你会这样转换:

id object = //...
NSString *myString = (NSString *)object;
于 2012-04-28T21:26:18.640 回答