协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
协议共分六步:1.声明协议2.声明代理人属性3.执行协议方法4.签订协议5.指定代理人6.实现协议方法/******************声明协议的类****************************/

/******************声明协议的类.h****************************/#warning协议第一步声明协议@protocolMarry <NSObject>
-(void)makeMoney:(NSString*)text;

@end

#warning协议第二步声明代理人@interfaceGirl :NSObject@property(nonatomic,assign)id<Marry>myDelegate;//assign弱引用,不会对内存引起记数变化
-(void)getMessage:(NSString*)content;@end/*********************************************************/


/******************声明协议的类.m****************************/#warning协议第三步执行协议方法@implementationGirl-(void)getMessage:(NSString*)content
{

   NSLog(@"%@",content);
   //使用代理人去执行协议方法
    [self.myDelegate makeMoney:@"赶快去赚钱!!!"];
   
}@end/******************************************************/


/********************执行协议的类*************************/

/********************执行协议的类.h***********************/#warning协议第四步签订协议#import"Girl.h"@interfaceBoy :NSObject<Marry>
-(void)sendMessageToGirl:(NSString *)content;@end/*******************************************************/
/********************执行协议的类.m*************************/#warning协议第五步指定代理人@implementationBoy
-(void)sendMessageToGirl:(NSString*)content
{

   Girl*aGirl = [[Girlalloc]init];


   //指定代理人,一定要找到声明协议类的对象,因为代理人是Girl的一个属性,所以用Girl对象调用属性.
    aGirl.myDelegate=self;//成为奴隶
    [aGirlgetMessage:content];
}

#warning协议第六步实现协议方法
-(void)makeMoney:(NSString*)text
{
   NSLog(@"%@",text);
}@end/******************************************************/
文章目录
|