2012-09-21 23 views
0

我有2個視圖,名爲viewcontroller1,viewcontroller2。每個viewcontroller加載大約3張圖片(加載它在XIB),當我嘗試使用[self.navigationcontroller pushviewcontroller],推view1 view2,內存cannt釋放。(我想知道它不能釋放viewcontrller1或cannt釋放uiimageview )我的代碼有任何錯誤?如何在pushviewcontroller後發佈ViewController

viewcontroller1代碼就像這樣:

viewcontroller1.h

@interface ViewController : UIViewController 
@property(strong,nonatomic)IBOutlet UIImageView *mainImageView; 
@property(strong,nonatomic)IBOutlet UIImageView *topwallImageView; 
@property(strong,nonatomic)IBOutlet UIImageView *buttonImageView; 

viewcontroller1.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
self.mainImageView = nil; 
self.topwallImageView = nil; 
self.buttonImageView = nil; 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
} 

-(void)dealloc 
{ 
[mainImageView release]; 
[topwallImageView release]; 
[buttonImageView release]; 
[super dealloc]; 
} 

-(IBAction)main2ViewController:(id)sender 
{ 
Main2ViewController *main2ViewController =[[Main2ViewController alloc]initWithNibName:@"Main2ViewController" bundle:nil]; 
[self.navigationController pushViewController:main2ViewController animated:NO]; 
[main2ViewController release]; 
} 
+0

問題可能是在加載其他視圖控制器也。或者它真的崩潰在你釋放你的第二視圖控制器的行?你是否應用了斷點來追蹤其實際崩潰的位置? –

+0

@ Apple_iOS0304我的問題沒有崩潰。是不能釋放viewcontroller – Allan

回答

0

你必須學習有關對象iOS中溝通和內存管理更詳細。

也請嘗試使用ARC。 自動引用計數(ARC)在iOS 5 sdk中引入,使Objective-C程序員免於通過使內存管理成爲編譯器的工作來處理內存管理。

您可以轉換項目以使用ARC this link

你不能釋放viewcontroller1及其IBOutlet中性能,同時viewcontroller2是可見的或推viewcontroller2後啓用。因爲你從viewcontroller1推送了viewcontroller2viewcontroller1是viewcontroller2的容器/父級。 viewcontroller2不會存在了viewcontroller1

關於IBOutlet中ImageView的圖像,你可以將其設置爲nil .Eg:yourImageview.image =零;但它不會釋放IBOoutlet Imageview內存。

IBOutlet中的ImageView時叫viewcontroller1因爲你viewcontroller1 dealloc方法:)

關於您Main2ViewController方法正確釋放其釋放方法將得到釋放:你在你的代碼來處理內存正確

當你調用pushViewController,它將保留默認推送的控制器。請注意,您不是所有者。當控制器彈出時它會自動釋放。但是你必須釋放分配的Main2ViewController。所以你的代碼是好的:)

+0

感謝Ramshad,什麼是「不釋放資源」的意思??這意味着如果我想釋放uiiamgeview.image我有它在.m文件? (像這樣:uiimageview.imageview = [uiimage imageconterfilepath:1.png])後,我pushviewcontroller view1發佈或不釋放?我可以在viewcontroller2上發佈uiimageview嗎?順便說一句如何彈出viewcontroller? – Allan

+0

我編輯了我的答案。希望你能理解:) –

+0

我已經試過你的代碼「youImageview.image = nil」我不工作。順便說一句,我可以使用工具欄控制器來取代navigationcontroller? – Allan

相關問題