来自Objective C其他类的调用方法[关闭]

问题描述 投票:0回答:1
如何在不创建新类实例的情况下从Objective C中的另一个类调用方法?当我使用类方法时,不能使用其余实现的属性和变量。我该如何使用它?

注:我知道在SO上有类似的答案,但大多数答案已过时。我最近在一个项目中遇到了这个问题,我基本上是针对我自己的信息存储使用这种问与答方式,并希望这也会对某人有所帮助!

objective-c class call class-method
1个回答
0
投票
要调用另一个类的方法,您可以在整个应用程序中简单地做到这一点:

NSObject *newClass = [[YourClass alloc]init]; [newClass resumeTimer];

唯一有问题的副作用是您将

获取新实例您的课程!

有时这无关紧要,并且可以正常工作,但是例如,当您的类具有诸如UIViewController的初始化程序时,这可能会导致您的应用程序崩溃。

一种更好的方法是将要从外部调用的方法定义为

class method

!您可以在标头(类方法以“ +”开头)以及相应的实现中执行此操作! @interface YourClass : NSObject + (void)resumeTimer; @end
现在,您可以使用以下语法从您的应用程序和其他方法中调用该方法:

[YourClass resumeTimer];

您只需要知道一个副作用!在类方法的实现内部,您只能使用静态变量!因此,如果您的方法从外部处理任何信息,则需要像下面这样使此变量静态:

@implementation static NSTimeInterval seconds; + (void)resumeTimer{ NSLog(@"resume playing time: %f",seconds); } .... more code here .... @end

请在此处找到Xcode 11示例项目:GitHub sample code
© www.soinside.com 2019 - 2024. All rights reserved.