objective-c – isKindOfClass意外返回NO

objective-c – isKindOfClass意外返回NO,第1张

概述我的单位测试之一是失败,因为我没有预料到.看来,isKindOfClass的一个调用是返回NO,但是当我调试并逐步通过时,似乎没有理由. 代码是: if ([self.detailItem isKindOfClass:[MovieInfo class]]) { [self configureViewForMovie];} 我通过了代码,并做了: po self.detailItem 显示 我的单位测试之一是失败,因为我没有预料到.看来,isKindOfClass的一个调用是返回NO,但是当我调试并逐步通过时,似乎没有理由.

代码是:

if ([self.detailitem isKindOfClass:[MovIEInfo class]]) {    [self configureVIEwForMovIE];}

我通过了代码,并做了:

po self.detailitem

显示:

(ID)  = 0x0ea8f390 <MovIEInfo: 0xea8f390>

那么,我在想什么,为什么在这种情况下if语句返回false?

编辑:

这是Detailitem的设置器:

- (voID)setDetailitem:(ID)newDetailitem{    if (_detailitem != newDetailitem) {        NSLog(@"%@",[newDetailitem class]);        _detailitem = newDetailitem;        // Update the vIEw.        [self configureVIEw];    }    if (self.masterPopoverController != nil) {        [self.masterPopoverController dismisspopoverAnimated:YES];    } }

它是一个Master Detail模板的模板代码.

单元测试在setUp中创建一个MovIEInfo:

movIE = [[MovIEInfo alloc] initWithMovIEname:@"MovIE" movIEID:1];

并将其设置在测试中

controller.detailitem = movIE;

另外,我在setDetailitem中添加了一个参数断言:

NSParameterassert([newDetailitem isKindOfClass:[MovIEInfo class]] || [newDetailitem isKindOfClass:[PersonInfo class]] || newDetailitem == nil);

这个断言也是失败的.

我把两个log语句放在断言调用之上:

NSLog(@"%@",[newDetailitem class]);NSLog(@"%@",newDetailitem);

显示:

2012-08-28 08:31:37.574 Popcorn[8006:c07] MovIEInfo2012-08-28 08:31:38.253 Popcorn[8006:c07] <MovIEInfo: 0x6daac50>

更多编辑:

在设置单元测试之前,我添加了isKindOfClass检查,一次通过.

if ([movIE isKindOfClass:[MovIEInfo class]]) {    NSLog(@"Yep"); //This passes and prints out}controller.detailitem = movIE; //calls into the setter and fails.
解决方法 这是因为被测试的“DetailVIEwController”类不在测试目标中.我本来可以预期这会以不同的方式显示(链接器错误或某些东西),但显然,它只会导致奇怪的行为.将DetailVIEwController添加到测试目标修复问题. 总结

以上是内存溢出为你收集整理的objective-c – isKindOfClass意外返回NO全部内容,希望文章能够帮你解决objective-c – isKindOfClass意外返回NO所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1031709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存