一种简化代码的方法和装置与流程

文档序号:11154388阅读:786来源:国知局
一种简化代码的方法和装置与制造工艺

本发明涉及计算机技术领域,尤其涉及一种简化代码的方法和装置。



背景技术:

随着智能设备的广泛使用,应用的功能也越来越丰富。以直播应用为例,用户使用直播应用时,大部分时间都停留在直播页面观看直播视频。直播页面需要为用户提供大量功能,例如发送弹幕、聊天、发送虚拟礼物、接收虚拟礼物、充值、屏蔽用户、举报用户、观看直播、调节亮度、调节声音和旋转屏幕方向等。在现有技术中,上述直播页面的功能对应的各个代理以及代理协议都容置在界面控制器UIViewController中。因此,使得UIViewController中包含了大量代码。

然而,过多的代码会给功能扩充和维护应用带来困难。



技术实现要素:

本发明实施例提供了一种简化代码的方法和装置,用于简化UIViewController中的代码。

第一方面,本发明提供了一种简化代码的方法,包括:

创建界面控制器类、目标功能类和目标功能代理类,所述目标功能类用于实现目标应用的目标功能;

在所述界面控制器类中创建所述目标代理类的目标代理对象;

控制所述目标代理类代理所述目标功能类,以使得通过所述目标代理对象能够监听所述目标功能类的方法,进而界面控制器类能够监听所述目标功能类。

可选的,创建界面控制器类、目标功能类和目标功能代理类,包括:

创建界面控制器类的头文件和源代码文件;

创建目标功能类的头文件和源代码文件;

创建目标代理类的头文件和源代码文件。

可选的,控制所述目标代理类代理所述目标功能类,包括:

控制所述目标代理类继承缺省基类NSObject类;

控制所述目标代理类遵守所述目标功能类的代理协议。

可选的,在所述界面控制器类中创建所述目标代理类的目标代理对象,包括:

在所述界面控制器的源代码文件中创建所述目标代理类的目标代理对象。

可选的,所述方法还包括:

所述目标功能类中不能通过方法回调的代码通过performSelector方法回传到所述界面控制器类的源代码文件中。

第二方面,本发明提供了一种简化代码的装置,包括:

第一创建模块,用于创建界面控制器类、目标功能类和目标功能代理类,所述目标功能类用于实现目标应用的目标功能;

第二创建模块,用于在所述界面控制器类中创建所述目标代理类的目标代理对象;

控制代理模块,用于控制所述目标代理类代理所述目标功能类,以使得通过所述目标代理对象能够监听所述目标功能类的方法,进而界面控制器类能够监听所述目标功能类。

可选的,所述第一创建模块用于创建界面控制器类的头文件和源代码文件,创建目标功能类的头文件和源代码文件,创建目标代理类的头文件和源代码文件。

可选的,所述控制代理模块用于控制所述目标代理类继承缺省基类NSObject类;控制所述目标代理类遵守所述目标功能类的代理协议。

可选的,所述第二创建模块用于在所述界面控制器的源代码文件中创建所述目标代理类的目标代理对象。

可选的,所述装置还包括回传模块,用于所述目标功能类中不能通过方法回调的代码通过performSelector方法回传到所述界面控制器类的源代码文件中。

本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:

在本发明实施例的技术方案中,首先创建界面控制器类、目标功能类和目标功能代理类,其中,目标功能类用于实现目标应用的目标功能,然后在界面控制器类中创建所述目标代理类的目标代理对象,以及控制所述目标代理类代理所述目标功能类。相较于现有技术中将各个目标代理对象和代理方法均创建在界面控制器类中,由于本发明实施例以目标代理类代理目标功能类,同时将目标代理类的目标代理对象创建在界面控制器类中,所以,使得目标代理对象可以监听未在界面控制器类中的目标功能类的方法,由此使得界面控制器可以正常监听目标功能类。由此可见,本发明实施例中的目标功能类不在界面控制器类中,所以简化了界面控制器的代码,便于维护。

附图说明

图1为本发明实施例中的简化代码的方法流程图;

图2为现有技术中UIViewController和代理方法的架构示意图;

图3为本发明实施例中UIViewController、代理方法和目标代理对象的架构示意图;

图4为本发明实施例中的简化代码的装置结构示意图。

具体实施方式

本发明实施例提供了一种简化代码的方法和装置,用于简化UIViewController中的代码。

为了解决上述技术问题,本发明提供的技术方案思路如下:

在本发明实施例的技术方案中,首先创建界面控制器类、目标功能类和目标功能代理类,其中,目标功能类用于实现目标应用的目标功能,然后在界面控制器类中创建所述目标代理类的目标代理对象,以及控制所述目标代理类代理所述目标功能类。相较于现有技术中将各个目标代理对象和代理方法均创建在界面控制器类中,由于本发明实施例以目标代理类代理目标功能类,同时将目标代理类的目标代理对象创建在界面控制器类中,所以,使得目标代理对象可以监听未在界面控制器类中的目标功能类的方法,由此使得界面控制器可以正常监听目标功能类。由此可见,本发明实施例中的目标功能类不在界面控制器类中,所以简化了界面控制器的代码,便于维护。

下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本发明第一方面提供了一种简化代码的方法,请参考图1,为本发明实施例中简化代码的方法流程图。该方法包括:

S101:创建界面控制器类、目标功能类和目标功能代理类,所述目标功能类用于实现目标应用的目标功能;

S102:在所述界面控制器类中创建所述目标代理类的目标代理对象;

S103:控制所述目标代理类代理所述目标功能类,以使得通过所述目标代理对象能够监听所述目标功能类的方法,进而界面控制器类能够监听所述目标功能类。

具体来讲,界面控制器UIViewController类是用于控制界面的类。目标应用例如直播应用、购物应用、聊天应用或修图应用等,本发明不做具体限制。目标功能为目标应用的功能,例如目标应用为直播应用,目标功能为充值功能、赠送虚拟礼物功能、聊天功能和调节亮度功能等。

在具体实现过程中,本发明所属领域的普通技术人员可以根据目标应用需要安装的客户端的实际情况创建界面控制器类、目标功能类和目标功能代理类,本发明不做具体限制。其中,在本发明实施例中,S101中创建界面控制器类、目标功能类和目标代理类可以通过如下过程实现:

创建界面控制器类的头文件和源代码文件;

创建目标功能类的头文件和源代码文件;

创建目标代理类的头文件和源代码文件。

为了方便说明,本发明将假设目标应用将安装的客户端设备的智能系统为苹果移动设备操作系统iso,进而本发明实施例中创建界面控制器类、目标功能类和目标代理类将使用Xcode进行创建。Xcode是苹果公司开发的编程软件。

使用Xcode创建类时,需要创建类的头文件(.h文件)和源代码文件(.m文件)。因此本发明实施例在创建界面控制器类、目标功能类和目标功能代理类时,也需要相应地创建界面控制器类的头文件和源代码文件,目标功能类的头文件和源代码文件,以及目标代理类的头文件和源代码文件。

举例来说,假设界面控制器类名为UIViewController,则创建UIViewController类时需要创建UIViewController.h文件和UIViewController.m文件。假设目标功能类名为OldA、OldB、OldC、…,则创建目标功能类时,需要创建OldA.h文件、OldA.m文件、OldB.h文件、OldB.m文件、OldC.h文件、OldC.m文件等,依次类推。假设目标代理类名为NewA、NewB、NewC、…则创建目标代理类时需要创建NewA.h文件、NewA.m文件、NewB.h文件、NewB.m文件、NewC.h文件、NewC.m文件等,依此类推。

本发明实施中创建的目标代理类的数量可以与目标功能类的数量一致,也可以不一致,本发明所属领域的普通技术人员可以根据实际进行设置,本发明不做具体限制。

另外,为了使得目标功能类能够实现目标应用的目标功能,还需要根据每个目标功能类对应的目标功能在该目标功能类的头文件中创建函数声明,并且在该目标功能类的源代码文件中创建各个函数,通过创建的函数实现目标功能。

创建完成界面控制器类、目标功能类和目标代理类后,执行S102和S103。其中,在S102中,在界面控制器类中创建目标代理类的目标代理对象。具体来讲,S102通过如下过程实现:

在所述界面控制器的源代码文件中创建所述目标代理类的目标代理对象。

在本发明实施例中,将目标代理类的目标代理对象创建在界面控制器中,具体为将目标代理对象创建在UIViewController.m文件中。具体为通过newA*newAObject=[[newA alloc]init]创建NewA类的对象NewAObject。对于其他NewB和NewC等目标代理类,通过类似的方法创建,此处就不在一一赘述了。

另外,为了使得目标代理类能够监听目标功能类的方法,在S103中,将控制目标代理类代理目标功能类。在本发明实施例中,S103可以通过如下过程实现:

控制所述目标代理类继承缺省基类NSObject类;

控制所述目标代理类遵守所述目标功能类的代理协议。

首先,控制目标代理类继承缺省基类NSObject类。以NewA类为例,具体为在NewA.h文件中通过@interface NewA:NSObject来声明NewA继承NSObject类。对于其他NewB和NewC等,通过类似的方法继承,此处就不在一一赘述了。目标代理类通过继承NSObject,使得目标代理类可以继承访问NSObject运行时的接口,并让目标代理对象继承Objective-C(苹果开发语言的简称)对象的基本方法,例如下载Load方法和初始化initialize方法等。

另外,控制目标代理类遵守目标功能类的代理协议。在本发明实施例中,可以使目标代理类代理类似名字的目标功能类,如NewA代理OldA,NewB代理OldB,NewC代理OldC等,依次类推。或者,也可以任意目标代理类代理任意目标功能类,即NewA代理OldC,NewB代理OldD等。在具体实现过程中,本发明所属领域的普通技术人员可以根据实际进行选择,本发明不做具体限制。

在本发明实施例中,将以类似名字的目标代理类代理目标功能类为例来进行后续介绍。以NewA类为例,通过@interface NewA:NSObject<A-Delegate>来使NewA遵守OldA的代理协议,并且通过OldA.delegate=NewAObejct使NewA的对象NewAObject代理OldA,进而使得NewA.m文件中能够实现OldA中的方法,进而监听OldA的方法。对于其他NewB和NewC等,通过类似的方法代理,此处就不在一一赘述了。

在具体实现过程中,S102和S103的执行顺序可以按照具体实现过程进行设置。具体来讲,可以先控制目标代理类代理目标功能类,再在UIViewController类中创建目标代理类的目标代理对象;或者,先在UIViewControlle类中创建目标代理类的目标代理对象,再控制目标代理类代理目标功能类,本发明不做具体限制。

由于目标代理类的目标代理对象代理了目标功能类,所以目标代理对象可以监听目标功能类的方法,而目标代理对象又在UIViewController类中,所以,UIViewController类就可以接收和监听目标功能类对象的消息。例如OldA的A对象接收到用户发的弹幕或者最新收到的虚拟礼物,那么UIViewController也可以收到了用户发的弹幕或者最新收到的虚拟礼物,进而对A对象的消息进行一些处理,例如显示弹幕和礼物等。

由上述描述可以看出,在本发明实施例中由于没有将代理目标功能类的方法创建在UIViewController类中,由此减少了UIViewController中的代码。控制目标代理类代理目标功能类,进而使得目标代理对象能够监听目标功能类的方法,而目标代理对象创建在UIViewController类中,由此使得UIViewController能够正常监听目标功能类。

为了更加清楚地说明本发明的技术效果,请参考图2和图3。图2示出了现有技术中UIViewController和代理方法的架构示意图,图3示出了本发明实施例中UIViewController、代理方法和目标代理对象的架构示意图。

在现有技术中,UIViewController类直接代理各个对象的方法,所以导致UIViewController类中存在大量代码,如图2所示。而本发明实施例中,UIViewController类的大量代码被简化成一个多个目标代理对象,如图3所示,通过目标代理对象监听目标功能类的各个方法,由此简化了代码。

其中,图2和图3中的“OldA的方法1”表示目标功能类OldA的第1个方法,其他诸如“OldA的方法2”、“OldB的方法1”等表示的意义类似。在图3中,“NewAObject”与“OldA的方法1”的连接线,表示NewAObject对象代理OldA的方法1。其他连接线的意义类似。

另外,本发明实施例还包括:

所述目标功能类中不能通过方法回调的代码通过performSelector方法回传到所述界面控制器类的源代码文件中。

具体来讲,如果目标功能类中存在不能通过方法回调的代码,则通过performSelector方法回传到UIViewController.m文件中即可。

基于与前述实施例中简化代码的方法同样的发明构思,本发明第二方面还提供一种简化代码的装置,如图4所示,包括:

第一创建模块101,用于创建界面控制器类、目标功能类和目标功能代理类,所述目标功能类用于实现目标应用的目标功能;

第二创建模块102,用于在所述界面控制器类中创建所述目标代理类的目标代理对象;

控制代理模块103,用于控制所述目标代理类代理所述目标功能类,以使得通过所述目标代理对象能够监听所述目标功能类的方法,进而界面控制器类能够监听所述目标功能类。

其中,具体来讲,第一创建模块101用于创建界面控制器类的头文件和源代码文件,创建目标功能类的头文件和源代码文件,创建目标代理类的头文件和源代码文件。

控制代理模块103用于控制所述目标代理类继承缺省基类NSObject类;控制所述目标代理类遵守所述目标功能类的代理协议。

第二创建模块102用于在所述界面控制器的源代码文件中创建所述目标代理类的目标代理对象。

进一步,本发明实施例中的简化代码的装置还包括回传模块,用于所述目标功能类中不能通过方法回调的代码通过performSelector方法回传到所述界面控制器类的源代码文件中。

前述图1-图3实施例中的简化代码的方法的各种变化方式和具体实例同样适用于本实施例的简化代码的装置,通过前述对简化代码的方法的详细描述,本领域技术人员可以清楚的知道本实施例中简化代码的装置的实施方法,所以为了说明书的简洁,在此不再详述。

本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:

在本发明实施例的技术方案中,首先创建界面控制器类、目标功能类和目标功能代理类,其中,目标功能类用于实现目标应用的目标功能,然后在界面控制器类中创建所述目标代理类的目标代理对象,以及控制所述目标代理类代理所述目标功能类。相较于现有技术中将各个目标代理对象和代理方法均创建在界面控制器类中,由于本发明实施例以目标代理类代理目标功能类,同时将目标代理类的目标代理对象创建在界面控制器类中,所以,使得目标代理对象可以监听未在界面控制器类中的目标功能类的方法,由此使得界面控制器可以正常监听目标功能类。由此可见,本发明实施例中的目标功能类不在界面控制器类中,所以简化了界面控制器的代码,便于维护。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1