Tag: 委托

委托关键字与lambda表示法

一旦编译完成,是否有区别: delegate { x = 0; } 和 () => { x = 0 } ?

代表和事件之间有什么区别?

代表和事件之间有什么区别? 不要同时持有可执行函数的引用吗?

在C#中取消订阅匿名方法

是否有可能取消订阅一个事件的匿名方法? 如果我订阅这样的事件: void MyMethod() { Console.WriteLine("I did it!"); } MyEvent += MyMethod; 我可以像这样取消订阅: MyEvent -= MyMethod; 但是,如果我使用匿名方法订阅: MyEvent += delegate(){Console.WriteLine("I did it!");}; 是否可以取消订阅这个匿名方法? 如果是这样,怎么样?

为什么要使用Expression <Func <T >>而不是Func <T>?

我了解lambda以及Func和Action代表。 但是expression式使我感到遗憾。 你会在什么情况下使用Expression<Func<T>>而不是普通的旧的Func<T> ?

如何在Objective-C中创build委托?

我知道代表是如何工作的,而且我知道如何使用它们。 但是,我如何创build它们?

视图控制器之间进行通信的最佳方式是什么?

作为Objective-C,cocoa和iPhone开发者的新手,我强烈渴望从语言和框架中获得最大的收益。 我正在使用的资源之一是斯坦福大学的CS193P课堂笔记,他们已经离开了networking。 它包括讲义,作业和示例代码,由于课程是由苹果开发者提供的,我绝对认为它是“从马口”。 class级网站: http://www.stanford.edu/class/cs193p/cgi-bin/index.php 08讲座涉及到一个分配,build立一个基于UINavigationController的应用程序,有多个UIViewControllers推到UINavigationController堆栈上。 这就是UINavigationController的工作原理。 这是合乎逻辑的。 但是,幻灯片中有一些关于你的UIViewControllers之间的沟通的严重警告。 我要引用这个严肃的幻灯片: http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf 页面16/51: 如何不共享数据 全局variables或单身人士 这包括您的应用程序委托 直接的依赖性使得你的代码更加可重用 而且更难debugging 好。 我对此感到失望。 不要盲目折腾所有用于viewcontroller与应用程序委托之间的通信的方法,并在应用程序委托方法中引用viewcontroller实例。 公平'nuff。 再进一步,我们得到这张幻灯片告诉我们该怎么做。 页面18/51: 数据stream的最佳实践 找出需要传达的信息 为您的视图控制器定义input参数 为了进行通信备份,请使用松耦合 为观察者定义一个通用接口(如委派) 这张幻灯片之后是一个看起来像一个占位符的幻灯片,然后讲师用UIImagePickerController的例子显然演示了最佳实践。 我希望video可用! 🙁 好的,所以…恐怕我的东西不太强。 上述报价中的最后一行我也有点困惑。 我在这方面一直在做相关的search,我发现看起来像是一篇体面的文章,谈论观察/通知技术的各种方法: http://cocoawithlove.com/2008/06/five-approaches-to-listening-observing.html 方法#5甚至指示代表作为一种方法! 除了….对象一次只能设置一个委托。 所以当我有多个viewcontroller通信,我该怎么办? 好的,那就是组build团伙。 我知道我可以在appdelegate中通过引用多个viewcontroller实例轻松地在应用程序委托中完成我的通信方法,但是我想以正确的方式执行这种事情。 请回答以下问题,帮助我“做正确的事情”: 当我尝试在UINavigationController堆栈上推送一个新的viewcontroller时, 谁应该这样做。 我的代码中哪个类/文件是正确的地方? 当我在一个不同的 UIViewController中想要在我的一个UIViewController中影响一些数据(一个iVar的值)时,什么是“正确”的方法呢? 假设我们只能在一个对象中一次设置一个委托,当讲师说“为观察者定义一个通用接口(如委派)”时,实现将会是什么样子? 如果可能的话,一个伪代码示例将非常有用。

传递方法作为参数使用C#

我有几个方法都具有相同的签名(参数和返回值),但不同的名称和方法的内部是不同的。 我想传递方法的名称来运行另一个方法,将调用传入的方法。 public int Method1(string) { … do something return myInt; } public int Method2(string) { … do something different return myInt; } public bool RunTheMethod([Method Name passed in here] myMethodName) { … do stuff int i = myMethodName("My String"); … do more stuff return true; } public bool Test() { return RunTheMethod(Method1); } 此代码不起作用,但这是我想要做的。 […]