0

がありUITextField、そこから所有者にドラッグしてdelegateストーリーボードに設定します。

UITextFieldDelegateまた、controller.h ファイルでは、クラスがプロトコルに準拠していると宣言していませんでした。

しかし、- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string作品!それはうまくいきます!

なぜだろう?

UITableView を持たないコントローラーに設定したときに、これに一度会ったことがUITableViewDelegateありUITableViewDataSourceます。

4

1 に答える 1

2

メソッドが呼び出されるのは、デリゲート オブジェクト ( UIWebViewUITextFieldUITableViewなど) がデリゲートがプロトコルに準拠しているかどうかをチェックしないためです。特定のデリゲート メソッドに実際に応答するかどうかのみに関心があります。

結局のところ、プロトコル宣言はコンパイラにとって単なるヒントにすぎません。

于 2013-06-26T11:42:42.783 に答える