如何将StrongDelegate ObjC代码移植到C#MonoTouch?
我是Xamarin和C#的代理,但是我不确定如何在TapViewController中移植此方法 它包含所有我不知道如何移植的东西。。。即如何将StrongDelegate ObjC代码移植到C#MonoTouch?,c#,objective-c,xamarin.ios,multipeer-connectivity,objective-c-2.0,C#,Objective C,Xamarin.ios,Multipeer Connectivity,Objective C 2.0,我是Xamarin和C#的代理,但是我不确定如何在TapViewController中移植此方法 它包含所有我不知道如何移植的东西。。。即 仅用代码表示的委托,在Xamarin框架中没有强委托。(这可能很简单,只是我缺少了一个概念) 这里的id到底是什么,我该如何声明/使用它 如何声明self.delegate 代码: -(iAction)关闭按钮操作:(id)发送方 { id strong代表; #pragma未使用(发送方) strong委托=自委托; if([strongDelegate
id
到底是什么,我该如何声明/使用它self.delegate代码>
-(iAction)关闭按钮操作:(id)发送方
{
id strong代表;
#pragma未使用(发送方)
strong委托=自委托;
if([strongDelegate respondsToSelector:@selector(tapViewControllerDidClose:)])){
[strongDelegate tapViewControllerDidClose:self];
}
}
这里是一个端口,您是否试图在不知道前一个端口的情况下将Objective-C代码移植到C#
是Obj-C的“任何对象”,而id
是实现指定协议的任何对象。Obj-C“委托”只是一个实现给定协议的对象,它的使用方式使其成为委托。Objc-C协议和C#接口是相互匹配的概念。因此,id
是一个类型为C#接口的变量(您可能已经从Obj-C协议翻译过来了)strongDelegate
- 声明
:它是一个Objc-C属性引用,与self.delegate
的类型相同(或兼容)。C#具有属性strongDelegate
- Obj-C中的
测试用于确定被引用对象是否实现了指定的方法,如果是,则调用该方法。Obj-C协议允许可选方法,即实现协议的方法对象不需要实现。C#接口没有直接等价物。在将Obj-C协议转换为C#接口时,您要么将所有可选方法设置为非可选方法,要么执行其他操作。翻译if
)以匹配您所做的任何事情(如果
HTH这是客观的,不是斯威夫特
- (IBAction)closeButtonAction:(id)sender
{
id <TapViewControllerDelegate> strongDelegate;
#pragma unused(sender)
strongDelegate = self.delegate;
if ([strongDelegate respondsToSelector:@selector(tapViewControllerDidClose:)]) {
[strongDelegate tapViewControllerDidClose:self];
}
}