相當於在該行:
- (id)initWithName:(NSString *)name;
(NSString *)
僅僅是參數的類型 - 一個字符串對象,它是Cocoa中的NSString類。在Objective-C中,您總是處理對象引用(指針),所以「*」表示參數是對對象的引用。
在這個例子中:
person.height = (NSObject *)something;
的東西有點不同的正在發生的事情:(NSObject *)
再次指定類型,但是這一次它是一個「類型轉換」的操作 - 這是什麼意思是取「的東西「對象引用(可能是NSString
,NSNumber
或...)並將其視爲對NSObject
的引用。
更新 - 在談到Objective-C對象(而不是原始的類型,如整數或浮點數),一切都少不了一個指針,以便轉換操作的意思是「取這個指針的X
,並把它當作如果它指向一個Y
「。舉例來說,如果你有一個容器類(如NSArray
)持有通用NSObject
S,但你知道的對象實際上是字符串,你可能會說:
NSString *myString = (NSString *)[myArray objectAtIndex:0];
,這意味着「從獲取的第一個對象數組,將其視爲字符串「。
該轉換實際上並沒有轉換該值,它只是對編譯器說的一種方式:「嘿,我知道我在這裏給X分配一個Y,所以不要給我一個警告」 。
鑄造操作是否改變了數值類型?意思是,如果期待一個int,它會變成一個bool,這是正確的嗎? – 2010-05-25 14:38:24