Objective C继承和面向对象的原则
来源:互联网 发布:淘宝用的什么数据库 编辑:程序博客网 时间:2024/05/07 07:13
许多iPhone程序员不喜欢IB,他们坚持只使用Xcode编写App。相比较更图形化的IB,用“纯代码方式”编写应用程序无疑要困难得多。那么,程序员们避易就难是为什么呢?这并不是因为程序员普遍存在的所谓“代码情结”的问题,而是苹果提供的Interface Builder工具确实存在着许多问题,比如不支持自定义组件,不支持插件编程(指iOS)。
但这些都不是最大的问题。最大的问题在于,xib对象违反了面向对象的原则,你无法继承一个xib对象。
我们用纯代码编写的对象,通过类的继承关系,可以很方便地重用代码。而使用IB的话,你无法做到这一点。你很辛苦地在IB里设计了一个View Controller,而且为它编写了许多代码。你想在子类中扩展它,那么你必须注意一些问题。
1、在代码中声明继承,而不是在IB中设置属性。保持这样的观念:xib对象只是持久化对象,而永远不可能是真正的类。
2、如果你要改变xib文件,那么请使用新的xib文件拷贝。
3、如果你需要做自定义的初始化动作,请重载initWithNibName:bundle:方法,并确保调用了[super initWithNibName:bundle:]方法。
4、父类方法代码中引用到的xib对象,必须用“self.属性名”的方式引用,不要直接以“属性名”的方式引用,否则属性指向的是父类的xib对象,而不是子类的xib对象。
5、父类方法中引用到的成员变量,直接用“属性名”而不是“self.属性名”的方式引用。
6、父类中,对于属性别名,必须使用“self.属性名”的方式引用,不能以“属性别名”的方式引用。
7、如果子类使用不同的xib文件,则所有的IBOutlet必须重新声明并连接。因为IB不会自动连接和共用父类的代码。
8、如果你重新声明了IBAction,则你可以不用实现动作,默认会使用父类已实现的action。如果你想实现不同的动作,你必须覆盖action 。
可以看到,在包含有xib对象的继承当中,需要注意的地方非常多,也许还不止上面列出的那些。我在一个项目中曾经试图继承一个用IB构建的View Controller,发现最终的结果还是不得不重新实现所有的父类方法。
因此,在使用了IB之后,我们就很少能体会到面向对象的好处了——这才是程序员在某些情况下拒绝使用IB的真正原因。
- Objective C继承和面向对象的原则
- Objective C继承和面向对象的原则 间接回答为什么牛逼程序员不喜欢用IB
- Objective C继承和面向对象的原则 间接回答为什么牛逼程序员不喜欢用IB
- 模式和面向对象可复用设计的几大原则
- C++总结之继承和面向对象的设计
- 面向对象的c++和面向过程的c
- C语言的模块化设计和面向对象编程
- Objective - C基础: 第一天 - 4.面向过程和面向对象思想
- 【OC语言】第一篇·Objective-C概述和面向对象
- 面向对象思想和面向对象设计原则之间的关系
- 深入理解C语言和面向对象
- java学习笔记5.23对象和面向对象的思考,继承和多态
- Eric Raymond谈模块化原则,胶合层和面向对象的缺陷
- Eric Raymond谈模块化原则,胶合层和面向对象的缺陷 .
- 基于对象和面向对象的区别
- 基于对象和面向对象的区别
- 基于对象和面向对象的区别
- 基于对象和面向对象的区别
- 【ACE】Windows和Linux下ACE程序开发
- 自定义PopupWindow动画效果
- java中将姓名转化成全拼(pinyin4j.jar)
- C#编程中的66个好习惯
- 使用Media Player框架
- Objective C继承和面向对象的原则
- Serif和Sans Serif的区别
- FIFO定义
- Android自定义组件之美化radiobutton
- add constraint 的用法
- ubuntu配置telnet
- C#综合揭秘——细说事务
- hdu 1099 Lottery
- 安装sql server 2005时系统提示安装程序无法获取asp.net 的账户信息 如要继续安装先重新安装.net frame