gpt4 book ai didi

ios - NSNotification 与 UITextFieldDelegate

转载 作者:行者123 更新时间:2023-11-28 20:03:44 24 4
gpt4 key购买 nike

我和我的同事更喜欢用不同的方法来解决一项小任务。我们想知道社区的意见。

我们必须在编辑过程中处理 UITextField 的文本。 (文本应显示在 View 的标题中)

两种最简单的方法是:

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;
}

哪种方法更好,为什么?在这种情况下有什么理由应该避免某些方法吗?

更新:(一些说明)

我们不需要委托(delegate)提供的任何额外的灵 active (比如禁止某些编辑的可能性)或通知(添加多个观察者的可能性)。我们的主要问题是“如果我们可以轻松解决委托(delegate)问题,那么使用 NSNotifications 是一种好习惯吗?”

更新 2:

感谢所有回答问题的人!

似乎社区对“如果我们可以轻松解决委托(delegate)问题,使用 NSNotifications 是一个好习惯吗?”这个问题的答案是什么?是是的。但是对于我们最初的问题,我们发现了另一个(第三个)变体,它比委托(delegate)和 NSNotification 更好(参见已接受的答案)。

最佳答案

我已经编写了很多两者的代码,但我不同意 Adam。在大多数情况下,通知更难调试和向后追溯。我还怀疑它们会增加更多的性能开销,但这对我来说只是轶事,我还没有对它进行基准测试。当可能有多个观察者需要对事件采取行动时,和/或当我想要“松散耦合”时,我倾向于通知,其中代码的一部分不应该对另一部分的 API 有特定的了解。在您的情况下,文本字段已经带有具有委托(delegate)并在某些事件上调用委托(delegate)的逻辑,因此这很容易。如果一个或多个委托(delegate)方法在您需要的时候使用您需要的数据被调用。这是更简单、更合适的路径。

关于ios - NSNotification 与 UITextFieldDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com