![]() |
1
4
是的,可以使用 NSProxy . 您必须实现methodSignatureForSelector:和ForwardInvocation:到 forward messages 装饰物。 但我不认为这是一个很好的解决方案,你在这里做什么,发送呼叫是非常 costly 并不是为了这样一个目的——当然有更好的方法来实现你想要做的事情,例如使用类别(或者方法旋转)。 |
![]() |
2
3
您在界面上的评论:
是不正确的。即使您正在实现方法,也不必重新声明从接口中的超类继承的方法。这不是C++。 但是,您必须创建重定向到实例变量中滚动视图的所有方法的实现。可能有一种聪明的方法可以截获发送到子类实例的消息,并自动将其转发到实例变量,但我无法想象它会是什么样的。 正如其他人所说,考虑改用uiscrollview类别。类别并不是装饰器的直接替代,因为实现一个类别会给uiscrollview的所有实例您的自定义方法,但这可能不是问题。 更新
你可以使用
|
![]() |
3
2
我相信你想要的是创建一个类别。类别允许您向现有类(包括核心类)添加其他方法。 |
![]() |
4
2
这不仅是一个无聊的方法编码问题,而且是对象的复制问题,即将创建两个uiscrollview对象,装饰器和装饰对象。有时,当您真正需要两个不同的对象及其数据时,这可能很有用,但其中一个是主对象,我称之为“廉价的装饰器”。但是,如果装饰器本身不需要和使用它自己的成员,我称之为“脏装饰器”(不用担心,您不是单独的,我也会这样做几次;-)纯粹的装饰器将实现相同的接口(Java)RESP。类别(obj-c)与装饰对象相似。 也许这就足够子类uiscrolview覆盖您感兴趣的那些方法了。或者像马修建议的分类。 干杯 凯 |
![]() |
5
1
如果你要添加的只是额外的方法,那就用类别吧。 只需导入标题并调用任何uiscrollview上的方法
即使你真的想把它子类化,你也可以这样做。
|
![]() |
6
0
我认为这接近装饰图案: 用途:
通过这种方式,TableView将继续响应它的TableView事件以及来自_decorator的ScrollView事件。 注意:修饰符可以从实现uiscrollViewDelegate的任何类派生 我认为这类似于uinavigationcontroller或uitababarcontroller,在我看来,它非常接近于装饰器模式。可能您不能对所有类型的对象都这样做,但它确实适用于uiview类型的东西。还可以查看“可可设计图案”这本书,了解一些美味的可可图案。不幸的是,我发现关于装饰师的东西很少。
还有:
|
![]() |
mueslo Thomas Kühn · 修饰类方法以构建方法注册表 7 年前 |
![]() |
Mr.Dreamer · 类方法的python装饰器 7 年前 |
![]() |
Igor Pozdeev · 属性getter和上下文管理器 7 年前 |
![]() |
Miles P · Typescript类型检查不适用于我的装饰程序 7 年前 |
|
Ryohei · 如何在我的软件包中使用decorator 7 年前 |
|
user7696297 · python中的函数修饰符是什么 7 年前 |
![]() |
lilezek · 限制方法修饰符的使用 7 年前 |