协议传值通常用于界面间的通信.
协议只声明, 不实现
协议是 用来解决IOS中多继承的问题
注:当定义协议delegate时, 将其属性的标识设为assign是为了防止循环拥有,导致释放不了.
@required 下为必须实现的方法
@optional 下位可以不实现的方法
协议传值可分为六步
1.定义协议
@protocol SecondViewControllerDelegate<NSObject>
- (void)changeValue:(NSString *)value;
@end
2.定义代理人
@interface SecondViewController:UIViewController
@property (nonatomic, assign) id<SecondViewControllerDelegate>delegate;
3.方法在哪里实现
@implementation SecondViewController
[self.delegate changeValue:@"222"];
4.遵循协议
@interface FirstViewController ()<SecondViewControllerDelegate>
@end
5.设置代理人
@implementation FirstViewController
需要先创建一个Second类的对象
SecondViewController *second =[ [SecondViewController alloc] init];
second.delegate = self;
6.方法的实现
- (void)changeValue:(NSString *)value
{
}