如果您在桌面上尝试此代码段,一切正常.
每当你在iPad上试用它时,它都不会做任何事情.
$('body').on('click', '#click', function() {
alert("This alert won't work on iPad");
});Run Code Online (Sandbox Code Playgroud)
div {
font-size: 24px;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="click">Click here</div>Run Code Online (Sandbox Code Playgroud)
简单的.click()处理程序工作,但它不是我想要的.这同样适用于.delegate();和.live()
这是一个bug还是什么?
可能我错过了一些简单的东西,但我不明白如何使用Ruby的DelegateClass方法,我的意思是何时使用它而不是SimpleDelegator类.例如,以下所有内容似乎大部分相同:
require 'delegate'
a = SimpleDelegator.new([0])
b = DelegateClass(Array).new([0])
c = DelegateClass(String).new([0])
a << 1
b << 2
c << 3
p a # => [0, 1]
p b # => [0, 2]
p c # => [0, 3]
Run Code Online (Sandbox Code Playgroud)
请注意,传递给哪个类似乎并不重要DelegateClass.
来自Apple自己的网站:"Swift设计的核心是两个非常强大的想法:面向协议的编程和一流的价值语义."
有人可以详细说明什么是面向协议的编程,它带来了什么附加价值?
我已阅读此内容并观看了Swift 视频中的面向协议编程,但是来自Objective-C背景仍然没有理解它.我恳请一个非常简单的英语答案,以及有关它与Objective-C有什么不同的代码片段和技术细节.
我所使用的混淆中只有一个<tableViewDelegate, CustomDelegate>难道我们也不能在Objective-C中使用多个协议吗?那么Swift又是如何新的?
编辑:请参阅面向协议的视图视频.我发现这个视频更基本,更容易掌握一个有意义的用例.WWDC视频本身有点先进,需要更广泛的视野.此外,这里的答案有点抽象.
这绝对是主观的,但我想尽量避免它变得有争议.我认为如果人们适当地对待它可能是一个有趣的问题.
在我最近的几个项目中,我曾经实现过长代理链是常见的架构.
可能经常遇到双重委托链:
bool Exists = Env->FileSystem->FileExists( "foo.txt" );
Run Code Online (Sandbox Code Playgroud)
三重代表团并不罕见:
Env->Renderer->GetCanvas()->TextStr( ... );
Run Code Online (Sandbox Code Playgroud)
存在更高级别的代表团,但实际上很少.
在上述示例中,不执行NULL运行时检查,因为所使用的对象始终存在并且对于程序的运行是至关重要的并且在执行开始时被显式构造.基本上我曾经在这些情况下拆分委托链:
1)我重用通过委托链获得的对象:
{ // make C invisible to the parent scope
clCanvas* C = Env->Renderer->GetCanvas();
C->TextStr( ... );
C->TextStr( ... );
C->TextStr( ... );
}
Run Code Online (Sandbox Code Playgroud)
2)在使用之前,应该检查委托链中间某处的中间对象是否为NULL.例如.
clCanvas* C = Env->Renderer->GetCanvas();
if ( C ) C->TextStr( ... );
Run Code Online (Sandbox Code Playgroud)
我曾经通过提供代理对象来对抗案例(2),以便可以在非NULL对象上调用方法,从而产生empty结果.
我的问题是:
以下是我在做出选择时考虑的一些优缺点:
优点:
缺点:
我想知道长代表团的其他利弊.请根据有争议的观点提出你的推理和投票,而不是你对它的看法.
我一直在努力学习如何使用协议进行委派.我理解了一切,但我想不到何时使用委托除了使用表视图和可能滚动视图.
一般来说,何时使用授权?
有人请解释转发和委托之间的区别吗?它们看起来很相似,但我还没有找到一个好的转发定义,所以我不确定我是否真的理解.
策略模式和委托模式(不是委托)之间有什么区别?
Decorator模式和委托模式之间有什么区别(如果有的话)?我不想仅了解实现细节,还想了解用例差异和主观观点如何使用它们.
编辑:你能指出使用这些模式(特别是Delegation,因为在Java IO类中使用装饰)的源代码(在OS项目中).我正在寻找一些真正的用法而不只是虚拟的例子.也许这些模式只是在标题上有所不同.随意写下这个意见.
在实施方面,组合设计与授权的区别是否有所不同.例如,下面的代码似乎正在进行委托,因为用户无法在不使用b的情况下访问组合对象(即"a").因此,用户需要调用类b的接口,然后"class b"调用"class a"的适当接口,使其成为委托.这有意义吗?
Class A {
friend class B;
private:
A(){}; //dont want user to instantiate this class object since it wont sense without any context. Just like a room with no house.
void PrintStructure(){};
};
Class B{
public:
void PrintStructure(){a.PrintStructure();} //delegate
private:
A a; //composition
};
Run Code Online (Sandbox Code Playgroud) 我用以下代码阅读了Stroustrup的这个链接:
class X {
int a;
public:
X(int x) { if (0<x && x<=max) a=x; else throw bad_X(x); }
X() :X{42} { }
X(string s) :X{lexical_cast<int>(s)} { }
// ...
};
Run Code Online (Sandbox Code Playgroud)
我的问题是关于这条线:
X() X{42}{}
括号和大括号之间有什么区别吗?
如果没有差异,我可以在其他函数调用中使用大括号吗?或者只是在构造函数委托中?最后为什么我们应该有这两种语法?这有点暧昧.
delegation ×10
c++ ×3
oop ×2
protocols ×2
c++11 ×1
chaining ×1
class ×1
composition ×1
constructor ×1
decorator ×1
delegates ×1
forwarding ×1
ipad ×1
java ×1
javascript ×1
jquery ×1
objective-c ×1
ruby ×1
swift ×1
swift2 ×1