目标C类问题

时间:2009-11-30 11:25:14

标签: objective-c

我的课有问题。这是我的代码:

self.shapeClass = [HWRectangle class];
if ([_shapeClass isKindOfClass:[HWRectangle class]]) {
    NSLog(@"Class created as: %s", [_shapeClass description]);
}

我认为该程序将在这种情况下进行日志记录,但事实并非如此。你知道为什么不知道吗?

2 个答案:

答案 0 :(得分:3)

因为:if ([_shapeClass isKindOfClass:[HWRectangle class]])

_shapeClass应该是您正在测试的类的实例,除非您真的在测试类比较。所以,这个方法是类比较的实例,而不是类到类的比较。

对于奖励积分,您的格式字符串应为:NSLog(@"Class created as: %@", [_shapeClass description])

(除非你已经覆盖了NSObject方法(你不应该这样做))

答案 1 :(得分:0)

isKindOfClass检查变量的类。你说shapeCalls = [HWRectangle类]。 [HWRectangle类]的结果是“Class”类。因此,如果将其与HWRectangle类进行比较,您会发现两者不同。