可能重复:
isMemberOfClass returns no when ViewController is instantiated from UIStoryboard
我最近偶然发现了一个奇怪的问题:
我正在实现简单的测试用例并使用NSObject isMemberOfClass方法来检查类的相等性。
另外,我实现了一个自定义init:
-(id)initWithMessage:(NSString *)message
如果我用正确的类名替换id,则isMemberOfClass将返回“YES”。否则它会失败。
有趣的是:类Method每次都会返回正确的类。
这是一个错误吗?或者它应该以这种方式工作?
谢谢..
编辑:
好的,这并没有解决问题..这就是我的工作.. isMemberOfClass将永远返回NO
测试用例:
- (void)test010_broadcastWait
{
...
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData
options:0 error:&error];
Brick *newBrick = [self.parser loadBroadcastWaitBrick:doc.rootElement];
if (![newBrick isMemberOfClass:[BroadcastWaitBrick class]])
STFail(@"Wrong class-member");
....
}
BroadCastWait类:
导入“BroadcastWaitBrick.h”
@implementation BroadcastWaitBrick
-(id)initWithMessage:(NSString *)message
{
self = [super init];
if (self)
{
self.message = message;
}
return self;
}
...
loadMethod:
-(BroadcastWaitBrick*)loadBroadcastWaitBrick:(GDataXMLElement*)gDataXMLElement
{
NSArray *messages = [gDataXMLElement elementsForName:@"broadcastMessage"];
GDataXMLElement *message = (GDataXMLElement*)[messages objectAtIndex:0];
BroadcastWaitBrick* brick = [[BroadcastWaitBrick alloc]initWithMessage:message.stringValue];
return brick;
}
答案 0 :(得分:-3)
isMemberOfClass
返回NO
,因为您将newBrick var声明为类Brick的成员。
在这种情况下更好的选择是使用isKindOfClass
方法或将newBrick声明为id
。