我無法理解何時使用(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