objektif-c - GCDAsyncsocket sentiasa gagal dilaksanakan apabila diletakkan dalam urutan kanak-kanak Apa yang sedang berlaku?
过去多啦不再A梦
过去多啦不再A梦 2017-05-02 09:34:17
0
2
605

GCDAsyncsocket menggunakan sub-benang bersiri tak segerak untuk berhenti melaksanakan gelung untuk separuh jalan Prosesnya adalah untuk mengklik butang hantar untuk kembali ke halaman utama, dan kemudian laksanakan kod berikut secara tidak segerak untuk memuat naik. imej;

    
    - (void)sendAction{
      dispatch_queue_t queue = dispatch_queue_create("uploadImage", DISPATCH_QUEUE_SERIAL);
         dispatch_async(queue, ^{
       for (int i =0; i < 10; i++) {
              
         NSLog(@"async ------------ %@", [NSThread currentThread]);
        
        //第一张图的资源
        PHAsset *asset = self.sendImageArray[i];
        NSString *fileType;
        NSString *fileName;
      
        if (asset.mediaType == PHAssetMediaTypeImage) {
            fileType = @"jpg";
            NSData *data = [NSData dataWithContentsOfFile:filePath[i]];

            [self upLoadImageData:data type:@"jpg" name:fileName];
        } else if(asset.mediaType == PHAssetMediaTypeVideo) {
            fileType = @"mp4";
              NSData *data = [NSData dataWithContentsOfFile:filePath[i]];
            [self uploadMp4Data:data type:fileType name:fileName];
            
        }       
  }
  });
  }
  
  - (void)upLoadImageData:(NSData*)data  type:(NSString *)fileType name:(NSString *)fileName{
     dataNameMutStr = [NSMutableString stringWithFormat:@"ios_%@_%@.jpg\n", @"图片",fileName];
   NSData *dataName = [dataNameMutStr dataUsingEncoding:NSUTF8StringEncoding];
   [self sendSocket:dataName data:data];
   }
   
   
   - (void)sendSocket:(NSData *)dataName data:(NSData *)datas{
     [self createClientTcpSocket];//发图片
     [_asyncsocket writeData:datas withTimeout:-1 tag:0];

   }
过去多啦不再A梦
过去多啦不再A梦

membalas semua(2)
漂亮男人

Maklumat itu tidak lengkap dan sukar untuk menilai sebabnya, tetapi dalam kes ini, gelung for harus diletakkan di dalam
Selain itu, kunci harus ditambah apabila mengakses sumber

dispatch_async(queue, ^{
    for (int i =0; i < 10; i++) {
        // upload ....
    }
})
大家讲道理

Kod dan log tidak lengkap dan saya tidak faham sebabnya. Teka dua sebab:

  1. Malah, ia masih berfungsi, tetapi anda tidak dapat menangkap status kerana isu penyahpepijatan

  2. Ia benar-benar terganggu Sebab khusus perlu disiasat secara terperinci Walau bagaimanapun, anda disyorkan untuk menggunakan baris gilir sebagai rujukan dan menahannya untuk masa yang lama dan bukannya sebagai pembolehubah setempat pembolehubah tempatan, apakah gunanya membuat baris gilir bersiri?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan