我无法理解何时使用(NSString *)名称以及何时使用(NSString)*名称。 我希望有人可以帮助我/
答案 0 :(得分:3)
括号构成一个演员。即(NSString*) name
表示编译器应将name
解释为指向NSString的指针;而(NSString) *name
表示编译器应将解除引用的值(即值name
指向)解释为NSString。
答案 1 :(得分:3)
您永远不需要使用(NSString)*name
。 NSString *
是一种类型:指向NSString
实例的指针。所以在这样的方法声明中:
- (NSString *)capitalisedString: (NSString *)string
每次出现(NSString *)
时,都表示“后面的内容具有NSString *
类型”。第一个意味着方法的返回值是NSString
实例,第二个意味着参数string
的类型是NSString
实例。
此讨论也适用于转换,即当您告诉编译器将变量视为特定类型时。因为NSString *
是一种类型,所以你会这样投射:
id object = //...
NSString *myString = (NSString *)object;