我有两个类,ClassA将实例化ClassB并将方法作为委托传递。 ClassB最终将调用ClassA的委托。 ClassB存储它时,是否需要在ClassA上添加保留?在ObjectiveC中实现自定义类的代理时引用计数
我按照“Cocoa基础指南:与对象通信”中的“为自定义类实现委托”,但示例代码演示似乎没有考虑到内存管理。
ClassA将设置委托,并期望在ClassB完成它的工作后再被调用。为ClassB的
@implementation ClassA
-(void)launchSomething
{
ClassB *classB = [[ClassB alloc] init];
[classB setCallback:self withSelector:@selector(deferredWork)];
// do some other stuff, assign class B to some View and eventually release class B
}
-(void)deferredWork
{
NSLog(@"this is the method that will be deferred till some point in time");
}
头文件会保存,再后来调用委托:
@interface ClassB
id targetObject;
SEL targetMethod;
-(void) setCallback:(id)anObject withSelector:(SEL)aMethod
ClassB的的实现:
@implementation ClassB
-(void) setCallback:(id)anObject withSelector:(SEL)aMethod
{
// QUESTION: Do I need to add a 'retain' here on the targetObject?
targetObject = anObject;
targetMethod = aMethod;
}
-(void) someWorkLater
{
if ([targetObject respondsToSelector:@selector(targetMethod)]) {
// invoke the target object with the specific method
[targetObject targetMethod];
}
}