如何在Objective-C中的类之间工作?

目前,我的大多数代码都在同一个视图控制器中,我想将其中的一部分移动到其他区域。比如将动画全部移动到其他地方。但那我如何引用另一个类中的东西呢?我如何从该类引用回到我的viewcontroller类中的项目?不这样做总是让我无法做到这一点。     
已邀请:
有几种方法可以实现这一目标。 一种方式是cocoa委托@protocol方式,第二种方法是创建对另一个类中每个对象的引用。 对于第一种方式,你可以做这样的事情:
@class Class2;

@interface Class1 : NSObject {
    Class2 *cls2Pointer;

}

@property Class2 *cls2Pointer;
@end



@class Class1;

@interface Class2 : NSObject {
    Class1 *cls1Pointer;

}
@property Class1 *cls1Pointer;
@end



int main(){
    Class1 cls1Obj = [[Class1 alloc] init];
    Class2 cls2Obj = [[Class2 alloc] init];

    [cls1Obj setCls2Pointer:cls2Obj];
    [cls2Obj setCls1Pointer:cls1Obj];

}
第二种方法是在一个/两个类中声明一个协议,以便能够传递参数并在其他对象上调用不同的方法:
    @protocol Class1Delegate

- (void)class1:(Class1)obj MethodWithArg:(id)arg;

@end


@interface Class1 : NSObject {
    id <Class1Delegate> delegate;
}

@end



@interface Class2 : NSObject <Class1Delegate>{

}

@end

@implementation Class2

- (void)class1:(Class1)obj MethodWithArg:(id)arg {
        //do stuff when called from the 1st class
}
@end
    
您可能希望在此处查看 - 在目标c中创建静态类,然后通过类名在单独的文件中引用它们 - 如在链接示例中引用的视图控制器中那样。 否则,您可以在单独的.m文件中创建一个新类,然后对其进行编码,使得另一个类中的调用方法将首先创建此新类的实例,然后在此实例上调用必要的方法。 希望这可以帮助。     
基本上你要做的是创建一个或多个类,将代码移到这些类,然后在viewcontroller中创建这些类的实例。 所以,如果你的视图控制器中有一个方法
-(void)foo;
你会创建一个新的类说C并在那里移动方法。 然后在您的视图控制器中,您将创建该类的实例变量,例如
C* myC;
然后alloc / init然后调用foo方法。这不是面向对象的,因为foo在任何方面都与C并不真正相关,所以方法foo可能只是一个与实例无关的静态方法,因此就像任何其他方法一样被调用,而不是像[C foo]那样来自视图控制器的[self foo]。 另一个更多的OOP方法是将属于一起的功能移动到一个单独的类中,如示例中的动画。     

要回复问题请先登录注册