草庐IT

delegating

全部标签

ios - 如何在 Objective-C 中创建委托(delegate)?

我知道委托(delegate)是如何工作的,并且我知道如何使用它们。但是我该如何创建它们呢? 最佳答案 Objective-C委托(delegate)是一个对象,它已分配给另一个对象的delegate属性。要创建一个,您定义一个实现您感兴趣的委托(delegate)方法的类,并将该类标记为实现委托(delegate)协议(protocol)。例如,假设您有一个UIWebView。如果你想实现它的委托(delegate)webViewDidStartLoad:方法,你可以像这样创建一个类:@interfaceMyClass//...@

c++ - 什么是 C++ 委托(delegate)?

C++中委托(delegate)的一般概念是什么?它们是什么,它们是如何使用的以及它们的用途是什么?我想首先以“黑匣子”的方式了解它们,但了解一些关于这些东西的内脏的信息也很棒。这不是最纯粹或最干净的C++,但我注意到我工作的代码库有很多。我希望对它们有足够的了解,所以我可以直接使用它们,而不必深入研究可怕的嵌套模板的可怕之处。这两个TheCodeProject文章解释了我的意思,但不是特别简洁:MemberFunctionPointersandtheFastestPossibleC++DelegatesTheImpossiblyFastC++Delegates

ruby-on-rails - 在 rails 中序列化委托(delegate)

我在Rails中有3个模型:User、UserProfile和Post像这样:classPost:user,:prefix=>"author"endclassUser:user_infoendclassUserInfo现在我使用knockout来管理客户端的帖子,所以我必须使用posts.to_json将我的对象转换为json。这些JSON对象没有全名属性。我尝试使用user.to_json,这些对象也没有该属性。那么如何使委托(delegate)序列化为JSON? 最佳答案 因为全名在某种意义上是一个虚拟属性:rails2:pos

ruby - Rails 委托(delegate) - 它是如何工作的

我对Rails委托(delegate)功能感到困惑。虽然我指的是apidoc我需要更好的理解。这是我在开源项目中发现的两种类型的代表。delegate:id,:guid,to::person,prefix:truedelegate:last_name,:image_url,:tag_string,:bio,to::profile它们有什么区别?使用和不使用prefix有多大影响?谢谢。 最佳答案 prefix:true指定您必须将模型名称作为前缀包含在委托(delegate)方法中。因此,对于Widget实例,您可以这样调用它:wi

ruby-on-rails - Rails 为什么要使用委托(delegate)?

我目前正在学习delegate和Demeter法则,但我似乎找不到一个很好的例子来说明使用delegate的实际用处。我想找一个与我的项目相关的示例,因为我必须进行演示。我发现可能违反得墨忒耳法则的唯一代码行如下:@game.promotions.find_by_promo_type("cross")模型Gamehas_manyPromotions并且它正在跨另一个模型执行find调用促销属性promo_type。根据我的理解,这违反了Demeter法则,我应该通过使用委托(delegate)来解决这个问题:classGame:promotionend你能给我一个例子,说明除了“得墨忒

ruby - 用 method_missing 委托(delegate)的方法的数量

当我将类A的实例上的方法委托(delegate)给$delegation_target时,如下所示:$delegation_target=""classAdefmethod_missing*args,≺$delegation_target.send(*args,&pr)enddefrespond_to_missing?*args;$delegation_target.respond_to?(*args)endendA实例上方法的arity返回-1而不管方法的arity在$delegation_target上:def$delegation_target.foo;endA.new.m

ruby - 将域范围委托(delegate)与 Google API 结合使用时出现未经授权的客户端错误

我们使用谷歌APIRuby客户端和全域委派来更新用户的联系人,解析电子邮件以将它们与我们的数据库配对等。在4月1日之前一切正常,但是,从那以后我们得到unauthorized_client错误响应。Signet::AuthorizationError(Authorizationfailed.Servermessage:){"error":"unauthorized_client","error_description":"Clientisunauthorizedtoretrieveaccesstokensusingthismethod,orclientnotauthorizedfora

ruby - Delegator 通过 BasicObject 透明化

上下文:我正尝试在Ruby中建立装饰器模式。由于Decorator应该将所有未知方法委托(delegate)给底层对象,因此我使用了Delegator类。我本可以使用SimpleDelegator,但我想完全理解我在做什么。所以我得出的基本代码是:classDecorator这与SimpleDelegator的实现完全相同。看起来不错。但我不希望处理装饰器的代码知道它正在操纵装饰器。我想要完全透明。此时Decorator.new(Object.new).class返回了Decorator所以我稍微修改了一下,想出了这个:classDecorator这样,我可以安全地在装饰对象上使用cl

ruby - 委托(delegate)给类方法

在Ruby中是否可以委托(delegate)另一个类的类方法来替换下面的方法?defsugar(param)Klass.a_very_long_method_name(param)end我试过使用ForwardableextendForwardabledef_delegator'Klass.a_very_long_method_name',:sugar但是好像不行。我发现自己在很多地方都调用了Klass.a_very_long_method_name,我正试图把事情弄干。 最佳答案 require'forwardable'class

ruby - capybara ::dsl::模块的未定义方法 'delegate'

我有一个capybaramonkey补丁来处理jquery-ui,它在Ubuntu上运行得很好......虽然当移动到Windows时我得到以下错误(所有依赖性gem都已成功安装):capybara::dsl::module的未定义方法'delegate'发生这种情况的代码行是:moduleCapybara::DSLdelegate:datepick,:datetimepick,:timepick,to::pageend有什么想法吗?有点迷失了为什么仅通过切换操作系统就会显示此错误... 最佳答案 在标准的ruby​​中,委托(de