isEqual

1  NSString *str1 = @"123";
2  NSString *str2 = [NSString stringWithFormat:@"%@", str1];
3         

大家明白, str1和str2在内存中的地址是不一样的.

如果用 isEqual:比较两者, 明显返回值为 NO;

为了我们使用方便, 我在.m实现中, 对isEqual进行了重写, 按照str1 和 str2的值来比较:

 1 /**
 2  *  常用来比较两个对象是否是否一样
 3  *
 4  *  @另外一个对象 (内存地址一样才相等)
 5  */
 6 - (BOOL)isEqual:(PPEmotionModel *)object
 7 {
 8 //    if ([self.chs isEqualToString:object.chs] || [self.code isEqualToString:object.code])
 9 //    {
10 //        return YES;
11 //    }else{
12 //        return NO;
13 //    }
14     return [self.chs isEqualToString:object.chs] || [self.code isEqualToString:object.code];
15 }

注意: 内存的分布!!!

所以在删除数组中重复元素(可以是对象)的时候, 可以直接移除

1 [Emotions removeObject:emotion];
时间: 2024-12-17 11:52:50

isEqual的相关文章

Swift Explore - 关于 Swift 中的 isEqual 的一点探索

在我们进行 App 开发的时候,经常会用到的一个操作就是判断两个对象是否相等.比如两个字符串是否相等.而所谓的 相等 有着两层含义.一个是值相等,还有一个是引用相等.如果熟悉 Objective-C 开发的话,就会知道 Objective-C 为我们提供了一系列 isEqual: 方法来判断值相等,而 == 等于号用来判断引用相等. 我们来看一个 Objective-C 的例子就会更加明白了: NSArray *arr1 = @[@"cat",@"hat",@&qu

- (BOOL)isEqual:(id)object

每个对象都有 - (BOOL)isEqual:(id)object这个方法 例如: /** * 常用来比较两个HWEmotion对象(地址)是否一样 * * @param other 另外一个HWEmotion对象 * * @return YES : 代表2个对象是一样的,NO: 代表2个对象是不一样 */ - (BOOL)isEqual:(HWEmotion *)other { // if (self == other) { // return YES; // } else { // retu

NSDictionary实现原理-ios哈希hash和isEqual

NSDictionary实现原理-ios哈希hash和isEqual OC中自定义类的NSCopying实现的注意事项(isEqual & hash实现) http://blog.csdn.net/linshaolie/article/details/41494303 iOS开发 之 不要告诉我你真的懂isEqual与hash! http://m.blog.csdn.net/hx_lei/article/details/53885798 http://www.jianshu.com/p/9153

Object comparison - (BOOL)isEqual:(id)other

https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectComparison.html#//apple_ref/doc/uid/TP40008195-CH37-SW3 Object comparison refers to the ability of an object to determine whether it is essentially

isEqual,isEqualTostring,==三者的区别

isEqual:首先判断两个字对象的类型是否相同,在判断内容是否相同,如果类型不同直接return no.如先判断是否都是 NSString,在判断string的内容. isEqualTostring:这个直接判断字符串内容,当然你要确保比较的对象保证是字符串. ==应该是直接比较指向的地址

Objective-c中 isEqual ,isEqualToString , == 三者的区别

首先 OC中的对象都是用指针表示,方法的调用是基于消息机制实现,== 比较的自然是指针指向的地址 然后 说下 isEqual 和 isEqualToString 的区别 IsEqual 是 NSObject 的方法 ,而 isEqualToString 是 NSString 的方法 因此从继承关系角度来说isEqualToString 是 isEqual 的衍生方法 首先贴个苹果官方重写isEqual 的demo - (BOOL)isEqual:(id)other { if (other ==

OC 重写description,isEqual方法

// 为了能用%@打印出对象的有效信息,需要重写description方法 - (NSString *)description { // 最简单的办法是将属性和值组合成键值对存放到字典中 // 这样只需要调用字典的description方法就能获取对应的描述字符串 NSDictionary *dictionary = @{@"name" : name_, @"address" : address_, @"friends" : friends_};

ibatIS中的isNotNull、isEqual、isEmpty

isNull判断property字段是否是null,用isEmpty更方便,包含了null和空字符串 例子一:isEqual相当于equals,数字用得多些,一般都是判断状态值<isEqual property="state" compareValue="0">< /isEqual>或<isEqual property="state" compareProperty="nextState">

ObjC中isEqual与==的区别

isEqual是NSObject的方法,我们常用它来判断两个object是否相等, 而==也常用来来判断两个object是否相等,那么它们有什么区别呢. 看一段代码就明白了: //MyItem.h @interface MyItem : NSObject { @private NSString *identifier; } @property (nonatomic, copy) NSString *identifier; - (id)initWithIdentifier:(NSString *)