儘管我在Cocoa開發了多年,但我從來沒有必要開發一種用於處理非對象變量的C風格的庫。關於可可C風格功能的一些愚蠢的問題
我稱之爲 「C風格的功能」,例如:
float myCStyleFunction(float var1, float var2);
知道的Objective-C是C的後代,我試圖做一個真正的C函數。但是一些簡單的東西是編譯器不允許的。
一通按引用:
void makeSomethingWithImages(CGImageRef & im1, CGImageRef & im1);
這不起作用。 Compilator說Parameter name omitted
。 有沒有辦法通過引用我的CGImages?
其次,默認參數:
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1, float tolerance) { ... }
void makeSomethingWithImages(CGImageRef im1, CGImageRef im1) {
makeSomethingWithImages(im1, im2, 0);
}
錯誤:Conflicting types for 'makeSomethingWithImages'
有沒有辦法有一些默認的參數?
而附屬問題:如果Obj-C是C後代,爲什麼這些示例不起作用?
With'void makeSomethingWithImages(CGImageRef im1,CGImageRef im1)',是函數調用時複製的參數嗎? – Martin 2013-03-13 10:19:02
@Martin是的。避免這種情況的唯一方法是發送指針。引用會很好,但Objective-C不支持它。順便提一下,'CGImageRefs'已經是指針了,所以拷貝的數量是最小的。 – Ephemera 2013-03-13 10:24:11
哦,是的,他們是指針,你是對的。你有關於我的第二個問題的解釋(不同的函數簽名有衝突),還是一樣的:僅在C++中可用? – Martin 2013-03-13 10:28:19