草庐IT

delegating

全部标签

Swift 委托(delegate) - 何时在委托(delegate)上使用弱指针

有人可以解释什么时候以及什么时候不对Swift中的委托(delegate)指针使用“弱”赋值,为什么?我的理解是,如果您使用未定义为类的协议(protocol),则您不能也不想将委托(delegate)指针分配给weak。protocolMyStructProtocol{//whatever}structMyStruct{vardelegate:MyStructProtocol?}但是,当您的协议(protocol)被定义为类类型协议(protocol)时,您是否希望将委托(delegate)设置为弱指针?protocolMyClassProtocol:class{//whatever

ios - 使用 swift 从应用程序委托(delegate)打开 View Controller

我正在尝试创建一个推送通知,它根据从推送中获得的信息确定打开哪个View。我已经设法从推送中获取信息,但我现在正在努力让View打开查看其他堆栈溢出问题,我目前有以下问题:AppDelegate是否完成加载://ExtractthenotificationdataifletnotificationPayload=launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey]as?NSDictionary{//Getwhichpagetoopenletviewload=notificationPayload["view"]a

swift 委托(delegate)?

如何快速创建一个委托(delegate),即NSUserNotificationCenterDelegate? 最佳答案 这里有一些关于两个ViewController之间委托(delegate)的帮助:第1步:在UIViewController中制定一个您将要删除/将要发送数据的协议(protocol)。protocolFooTwoViewControllerDelegate:class{funcmyVCDidFinish(_controller:FooTwoViewController,text:String)}第二步:在发送类

C# - 委托(delegate) System.Func< >

如何使用delegateSystem.Func?我们是否应该使用它来控制功能或事件的执行顺序?简单的例子会很有帮助 最佳答案 假设您有一个函数,例如:privatestaticstringtoLower(strings){returns.ToLower();}有一个System.Func版本接受两个泛型参数,第一个是第一个参数的类型,第二个是返回类型。因此,您可以这样写:FuncmyFunction=toLower;strings=myFunction("AsDf");//sisnow"asdf"在所有版本的System.Func中

c# - 匿名委托(delegate)可以在事件被触发后取消订阅吗?

我想知道“最佳实践”是什么,要求事件处理程序在触发一次后取消订阅。对于上下文,这是我的情况。用户已登录,并处于处理工作项的就绪状态。他们收到一个工作项,对其进行处理,然后再次准备就绪。此时,他们可能想说他们无法处理更多工作项目,但无论如何都会向他们发送一个。我希望能够做的是,一旦该操作成为可能,就允许用户“排队”“我不可用”。publiceventSomeHandlerStateChanged=delegate{};publicvoidQueueNotAvailable(){StateChanged+=(s,e)=>{if(e.CanGoNotAvailable){someObject

c# - 通过匿名委托(delegate)取消订阅事件

这个问题在这里已经有了答案:UnsubscribeanonymousmethodinC#(14个答案)关闭5年前。我多次使用Resharper5.1代码分析,我收到了resharper的评论“通过匿名委托(delegate)取消订阅事件”#PartofCodeif(((bool)e.NewValue)){listView.PreviewTextInput+=(o,args)=>listView_PreviewTextInput(o,args,listView);}else{listView.PreviewTextInput-=(o,args)=>listView_PreviewText

c# - 有人可以提炼成正确的英语委托(delegate)是什么吗?

有人可以将委托(delegate)的含义分解成一个简单、简短和简洁的解释,包括目的和一般好处吗?我试图将我的头围绕在这个问题上,但它并没有陷入困境。 最佳答案 我有一个功能:publiclongGiveMeTwoTimesTwo(){return2*2;}这个功能很烂。如果我想要3*3怎么办?publiclongGiveMeThreeTimesThree(){return3*3;}打字太多。我很懒!publiclongSquareOf(intn){returnn*n;}我的SquareOf函数不关心什么n是。它将对任何n正常运行传入

c# - 编译器为 delegate 关键字生成的密封类包含虚方法

当在C#中使用delegate关键字时,C#编译器会自动生成一个派生自System.MulticastDelegate类的类。这个编译器生成的类也包含3个方法:Invoke、BeginInvoke和EndInvoke。所有这三个方法都标记为publicvirtualextern,但有趣的是类本身标记为sealed。在密封类中定义虚方法不仅违反直觉,而且在C#中实际上是非法的。所以我的问题是,这是否有特定的原因,或者这只是那些无害的事情之一,同时牢记一些假设的future增强?编辑1:原因是否是强制使用“callVirt”IL操作码而不是“call”,以便在尝试执行这三种方法中的任何一种

c# - 表达式树和调用委托(delegate)

所以我有一个delegate它指向一些我在第一次创建delegate时实际上并不知道的函数目的。稍后将对象设置为某些功能。然后我还想制作一个表达式树,用一个参数调用委托(delegate)(为了这个问题的缘故,参数可以是5)。这是我正在努力的一点;下面的代码显示了我想要的,但无法编译。Funcfunc=null;Expressionexpr=Expression.Invoke(func,Expression.Constant(5));对于这个例子,我可以这样做(这很实用,因为我需要在运行时构建表达式树):Funcfunc=null;Expression>expr=()=>func(5)

c# - 在.NET 中,委托(delegate)的内部实现是什么?

我理解委托(delegate)的声明是这样的:publicdelegateintPerformCalculation(intx,inty);但是,一定还有更多的事情要做。委托(delegate)的目的是提供指向方法的指针,为此您将对方法的引用封装在委托(delegate)中。这个引用保存在什么样的结构中(在委托(delegate)内部)?我还了解到您可以在委托(delegate)中封装对多个方法的引用。这是否意味着委托(delegate)中有一个数组来保存这些?此外,在委托(delegate)中定义了哪些方法等。当您使用简洁声明委托(delegate)时真正发生了什么:publicde