在我的.h文件中创建3个对象,如下所示
IBOutlet UIScrollView *scrollView;
IBOutlet UITextView *txtMessage;
IBOutlet UIWebView *webView;
在xib中为所有3个对象创建连接 xib中的层次结构,如
**View
---UIScrollView
---UITextView
---UIWebView**
然后我在dealloc方法中打印retainCount
NSLog(@"scrollView retainCount:%d",[scrollView retainCount]);
[scrollView release];scrollView=nil;
NSLog(@"txtMessage retainCount:%d",[txtMessage retainCount]);
[txtMessage release];txtMessage=nil;
NSLog(@"webView retainCount:%d",[webView retainCount]);
[webView release];webView=nil;
在控制台上我好像在下面
scrollView retainCount:3
txtMessage retainCount:2
webView retainCount:2
我想知道它为什么会这样发生,还有一件事如何在dealloc方法中释放这个对象......
答案 0 :(得分:0)
我认为你不需要在dealloc中做任何事情。在Objective-C中,如果你没有分配/保留任何东西,你不必担心。
答案 1 :(得分:0)
答案是:你不释放它们。你没有分配] init]那么,他们不是你记忆中的责任。 他们以某种方式负责的唯一情况是,当您使用@property(保留)为IBOutlets保留它们时。在这种情况下,您将在[dealloc]
中释放它们在另一个关于乐器和释放xib创建的出口的答案中回答你的评论:如果你释放它们,那么视图将在某个时候卸载并负责释放.xib中的元素(它不是你会再次释放它们,它会崩溃;)你回到另一个视图并且内存不会减少的原因是因为当一个视图消失时,它没有被卸载,只有当视图控制器被释放时才会发生,或当应用程序收到内存警告时。