斯威夫特:"混合"性能

时间:2014-06-19 15:13:30

标签: ios architecture swift

我将从我正在尝试做的事情开始:我想创建一个漂亮的小混合,UIViews可以利用它来抽象出预期的触摸事件(也就是说,“就像用户现在拖动的那样,做他们真的想完成这个动作“)。

我认为最好的方法是使用一个类别,但我发现它们已被swift中的“扩展”所取代。大多。显然属性现在都是计算出来的。

为了使这个mixin工作,我需要一个本地存储属性来存储一个令牌“intent of intent”。但是,任何向扩展添加var的尝试都会出现关于我需要如何提供setter和getter的错误。协议不会出于同样的原因。如果我在扩展程序旁边创建一个协议,我仍然需要一个本地ivar来存储这个新属性。

所以两个问题中的任何一个:

我是否会走很远的路,如果是这样,我应该做些什么呢?

如何创建一个类似“mixin”的结构,允许我定义应混合的简单属性和方法?

1 个答案:

答案 0 :(得分:0)

Mixins不是与Cocoa一起使用的模式,无论是Swift还是Objective-C。正如您所发现的,类别无法添加额外的ivars,协议只定义了一个界面,所以也没有ivars。

Cocoa通常更喜欢对象使用(或封装)继承。继承确实被使用,但它只是单继承,所以mixin是不可能的。它们永远不需要。

对于所描述的用例,正确的方法是通过手势识别器。信息和代码可以在这里找到:

https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html#//apple_ref/doc/uid/TP40009541-CH2-SW2