我有一个方法:
@implementation SomeClass
- (void)thisMethod:(ObjectA *)objA {
[APIClient connectToAPIWithCompletionHandler:^(id result){
if (result) [objA methodOne];
else [objA methodTwo];
}];
}
Run Code Online (Sandbox Code Playgroud)
有没有办法验证methodOne或在调用methodTwo时会被调用?thisMethod:基本上我只是想存根该connectToAPIWithCompletionHandler:方法。现在我可以通过 swizzlingconnectToAPIWithCompletionHandler:方法来做到这一点。但我想知道是否有更好的方法。
我在这里发现了类似的问题,但它使用的是实例方法,而在我的例子中是类方法。
我有这个声明内部实体的 XML n
NSString *xmlString = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE JMdict [<!ENTITY n \"noun\">]>
<JMdict>
<entry>
<sense>
<pos>&n;</pos>
<gloss>love</gloss>
</sense>
</entry>
</JMdict>";
Run Code Online (Sandbox Code Playgroud)
并用于NSXMLParser解析它
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[xmlString dataUsingEncoding:NSUTF8StringEncoding]];
[parser setDelegate:self];
[parser parse];
Run Code Online (Sandbox Code Playgroud)
我实现了委托方法
- (void)parser:(NSXMLParser *)parser foundInternalEntityDeclarationWithName:(NSString *)name value:(NSString *)value {
NSLog(@"foundInternalEntityDeclarationWithName: %@ = %@", name, value);
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
NSLog(@"<%@>", elementName);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
NSLog(@"</%@>", elementName);
} …Run Code Online (Sandbox Code Playgroud)