NSMapTable.NSHashTable与NSPointerArray的封装 说明 NSMapTable对应NSDictionary:NSHashTable对应NSSet:NSPointerArray对应NSArray,本人通过装饰设计模式对他们的使用进行了封装. 源码 https://github.com/YouXianMing/WeakList // // WeakDictionary.h // IteratorPattern // // Created by YouXianMing o…
iOS 中有很多种集合类型,最为常见的可能就 NSArray.NSDictionary.NSSet,但其实还有 NSPointerArray.NSMapTable.NSHashTable 等类型,虽然后面三个类型不常见,但是它们能在关键时刻,「救你一命」. 环境信息macOS 10.12.1Xcode 8.2iOS 10.2 先来看看传统的集合类型都有哪些短板: 放到集合中的对象,只能强引用 如果想要弱引用,要先用 NSValue 打包 不能放入 nil 而对于 NSPointerArray.N…
iOS 开发知识小集(1) 2015-05-15  iOS大全 (点击上方蓝字,快速关注我们) 一直想做这样一个小册子,来记录自己平时开发.阅读博客.看书.代码分析和与人交流中遇到的各种问题.之前有过这样的尝试,但都是无疾而终.不过,每天接触的东西多,有些东西不记下来,忘得也是很快,第二次遇到同样的问题时,还得再查一遍.好记性不如烂笔头,所以又决定重拾此事,时不时回头看看,温故而知新. 这里面的每个问题,不会太长.或是读书笔记,或是摘抄,亦或是验证,每个问题的篇幅争取在六七百字的样子.笔记和摘抄…
NSHashTable和NSMapTable能够对持有的对象做strong或weak存储,弱持有weak引用对象,当weak对象释放后会自动从表中移除     http://blog.csdn.net/jijunyuan/article/details/39962923 NSHashTable/NSSet:  (都是数组且无序)(NSPointerArray有序) NSSet/NSMutableSet 对其对象是强引用,使用isEqual方法去检查对象是否相等,使用方法hash去获取hash值.…
本文转自Nidom的博客,原文:<NSHashtable & NSMaptable>   NSSet, NSDictionary, NSArray是Foundation框架关于集合操作的常用类, 和其他标准的集合操作库不同, 他们的实现方法对开发者进行隐藏, 只允许开发者写一些简单的代码,让他们相信这些代码有理由正常的工作..   然而这样的话最好的代码抽象风格就会被打破,苹果的本意也被曲解了. 在这种情况下, 开发者寻求更好的抽象方式来使用集合,或者说寻找一种更通用的方式.   对于…
在ios开发中大家用到更多的集合类可能是像NSSet或者NSDictionary,NSArray这样的.这里要介绍的是更少人使用的两个类,一个是NSMapTable,另一个是NSHashTable. NSHashTable NSHashTable看上去就像NSSet的替代品,对比NSSet/NSMutableSet,NSHashTable有以下的特性: NSSet/NSMutableSet 拥有所包含对象的strong refrence. NSHashTable是mutable可变的,没有不可变…
本文转自Nidom的博客,原文:<NSHashtable & NSMaptable>   NSSet, NSDictionary, NSArray是Foundation框架关于集合操作的常用类, 和其他标准的集合操作库不同, 他们的实现方法对开发者进行隐藏, 只允许开发者写一些简单的代码,让他们相信这些代码有理由正常的工作..   然而这样的话最好的代码抽象风格就会被打破,苹果的本意也被曲解了. 在这种情况下, 开发者寻求更好的抽象方式来使用集合,或者说寻找一种更通用的方式.   对于…
今天,在实现play gif时间功能,我看见两个陌生班,只需看看这个纪录: NSSet和NSDictionary是两个经常使用的类,可是他们默认假定了当中对象的内存行为.对于NSSet.object是强引用的,和NSDictionary中的value是一样的.而NSDictionary中的key则是copy的,因此当开发人员想要使NSSet的objects或者NSDictionary的values为weak,或者NSDictionary使用没有实现协议的对象作为key时,比較麻烦(须要使用NSV…
封装NSMapTable并简易的使用 NSMapTable是弱引用的字典,可以用来存储对象,该对象消失了也没有关系,对于控制器越级跳转相当有用:) WeakDictionary.h 与 WeakDictionary.m // // WeakDictionary.h // 弱引用字典 // // http://www.cnblogs.com/YouXianMing/ // Copyright (c) 2014年 Y.X. All rights reserved. // #import <Found…
NSSet, NSDictionary, NSArray是Foundation框架关于集合操作的常用类, 和其他标准的集合操作库不同, 他们的实现方法对开发者进行隐藏, 只允许开发者写一些简单的代码,让他们相信这些代码有理由正常的工作..   然而这样的话最好的代码抽象风格就会被打破,苹果的本意也被曲解了. 在这种情况下, 开发者寻求更好的抽象方式来使用集合,或者说寻找一种更通用的方式.   对于 NSSet 和 NSDictionary,打破代码抽象风格的是他们在内存中存取object的方式.…