是addOperation:waitUntilFinished仅适用于iOS 4.3及以上版本? 为什么我会收到这个警告,我错过了什么?
即使很难我收到此警告信息,我的应用程序也能正常运行吗?
使用一些代码编辑:
我的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];
感谢您的帮助。
莉莉答案 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
。