delegate 本质为类增加属性和方法,可以用delegate调用未知对象的属性和方法,为已知对象添加属性和方法
test.h
#import <Foundation/Foundation.h>
@interface test : NSObject
@property (nonatomic,assign)BOOL isTest;
- (void)test;
@end
test.m
#import "test.h"
@interface test ()
@property (nonatomic,assign) BOOL isTestAdd;
@end
@implementation test
- (void)test;
{
NSLog(@"test %@",@(self.isTest));
}
- (void)testAdd
{
NSLog(@"testAdd %@",@(self.isTestAdd));
}
@end
- 用testAdd调用test属性和方法,添加属性和方法(添加时需在test.m实现)
ViewController.h
#import <UIKit/UIKit.h>
@protocol testAdd<NSObject>
- (void)testAdd;
- (void)test;
@property (nonatomic, assign) BOOL isTest;
@property (nonatomic, assign) BOOL isTestAdd;
@end
@interface ViewController : UIViewController
@property (nonatomic)id<testAdd> test;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.test = [[NSClassFromString(@"test") alloc] init];
self.test.isTest = YES;
self.test.isTestAdd = YES;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.test test];
[self.test testAdd];
}
@end