簡體   English   中英

使用單獨的線程時不調用委托方法

[英]Delegate methods are not calling when using separate thread

我已使用以下代碼與Web服務器進行同步。 它正在工作,但由於主隊列中的getUnsyncTicketsFromServer方法調用,UI暫時凍結了。 我試圖在單獨的隊列中執行此操作。 然后,它不調用委托方法(requestReturnedData)。

[NSTimer scheduledTimerWithTimeInterval:320.0 target:self selector:@selector(syncTickets) userInfo:nil repeats:YES];

-(void)syncTickets{

   [self sendUnsyncedTickets];

   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 6 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

       dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 6 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
          [self getUnsyncTicketsFromServer];
       });
   });


}    

-(void)requestReturnedData:(NSData *)data{

 }

編輯-

-(void)getUnsyncTicketsFromServer{

    ServiceConnector *serviceConnector = [[ServiceConnector alloc] init];
    serviceConnector.delegate = self;
    [serviceConnector getTicketsFromServer];
    dataMethod = @"get";

}
@implementation YourClass () {
    ServiceConnector *_serviceConnector;
}

...

-(void)getUnsyncTicketsFromServer {
    _serviceConnector = [[ServiceConnector alloc] init];
    _serviceConnector.delegate = self;
    [_serviceConnector getTicketsFromServer];
    dataMethod = @"get";
}

如果您使用的是arc,我認為您的serviceConnector必須被釋放,因此將對象存儲為實例變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM