我发现了通常委托模式的一个微小变体:
我的协议是在一些 Protocol.h 中定义的,即
@protocol ProtocolDelegate <NSObject>
//…
@end
//The variant, see below
typedef NSObject <ProtocolDelegate> Delegate;
接下来,在我的 ViewController.h
@interface: UIViewController
@property (nonatomic, strong) Delegate*delegateOfviewController;
//…
@end
然后,在我的 ViewController.m
@implementation ViewController
@synthesize delegateOfviewController;
//…
@end
最后,在我的 AppDelegate.m
//…
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//…
self.ViewController.delegateOfviewController = self;
//…
[self.window makeKeyAndVisible];
return YES;
}
一切都很顺利。真的等同于通常的方式“id delegate”,还是你认为应该避免这样的typedef?
谢谢!
杰加普