Как узнать, был ли объект выпущен?Как определить, был ли объект выпущен
Если UITableViewCell выведен на экран, объект kkcell будет автореализован UITableView.
Когда аудиопроигрыватель заканчивается, программа вызывает «[kkcell stopSpeakAmination]», но это приводит к сбою программы.
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
[kkcell stopSpeakAmination];
playing=NO;
}
Я также использую
if(kkcell)
или
if(kkcell!=nil)
, но он по-прежнему падает.
Вот еще какой-то код, который я использую:
//KKMessageCell2.m
....
@property(nonatomic, retain) UIImageView *SenderVoiceNodePlaying;
@property(nonatomic, retain) UIImageView *ReceiverVoiceNodePlaying;
....
-(void)stopSpeakAmination{
[self.SenderVoiceNodePlaying stopAnimating];
[self.ReceiverVoiceNodePlaying stopAnimating];
}
-(void)speakAminationOnRight:(UIButton*)btn{
//rightside
NSArray *speekImageAry = [[NSArray alloc]initWithObjects:
[UIImage imageNamed:@"SenderVoiceNodePlaying001"],
[UIImage imageNamed:@"SenderVoiceNodePlaying002"],
[UIImage imageNamed:@"SenderVoiceNodePlaying003"], nil];
self.SenderVoiceNodePlaying.animationImages = speekImageAry;
self.SenderVoiceNodePlaying.animationDuration = 1.0;
self.SenderVoiceNodePlaying.animationRepeatCount = 0;
[self.SenderVoiceNodePlaying startAnimating];
NSString *fileName=btn.titleLabel.text;
fileName=[fileName substringFromIndex:10];
KKMessageCell2 *cell=(KKMessageCell2*)[btn superview];
[[NSNotificationCenter defaultCenter]postNotificationName:@"nPlayAmr"
object:nil userInfo:[NSDictionary dictionaryWithObjectsAndKeys:
fileName,@"fileName",
cell,@"cell",nil]];
}
//KKMessageCell2.m
....
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"msgCell";
NSDictionary *dict = [messages objectAtIndex:indexPath.row];
KKMessageCell2 *cell = [[[KKMessageCell2 alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell setCellView:dict andMy_avatar_url:self.my_avatar_url];
[cell.avatarLeftImageButton addTarget:self action:@selector(pushToUserDetail:) forControlEvents:UIControlEventTouchUpInside];
[cell.avatarRightImageButton addTarget:self action:@selector(pushToUserDetail:) forControlEvents:UIControlEventTouchUpInside];
[cell.chatphoto addTarget:self action:@selector(photoClick:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
[kkcell stopSpeakAmination];
playing=NO;
}
Первое, что нужно задать, используете ли вы ARC? – aroth
Ячейка таблицы не выдается при прокрутке экрана, она помещается в очередь повторного использования. Вам действительно нужно опубликовать больше кода, трудно сказать, что вы пытаетесь сделать. – rdelmar
Можете ли вы показать часть кода, в которой вы присваиваете значение 'kkcell' (т. Е.' Kkcell = ...; ')? В фрагменте, который у вас есть, вы пытаетесь использовать его, не присваивая ему ничего в первую очередь. Это будет крутиться почти всегда. – aroth