hm、多分私は記事を完全に理解していないかもしれませんが、具体的な例でセレクタの代わりにブロックを使用する利点はありません。それはしかしif-else
の連鎖よりも良くなるかどう あなたはこの
@interface AlternativeTextFieldDelegate : NSObject <UITextFieldDelegate>
{
SEL selectorToCall;
id objectToCall;
}
- (void) setObjectToCall:(id)obj selector:(SEL)selector;
@end
@implementation AlternativeTextFieldDelegate
- (void) setObjectToCall:(id)obj selector:(SEL)selector
{
objectToCall = obj;
selectorToCall = selector;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[objectToCall performSelector:selectorToCall];
return YES;
}
@end
とビューコントローラ
@interface ViewWithTextFieldsController : UIViewController
{
UITextField *tf1;
AlternativeTextFieldDelegate *delegateForTF1;
UITextField *tf2;
AlternativeTextFieldDelegate *delegateForTF2;
}
// ...IBOutlets and all that...
- (void) tf1ShouldReturn; // handles shouldReturn for tf1
- (void) tf2ShouldReturn; // handles shouldReturn for tf2
@end
@implementation ViewWithTextFieldsController
- (void) viewDidLoad // or wherever
{
delegateForTF1 = [[AlternativeTextFieldDelegate alloc] init];
[delegateForTF1 setObjectToCall:self selector:@selector(tf1ShouldReturn)];
tf1.delegate = delegateForTF1;
delegateForTF2 = [[AlternativeTextFieldDelegate alloc] init];
[delegateForTF2 setObjectToCall:self selector:@selector(tf2ShouldReturn)];
tf2.delegate = delegateForTF2;
}
// ...
@end
のような似たような達成できる本当に知りません。
これは、これが解決する問題よりも複雑になるようです。
私はこのことをとてもうまく理解していませんが、私はそのブログ記事を読んだ後で同じ質問をしたでしょう。ブロガーに直接お問い合わせください。 – chris