我创建了UITextField子类。当我选择键盘时,会出现EXC_BAD_ACCESS

时间:2013-01-29 08:15:14

标签: ios objective-c exception uitextfield exc-bad-access

我做到了。

#import <UIKit/UIKit.h>

typedef BOOL (^validationType)(UITextField *textField);

@interface GLPValidationTextField : UITextField<UITextFieldDelegate>

@property (copy, nonatomic) validationType validation;

@end

#import "GLPValidationTextField.h"

@implementation GLPValidationTextField

@synthesize validation;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)inCoder {
    if (self = [super initWithCoder:inCoder]) {
        self.delegate = self;
    }
    return self;
}



#pragma - mark UITextField delegate

-(BOOL) textFieldShouldEndEditing:(UITextField *)textField{
    return validation(textField);
}

并将此TextField设置为IB。

并使用此

[self.mailTextField setValidation:validationBlock];

这是工作。

-(BOOL) textFieldShouldEndEditing:(UITextField *)textField{
    return validation(textField);
}

这个方法叫做。我可以验证。

但是,当我选择带有像globe这样的按钮的键盘时(将英文键盘更改为日文键盘或其他东西), 在模拟器中发生EXC_BAD_ACCESS。

启用Zombies,但控制台不显示任何内容。

发生了什么?当我选择键盘时。为什么会出现EXC_BAD_ACCESS?

发生时EXC_BAD_ACCESS总是Xcode显示

libobjc.A.dylib`lookUpMethod:
0x1647a9a:  pushl  %ebp
0x1647a9b:  movl   %esp, %ebp
0x1647a9d:  pushl  %ebx
0x1647a9e:  pushl  %edi
0x1647a9f:  pushl  %esi
0x1647aa0:  subl   $28, %esp
0x1647aa3:  calll  0x1647aa8                 ; lookUpMethod + 14 // Thread 1:EXC_BAD_ACCESS

0 个答案:

没有答案