我试图找出为什么在界面生成器中创建 UIButton 时 - 通过 xcode 运行仪器应用程序时发生内存泄漏。
这就是我造成内存泄漏的方式。
我打开了一个新应用程序,在界面生成器中打开了 myAppViewController.xib 文件。 我把背景改成了黑色。 添加了一个 UIButton,将其重命名为“foo”标题。 保存然后退出。
在 myAppViewController.h 文件中,我有以下内容
#import <UIKit/UIKit.h>
@interface miPlanNewViewController : UIViewController {
IBOutlet UIButton *tasksProjects;
}
@property(nonatomic, retain) IBOutlet UIButton *tasksProjects;
@end
在 myAppViewController.m 文件中,我有以下内容:
#import "miPlanNewViewController.h"
@implementation miPlanNewViewController
@synthesize tasksProjects;
...
//the normal methods you get
...
- (void)dealloc {
[super dealloc];
}
@end
这是我目前在仪器中得到的屏幕截图。
但是我注意到一件事......
我还没有在界面生成器中将 socket 连接到 uibutton,但是当我从界面生成器中删除 UIButton、保存并再次使用仪器运行程序时,我根本没有遇到任何泄漏。
有人可以解释一下发生了什么以及我如何解决这个问题。谢谢。
最佳答案
- 首先,您不会释放该属性(property)。
在 dealloc 中你应该有
[tasksProjects release];
并且在 viewDidUnload 中你应该有self.taskProjects = nil;
- 其次,正如 lxt 提到的,您不应该使用模拟器进行内存泄漏检查。
- 第三,检查您是否正在构建发布版本而不是调试版本。
关于iphone - 工具:创建 UIButton 时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640076/