我有UIView的扩展,呈现特殊的边框。我这样做是通过创建新的CALayer并将其添加为子层来查看。一切都运转良好,直到我注意到当视角的变化时,我被旧边框困住了。为了解决这个问题,我想将边框图层存储到属性中,当布局更改时,我将删除旧的边框图层并创建新的边框图层。但由于协议不能直接添加属性,我不得不使用子类。
我对如何处理上述情况并不感兴趣,因为我省略了一些可能导致您的改进无法使用的细节。我想知道这是否是我们必须忍受的东西,只是恢复到子类,或者我错过了某些东西,并且可以以某种方式克服它。
我知道协议可以定义实现它的类需要定义的属性,但这也是相当有限的。在上面的例子中,我想扩展UIView的功能,而不是UIView的某些子类,以便它可以在任何视图中使用
答案 0 :(得分:-1)
我的厚颜无耻的回答:
面向协议的编程是一个穷人的OOP语言的多重继承,但没有得到它。
因此,如果您发现在层次结构中没有您需要的东西,只需制作另一个协议,并将必要的对象与其协调一致。
继承的构成?
或继承作文?
可能并不重要。
)
无论什么都有效。