繁体   English   中英

从Objective-C中其他类的实例访问类方法

[英]Access class methods from instance of other class in Objective-C

假设我有A类和B类。在AI类中,创建B类的实例。B类具有委托方法,该方法在被调用时就想在A类中调用实例方法。有没有办法传递对类的引用A在实例化B类时?

您可以使用委托将信息返回给第一堂课

Bh级

@protocol delegateB <NSObject>
-(void)doSomething:(NSString *)data;
@end

@interface ClassB : UIViewController

@property(nonatomic, assign) id<delegateB> delegate; 

@end

Bm级

@synthesize delegate = _delegate;

- (void)viewDidLoad {
    [_delegate doSomething:@"String to send"];
}

在A类中:

甲级

@interface ClassA : UIViewController

-(void)doSomething:(NSString *)data;

@end

班级

当您实例化该类时,您需要分配self:

ClassB *cb = [[ClassB alloc] init];
cb.delegate = self;

要使用该功能:

-(void)doSomething:(NSString *)data{
    //do something whit the data
}

向B添加类型A的属性,并在初始化后为其分配self 您也可以将self作为参数传递给您提到的委托方法。 实际上,这是可可粉中的常见做法(请UITableViewDelegate

您可以使用Class来传递对类的引用。 对于AA使用[A class]获取引荐。 但是请注意,使用常规的类引用,您将无法简单地编写[aClassRef aClassMethod] ,因为Class实例可以引用任何类(因此,编译器不知道是否支持特定方法)。

实际的解决方案应该更接近朱利安(Julian)的建议 ,但也许此注释在某种程度上也很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM