目标c中的(NSString)* name和(NSString *)名称有什么区别

时间:2012-04-28 21:21:36

标签: objective-c nsstring

我无法理解何时使用(NSString *)名称以及何时使用(NSString)*名称。 我希望有人可以帮助我/

2 个答案:

答案 0 :(得分:3)

括号构成一个演员。即(NSString*) name表示编译器应将name解释为指向NSString的指针;而(NSString) *name表示编译器应将解除引用的值(即值name指向)解释为NSString。

答案 1 :(得分:3)

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

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

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

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

id object = //...
NSString *myString = (NSString *)object;