EXC_BAD_ACCES в didSelectRowAtIndexPath при использовании ARC - PullRequest
0 голосов
/ 09 ноября 2011

У меня вопрос по CFNetwork.Первый раз, когда я запланировал первый CFReadStream в текущий цикл запуска и получил список каталогов FTP-сервера, он работал нормально.После того, как я представил список каталогов в UITableView, в didSelectRowAtIndexPath я изменяю URL-адрес для отображения содержимого выбранного каталога.Я создаю новый поток с этим новым URL.Когда я пытаюсь открыть его с помощью CFReadStreamOpen (без планирования в текущем цикле выполнения), я получаю EXC_BAD_ACCESS.Я проверил это для зомби с NSZombieEnabled и не нашел ни одного зомби.Есть идеи?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];
    NSString *newAdr=[[NSString alloc]initWithFormat:@"%@/%@",self.addressString,cell.textLabel.text];
    self.addressString=newAdr;
    self.url=[NSURL URLWithString:self.addressString];

    CFURLRef newFtpURL=(__bridge_retained CFURLRef)self.url;
    CFReadStreamRef newStream=CFReadStreamCreateWithFTPURL(NULL, newFtpURL);

    MyStreamInfo streamInformation;
    streamInformation.readStream=newStream;

    CFStreamClientContext clientContext={1,&streamInformation,NULL,NULL,NULL};
    CFOptionFlags events= kCFStreamEventHasBytesAvailable | kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered;
    BOOL flagOpen=CFReadStreamSetClient(streamInformation.readStream, events, (void*)didStartReceiveList, &clientContext);

    if(!CFReadStreamOpen(streamInformation.readStream)){
        NSLog(@"Could not open read stream");

    }
    else {
        [self readStreamData:newStream :&clientContext];
    }
}
...