【发布时间】:2014-04-08 13:13:42
【问题描述】:
我和我的同事更喜欢用不同的方法来解决一项小任务。我们想知道社区的意见。
我们必须在编辑过程中处理 UITextField 的文本。 (文本应该显示在视图的标题中)
两种最简单的方法是:
1.注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textFieldDidChangeNotification:)
name:UITextFieldTextDidChangeNotification
object:_titleTextField];
2.使用UITextFieldDelegate方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSMutableString *mutableString = [textField.text mutableCopy];
[mutableString replaceCharactersInRange:range withString:string];
// use mutableString for father processing
return YES;
}
哪种方法更好,为什么?在这种情况下有什么理由应该避免使用某种方法吗?
更新:(一些澄清)
我们不需要委托提供的任何额外灵活性(例如禁止某些编辑的可能性)或通知(添加多个观察者的可能性)。我们的主要问题是“如果我们可以轻松解决委托问题,那么使用 NSNotifications 是一种好习惯吗?”
更新2:
感谢所有回答问题的人!
社区对问题的回答似乎是“如果我们可以轻松解决委托问题,那么使用 NSNotifications 是一种好习惯吗?”是是的。但是对于我们最初的问题,我们发现了另一个(第三个)变体,它比 delegates 和 NSNotification 更好(参见接受的答案)。
【问题讨论】:
标签: ios objective-c cocoa-touch uitextfield nsnotifications