问题描述
我试图获得来自iCarousel机库编制了本机类(使用的)。
当使用生成的绑定一切完美:
I'm trying to derive a native class compiled from iCarousel native library ( used the LinkWith method described in this example ).When using the generated binding everything works perfectly:
iCarousel carousel = new iCarousel( new RectangleF(0, 0, 300, 300) );
但是,试图创建这个派生类中:
But when trying to create this derived class:
public class Carousel2 : iCarousel
{
public Carousel2( RectangleF rect ) : base(rect)
{
Console.WriteLine("do something");
}
}
和使用它是这样的:
Carousel2 carousel = new Carousel2( new RectangleF(0, 0, 300, 300) );
它编译但它只是停止工作,没有错误。它是我丢失的东西?
It compiles but it just stops working, with no error. Is it something I'm missing?
更新:我已经把Objective-C的头和ApiDefinition.cs源$ C $ C在这里:
的
UPDATE: I've put the objective-c header and the ApiDefinition.cs source code here:http://dantes-andreea.blogspot.com/2012/02/icarousel-monotouch-binding-code.html
推荐答案
我认为你需要传递-e生成绑定时btouch,否则他们将不子类化。
I think you need to pass -e to btouch when generating the bindings, otherwise they will not be subclassable.
在默认情况下,因为他们是一个稍微慢一点btouch不会产生子类化的类型。
By default btouch does not generate subclassable types because they're a little bit slower.
更新
我错了,-e开关必须的不的传递给btouch生成子类化绑定。不幸的是这个开关被无条件通过。一个已经立案。
I was wrong, the -e switch must not be passed to btouch to generate subclassable bindings. Unfortunately this switch is passed unconditionally. A bug report has been filed.
您或许可以解决它通过手动运行btouch命令MonoDevelop的已建成项目后(你建立绑定项目,C和,P的btouch命令行,并删除-e开关)。然后,你还必须运行任何后续步骤手动太多。
You can probably work around it by manually running the btouch command after MonoDevelop has built the project (you build the bindings project, c&p the btouch command line and remove the -e switch). Then you'll also have to run any subsequent steps manually too.
这篇关于从本机类MonoTouch的派生类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!