沒有,有沒有辦法來調用不同的語法Objective-C的方法,但有一個例外:
你可以調用不帶參數的一個點符號,如object.method
方法(這主要是用來具有屬性,這些屬性又是由編譯器生成的getter和setter方法)。
因此,在Objective-C中調用方法的方法([object method]
或[object methodWithArgumentA:someValue argumentB:otherValue]
)無法更改。這是語言設計者選擇的語法。一旦你使用了它,你就會明白爲什麼:
Objective-C中的方法名稱往往是非常具有描述性的,並且像Objective-C命名參數一樣使用(技術上,情況並非如此)。如:
[someData writeToFile:aFileName atomically:YES];
你會如何將它轉換爲點符號?這可能是這樣的:
someData.writeToFileAtomically(aFileName, YES);
現在,如果我看到一個方法只是writeToFileAtomically
我不會感到驚訝,如果它只是將採取一個參數(是否原子寫入文件,但文件?)或無參數(只是原子地寫入文件;再次,哪個文件?)。使用Objective-C符號的意圖更加清晰。
現在考慮object.addObserverForKeyPathOptionsContext(o, k, op, c)
與[object addObserver:o forKeypath:k options:op context:c]
。
是否喜歡這種語法是主觀的。你似乎不喜歡它,因爲你不會問如何擺脫它。但是如果你想編寫Objective-C代碼,你必須接受這是它完成的方式,你不能改變它。擁抱它,起初我發現它很奇怪(也來自長期的C++和Java背景),但是現在我錯過了在使用其他語言工作時使用Objective-C參數調用方法的非常冗長的方式。
這個問題沒有進一步解釋**你爲什麼要**。 –
Objective-C不能以這種方式工作。您*可以*獲取並直接執行方法實現,但每次使用它時都必須執行它,因爲運行時可能會更改。如果你不喜歡Objective-C語法,我建議用另一種語言編程。如果你想按你喜歡的方式進行iOS開發和C#調用,Xamarin/Mono的功能相當不錯。 –
我只是習慣java或c語法,並且希望看到這個語法 – WizardProgrammer