Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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_Ios7 - Fatal编程技术网

Ios 如何将大班分成小班?

Ios 如何将大班分成小班?,ios,objective-c,ios7,Ios,Objective C,Ios7,我正在重构一个iOS应用程序,其中一个类非常庞大。它包含三个关键功能。检查更新、下载更新和处理更新 我的问题是,如何将这些文件拆分为单独的类(文件),然后将其包含在核心类文件(TableViewController)中,并从中运行必要的函数? 目前,所有的逻辑都在一个TableViewController类中,这并不理想 我想要一个类似的结构,因为我认为它最有意义: TableViewController //导入CheckForUpdates.h //导入下载更新 //导入ProcessUp

我正在重构一个iOS应用程序,其中一个类非常庞大。它包含三个关键功能。检查更新、下载更新和处理更新

我的问题是,如何将这些文件拆分为单独的类(文件),然后将其包含在核心类文件(TableViewController)中,并从中运行必要的函数?

目前,所有的逻辑都在一个TableViewController类中,这并不理想

我想要一个类似的结构,因为我认为它最有意义:

  • TableViewController
  • //导入CheckForUpdates.h
  • //导入下载更新
  • //导入ProcessUpdates.h
我不知道这三个文件需要什么“类型”的类才能实现这一点,如果这有意义的话。我有一个核心类(TableViewController),其中包括这三个附加类。这3个额外的类是什么,按类型划分的?它们是非实物吗?他们甚至需要上课吗


抱歉说得含糊不清。我试图抽象出三个关键流程的功能,以使代码更整洁、更易于管理。“CheckForUpdate”选项可能会在代码中的多个位置使用

在Obj-C中,有三种基本的分类方法:

  • 采用实用程序方法,并使用类别将其添加到系统类中。典型的例子是使用
    NSDate
    NSURL
    的方法。在这种情况下,您可以添加一种方法来检查更新,例如
    NSURL
    NSURLConnection

  • 您只需使用一组方法并在控制器上创建一个类别
    TableViewController+CheckForUpdates.h
    。这实际上不会分割类,但会将方法分割成不同的文件

  • 服务类-您获取一个功能并创建一个新类,例如
    MyUpdater
    。这可以扩展
    NSObject
    ,但也可以扩展任何其他类。如果需要,甚至服务也可以有一个共同的祖先

  • 我不完全确定将“检查更新”与“下载更新”分开是否有意义。这两个动作中都必须有一些共同的功能


    在这种情况下,我相信第三个选项是最好的,但不要让控制器看到3个不同的类。理想情况下,控制器应将更新视为一个类,包含3个方法-一个用于检查更新,一个用于下载更新,另一个用于处理更新。您可以再次将updater类的实现拆分为更多的类,但控制器应该看到一个简单的接口。

    是的,抱歉。当我提到单独的类时,我倾向于使用单独的实现。我不希望所有的方法都在一个位置,这会使调试变得非常乏味。在本例中,检查更新只意味着查询API并返回计数。因此,对于流程的这一方面来说,也许一个类别会更好,因为我需要能够在多个地方进行检查。然后,我可以根据需要在“DownloadUpdates”方面实现更新检查。谢谢,这让事情更清楚了。