Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何使用NSO操作和调度队列_Objective C_Nsoperation_Nsoperationqueue - Fatal编程技术网

Objective c 如何使用NSO操作和调度队列

Objective c 如何使用NSO操作和调度队列,objective-c,nsoperation,nsoperationqueue,Objective C,Nsoperation,Nsoperationqueue,我正在使用NSoperation启动对服务器的请求。将调用Pullparser,它将启动o/p&I/p流。在ConnecitonDiReceiveData中,我正在将来自服务器的数据写入oStream。我必须调用自定义方法,而不是让解析器开始解析。如何处理这种情况。如何处理对解析器的oStream调用首先处理我的自定义方法,然后在自定义方法中,我必须调用解析器 - (void)run { [gObjAppDelegatePtr displayActivityIndicator]

我正在使用NSoperation启动对服务器的请求。将调用Pullparser,它将启动o/p&I/p流。在ConnecitonDiReceiveData中,我正在将来自服务器的数据写入oStream。我必须调用自定义方法,而不是让解析器开始解析。如何处理这种情况。如何处理对解析器的oStream调用首先处理我的自定义方法,然后在自定义方法中,我必须调用解析器

- (void)run
{     
    [gObjAppDelegatePtr displayActivityIndicator];
    self.m_cObjDownloadOprPtr = [[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(requestToServer) object:nil]autorelease];

    if((NSOperationQueue *)nil == m_cObjDownloadOprQueuePtr)
    {
         m_cObjDownloadOprQueuePtr = [[NSOperationQueue alloc]init];
         [m_cObjDownloadOprQueuePtr setMaxConcurrentOperationCount:1];
    }
    [m_cObjDownloadOprQueuePtr addOperation:self.m_cObjDownloadOprPtr];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //[self.m_cWebData setLength: 0];
    [self.m_cWebData appendData:data];    
    [self.m_cObjOriginalWebDataPtr appendData:data];
    [self attemptToWriteToStream];
}

- (void)attemptToWriteToStream 
{
    if([self.m_cWebData length] > 0) 
    {
        [self saveDownloadedData];
        NSUInteger written = [oStream write:(const uint8_t *)[m_cWebData bytes] maxLength:[m_cWebData length]];
        // NSLog(@"Rcvd Data=%d written = %d",[m_cWebData length],written);
        [m_cWebData replaceBytesInRange:NSMakeRange(0,written) withBytes:"" length:0];
        // NSLog(@"Rcvd Data after Reset =%d ",[m_cWebData length]);[self parseResponse];
    }
}

 self.m_cObjSAXHandler = [self createParser:(id)self];
 self.m_cCurrentDownloadInfo = pObjEntry;self.m_cObjConfig = (MobileCRMConfiguration*)super.m_cObjParent.m_cObjConfiguration;
 m_cIsSuccess = NO;

 self.m_cIsOrganizationMatches = NO;
 [self.m_cObjXmlParser ParseWithStream:iStream];

-(void)ParseWithStream:(NSInputStream *)pInputStream
{
    self.m_cObjXMLParser = [[NSXMLParser alloc] initWithStream:pInputStream];
    self.m_cObjXMLParser setDelegate:m_cObjSAXHandler];
    dispatch_block_t dispatch_block  = ^(void){
        [self.m_cObjXMLParser parse];
    };

    dispatch_queue_t dispatch_queue = dispatch_queue_create("parser.queue", NULL);
    dispatch_async(dispatch_queue, dispatch_block);
    dispatch_release(dispatch_queue);
}

我已经做了这个PulLPARSER的事情。我必须处理解析器的委托和流数据,当它完成解析和写剩下的数据流时,应该更新。< /P>对不起,我已经添加了代码,但是我的编辑没有被堆栈溢出所阻塞。你需要适当地格式化你的问题,或者几乎没有人会考虑回答它。试着格式化/编辑我试过的问题……不确定它看起来是否像那样!看起来您正试图以流式方式将数据从NSURLConnection馈送到NSXMLParser。看看上面的答案,一些代码实现了这一点。