我无法理解何时使用(NSString *)名称和何时使用(NSString)*名称。 我希望有人能帮助我/目标c中的(NSString)* name和(NSString *)名称有什么区别?
2
A
回答
3
圆括号构成一个演员操作。即(NSString*) name
表示编译器应该将name
解释为指向NSString的指针;而(NSString) *name
意味着编译器应该将取消引用的值(即值为name
)解释为NSString。
3
你永远不需要使用(NSString)*name
。 NSString *
是一种类型:指向NSString
的实例的指针。因此,在这样的方法声明:
- (NSString *)capitalisedString: (NSString *)string
似乎每次(NSString *)
它的意思是“后面的东西有型NSString *
”。第一个意味着该方法的返回值是NSString
实例,第二个意味着参数string
的类型是NSString
实例。
这个讨论也适用于铸造,这是当你告诉编译器把一个变量看作是一个特定类型的变量时。由于NSString *
是一种类型,你会投这样的:
id object = //...
NSString *myString = (NSString *)object;
相关问题
- 1. NSString * mystring和NSString * mystring有什么区别
- 2. NSString和NSMutableString有什么区别?
- 3. 在目标c中的nsstring
- 4. $ name和$$ name有什么区别?
- 5. 目标C爆炸的NSString
- 6. 目标C的NSString的NSArray
- 7. Info.plist和[app name] -Info.plist有什么区别?
- 8. 目标C的NSString验证
- 9. EXC_BAD_ACCESS NSString的目标C
- 10. Comaparing NSString的目标C
- 11. Javascript中的var name = function(){}和函数名(){}有什么区别吗?
- 12. prototype [name]和prototype.name有什么区别?
- 13. WPF:'Name'和'x:Name'有什么区别?
- 14. 目标C ==> unichar []到NSString?
- 15. 目标和项目有什么区别?
- 16. Name和CanonicalName有什么区别?
- 17. Name和x:Name有什么区别?
- 18. NSString中%@%d的名称
- 19. Angular2 Form输入中的#name和[(ngModel)] =“name”有什么区别?
- 20. 目标C处的NSString中的NSLog
- 21. 目标C - NSCalendar到NSString
- 22. 目标c中的@Property和{fields}有什么区别?
- 23. 在示例的帮助下,目标C中NSString和NSMutable String的实际区别是什么?
- 24. 在Roslyn中,名称和标识符有什么区别?
- 25. 目标C的UIColor到的NSString
- 26. 为什么NSString中有NSDecimalNumber?
- 27. NSSound - (id)soundName:(NSString *)name;
- 28. 什么是差异btw NSString * var = @“value”和NSString * var = [[NSString alloc] initWithString:@“value”]
- 29. 目标C:AppDelegate中的NSString
- 30. 2输入名称有什么区别?
但由于Objective-C类是几乎从来没有使用过,除了为指针,铸造'* name'到'NSString'是你永远不应该做的或看到的东西。 – 2012-04-29 00:09:20
@KenThomases Objective-C鼓励使用很少直接使用类类型的类型**。然而它不是“禁止”的,它可以用于例如反省。我更愿意给出解释发生了什么的答案,而不是那种“它是邪恶的,不要这样做”。 – Matthias 2012-04-29 05:21:52