首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于OC代理的问题:self.delegate = self

背景 最近作者在进行工程代码分析时,经常看到这样的代码: self.delegate = self //自己的代理设置为自己 于是心中产生了不少疑问,为什么会这样写?这样写是否是正确的?...Delegate 无非就是把 A 的消息传递给代理对象 B,self.delegate = self 直接把代理对象设置为自己,这样省去了引入第三方代理,这种做法大部分情况是为了图个方便,一般出现在使用第三方闭源代码以及系统类...(如:UITextField等)的情况下,因为我们无法获知内部消息是如何传递的,只能通过代理对象获知消息。...难道是 self.delegate = self 导致的?...于是在 SGLimitedTextField.m 文件中再实现自己的代理方法: @interface SGLimitedTextField () @end @implementation SGLimitedTextField

1.5K20

【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )

文章目录 一、闭包的代理策略引入 二、闭包的四种代理策略 一、闭包的代理策略引入 ---- 分别在 Groovy 脚本 和 Test 类中定义 fun 方法 , 打印不同的内容 ; 在闭包 Closure...def closure2 = { fun() } // 设置闭包的代理 closure2.delegate = new Test() // 执行闭包 closure2() 上述代码执行结果...方法 ; // 设置闭包的代理 closure2.delegate = new Test() 这是因为 Closure 闭包的 代理策略问题导致的 ; 在 Closure 闭包中 , resolveStrategy...成员配置的是该闭包的代理策略 , 默认的代理策略 OWNER_FIRST , 也就是优先从 owner 中查找方法 ; 此时即使在 delegate 中有 fun 方法 , 也会被 owner 中的...; DELEGATE_FIRST : 代理优先策略 , 代理中的方法优先 ; OWNER_ONLY : 只执行所有者中的方法 ; DELEGATE_ONLY : 只执行代理中的方法 ; TO_SELF

59220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

    紧接着会给出如何去实现自己的Delegate回调,即在自定义控件中去实现委托代理回调。言归正传,开始今天的博客主题。   ...的工作方式来直观的感受一下协议的使用场景,以及Delegate代理的工作方式。...认识协议,并使用协议实现委托回调     接下来的内容就要介绍如何使用协议来定义属于你自己的委托代理回调(Delegate)了。...先在我们要通过Delegate来实现。接下来我们就定义协议,然后再协议的基础上实现委托代理回调。接下来了开始我扩充的部分。     ...这个声明为weak的delegate成员变量则是必须要实现EditViewControllerDelegate协议的委托代理者,使用weak修饰为了避免强引用循环。

    3.5K80

    当你问代理机制的时候?指的是Agent,Proxy,Broker还是Delegate呢?

    应用的广泛导致了代理有着不同的形态,主要有Agent、Proxy、Broker和Delegate。弄清各种代理的异同,对于理解系统的设计和实现,是有帮助的。 ?...Delegate:委托性代理 Delegate 是委托性或者指派性代理,一般地,管理进程指派给代理方,并在代理方执行管理操作,而不涉及管理方。...在JQuery 中就有Delegate()方法,更广泛为人所知的就是Obj-C中的委托性代理了。...iOS开发中的Delegate用于页面传值,也常用Delegate来传递消息和值,以及UITableView的Delegate等。...在目前的6个对话指令中,Dialog.Delegate指令采用了委托式代理,将对话指派给DuerOS完成,DuerOS的询问和确认槽位的话术使用的是开发者在技能开放平台默认配置的话术。

    3.9K30

    CCLayer在Touch事件(Standard Touch Delegate和Targeted Touch Delegate)

    m_bTouchEnabled就是setTouchEnabled(true)设置的 { this->registerWithTouchDispatcher();//会设置Standard Touch Delegate...以下是别人总结分享的 http://www.cnblogs.com/pengyingh/articles/2435160.html Cocos2d 开发中提供了两种touch处理方式,Standard Touch Delegate...和 Targeted Touch Delegate方式(參见CCTouchDelegateProtocol.h中源码),CCLayer默认是採用第一种方式(參见CCLayer的 registerWithTouchDispatcher...Standard Touch Delegate(CCLayer默认採纳这样的方式) Standard方法中用户须要重载四个主要的touch处理方法,例如以下: -(void) ccTouchesBegan...Targeted Touch Delegate方式 在standard方式中的响应处理事件处理的都是NSSet,而 targeted方式仅仅处理单个的UITouch对象,在多点触摸条件下,应该採纳standard

    1.4K10

    C# 委托(Delegate

    C# 委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。...委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。 声明委托(Delegate) 委托声明决定了可由该委托引用的方法。...例如,假设有一个委托: public delegate int MyDelegate (string s); 上面的委托可被用于引用任何一个带有一个单一的 string 参数的方法,并返回一个 int ...声明委托的语法如下: delegate 实例化委托(Delegate) 一旦声明了委托类型,委托对象必须使用...例如: public delegate void printString(string s); ...

    39140
    领券