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框架处理

这不是内存泄漏。下次需要显示键盘时,应用程序将使用缓存的键盘


如果内存需求很高,本机框架将在需要时释放缓存视图。应用程序仍然需要内存,框架将为其生成内存警告。

请告诉我们您使用的代码,您为什么认为内存泄漏?如果你知道,给我们看看你的仪器读数。