重複の可能性:
UIStoryboardからViewControllerがインスタンス化されると、isMemberOfClassはnoを返します
私は最近、奇妙な問題に遭遇しました:
私は単純なテストケースを実装し、NSObjectisMemberOfClassメソッドを使用してクラスの同等性をチェックしていました。
さらに、カスタムinitを実装しました。
-(id)initWithMessage:(NSString *)message
idを正しいクラス名に置き換えると、isMemberOfClassは「YES」を返します。そうしないと失敗します。
興味深い部分は次のとおりです。クラスメソッドは毎回適切なクラスを返します。
これはバグですか?それともそのように機能するはずですか?
ありがとう..
編集:
わかりました、これは問題を解決しませんでした..これが私がすることです..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;
}