私のプロジェクトには、そのデリゲートにリダイレクトする多くのviewcontrollerがあります。 私はそれを定義しましたが、名前についてはあまり幸せではありません。DELEGATE_TRY_PERFORM_SELECTOR_WITH_SELFよりも優れた名前
どのように名前を付けますか、別の方法でやりますか?
デリゲートがオブジェクトを返すか、 複数の引数を取る状況もあります。あなたにその方法を提供するUIViewController
にCategory
を作成しないのはなぜ
// the problem is highly repetitive code
-(void)switchToNextTab:(id)sender {
SEL sel = @selector(switchToNextTab:);
if([m_delegate respondsToSelector:sel]) {
[m_delegate performSelector:sel withObject:self];
}
}
-(void)switchToPrevTab:(id)sender {
SEL sel = @selector(switchToPrevTab:);
if([m_delegate respondsToSelector:sel]) {
[m_delegate performSelector:sel withObject:self];
}
}
-(void)closeTab:(id)sender {
SEL sel = @selector(closeTab:);
if([m_delegate respondsToSelector:sel]) {
[m_delegate performSelector:sel withObject:self];
}
}
// my solution.. which I need a better name for
#define DELEGATE_TRY_PERFORM_SELECTOR_WITH_SELF(selector_name) \
do { \
SEL sel = @selector(selector_name); \
if([m_delegate respondsToSelector:sel]) { \
[m_delegate performSelector:sel withObject:self]; \
} \
} while(0);
-(void)switchToNextTab:(id)sender {
DELEGATE_TRY_PERFORM_SELECTOR_WITH_SELF(switchToNextTab:);
}
この質問は、プログラミングスタイルに関するものなので、話題にはならないようです。プログラマーのスタック交換ではより良いでしょう。 – user1118321
@ user1118321よろしくお願いします。 (私はそれを削除することはできません) – neoneye