自定义对象需要实现
-
(id)copyWithZone:(nullable NSZone *)zone
-
(NSUInteger)hash
-
(BOOL)isEqual:(custom *)object
这三个方法。
存储时:字典内部会copy一份新的key,所为key使用
字典内部通过hash表实现
取数据时:字典会先根据hash比较,会在hash值相等的key值里,判断对象是否相等。
判断对象相等的方法:
会先调用==判断,如果相等直接返回YES。否则继续,
否则调用isEqual是否相等。
特别如果是字符串会调用isEqualToString:。
网友评论