【问题标题】:how do we compare 2 class names of an object我们如何比较一个对象的 2 个类名
【发布时间】:2009-12-16 21:35:42
【问题描述】:

有没有办法比较两个对象之间的类名?

喜欢:

NSString *bla = [[NSString alloc] init];
if([bla class] isEqual: NSString])
 NSLog(@"success");

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

【问题讨论】:

    标签: objective-c class comparison object


    【解决方案1】:

    正确的语法是:

    if ([bla class] == [NSString class])
    

    您还可以使用来自NSObject protocol-isMemberOfClass: 或-isKindOfClass: 消息。

    【讨论】:

    【解决方案2】:

    应该这样做:

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

    【讨论】:

    • 当然,== YES 是可选的。没有它可能看起来也更好!
    • 事实上,将您的 BOOL 与 YES 进行比较是个坏主意。 BOOL 类型不限于 YES 和 NO,有些方法返回的 BOOL 两者都不是。
    • 哪些方法返回的 BOOL 两者都不是?
    • @Wevah:我希望我能记住,但已经太久了。据我所知,它们现在可能实际上已经修复了。无论如何,测试something != NO 会更安全,也不会更困难(当然,这是 if 语句自然执行的检查,因此在这种情况下可以省略)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-26
    相关资源
    最近更新 更多