发现重大的bug，废弃掉封装在类中的创建C数组方法以及合并C数组方法

因为这些方法返回的实质上都是一个指针，编译器并不认识这是个数组，因此并不会对“数组”的内容进行保护，尤其是在其封装在别的类的方法中时，这时候只知
道返回的是一个指针而已，所以数组里的内容随时可能被其它东西所占用，那么当我们读的时候，就很可能读出一些奇奇怪怪的东西。解决方案也是有的，就是用实
体类或者结构体去将C数组封装在内的，但是这样也有问题，因为C数组一开始便要分配内存，所以无法像NSArray一样，我想要多大，便动态生成多大，容
易造成比较大的浪费，所以我觉得两个方案都不太合适，故废弃之。
练习一下NSRange的用法，顺便封装了一些子字符串的操作

NSRange是一个有两个无符号整数的结构体，用于处理子字符串以及子数组方面真是不要太好用，只是，如果range内部数据出错，比如所求子数组的长
度过长等等，会造成程序死掉，既然是复习，就顺便封装了一下，做了以下输入检测，这样出问题也不会挂掉了。
稍微复习了以下Protocol，并用他和C#中的接口做做比较

协议在OC中非常重要，它的存在有点类似于其它面向对象语言中的接口，而像多继承等等，都可以通过它来实现~
练习了一下多继承，熟悉了一下两种多继承的方式

在OC中，要实现多继承，一般有两种手段，一种是利用protocol，另外一种是利用组合模式，利用前者的话，只能继承方法的定义，但不能继承实现，利
用后者的话需要自己定义方法，当然也可以两者结合起来用，我这里就是这样做的，只是这样相对可能繁琐一点，不过我个人比较喜欢。
这里为之前练习protocol的地方加上了delegate的练习

delegate也就是委托，当一个类需要完成某种协议而自身又不能或不想完成时，就可以定义一个委托，委托指向完成了该协议的对象，由这个外包人员帮你
搞定~