4

当被调用时,内存被分配而不是被隐藏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;
   }

这是泄漏点。

4

1 回答 1

8

当您第一次打开键盘时,它会被 iOS 原生框架缓存。它由 UIKit 框架处理。

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

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

于 2013-03-18T13:36:25.713 回答