从Objective-C

时间:2016-01-13 20:48:54

标签: objective-c oop

假设我有类A和类B.在类AI中创建类B的实例。类B有委托方法,当调用时,我想调用类A中的实例方法。是否有在实例化B类时传递对A类的引用的方法?

3 个答案:

答案 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,但也许这个说明在某些方面也会有用。