协议共分六步:
1.
声明协议
2.
声明代理人属性
3.
执行协议方法
4.
签订协议
5.
指定代理人
6.
实现协议方法
/******
****
*
****
***
声明协议的类
*****
****
*
****
****
****
****
**/
/******
****
*
****
***
声明协议的类.h
*****
****
*
****
****
****
****
**/
#warning
协议第一步
声明协议
@protocol
Marry <
NSObject
>
-( void )makeMoney:( NSString *)text;
@end
#warning
协议第二步
声明代理人
@interface
Girl :
NSObject
@property
(
nonatomic
,
assign
)
id
<
Marry
>myDelegate;
//assign
弱引用,不会对内存引起记数变化
-(
void
)getMessage:(
NSString
*)content;
@end
/******
****
*
****
****
****
**
******
****
*
****
****
****
*******
**/
/******
****
*
****
***
声明协议的类.m
*****
****
*
****
****
****
****
**/
#warning
协议第三步
执行协议方法
@implementation
Girl
-(
void
)getMessage:(
NSString
*)content
{
NSLog ( @"%@" ,content);
{
NSLog ( @"%@" ,content);
//
使用代理人去执行协议方法
[ self . myDelegate makeMoney : @" 赶快去赚钱 !!!" ];
}
[ self . myDelegate makeMoney : @" 赶快去赚钱 !!!" ];
}
@end
/******
****
*
****
****
****
**
******
****
*
****
****
****
****
**/
/******
****
*
****
****
*执行协议的类
**
****
*
****
****
****
****
**/
/******
****
*
****
****
*执行协议的类.h
****
*
****
****
****
****
**/
#warning
协议第四步
签订协议
#import
"Girl.h"
@interface
Boy :
NSObject
<
Marry
>
-(void)sendMessageToGirl:(NSString *)content;
@end
/******
****
*
****
**
****
*
****
******
****
*
****
****
****
****
**/
/******
****
*
****
****
*执行协议的类.m
**
****
*
****
****
****
****
**/
#warning
协议第五步
指定代理人
@implementation
Boy
-( void )sendMessageToGirl:( NSString *)content
{
Girl *aGirl = [[ Girl alloc ] init ];
-( void )sendMessageToGirl:( NSString *)content
{
Girl *aGirl = [[ Girl alloc ] init ];
//
指定代理人,一定要找到声明协议类的对象,因为代理人是
Girl
的一个属性,所以用
Girl
对象调用属性
.
aGirl. myDelegate = self ; // 成为奴隶
[aGirl getMessage :content];
}
aGirl. myDelegate = self ; // 成为奴隶
[aGirl getMessage :content];
}
#warning
协议第六步
实现协议方法
-( void )makeMoney:( NSString *)text
{
NSLog ( @"%@" ,text);
}
-( void )makeMoney:( NSString *)text
{
NSLog ( @"%@" ,text);
}
@end
/******
****
*
****
****
****
**
******
****
*
****
****
****
****
**/