美文网首页开发收藏iosiOS学习
iOS开发--Objective-C的多继承

iOS开发--Objective-C的多继承

作者: JohnnyB0Y | 来源:发表于2015-08-06 17:21 被阅读4379次
这是我个人的学习笔记 , 如有不同见解欢迎评论交流 .

( GeekBand-极客班 http://geekband.com )
( 我的微博 : http://weibo.com/JohnnyB0Y )

Objective-C本身不支持多继承 , 可是方法总是有的 .

  • 通过组合实现多继承

假设C类要同时继承A类和B类 .
1.C类在头文件导入A类和B类的头文件 .
2.C类头文件声明需要继承自A类和B类已有的方法和属性 . ( 实现继承的特性 )
3.在C类内部创建A类和B类的实例 , 变成自己的成员变量 . ( C类调用方法时 , 方法内部是用A类和B类调用自己对应的方法 )
4.把A类和B类的属性与C类的属性存储方法关联起来 . ( C类继承自A类和B类 , 就拥有了A类和B类的能力 , 可是我们是在通过组合来实现多继承 , 所以一定要保证属性关联正确 )
5.C类调用继承过来的方法时 , 实际内部是用A类和B类调用自己对应的方法的 .

  • 通过协议实现多继承

假设C类要同时继承A类和B类 .
1.C类在头文件导入A类和B类的头文件 .
2.在A类和B类把需要被C类继承的方法和属性声明成一份协议 .
3.C类遵守A类和B类的协议 .
4.在实现文件中实现协议方法 , 协议属性也要实现 . ( 问题是你无法调用到A类和B类原生的方法 )

  • 组合和协议实现多继承的问题

1.组合实现下 , 想要继承来的不管是属性还是方法都没有提示 .
2.如果继承来的两个类中属性名和方法名相同就很麻烦了 , 要仔细区分开 .
3.通过协议实现的多继承 , 不能调用父类的方法 .

  • 尝试解决问题

通过把两种实现方法结合起来用 , 感觉好了不少 .
不过问题2 的属性和方法名冲突依然需要自己解决 .

  • 总结

其实个人觉得 , 多继承和继承都能用组合模式来取代 , 而且组合模式更解耦不是吗 ?!

相关文章

  • iOS开发--Objective-C的多继承

    这是我个人的学习笔记 , 如有不同见解欢迎评论交流 . ( GeekBand-极客班 http://geekban...

  • 20170317 Guidelines & AppSto

    Guidelines iOS开发规范整理 Objective-C编码规范:26个方面解决iOS开发问题 iOS开发...

  • Category原理

    在项目开发中,都会遇到扩展已有类的情况,在iOS中,普遍使用继承,但是在Objective-C 2.0中,提供了c...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • iOS - UITableView 总结

    UITableView是iOS开发中常用到的控件,UITableView继承自UIScrollView,很强大,多...

  • iOS 编写高质量Objective-C代码(一)

    级别: ★☆☆☆☆标签:「iOS」「OC」「Objective-C」作者: MrLiuQ 目前iOS开发主推的官方...

  • ios10,ios9 中UIPopoverController

    在ipad开发中,ios9中的UIPopoverController 运用的非常多,它继承的不是ViewContr...

  • 2019-01-08

    iOS开发工程师必备技能(持续更新) Objective-C Objective-C语言基础 library,fr...

  • iOS开发中Runloop和Runtime浅谈

    Runloop 做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用A...

  • iOS Runloop 與Runtime

    Runloop 做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用A...

网友评论

  • 郑明明:Java中有interface来处理多继承,C++中本来就有多继承,Objective-C中实现多继承可以用组合和协议
  • 郑明明:学习了
  • 编号x71291:头像萌萌哒
    JohnnyB0Y:@新宛 人萌头像自然萌,才怪呢!🙈
  • JohnnyB0Y:因为写这篇笔记的目的是讨论Objective-C多继承实现方式的差异和缺陷 , 还有就是有没有必要的问题 . 所以就不上代码了 . 当然能力有限 ,可能若干时间后 我会不这么认为了 . :smiley:

本文标题:iOS开发--Objective-C的多继承

本文链接:https://www.haomeiwen.com/subject/ywcbqttx.html