2012-04-28 64 views

回答

3

圓括號構成一個演員操作。即(NSString*) name表示編譯器應該將name解釋爲指向NSString的指針;而(NSString) *name意味着編譯器應該將取消引用的值(即值爲name)解釋爲NSString。

+0

但由於Objective-C類是幾乎從來沒有使用過,除了爲指針,鑄造'* name'到'NSString'是你永遠不應該做的或看到的東西。 – 2012-04-29 00:09:20

+0

@KenThomases Objective-C鼓勵使用很少直接使用類類型的類型**。然而它不是「禁止」的,它可以用於例如反省。我更願意給出解釋發生了什麼的答案,而不是那種「它是邪惡的,不要這樣做」。 – Matthias 2012-04-29 05:21:52

3

你永遠不需要使用(NSString)*nameNSString *是一種類型:指向NSString的實例的指針。因此,在這樣的方法聲明:

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

似乎每次(NSString *)它的意思是「後面的東西有型NSString *」。第一個意味着該方法的返回值是NSString實例,第二個意味着參數string的類型是NSString實例。

這個討論也適用於鑄造,這是當你告訴編譯器把一個變量看作是一個特定類型的變量時。由於NSString *是一種類型,你會投這樣的:

id object = //... 
NSString *myString = (NSString *)object; 
相關問題