【问题标题】:With & Without UITextFieldDelegate?有和没有 UITextFieldDelegate?
【发布时间】:2010-08-28 15:43:30
【问题描述】:

我很好奇让一个类符合 UITextFieldDelegate,过去我总是添加它以启用对协议中定义的方法的访问。然而这最后一次我忘了添加它,后来才意识到它丢失了。我的问题是为什么它可以在有或没有的情况下工作,我认为它是正确访问协议方法所必需的?

@interface MyController : UIViewController <UITextFieldDelegate> {
    UITextField *text_001;
}
@property(nonatomic, retain) IBOutlet UITextField *text_001;
@end

或者:

@interface MyController : UIViewController {
    UITextField *text_001;
}
@property(nonatomic, retain) IBOutlet UITextField *text_001;
@end

与:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    NSLog(@"Return: ... ");
    [textField resignFirstResponder];
    return YES;
}

干杯加里

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    委托声明实际上只是作为编译器提示存在的;显然,您仍然必须实现底层方法。但是,主要目的是让编译器在分配它们时仔细检查您。如果您尝试手动(在代码中,而不是 IB)分配未声明的委托,您将经常收到编译器警告。

    由于 Objective-C 对大多数内容使用鸭子类型(如果它像鸭子一样走路和像鸭子一样嘎嘎叫;如果它响应 -textFieldShouldReturn: 等),那么您就很安全了。

    【讨论】:

    • 我不知道这个!谢谢@Ben Gottlieb。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多