Alt*_*tan 3 iphone inheritance objective-c multiple-inheritance uiview
我想实现一个可移动的UIView类(当你触摸它并移动手指时视图移动),例如:
@interface MovableView : UIView {
some members;
}
-touchesBegan;
-touchesMoved;
@end
Run Code Online (Sandbox Code Playgroud)
如何在没有多重继承的情况下将此代码应用于UILabel,UIButton等?在C++中,我会这样做(使用UIView作为MovableView的虚拟基础):
struct MovableLabel : UILabel, MovableView {};
Run Code Online (Sandbox Code Playgroud)
提供类别作为多继承的替代,但我绝对不希望使用类别扩展UIView,因为这将适用于我的应用程序中的所有视图.我只希望我的一些观点可以移动.
我目前避免代码重复的策略是将MovableView代码放在头文件中,并在每次需要某个类来使用它时包含它.除此之外,我必须将MovableView的成员添加到我正在编写的任何类中.这是纯粹的代码丑陋,但比我的项目中的复制/粘贴代码更好.
有没有人有任何其他想法来解决这个[没有多重继承]的Objective C限制?
谢谢,
俺答
Objective-C不会让你做这个mixin继承的事情,除非你想要扩充的每个类都添加相同的类别.然后,您将不会获得额外的实例变量.
对于您的具体问题,我可以通过设计MovableView为容器类来实现它,该容器类只是一个具有子视图(UILabel,UIButton等)的对象,您希望将其作为子视图移动.
| 归档时间: |
|
| 查看次数: |
4624 次 |
| 最近记录: |