- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
我把
NSAssert([searchBar.text isEqualToString:searchText],@"Search Bar Must Be The Same");
那里似乎没有被违反
我只是想确定,因为它有点奇怪。
为什么要使用2个参数,searchBar和searchText,如果其中一个参数,即searchText可以通过询问searchBar.text来获取
为什么不拥有
-(void)searchBarTextDidChange:(UISearchBar *) searchBar
或 - (void)textDidChangeForSearchBar:(UISearchBar *)searchBar
做到这一点
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
暗示searchText包含基本信息,这意味着searchBar.text可能与searchText不同。它永远不会。除非你改变了事情。
事实上,我怀疑searchText指向searchBar.text或只是它的副本。
答案 0 :(得分:2)
我会说这只是一个编码标准。
这是一个很好的做法,委托方法的第一个参数应该是调用类
所以(void)searchBar:(UISearchBar *)searchBar
就是这样。
现在,如果您省略textDidChange:(NSString *)searchText
,可以从searchBar.Text
检索
那时我和苹果都没有找到这个方法的好名字。
答案 1 :(得分:1)
我也检查过所有可能性。我认为提供另一个参数的唯一区域是在这两个函数中保持一致
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
和
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText