1

在我的代码中,当我即将在 UITextField 中输入值时第一次出现键盘时,存在内存泄漏。有人可以给我一些想法吗?

在接口文件中

IBOutlet UITextField *userEmail; 

@property (nonatomic, retain) IBOutlet UITextField *userEmail; 

实施文件

@synthesize userEmail; 

- (void)dealloc 
{ 
  [userEmail release]; 
} 

- (void)viewDidUnload 
{ 
  self.userEmail = nil; 
} 

-(IBAction) emailOver:(id)sender{ 
  [sender resignFirstResponder]; 
} 

在第一次出现键盘时发生内存泄漏的功能之一NSLog(@"User Email: %@",[userEmail text]);我是否实现了 UITextFieldDelegate?谢谢

4

4 回答 4

2

考虑到 iPhone 模拟器中存在一个错误:如果您编写一个几乎是空的项目,在 XIB 中只放置一个 UITextField,并且没有代码,那么当您点击 UITextField 时就会出现泄漏。相反,如果您尝试在设备上构建和运行,您将没有泄漏。所以这可能是你的情况!试一试,让我们知道..

于 2010-09-13T14:37:32.883 回答
1

一个问题是您的 dealloc 方法缺少 MANDATORY [super dealloc] 行。

- (void)dealloc 
{ 
  [userEmail release];
  [super dealloc]; 
} 
于 2009-11-07T06:36:16.200 回答
0

您不需要 IBOutlet 定义两次。一个或另一个应该做。

UITextField *userEmail; 

@property (nonatomic, retain) IBOutlet UITextField *userEmail;

我在您的代码中看不到任何其他会导致问题的内容。您的@implementation 文件中还有哪些其他方法。

于 2009-11-07T04:04:55.543 回答
0

我认为你是对的。使用我使用 Monitoring Tools -> Leaks 运行的一个非常简单的测试项目,当我点击 UITextField 时,内存泄漏就会不断增加。

我暂时忘记这一点,下次使用 UITextField 时请记住这一点(不

于 2010-10-27T15:55:15.573 回答