我对协议有疑问。我有一个这样的课:

@class SideToolBarDelegate;
@interface AuthentificationViewController : UIViewController <ASIHTTPRequestDelegate, UITextFieldDelegate,SideToolBarDelegate> {
}
...


我希望我的类“ AuthentificationViewController”符合协议“ SideToolBarDelegate”,只是我在iPhone版本中,而不是在iPad版本中。我怎么能宣布这一点?谢谢。

最佳答案

您可以在项目属性中设置一些定义,并使用ifdefs。喜欢:

@interface AuthentificationViewController : UIViewController <ASIHTTPRequestDelegate, UITextFieldDelegate
#ifdef IPAD
,SideToolBarDelegate>
#else
>
#endif


但这是旧的C方式。在符合面向对象应用程序设计的程序中执行此操作是一个非常糟糕的主意。在这种情况下,您还有两种方法:


为iPhone和iPad制作单独的子类
使此类不变,不要使用iPhone的SideToolBarDelegate方法。这样可以使代码清晰明了,并在将来更好地进行维护。


毕竟,我建议为viewControllers创建两个类:

AuthentificationiPadViewController : UIViewController <ASIHTTPRequestDelegate, UITextFieldDelegate>
AuthentificationiPhoneViewController : UIViewController <ASIHTTPRequestDelegate, UITextFieldDelegate, SideToolBarDelegate>


只是想着将来对您的代码进行调试!

10-07 23:13