【问题标题】:How do create a global method in iOS?如何在 iOS 中创建全局方法?
【发布时间】:2014-11-04 10:30:16
【问题描述】:

我正在尝试重构我的代码,使用对 url 的 POST 请求,解析 JSON 并做很多有用的事情。不幸的是,我需要在多个视图控制器中多次使用它。实现这一目标的最佳方法是什么?

我找到了一个变量的工作解决方案(每个 VC 中使用的全局变量)。 .m 文件看起来像:

#import "DataClass.h"

@implementation DataClass
@synthesize str;
@synthesize credits;
@synthesize points;
@synthesize globalName;
@synthesize questionsCount;
@synthesize wrongQuestionsCount;
@synthesize correctQuestionsCount;

static DataClass *instance = nil;

+(DataClass *)getInstance
{
    @synchronized(self)
    {
        if(instance==nil)
        {
            instance= [DataClass new];
        }
    }
    return instance;
}

每次我使用 getInstance 方法调用数据类对象来使用/修改变量时。 该方法现在获得了一些 NSString 参数并且还返回一个 NSString 。

所以我的问题是 .. 我可以使用同一个类来使我的 callPostURL 方法全局化并且可用于我的应用程序中的每个 VC 吗? 我应该使用 DataClass 还是有更好的解决方案?

【问题讨论】:

  • 使用单例类来处理模型层及其相关任务是绝对正常的——我不建议使用出现在@David的答案中的解决方案,这对于这样的情况。
  • 是的..即使看着 cmets(知道这是不对的)我尝试使用它,它给了我两个我最喜欢的 (LINK O MATCHER) 错误,我无法修复......所以我将等待更好的解决方案。

标签: ios objective-c methods global


【解决方案1】:

您可以使用内联静态方法使其随处可用。

例如,在您的 AppDelegate.h 中,创建一个这样的函数,您可以在任何地方使用它。

static inline BOOL myTestMethod(NSString *aString, NSInteger anInteger) {
    ...
}

然后在您的实现中,您可以这样称呼它:BOOL rep = myTestMethod(@"foo", 1);
不要忘记在要使用该功能的文件中#import 头文件。

【讨论】:

  • 默认情况下,pch 文件在 Xcode 6 中被删除,并且有充分的理由,您不应该将全局函数或属性放在这里 - 不要将其用作垃圾抽屉,因为它的坏习惯是它变得难以维护并大大减慢您的编译时间
猜你喜欢
  • 2020-03-04
  • 2021-10-18
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多