
本發明涉及計算機技術領域,尤其涉及一種簡化代碼的方法和裝置。
背景技術:
隨著智能設備的廣泛使用,應用的功能也越來越豐富。以直播應用為例,用戶使用直播應用時,大部分時間都停留在直播頁面觀看直播視頻。直播頁面需要為用戶提供大量功能,例如發送彈幕、聊天、發送虛擬禮物、接收虛擬禮物、充值、屏蔽用戶、舉報用戶、觀看直播、調節亮度、調節聲音和旋轉屏幕方向等。在現有技術中,上述直播頁面的功能對應的各個代理以及代理協議都容置在界面控制器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、光學存儲器等)上實施的計算機程序產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。