我很驚訝當下列方法定義編譯(使用蘋果LLVM 4.1):Objective-C的方法的語法
- (void) testMethod:someArgument {
}
通知someArgument
類型缺失。 Objective-C中關於指定方法參數類型的規則是什麼?
我很驚訝當下列方法定義編譯(使用蘋果LLVM 4.1):Objective-C的方法的語法
- (void) testMethod:someArgument {
}
通知someArgument
類型缺失。 Objective-C中關於指定方法參數類型的規則是什麼?
默認參數類型是id
。即使是這樣,編譯:
- testMethod:someArgument {
}
這是需要一個id
作爲它的參數並應返回一個id
的方法。
事實上,甚至沒有方法名是必要的:
- :someArgument {
}
這可以被稱爲:
[self :someObject];
當然,所有的這是非常不好的做法和你應該始終指定類型(和名稱)。
方法參數中的「類型」用於編譯器和運行時消息傳遞的類型檢查。
它在您的原型中被調用的方式在那裏,它相當於「(id)
」。
您可以在Apple的Programming with Objective C document的「Methods can take Parameters」部分找到更多信息。我還在"The Objective-C Programming Language" document的「對象消息傳送」部分中看到一些非常有用的信息。
語言規範狀態:
如果退貨或參數類型不明確聲明,它認爲 成爲方法和消息,一個id的默認類型。
Objective-C的編程語言tells us:
對於Objective-C中的面向對象的結構如方法 返回值,ID替換INT作爲默認數據類型。 (對於嚴格的 C構造,如函數返回值,int仍然是默認的 類型。)
有趣!我更喜歡Objective-C,更加了解' - :v {}'編譯:-) – SundayMonday
我拒絕回答任何使用類似方法的問題:-D – DrummerB
如果您正在尋找編譯的最短方法,那很可能'-a {}';-) – DrummerB