1)
@"foo" == @"foo";
2)
Nsstring *myString1 = @"foo";Nsstring *myString2 = @"foo";myString1 == myString2;
但是,肯定有时候使用等于运算符不能比较两个Nsstrings,而是需要[myString1 isEqualToString:myString2]。有人可以说一些光吗?
解决方法 ==的原因是因为指针比较。当使用@“”定义常量Nsstring时,编译器将唯一化引用。当在代码中的其他地方定义相同的常量时,它们都将指向内存中的相同实际位置。当比较Nsstring实例时,应该使用isEqualToString:方法:
Nsstring *myString1 = @"foo";Nsstring *myString2 = @"foo";Nsstring *myString3 = [[Nsstring alloc] initWithString:@"foo"];NSLog(@"%d",(myString2 == myString3)) //0NSLog(@"%d",(myString1 == myString2)); //1NSLog(@"%d",[myString1 isEqualToString:myString2]); //1NSLog(@"%d",[myString1 isEqualToString:myString3]); //1[myString3 release];总结
以上是内存溢出为你收集整理的objective-c – 理解NSString比较全部内容,希望文章能够帮你解决objective-c – 理解NSString比较所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)