Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 所有视图的侦听器_Ios_Objective C - Fatal编程技术网

Ios 所有视图的侦听器

Ios 所有视图的侦听器,ios,objective-c,Ios,Objective C,对不起,我想问一个很小的问题,但是我在ios和objective-c编程方面的经验非常少,所以我自己无法想出如何在一个地方使用一些方法,这些方法将适用于我所有的视图控制器(我不想通过在我所有的类中粘贴这个方法来增加代码)。这是一个简单的方法,它将在后台线程中连接到服务器并从中接收一些数据。这个方法是我写的,我只需要想一想如何使它在不增加代码的情况下适用于所有视图控制器 您有一些选择: 创建UIViewController的子类,并定义自定义类的所有viewcontroller子类,而不是UIV

对不起,我想问一个很小的问题,但是我在ios和objective-c编程方面的经验非常少,所以我自己无法想出如何在一个地方使用一些方法,这些方法将适用于我所有的视图控制器(我不想通过在我所有的类中粘贴这个方法来增加代码)。这是一个简单的方法,它将在后台线程中连接到服务器并从中接收一些数据。这个方法是我写的,我只需要想一想如何使它在不增加代码的情况下适用于所有视图控制器

您有一些选择:

  • 创建
    UIViewController
    的子类,并定义自定义类的所有viewcontroller子类,而不是
    UIViewController
  • 使用该方法的实现创建
    UIViewController
    的类别
  • 使用声明为类方法的方法创建类:
例如:
连接管理器

+ (NSArray *) getData;
连接管理器

+ (NSArray *) getData{
    //method implementation
}
您可以从视图控制器调用它,如下所示:

[ConnectionManager getData]
最后一个选项的变体是创建对象

您有一些选择:

  • 创建
    UIViewController
    的子类,并定义自定义类的所有viewcontroller子类,而不是
    UIViewController
  • 使用该方法的实现创建
    UIViewController
    的类别
  • 使用声明为类方法的方法创建类:
例如:
连接管理器

+ (NSArray *) getData;
连接管理器

+ (NSArray *) getData{
    //method implementation
}
您可以从视图控制器调用它,如下所示:

[ConnectionManager getData]

最后一个选项的变体是创建对象

对于“所有视图控制器”,这样做似乎很奇怪。连接到网络以获取数据对我来说似乎是每个视图控制器特有的

无论如何,你可以在一个类别中做类似的事情

@interface UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere;

@end
而且

@implemnetation UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere {
    // do your networking stuff here.
}

@end
这意味着在任何视图控制器中,您都可以

[self thisIsYouMethodHere];

它将运行类别中的代码。

对于“所有视图控制器”这样做似乎很奇怪。连接到网络以获取数据对我来说似乎是每个视图控制器特有的

@interface UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere;

@end
无论如何,你可以在一个类别中做类似的事情

@interface UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere;

@end
而且

@implemnetation UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere {
    // do your networking stuff here.
}

@end
这意味着在任何视图控制器中,您都可以

[self thisIsYouMethodHere];

它将运行类别中的代码。

您可以将所需的方法放入自己的组件(例如类)中,所有视图控制器都将使用该组件。或者:您可以编写自己的视图控制器,将方法放入其中,并将此基本视图控制器用作所有其他视图控制器的基类。您可以将所需的方法放入所有视图控制器将使用的自己的组件(例如类)中。或者:您可以编写自己的视图控制器,将您的方法放在其中,并将此基本视图控制器用作所有其他视图控制器的基类。因此,只能使用OOP来完成此操作,而objective-c中没有执行“当应用程序正在运行时-方法正在工作”的机制。“当应用程序正在运行时-方法正在工作”是什么意思?应用程序启动,每5分钟(例如)连接一次服务器(在我的情况下)。您可以在单例或AppDelegate类中实现它。但是你必须自己实现所有的逻辑,没有现成的Obj-C方法可以做到这一点。因此,只有使用OOP才能做到这一点,objective-C中没有任何机制可以做到“当应用程序运行时-方法运行”?你说“当应用程序运行时-方法运行时”是什么意思?应用程序每5分钟启动一次(例如)它连接到服务器(在我的例子中)。您可以在单例或AppDelegate类中实现它。但是你必须自己实现所有的逻辑,没有现成的Obj-C方法来实现。
@interface UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere;

@end