この関数では、AFKissXMLRequestOperation と呼ばれるキス xml 関数を介して xml を取得します。しかし、これは void であるため、NSLog しない限り XMLDocument にアクセスすることはできませんが、XML にアクセスする必要がある場合には役に立ちません。そこで、他の関数でアクセスするために、self の変数として設定しようとしています。ブロック内で NSLog self.xmlDocument を実行すると、機能します。しかし、呼び出し NSLog(@"self!%@", [self.xmlDocument XMLStringWithOptions:DDXMLNodePrettyPrint]); でブロックの外に NSLog すると、ヌルです。では、self.XMLDocument にアクセスするにはどうすればよいでしょうか。
-(id)xmlRequest:(NSString *)xmlurl
{
AFKissXMLRequestOperation* operation= [AFKissXMLRequestOperation XMLDocumentRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:xmlurl]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, DDXMLDocument *XMLDocument) {
NSLog(@"kiss operation %@", [XMLDocument XMLStringWithOptions:DDXMLNodePrettyPrint]);
self.xmlDocument=XMLDocument;
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, DDXMLDocument *XMLDocument) {
NSLog(@"Failure!");
}];
[operation start];
NSLog(@"self!%@", [self.xmlDocument XMLStringWithOptions:DDXMLNodePrettyPrint]);
return self.xmlDocument;
}