का उपयोग कर रहा एआरसी का उपयोग कर iOS 7 पर एक परियोजना के विकास कर रहा हूँ, मैं एक निजी संपत्ति रिलीज़ करना चाहते जब ViewController
जारी किया गया है यहाँ TestViewController कि एक मॉडल दृश्य के रूप में प्रस्तुत किया जाता है है नियंत्रक, viewDidLoad में निजी संपत्ति testAVPlayer के लिए एक मूल्य की स्थापना:iOS 7 में निजी संपत्ति को रिहा करने के लिए कैसे एआरसी
//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 AVPlayer का एक उपवर्ग है, मैं एक NSLog 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
जब TestViewController खारिज किया जाता है में, डाल testAVPlayer कभी जारी नहीं लगता है, तो मैं "dealloc TestViewController" देखते हैं, लेकिन कोई "dealloc testAVPlayer" कंसोल लॉग
आपको एआरसी के पूरे बिंदु को अस्वीकार करने की आवश्यकता नहीं है ... – meda
@meda yes, लेकिन एआरसी द्वारा जारी किए जाने पर 'dealloc' को अभी भी कॉल किया जाना चाहिए। वस्तु को बरकरार रखना चाहिए, लेकिन मुझे डर है कि यहां जाने के लिए पर्याप्त नहीं है। –
आप इसे ब्लॉक में कहीं भी रख सकते हैं या अमान्यता के बिना दोहराने वाले टाइमर का उपयोग कर सकते हैं। अब पर्याप्त जानकारी नहीं है। –