Объект NSInvocation не получает выделенный iphone sdk

я делаю

        NSString *_type_ = @"report";
        NSNumber *_id_ = [NSNumber numberWithInt:report.reportId];

        NSDictionary *paramObj = [NSDictionary dictionaryWithObjectsAndKeys:
                                _id_, @"bla1", _type_, @"bla2",nil];

_operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(initParsersetId:) object:paramObj];

Но мой объект _operation равен нулю даже после обработки этой строки.

Селектор здесь на самом деле является функцией, которую я пишу, например:

-(void)initParsersetId:(NSInteger)_id_ type:(NSString *)_type_
{   
NSString *urlStr = [NSString stringWithFormat:@"apimediadetails?id=624&type=report"];
NSString *finalURLstr = [urlStr stringByAppendingString:URL];
NSURL *url = [[NSURL alloc] initWithString:finalURLstr];

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];

//Initialize the delegate.
DetailedViewObject *parser = [[DetailedViewObject alloc] initDetailedViewObject];

//Set delegate
[xmlParser setDelegate:parser];

//Start parsing the XML file.
BOOL success = [xmlParser parse];

if(success)
    NSLog(@"No Errors");
else
    NSLog(@"Error Error Error!!!"); 

}

Может ли кто-нибудь указать, где я ошибаюсь.

Спасибо заранее.


person neha    schedule 11.06.2010    source источник


Ответы (2)


Ваш @selector не соответствует подписи вашего метода, поэтому он возвращает ноль. Кроме того, вы не можете использовать удобный конструктор для передачи нескольких параметров. Вам нужно будет создать NSInvocation и использовать initWithInvocation: для добавления параметров.

http://theocacao.com/document.page/264

person kubi    schedule 11.06.2010
comment
Я прошел по предоставленной вами ссылке, но в initWithTarget:selector:object: не могу ли я напрямую передать аргументы в объект nsdictionary? Я должен выполнить этот процесс для целых 10 различных объектов nsinvocationobjects, и подход Скотта Стивенсона [который потрясающий], я думаю, приведет к избыточности в моем случае. Также он не выделяется после изменения подписи метода. - person neha; 11.06.2010
comment
Вы не можете передавать аргументы в NSDictionary. NSInvocation объекты изменяемы, поэтому вы можете просто редактировать один и тот же объект для каждого из 10 вызовов различных методов. - person kubi; 11.06.2010

Имя вашего селектора initWithParserId:type:, поэтому правильная строка


_operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(initParsersetId:type:) object:paramObj];
person asandroq    schedule 11.06.2010
comment
Нет, он все еще не выделяется.. :( - person neha; 11.06.2010