[英]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
来传递对类的引用。 对于A
类A
使用[A class]
获取引荐。 但是请注意,使用常规的类引用,您将无法简单地编写[aClassRef aClassMethod]
,因为Class
实例可以引用任何类(因此,编译器不知道是否支持特定方法)。
实际的解决方案应该更接近朱利安(Julian)的建议 ,但也许此注释在某种程度上也很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.