몇 가지 실험을하려고합니다. 메모리 누출을 막으려고 시도합니다.
- (IBAction)btn1Action:(id)sender {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"popvc2id" sender:self];
});
NSLog(@"TAP");
}
버튼이 SEGUE 때이 다시 두번 SEGUE를 트리거 탭 버튼 때문에 ViewController
두 인스턴스가 생성 될을 수행하는 1 초가 걸릴 것이다 탭
악기에서 나는 두 개의 인스턴스를 볼 수 있지만 그 중 하나는 leaked VC object
입니다.
지금 내가 뭘하려고
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
VC2 *vc2 = [segue destinationViewController];
[ary addObject:vc2];
if(ary.count > 1) {
VC2 *vc = (VC2*)ary[1];
vc = nil;
[ary removeObjectAtIndex:1];
}
[ary removeAllObjects];
NSLog(@"-> %@", vc2);
}
는 VC objects
의 기록을 유지하고 두 번째 OBJ를 파괴하려고, 그래서 메모리 누수를 방지 할 수 있습니다 것입니다.
하지만 작동하지 않는데 어떻게 해결할 수 있습니까? 메모리에 의해 쓴
는
사용 부울 FLAG : 나의 제안
을 사용하고 있습니다. 문제가 두 번 탭을 수행하지 않도록 dispatch_after – AleyRoboticsNSObject CancelPreviousRequest
방법을 구현하는 방법을이후에 신고하기 전에 플래그를 확인하십시오. – Joshua
로컬 변수를'nil'으로 설정하면 ** 일반적으로 메모리에서 제거하지 않습니다 **. iOS/ARC가 객체를 강제로 해제 할 수 없습니다. – clemens