我们如何比较一个对象的2个类名

Fra*_*ank 15 comparison class object objective-c

有没有办法在2个对象之间比较类名?

喜欢:

NSString *bla = [[NSString alloc] init];
if([bla class] isEqual: NSString])
 NSLog(@"success");
Run Code Online (Sandbox Code Playgroud)

不确定我的语法是否正确.

mou*_*iel 61

正确的语法是:

if ([bla class] == [NSString class])
Run Code Online (Sandbox Code Playgroud)

您还可以使用-isMemberOfClass:或 - isKindOfClass:来自NSObject协议的消息.


Chr*_*ong 11

这应该这样做:

NSString *bla = [[NSString alloc] init];
if ( [bla isMemberOfClass: [NSString class]] == YES )
     NSLog(@"Success");
Run Code Online (Sandbox Code Playgroud)

  • 事实上,将你的BOOL与YES比较是一个坏主意.BOOL类型不限制为YES和NO,而某些方法返回的BOOL类型都不是. (5认同)
  • @Wevah:我希望我能记住,但它已经太久了.实际上它们可能已被修复了.无论如何,它更安全,并且更难以测试`something!= NO`(当然,这是if语句自然执行的检查,因此在该上下文中可以省略它). (4认同)