假设我有类A和类B.在类AI中创建类B的实例。类B有委托方法,当调用时,我想调用类A中的实例方法。是否有在实例化B类时传递对A类的引用的方法?
答案 0 :(得分:1)
您可以使用委托将信息返回到第一个类
班B.h
@protocol delegateB <NSObject>
-(void)doSomething:(NSString *)data;
@end
@interface ClassB : UIViewController
@property(nonatomic, assign) id<delegateB> delegate;
@end
班级B.m
@synthesize delegate = _delegate;
- (void)viewDidLoad {
[_delegate doSomething:@"String to send"];
}
在A班:
班级A.h
@interface ClassA : UIViewController
-(void)doSomething:(NSString *)data;
@end
班级A.m
在实例化课程时,您需要指定self:
ClassB *cb = [[ClassB alloc] init];
cb.delegate = self;
使用该功能:
-(void)doSomething:(NSString *)data{
//do something whit the data
}
答案 1 :(得分:0)
在B中添加类型A的属性,并在初始化后为其指定self
。您还可以将UITableViewDelegate
作为参数传递给您提到的委托方法。实际上这是可可的常见做法(看dog
dog
cat
dog
bird
)
答案 2 :(得分:0)
您可以使用类型Class
来传递对类的引用。对于课程A
,请使用[A class]
来获取参考资料。但请注意,使用通用类引用时,您将无法简单地编写[aClassRef aClassMethod]
,因为Class
instancce可以引用任何类(因此编译器不知道是否支持或不支持特定方法。
实际解决方案应该更接近what Julian suggests,但也许这个说明在某些方面也会有用。