Я использую внешнюю библиотеку в своем проекте, который создается в среде ARC. В соответствии с библиотекой объект сокета освобождается только тогда, когда количество сохранений = 0. Насколько мне известно, в ARC нельзя использовать счетчик сохранения, но я вынужден удалить все ссылки на объект сокета, что невозможно в моем проекте. Как я могу решить эту проблему? Суть проблемы с кодом ниже:
-(void)callConnect{
for(int i = 0; i<[userArray count];i++){
[self connect:(NSString*)[userArray objectAtIndex:i]];
}
}
-(void)connect:(NSString *)username{
RTMPCLient *socket = [[RTMPClient alloc] init];
BroadCastClient *stream = [[BroadCastClient alloc] initWithClient:socket];
NSMutableDictionary *stream = [NSMutableDictionary dictionaryWithObject:stream forKey:username];
}
-(void)disconnect{
for(int i = 0; i<[userArray count];i++){
[stream objectForKey:[NSString stringWithFormat:@"%@",[userArray objectAtIndex:i]]] = nil; //error on this line
BroadCastClient *tempStream = [stream objectForKey:[userArray objectAtIndex:i]];
tempStream = nil;
}
}
Я пытаюсь сделать объект потока нулевым, что дает ошибку. Невозможно сохранить другую переменную, поскольку она увеличивает количество ссылок на объект сокета. Создание tempStream nil не влияет на исходный созданный экземпляр. Я хочу удалить ссылку на объект сокета из потока в методе отключения. Как я могу это сделать?
connect:
есть две переменные с именамиstream
. - person DarkDust   schedule 25.02.2014stream
должна быть переменной экземпляра? Локальная переменная? Какой смысл читать, но не использовать значение вtempStream
?[stream objectAtIndex:[userArray objectAtIndex:i]]
также выглядит неправильно, так как[userArray objectAtIndex:i]
не может вернутьNSUInteger
, однако может вернутьNSNumber
. Но вcallConnect
вы переводите его вNSString
. Итак, какие элементы у вас есть вuserArray
? - person DarkDust   schedule 25.02.2014