Ich bin ein Projekt auf iOS 7 unter Verwendung von ARC zu entwickeln, möchte ich eine Privateigentum lösen, wenn die Viewcontroller Hier
veröffentlicht wird, ist die TestViewController, die als eine modale Ansicht präsentiert wird Controller, einen Wert an die Privateigentum testAVPlayer in viewDidLoad Einstellung:Wie das Privateigentum in iOS veröffentlichen 7 ARC mit
//TestViewController.m
#import "TestAVPlayer.h"
@interface TestViewController() {
TestAVPlayer *testAVPlayer;
}
@end
- (void)viewDidLoad
{
[self setupPlayer];
}
- (void)setupPlayer {
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:[[NSBundle mainBundle] URLForResource:@"music" withExtension:@"mp3"]];
testAVPlayer = [TestAVPlayer playerWithPlayerItem:item];
[testAVPlayer setActionAtItemEnd:AVPlayerActionAtItemEndNone];
[testAVPlayer play];
}
- (void)dealloc {
NSLog(@"dealloc TestViewController: %@", self);
}
testAVPlayer ist eine Unterklasse von AVPlayer, habe ich ein NSLog in die dealloc
// TestAVPlayer.h
#import <AVFoundation/AVFoundation.h>
@interface TestAVPlayer : AVPlayer
@end
// TestAVPlayer.m
#import "TestAVPlayer.h"
@implementation TestAVPlayer
- (void)dealloc {
NSLog(@"dealloc testAVPlayer: %@", self);
}
@end
Wenn TestViewController entlassen wird, die testAVPlayer scheint nie, freigegeben ich die "dealloc TestViewController" zu sehen, aber es gibt keine "dealloc testAVPlayer" in Konsolenprotokoll
Sie müssen nicht dealloc das ist der ganze Punkt von ARC ... – meda
@meda ja, aber 'dealloc' sollte immer noch aufgerufen werden, wenn von ARC freigegeben. Irgendetwas muss das Objekt behalten, aber ich fürchte, es gibt nicht genug, um hier weiterzumachen. –
Sie können es irgendwo im Block behalten oder wiederholenden Timer ohne Ungültigkeit verwenden. Es sind jetzt nicht genug Informationen. –