Функция многопоточная:
[NSThread detachNewThreadSelector:@selecter(download:) toTarget:..... withObject:....];
Вызывается функция обратного вызова внутри.До многопоточности механизм обратного вызова работал нормально, но теперь функция обратного вызова никогда не вызывается.
Я проверил, что многопоточная функция работает.
Ниже приведен код, большое спасибомного.
+(void) download:(id) param{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
while(true){
NSLog(@"Thread going ");
NSArray* ary = [Data_Center sharedData_Center]->data;
for(int i = 0; i < [ary count]; i++) {
NSLog(@"code = %@", code);
..........
NSURL* url1 = [NSURL URLWithString:str_code];
[str_code length];
CFStreamClientContext dataStreamContext = {0, self, NULL, NULL, NULL};
CFHTTPMessageRef message = CFHTTPMessageCreateRequest(kCFAllocatorDefault, CFSTR("GET"), (CFURLRef)url1, kCFHTTPVersion1_1);
CFHTTPMessageSetBody(message, (CFDataRef)(CFSTR("")));
CFReadStreamRef readStream = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, message);
CFOptionFlags events = kCFStreamEventHasBytesAvailable | kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered;
// print "client = 1" here
//NSLog(@"client = %d" , CFReadStreamSetClient(readStream, events, readStreamEventCallBack, & dataStreamContext));
if(CFReadStreamSetClient(readStream, events, readStreamEventCallBack, & dataStreamContext)) {
CFReadStreamScheduleWithRunLoop(readStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
}
CFReadStreamOpen(readStream);
}
[NSThread sleepForTimeInterval:10];
}
[pool release];
}