पांच मिनट तक मुझे यकीन था कि उद्देश्य सी संदर्भ गिनती के बारे में मेरी समझ उत्कृष्ट है, लेकिन जब मैंने वस्तुओं को बनाए रखने की जांच शुरू की तो मैं देख रहा था कि मैंने क्या देखा है।उद्देश्य सी - संदर्भ गिनती
उदाहरण myViewController के लिए एक UITableView है:
ज फ़ाइल
@interface RegularChatViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
UITableView *_tableView;
}
@property (nonatomic, retain) IBOutlet UITableView *tableView;
मीटर फ़ाइल
@synthesize tableView = _tableView;
- (void)loadView
{
_tableView = [[UITableView alloc] init]; // STEP ONE
NSLog(@"tableView retain count: %d",[_tableView retainCount]);
self.tableView.frame = CGRectMake(0, 0, 320, tableHeight); // STEP TWO
NSLog(@"tableView retain count: %d",[_tableView retainCount]);
[self.view addSubview:self.tableView]; // STEP THREE
NSLog(@"tableView retain count: %d",[_tableView retainCount]);
}
मेरे आश्चर्य इनपुट था करने के लिए
:
tableView retain count: 1
tableView retain count: 2
tableView retain count: 3
स्पष्ट रूप सेकदम एक वृद्धि alloc
साथ 1 से गिनती बनाए रखने मैं भी है कि कदम तीन वृद्धि पता addSubview
लेकिन क्या कदम दो में चल रही के साथ 1 से गिनती बनाए रखने ??? यह बरकरार गिनती क्यों बढ़ाया ???
एआरसी के साथ कुछ करने के लिए है ??
शायद क्योंकि '.frame' तालिका दृश्य के बिना मौजूद नहीं हो सकता है और इसलिए बनाए रखने की गिनती जोड़ता है? –
अच्छा अनुमान; लेकिन 'फ्रेम 'सीधे एक संरचना देता है; एक संदर्भ भी नहीं। वहां कोई निर्भरता नहीं है। वास्तव में – bbum