由于时间有限,所以写的比较粗糙,也没有特别深入的地方,只是一点点心得体会,作为初学者,如果不准确或不精确的地方欢迎大家留言指导!!!
一、字符串
OC中字符串也有常量池的概念,NSString的“不可变性”也是类似的,比较有意思的是其子类NSMutableString,其作用是在我们需要频繁改变字符串时使用,避免程序不断为我们分配新的内存空间。老师也讲了OC这样做的缺点,NSString如果创建的是其子类,那么其“不可变性”就受到挑战。
二、集合
1、NSArray用于对象有序集合
2、NSSet用于对象无序集合
3、NSDictionary用于键值映射
集合对象的重要性不言而喻,OC的集合对象也是很有特点的。
首先NSArray、NSSet、NSDictionary的元素必须为引用对象;
其次其创建后元素对象不可变,但对象的属性可以变化;
当然OC也为我们提供了他们的子类NSMutableArray、NSMutableSet、NSMutableDictionary以供满足我们“可变”的需求;
还有一点值得关注的是他们均使用了NSFastEnumeration协议,该协议使得我们可以便捷的使用for in来遍历集合;
查看官方文档它们似乎都只有一个子类,还有一点让我感觉有些不同的是他们还有一些排序方法,当然要返回一个新的集合;
总体感受的OC的集合对象似乎不是非常复杂,但其三种对象是绝对能满足大部分需求。
三、ARC
这部分上周大致了解过一些,没有深入研究,大致理解OC的垃圾回收机制和autoreleasepool的大致用法。
四、协议
协议是非常有意思的,其作用和java中的接口类似,但又有些高级的地方,方法中可以指定对象必须实现一些协议,还可以多种协议组合,当然协议也是可以相互继承的。
协议还非常普遍的使用的代理模式中,代理模式相信在面向对象中是比较常用的设计模式,而且使用起来感觉也不复杂。
五、类别
类别也是非常有意思的,感觉上有点像装饰模式,因为在类别里面不止可以实现新的方法,同样也可以重写原有的方法。这样就可以让我们轻松的实现装饰模式,只是我在查阅其他资料的时候看到大家写的OC中的装饰模式似乎不是我想象中的写法,这里就不再过于纠结这点,毕竟设计模式也是为了让我们写出更为更为可读可靠的代码,不必为了设计模式而去设计。突然感觉路漫漫其修远兮。
六、扩展
扩展相当于匿名的类别,但是扩展必须要有源码,比类别的优势是可以添加属性、实例变量。
上周学习的时间实在是有点少,写的过于粗糙请大家见谅。本周开始了IOS应用开发实战,大家加油!
网友评论