Iphone 在ARC上显示键盘时内存泄漏
调用Iphone 在ARC上显示键盘时内存泄漏,iphone,ios,Iphone,Ios,调用UIKeyboard时,当UIKeyboard被隐藏时,内存被分配而不是释放。如果缓存它的是框架,那么有没有办法清除它? 这些代码就是我用来创建UITextField的代码,以及我如何隐藏UIKeyboard: #import <UIKit/UIKit.h> @interface SignInTextField : UITextField -(id)initWithIndexPath:(NSIndexPath*)indexPath; @end
UIKeyboard
时,当UIKeyboard
被隐藏时,内存被分配而不是释放。如果缓存它的是框架,那么有没有办法清除它?
这些代码就是我用来创建UITextField
的代码,以及我如何隐藏UIKeyboard
:
#import <UIKit/UIKit.h>
@interface SignInTextField : UITextField
-(id)initWithIndexPath:(NSIndexPath*)indexPath;
@end
#import "SignInTextField.h"
@implementation SignInTextField
-(id)initWithIndexPath:(NSIndexPath*)indexPath{
self = [super init];
if (self) {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad
self.frame = CGRectMake(110, 10, 600, 30);
} else {
self.frame = CGRectMake(110, 11, 150, 30);
}
self.tag = [indexPath row];
self.returnKeyType = UIReturnKeyDone;
self.autocapitalizationType = UITextAutocapitalizationTypeNone;
}
return self;
}
//SettingTextField
SignInTextField *textField = [[SignInTextField alloc]initWithIndexPath:indexPath];
textField.delegate = self;
#pragma mark - Text Field CallBack
-(void)textFieldDidBeginEditing:(UITextField *)textField{
activeField = textField;
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
if(textField.tag == 0) temp_email = [NSString stringWithFormat:@"%@",textField.text];
if(textField.tag == 1) temp_password = [NSString stringWithFormat:@"%@",textField.text];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
#导入
@接口signitextfield:UITextField
-(id)initWithIndexPath:(NSIndexPath*)indexPath;
@结束
#导入“SignInTextField.h”
@实现signitextfield
-(id)initWithIndexPath:(NSIndexPath*)indexPath{
self=[super init];
如果(自我){
if(UI\u USER\u INTERFACE\u IDIOM()==UIUserInterfaceIdiomPad){
//iPad
self.frame=CGRectMake(110,10600,30);
}否则{
self.frame=CGRectMake(110,11,150,30);
}
self.tag=[indexPath行];
self.returnKeyType=UIReturnKeyDone;
self.autocapitalizationType=UITextAutocapitalizationTypeNone;
}
回归自我;
}
//设置文本字段
SignInTextField*textField=[[SignInTextField alloc]initWithIndexPath:indexPath];
textField.delegate=self;
#pragma标记-文本字段回调
-(无效)textFieldDidBeginEditing:(UITextField*)textField{
activeField=textField;
}
-(void)textfielddidediting:(UITextField*)textField{
如果(textField.tag==0)temp_email=[NSString stringWithFormat:@“%@”,textField.text];
如果(textField.tag==1)临时密码=[NSString stringWithFormat:@“%@”,textField.text];
}
-(BOOL)textField应返回:(UITextField*)textField{
[textField resignFirstResponder];
返回YES;
}
当您第一次打开键盘时,它会被iOS原生框架缓存。它由UIKit框架处理 这不是内存泄漏。下次需要显示键盘时,应用程序将使用缓存的键盘
如果内存需求很高,本机框架将在需要时释放缓存视图。应用程序仍然需要内存,框架将为其生成内存警告。请告诉我们您使用的代码,您为什么认为内存泄漏?如果你知道,给我们看看你的仪器读数。