我建议你使用Protocol/Delegate
这个问题。
你应该为你的类声明一个委托协议。Foo 类的委托协议和接口的示例可能是这样的:
@protocol MyClassDelegate
// 必需意味着如果他们想使用委托,他们// 必须实现它。@required // 你想从另一个类调用的方法。- (void)taskComplete:(BOOL)完成;@结尾
@interface MyClass : NSObject { // 我们不知道在编译时会采用什么样的类,这就是为什么这是一个 id id 委托;}
@property (nonatomic, assign) id 委托;
- (无效)任务完成;
- (void)doSomeTask;
假设您有一个复杂的项目并且不想在您的类之间创建大量链接,在这种情况下,像这样的委托将是您实现的最佳方式。这就像函数指针和回调一样,但通信很容易双向进行。是时候采用我们的协议并在课堂上实际使用它了。
myClass = [[MyClass alloc] init];
// Very important. If we don't let myClass know who the delegate
// is we'll never get the protocol methods called to us.
[myClass setDelegate:self];
在这种情况下,您可以从另一个类调用方法。我希望这能帮到您。