实例方法'-addOperation:waitUntilFinished:'not found(返回类型默认为'id')

时间:2012-03-21 11:32:41

标签: ios nsoperation nsoperationqueue

是addOperation:waitUntilFinished仅适用于iOS 4.3及以上版本? 为什么我会收到这个警告,我错过了什么?

即使很难我收到此警告信息,我的应用程序也能正常运行吗?

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

使用一些代码编辑:

我的HttpRequestWrapper操作类: 在.h:

@interface HttpRequestWrapper : NSOperation 

in .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 个答案:

答案 0 :(得分:2)

我可以假设您的通话[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