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 に答える