博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective Objective-C 2.0 — 第8条:理解“对象等同性”这一概念
阅读量:6444 次
发布时间:2019-06-23

本文共 577 字,大约阅读时间需要 1 分钟。

第8条:理解“对象等同性”这一概念

  • 若想检测对象的等同性,请提供“isEqual”与 hash 方法
  • 相同的对象必须具有相同哈希码,但是两个哈希码相同的对象却未必相同。
  • 不要盲目地逐个检测每条属性,而是应该依照具体需求来制定检测方案。、判定个数、唯一标识符等等
  • 编写hash 方法时,应该使用计算速度快而且哈希码碰撞几率低的算法。

按操作符比较的是两个指针本身,而不是其所指的对象

NSString *foo = @"Badger 123";NSString *bar = [NSStringstringWithFormat:@"Badger %i", 123];BOOL equalA = (foo == bar);  //  equalA = NOBOOL equalB = [foo isEqual:bar]; // equalB = YESBOOL equalC = [foo isEqualToString:bar]; //equalC = YES  传递对象必须是NSString,比 isEqual 快

NSObject协议中 判断等同性的关键方法

- (BOOL)isEqual:(id)object;

- (NSUInteger)hash;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

 

转载于:https://www.cnblogs.com/IDRI/p/5072011.html

你可能感兴趣的文章
HTTP POST GET 本质区别详解 (转)
查看>>
云计算
查看>>
使用bamboo来实现负载均衡和服务发现
查看>>
一个简单PHP CURL类
查看>>
Oauth与Shiro整合的开源项目
查看>>
编译php 时的configure参数
查看>>
backtrack5 初步配置
查看>>
修改Windows2008 R2 DC墓碑时间
查看>>
day30:awk参考教程\扩展学习
查看>>
Jersey 2.x Glassfish 中基于 Servlet 的应用
查看>>
Flume Installation
查看>>
我的友情链接
查看>>
Centos-Server-Mysql服务(源码编译安装)--(三)
查看>>
Object-C中的字符串对象2-可变字符串
查看>>
xcode 添加三方库找不文件夹名字显示蓝色,引入不了头文件
查看>>
如何根据线程号获取模块信息
查看>>
MySQL权限安全
查看>>
进入数字化校园后首要的一些设置
查看>>
Python基础模块:datetime模块
查看>>
【Python模块】sqlalchemy orm模块--外键与关联
查看>>