Метод экземпляра '-addOperation: waitUntilFinished:' не найден (тип возвращаемого значения по умолчанию равен 'id') - PullRequest
1 голос
/ 21 марта 2012

addOperation: waitUntilFinished доступно только для iOS 4.3 и выше?Почему я получаю это предупреждение, я что-то упускаю?

Даже когда я получаю это предупреждение, мое приложение работает с ним?

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html

Отредактированос некоторым кодом:

Мой класс операций HttpRequestWrapper: в .h:

@interface HttpRequestWrapper : NSOperation 

в .m

+ (id)httpRequestWrapper:(NSString *)xmlString withUser : (NSString *) user  andPassword: (NSString *) password 
{
    HttpRequestWrapper * operation = [[self alloc] initWithString:xmlString andUser: user andPass: password];
    //return [operation autorelease];
    return operation;
}

- (id)initWithString: (NSString*) xmlString andUser: (NSString* )user andPass: (NSString *) pass
{
    self = [super init];
    if (self == nil)
        return nil;

    _urlPart = [xmlString copy];
    _userString = [user copy];
    _passString = [pass copy];
    _isExecuting = NO;
    _isFinished = NO;

    [self main];

    return self;
}

Моя строка вызывающего абонента выглядит следующим образом:

 httpRequestWrapper  = [HttpRequestWrapper httpRequestWrapper:[NSString stringWithFormat:@"/list?xsl="] withUser:NULL andPassword: NULL];
[appDelegate.operationQueue addOperation:httpRequestWrapper waitUntilFinished:YES];

Спасибо за помощь.

Лили

1 Ответ

2 голосов
/ 21 марта 2012

Могу предположить, что предупреждение может быть вызвано вашим звонком [self main];.Примечание: метод main вызывается из очереди операций.Я не вижу причины, чтобы назвать это самостоятельно.

Или.Я вижу проблему.Нет такого вызова:

[appDelegate.operationQueue addOperation:httpRequestWrapper waitUntilFinished:YES];

См. Ссылку более близко:

- (void)addOperations:(NSArray *)ops waitUntilFinished:(BOOL)wait

Вы должны передать массив операций.

Исправить в:

NSArray *opsArray = [NSArray arrayWithObject:httpRequestWrapper];
[appDelegate.operationQueue addOperations:opsArray waitUntilFinished:YES];

Третий - проверьте, не является ли appDelegate.operationQueue не nil, т. Е. Если вы создали operationQueue до.

...