delegate的使用总结
需要在A類中修改B類的方法
ClassA.h
@protocol ClassADelegate????//在類A中聲明并且定義一個代理
-(void)ChangeObjectFromClassB;
@end
@interface ClassA: NSObject {
????????id<ClassADelegate> delegate;
}
@property (nonatomic,assign) id <ClassADelegate> delegate;
@end
ClassA.m
@implementation ClassA
@synthesize delegate;
...do something
-(void)method
{
?????? //do something
?????? //在類A中主動調(diào)用代理方法(方法在類B中重寫)
?????? [self.delegate ChangeObjectFromClassB];
}
@end
--------------------------------------------------------------
ClassB.h
@Interface ClassB:NSObject??<ClassADelegate> {??//遵守類A的協(xié)議
}
@end
ClassB.m
#import ClassA
@implementation ClassB
...do something
-(void)method
{??????//生成類A的實例,并將類B代理給A
?????? ClassA??*objA = [[ClassA alloc] init];
?????? objA.delegate = self;
}
//在B類中重寫該代理函數(shù)
-(void)ChangeObjectFromClassB
{
?????? //do something
}
?
1、誰遵循協(xié)議,就在誰里面實現(xiàn)方法,如class B
2、誰需要代理,就在誰里面聲明代理 ?如class A
3、在需要完成功能的地方用代理調(diào)用該方法
4、聲明代理的指向,在實現(xiàn)方法的類里面。
?
總結(jié)
以上是生活随笔為你收集整理的delegate的使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle linux vs cent
- 下一篇: 在.net中如何禁用或启用DropDow