2012-06-05 24 views
2

好日子,ObjectiveC中的Monotouch/C#相当于id <SomeType>?

我:

的ObjectiveC:

- (void)addTarget:(id<GPUImageInput>)newTarget; 

C#:

[BaseType (typeof(NSObject))] 
interface GPUImageOutput{ 
    [Export ("addTarget")] 
    void AddTarget(NSObject newTarget); //Suspected source of the error 
} 

导致 “无法识别的选择发送到实例” 时调用

stillCamera.AddTarget (filter); 

GPUImage.GPUImageOutput filter = new GPUImage.GPUImageSketchFilter(); 

StillCamera的碱基类型是摄影机其具有碱基类型GPUImageOutput

GPUImageSketchFilterGPUImageSobelEdgeDetectionFilter其为GPUImageTwoPassFilter其为GPUImageFilter其为GPUImageOutput其为NSObject的,并在同一时间实现GPUImageInput

任何想法?

谢谢!

回答

1

等效于

// Objective-C 
id<FOO> xxx; 

只不过是 “富” 在C#中。

1

我相信你错过了一个冒号:

[Export ("addTarget:")] 
+0

工作就像一个魅力。但我仍然感到困惑。你能解释冒号吗? – Bagaboo

+0

这就是标准ObjC中选择器的名称。一般的规则是:“foo”=没有参数的方法,“foo:”=带一个参数的方法,“foo:arg1:”=一个带有两个参数的方法等。 –

+0

我明白了。谢谢。这解释了我有很多崩溃:) – Bagaboo