在我的視圖控制器的我的loadView methoad我有以下代碼:工具欄沒有得到填充
// Populate self.view and add some views/UI elements
// load Gender selection Bar
self.navigationController.toolbarHidden = NO;
self.navigationController.toolbar.tintColor = [UIColor colorWithRed:0 green:0.37 blue:0.5 alpha:1];
self.genderControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:NSLocalizedString(@"Male", nil), NSLocalizedString(@"Female", nil), nil]];
genderControl.segmentedControlStyle = UISegmentedControlStyleBar;
genderControl.frame = CGRectMake(0, 0, 200, 30);
genderControl.tintColor = [UIColor colorWithRed:0 green:0.37 blue:0.5 alpha:1];
[genderControl addTarget:self action:@selector(changeGender:) forControlEvents:UIControlEventValueChanged];
genderControl.selectedSegmentIndex = GENDER_MALE;
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:genderControl];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[[[self navigationController] toolbar] setItems:[NSArray arrayWithObjects:flexSpace, item, flexSpace, nil] animated:YES];
[item release];
但是,如果我加載它顯示的工具欄視圖,但分段控制沒有得到顯示。如果我將代碼移動到viewWillAppear:方法中,但是一旦隱藏了我的視圖並再次顯示它,分段控件就會重新顯示。
有沒有人知道這個問題和/或有一個想法如何解決它?對我來說看起來很奇怪。
一個小匆匆:你可能會在'self.genderControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:NSLocal izedString(@「Male」,nil),NSLocalizedString(@「Female」,nil),nil]];'如果genderControl屬性設置爲複製或保留,您希望將autorelease添加到所有的末尾,否則你將保留計數遞增2,而不是1。 – 2011-02-24 20:20:10
genderControl有一個保留屬性,但它在dealloc方法中釋放,所以保留計數再次正常。雖然謝謝! – Robin 2011-02-24 20:34:55
但是,Simon所指出的行最終將性別控制的保留計數設置爲2(1表示自我=和1表示alloc)。你的dealloc會把它減少到1,而不是0 - 因此是內存泄漏!西蒙是正確的,據我所知。 – occulus 2011-02-24 20:37:55