一种跳转到指定模块的方法及电子设备与流程

文档序号:19679657发布日期:2020-01-14 17:10阅读:168来源:国知局
一种跳转到指定模块的方法及电子设备与流程

本发明涉及互联网移动端应用开发领域,尤其涉及一种跳转到指定模块的方法及电子设备。



背景技术:

随着移动端互联网的发展,尤其是近年来手机移动端的快速发展,移动端app越来越多,app的内容越来越丰富、功能越来越复杂,为实现这些功能,在移动开发过程中会涉及很多模块以及模块之间相互跳转。

在程序开发过程中,程序通常由头文件和定义文件组成,头文件是一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。一般在一个应用开发体系中,功能的真正逻辑实现是以硬件层为基础,在驱动程序、功能程序以及用户应用程序中完成,头文件的主要作用在于多个代码文件全局变量(函数)的重用、防止定义的冲突,对各个被调用的函数给出一个描述,其本身不需要包含程序的逻辑实现代码,其只起描述性作用,用户程序只需要按照头文件的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。头文件是用户应用程序和函数库之间的桥梁和纽带,编译时,编译器通过头文件找到对应的函数库,进而把已引用函数的实际内容导出代替原有函数。

常规的方案是:当需要从模块1跳转到a模块时,首先需要创建a模块,其次导入a模块的头文件,传入a模块需要的运行参数;如果需要跳转到b模块,首先需要创建b模块,其次导入b模块的头文件,传入b模块需要的运行参数;当需要从b模块跳转到a模块时,需要导入a模块的头文件,传入a模块的参数,实现在b模块中导入a模块的功能,这样的结果是模块1需要引入a模块和b模块,模块a需要引入b模块,如果有更多的模块需要更多的跳转关系,每个模块之间相互交叉依赖,导致模块之间耦合度很高,在运行应用程序时,不利于模块的单独维护,因此降低模块间的密切程度,以降低两组件之间的耦合度,减少模块之间相互依赖的程度,寻求一种低耦合的跳转到指定模块的方法十分必要。



技术实现要素:

针对以上问题,本发明提供了一种跳转到指定模块的方法及电子设备,用于解决现有技术中模块之间相互跳转,需要导入过多模块参数,模块调用关系复杂、依赖性强、耦合度高的问题。

本发明公开的一种跳转到指定模块的方法,指定模块对应有一个url,方法包括:

s1:提取所述url的关键字、参数名和模块名,创建第一字典,用于存储所述关键字、参数名和模块名;

s2:提取url中的path字段,并对该path字段进行处理,得到跳转函数actionname;

s3:取出第一字典中参数的参数名,通过所述跳转函数actionname在预设的第二字典中获取与所述参数名对应的指定模块。

可选地,步骤s3包括:

若第二字典中不存在指定模块,则创建该指定模块module,并使该指定模块执行跳转函数actionname。

可选地,使指定模块module执行跳转函数actionname包括:

s1’:得到module的方法签名methodsig;

s2’:函数调用类nsinvocation通过方法签名methodsig创建调用函数invocation;

s3’:将第一字典设置为invocation的函数调用,将action设置为invocation需要调用的函数,利用invocation函数来调用invoke方法,完成函数调用。

可选地,url由模块名、参数名和关键字构成,步骤s1还包括:

用不同的隔开符号分别将模块名、参数名和关键字隔开,将隔开的模块名、参数名和关键字存储到第一字典中。

可选地,url中含有path字段,步骤s2还包括:

将path字段中分隔符用斜杠和空字符串替换得到跳转函数actionname。

本发明还提供了一种电子设备,包括:

处理器;

存储器,其存储有计算机可执行程序,该程序在被处理器执行时,使得处理器执行:

s1:提取所述url的关键字、参数名和模块名,创建第一字典,用于存储所述关键字、参数名和模块名;

s2:提取url中的path字段,并对该path字段进行处理,得到跳转函数actionname;

s3:取出第一字典中参数的参数名,通过所述跳转函数actionname在预设的第二字典中获取与所述参数名对应的指定模块。

可选地,存储器中的程序还包括:

若第二字典中不存在指定模块,则创建该指定模块module,并使该指定模块执行跳转函数actionname。

可选地,存储器中的执行程序使指定模块module执行跳转函数actionname包括:

s1’:根据action得到module的方法签名methodsig;

s2’:函数调用类nsinvocation通过方法签名methodsig创建调用函数invocation;

s3’:将第一字典设置为invocation的函数调用,将action设置为invocation需要调用的函数,利用invocation函数来调用invoke方法,完成函数调用。

可选地,存储器中的程序url由模块名、参数名和关键字构成,所述处理器用不同的隔开符号分别将模块名、参数名和关键字隔开,将隔开的模块名、参数名和关键字存储到第一字典中。

可选地,存储器中的程序url中含有path字段,处理器还执行:

将path字段中分隔符用斜杠和空字符串替换得到跳转函数actionname。

本发明通过设置基本模块和中间模块,通过基本模块提供基本的跳转接口,基本模块包括统一资源定位符(url)和一个代码块类型的completion程序,创建可变参数的第一字典params,将字符串分割,提取隔开的模块名、参数名和关键字存储到上述第一字典中,通过将url中的path字段变换得到跳转函数actionname,中间跳转模块中,通过跳转函数从第二字典或新创建的模块module中得到所要跳转到的模块。通过上述方法使跳转时只需导入相关模块即可,无需导入每个文件相关头文件,降低耦合度;中间跳转模块中,外界需要调用某个模块时无需引用模块名字,只需引用头文件模块即可,进一步降低耦合度。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开实施例提供的用于跳转到指定模块的流程图。

图2示意性示出了根据本公开的电子设备框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”、或“a和b”的可能性。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

为了解决现有技术中模块之间相互跳转,需要导入过多模块参数,模块调用关系复杂、依赖性强、耦合度高的问题,本发明提供了一种跳转到指定模块的方法和电子设备,本发明通过设置基本模块和中间模块,通过基本模块提供基本的跳转接口,基本模块包括统一资源定位符(url)和一个代码块类型的completion程序,创建可变参数的第一字典params,将字符串分割,提取隔开的模块名、参数名和关键字存储到上述第一字典中,通过将url中的path字段变换得到跳转函数actionname,中间跳转模块中,通过跳转函数actionname从第二字典或新创建的模块module中得到所要跳转到的模块。通过上述方法使跳转时只需导入相关模块即可,无需导入每个文件相关头文件,降低耦合度;中间跳转模块中,外界需要调用某个模块时无需引用模块名字,只需引用头文件模块即可,进一步降低耦合度。同时根据action可以得到module的方法签名methodsig,通过方法签名的方式实现消息的转发,方法签名具有容错处理,当出现错误时,程序不会崩溃导致退出或异常,保证消息转发的正确性和完备性,实现消息无感知,准确的转发。

下面通过具体的实施例对本发明进行的技术方案做进一步的详细说明。

图1示意性示出了根据本公开实施例提供的用于跳转到指定模块的方法的流程图,其中指定模块可以为指定页面、指定接口、指定程序等。

如图1所示,方法包括如下操作:

s1:提取所述url的关键字、参数名和模块名,创建第一字典,用于存储所述关键字、参数名和模块名参数。

通过init函数和alloc函数创建第一字典,alloc函数可返回一个指向n个连续字符存储单元的指针,alloc函数的调用者可以利用该指针存储字符序列,该第一字典是一个参数可变的字典params;外界的输入参数为url,通过query查询函数得到url所对应的字符串为urlstring,得到字符串urlstring后,将urlstring里面的分隔符分割,具体分割方法如下:

将urlstring中的关键字使用&分割,而后将关键字提取出来存储到上述第一字典params中;

该urlstring中的模块名和参数名,模块名使用&隔开,参数名使用=隔开,隔开符号是事先约定的,也可以是其他的约定符号进行隔开,而后需要将隔开的模块名和参数名提取出来存储在上述第一字典params中。

如果存在completion,可以通过字典的key将completion存储到字典params中。

s2:提取所述url中的path字段,并对该path字段进行处理,得到跳转函数actionname;

通过将url中的path字段的分隔符用斜杠和空字符串替换可以得到跳转函数actionname。

s3:取出第一字典中参数的参数名,通过所述跳转函数actionname在预设的第二字典中获取与所述参数名对应的指定模块。

从字典params中找到模块名字的字符串actionname,此时actionname对应的模块会构成新的预设字典即第二字典。第一字典中通过跳转函数actionname从第二字典中取出对应的value值即指定模块;或,value值不存在,则使用alloc函数和init函数创建新的指定模块module,使module执行跳转函数actionname,如果module没有响应跳转函数actionname,会直接返回,执行操作会被终止;如果module响应了执行函数actionname,就让action函数执行跳转函数actionname,执行过程如下:

-(id)safeperformaction:(sel)actionmodule:(nsobject*)moduleparams:(nsdictionary*)params

其中,action函数执行跳转函数actionname具体如下:

s1’:根据action函数来得到module的方法签名methodsig。

根据action函数来得到一个module的方法签名,所谓的方法签名是指一个函数固定的标示,得到方法签名的字符串是methodsig,首先需要判断这个methodsig是否存在,如果不存在就直接返回;如果存在,得到方法签名之后,通过获得方法函数的返回值函数methodreturntype,来获得这个函数的返回值的类型rettype。

s2’:函数调用类nsinvocation通过方法签名methodsig创建调用函数invocation。

通过得到的方法签名methodsig,函数调用类nsinvocation通过方法签名methodsig创建调用函数invocation。

s3’:将所述第一字典params设置为invocation的函数调用,将action函数设置为invocation需要调用的函数,利用invocation函数来调用invoke方法,完成函数调用。

通过invocation执行setargument函数,将获取到的参数字典params设置为invocation的函数调用,得到action设置为invocation需要调用的函数,通过设置响应者函数settarget,为action模块设置该函数将被谁调用,最后利用invocation函数来调用invoke方法,从而完成函数的调用。定义一个result函数,设定初始值为0,使用invocation调用函数getreturnvalue,函数getreturnvalue可以获取函数返回值,其需要一个参数作为result的指针,最后返回result,这个函数就完成消息调用。

另外,当不能完成上述函数的转发和调用时,使用module调用performselector来完成函数的调用,performselector函数需要调用第一字典params中的参数。

通过以上方式使得对模块的调用转化为action和params的模块调用,通过基本模块创建可变参数的第一字典params,将字符串分割,提取隔开的模块名、参数名和关键字存储到上述第一字典中,通过替换url中path字段的分隔符可以得到跳转函数actionname,通过跳转函数actionname就可以从第一字典params或新创建的模块module中取出指定模块即value值。使用该方法跳转时只需导入相关模块即可,无需导入每个文件相关头文件,降低耦合度;中间跳转模块中需要调用某个模块时无需引用模块名字,只需引用模块化头文件即可,进一步降低耦合度。同时根据action函数可以得到module的方法签名methodsig,通过方法签名的方式实现消息的转发,方法签名具有容错处理,当出现错误时,程序不会崩溃导致退出或异常,保证消息转发的正确性和完备性,实现消息无感知,准确的转发。

如图2所示,电子设备200包括处理器210、计算机刻度存储介质220。该电子设备200可以执行图1描述的方法,进行消息处理。

具体地,处理器210例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器210还可以包括用于缓存用途的板载存储器。处理器210可以是用于执行参考图1描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质220,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

计算机可读存储介质220可以包括计算机程序221,该计算机程序221可以包括代码/计算机可执行指令,其在由处理器210执行时使得处理器210执行例如上面结合图1所描述的方法流程及其任何变形。

计算机程序221可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序221中的代码可以包括一个或多个程序模块,例如包括221a、模块221b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器210执行时,使得处理器210可以执行例如上面结合图1所描述的方法流程及其任何变形。

本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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