尽管我在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