oc类别和扩展

haoyizsw 2016-07-03 11:29:52
以前写JAVA,最近看OC,对类别有些困惑,OC的类别在我看来完全用子类即可,子类其实也不用动到原有的类,实现效果其实一样,至于扩展就更没必要的感觉,非得在.m文件里面定义个扩展,我直接在.h文件定义好这些不就行了,求解惑深层思想
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
网易云捕 2016-07-04
  • 打赏
  • 举报
回复
引用 3 楼 baidu_35504209 的回复:
类别是对已存在的类添加属性,扩展是对自己定义的类添加私有属性和方法
正解 1. "类别"比"子类"方便多了,因为对已添加category的类,使用到它或者它的子类的地方,category都会起作用;“子类”的话,则需要在使用的每个地方,创建子类对象 2. "类别"只能添加方法,不能加属性、变量 3. "类别"一般是对框架提供类的扩展(没有源码,不能修改) 4. "类别"一般是在不想生成一个新的子类的情况下,比如对 NSArray 的扩展 “扩展”则相当于定义一个子类,在里面添加属性和方法
baidu_35504209 2016-07-04
  • 打赏
  • 举报
回复
类别是对已存在的类添加属性,扩展是对自己定义的类添加私有属性和方法
haoyizsw 2016-07-03
  • 打赏
  • 举报
回复
引用 楼主 haoyizsw 的回复:
以前写JAVA,最近看OC,对类别有些困惑,OC的类别在我看来完全用子类即可,子类其实也不用动到原有的类,实现效果其实一样,至于扩展就更没必要的感觉,非得在.m文件里面定义个扩展,我直接在.h文件定义好这些不就行了,求解惑深层思想
所以说对一些封装好的东西 类别才比较有用 对于自己写的代码 是不是没啥必要? 那扩展呢?
天册 2016-07-03
  • 打赏
  • 举报
回复
类别和子类各有好处,举个简单例子,程序中我想实现字符串和日期的快速转换,但这个功能Cocoa库并未提供,你分别试一下用类别和子类实现这个功能,就知道哪个好了

29,030

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧