WO2019041668A1 - 组件工程调用主工程代码的方法、存储介质、设备及系统 - Google Patents
组件工程调用主工程代码的方法、存储介质、设备及系统 Download PDFInfo
- Publication number
- WO2019041668A1 WO2019041668A1 PCT/CN2017/117386 CN2017117386W WO2019041668A1 WO 2019041668 A1 WO2019041668 A1 WO 2019041668A1 CN 2017117386 W CN2017117386 W CN 2017117386W WO 2019041668 A1 WO2019041668 A1 WO 2019041668A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- component
- engineering
- project
- main
- file
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Abstract
一种组件工程调用主工程代码的方法、存储介质、设备及系统,涉及软件开发领域,该方法包括:在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问的Target类作为组件工程的对外接口暴露(S1),所述消息转发组件用于接收消息;在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中(S2);通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工程方法(S3)。该方法能够有效提升iOS开发的效率。
Description
本发明涉及软件开发领域,具体涉及一种组件工程调用主工程代码的方法、存储介质、设备及系统。
随着移动应用功能需求的逐步迭代,应用的代码体积也越来越大,因此为了更好地管理应用工程,iOS组件化是当前iOS系统开发中经常使用的一个方式,借助CocoaPods依赖包管理工具对原有应用工程(主工程)进行拆分,拆分出来的部分单独创建工程,并按照CocoaPods规定的格式封装成能够通过CocoaPods进行管理的组件工程,拆分完成后,在主工程中写入所有拆分出去的组件工程的组件信息,调用CocoaPods的相关命令,即可下载有关的组件工程,并集成到主工程中,从而极大地降低了iOS开发的难度。
主工程的代码能够访问或调用所有组件工程中提供的对外方法,同时组件工程也能够依赖其它的组件工程,即某个组件工程能够访问或调用其它组件工程提供的对外方法,但是,由于依赖包之间无法循环依赖的限制,主工程依赖了各个组件工程,主工程内的代码能够调用组件工程内的代码,但是组件工程却无法依赖主工程,即组件工程内的代码无法调用主工程内的代码。从而导致在推进iOS组件化的过程中,若主工程内的部分代码间耦合度过高,无法单独拆分到某个组件工程中,只能放置于主工程中,而某些组件工程需要访问该部分的代码,相互冲突,影响iOS组件化开发的进程。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种组件工程调用主工程代码的方法,有效提升iOS开发的效率。
为达到以上目的,本发明采取的技术方案是,包括:
S1:在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问的Target类作为组件工程的对外接口暴露,所述消息转发组件用于接收消息;
S2:在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中;
S3:通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工程方法。
在上述技术方案的基础上,所述组件工程中还创建有头文件和Objective-C源代码文件,所述头文件用于对组件工程的Target类进行定义,所述Objective-C源代码文件用于声明组件工程的Target类内部的属性及实现该Target类内部的方法。
在上述技术方案的基础上,所述组件工程具备CocoaPods的目录结构。
在上述技术方案的基础上,组件工程调用扩展文件中的待调用主工程方法具体包括:
S301:组件工程中创建Target类的一对象;
S302:将待调用主工程方法的名称作为字符串参数导入对象中。
本发明还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法。
本发明还提供一种组件工程调用主工程代码的设备,包括存储器
和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的方法。
本发明还提供一种组件工程调用主工程代码的系统,包括:
组件工程创建模块,其用于在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问Target类作为组件工程的对外接口暴露,所述消息转发组件用于接收消息;
主工程创建模块,其用于在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中;
调用模块,其用于通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工程方法。
在上述技术方案的基础上,所述组件工程中还创建有头文件和Objective-C源代码文件,所述头文件用于对组件工程的Target类进行定义,所述Objective-C源代码文件用于对组件工程的Target类内部的属性进行声明以及内部的方法进行实现。
在上述技术方案的基础上,所述组件工程具备CocoaPods的目录结构。
在上述技术方案的基础上,组件工程调用扩展文件中的待调用主工程方法具体包括:组件工程中创建Target类的一对象;将待调用主工程方法的名称作为字符串参数导入对象中。
与现有技术相比,本发明的优点在于:利用iOS中的消息转发机制,在组件工程中创建消息转发组件,将组件工程中能够被其它组件工程和主工程访问Target类作为组件工程的对外接口暴露,然后在主工程中创建Category类扩展文件,将待调用主工程方法的声明和实
现添加至创建的扩展文件中,然后以消息形式发送给组件工程,从而有效进行组件工程对主工程代码或方法的调用,保证iOS开发的进行。
图1为本发明实施例中一种组件工程调用主工程代码的方法的流程图;
图2为本发明实施例中一种组件工程调用主工程代码的设备的结构示意图。
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种组件工程调用主工程代码的方法,适用于iOS开发CocoaPods组件化方案中组件工程对主工程代码的调用,即组件工程对主工程中的方法进行调用。本发明实施例的组件工程调用主工程代码的方法具体包括:
S1:在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问的Target类作为组件工程的对外接口暴露,消息转发组件用于接收消息。组件工程具备CocoaPods的目录结构,在CocoaPods组件化方案中,组件工程通过CocoaPods进行创建,具体的,组件工程通过pod lib create Project进行创建。组件工程间全部或部分依赖,主工程对所有组件工程依赖。Target类用于捕获消息。
组件工程中还创建有头文件和Objective-C(扩充C的面向对象编程语言)源代码文件,头文件用于对组件工程的Target类进行定义,Objective-C源代码文件用于对组件工程的Target类内部的属性进行声明以及内部的方法进行实现。具体的,在组件工程中创建Target.h
文件和Target.m文件,其中Target.h文件即为头文件,主要内容为Target类的定义,包括对外属性和方法的声明;Target.m文件即为Objective-C源代码文件,用于对组件工程的Target类内部的属性进行声明以及内部的方法进行实现。
通过此步骤,在组件工程中创建了消息转发组件,相当于架起在组件工程和主工程之间的桥梁,为组件工程调用主工程方法提供了入口,因为方法实质对应的就是代码,即为组件工程调用主工程代码提供了入口。同时,因主工程对所有组件工程依赖,故主工程可以直接访问组件工程对外提供的方法。
S2:在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中。Category类是Objective-C中的概念,属于iOS SDK(Software Development Kit,软件开发工具包)中的分类,是对类的扩展,iOS开发中通常通过Category来给既有的类增加方法,以扩展既有类的功能。
由于主工程对组件工程依赖,故主工程能够访问到组件工程暴露的Target类。具体的,主工程中创建Target类的Category类的Target_Master.h文件和Target_Master.m文件,将待调用主工程方法的声明添加至Target_Master.h文件中,将待调用主工程方法的实现添加至Target_Master.m文件。Target_Master.h文件和Target_Master.m文件均为Category类的扩展文件。
该步骤相当于定义了主工程中代码调用的出口,通过Objective-C的Category机制,在主工程的中给Target类添加一些方法,这些方法内部调用了组件工程需要调用的主工程中的某些类的某些方法。
S3:通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工
程方法,从而达到组件工程调用主工程方法的目的。
组件工程调用扩展文件中的待调用主工程方法具体包括:
S301:组件工程中创建Target类的一对象,该对象具体的为targetInstace;
S302:将待调用主工程方法的名称作为字符串参数导入对象中,从而完成组件工程调用扩展文件中方法的调用使用。导入过程使用performSelector:withObject:方法。
本发明的组件工程调用主工程代码的方法的原理在于,利用iOS中的消息转发机制,在组件工程中创建消息转发组件,将组件工程中能够被其它组件工程和主工程访问Target类作为组件工程的对外接口暴露,然后在主工程中创建Category类扩展文件,将待调用主工程方法的声明和实现添加至创建的扩展文件中,然后以消息形式发送给组件工程,从而完成组件工程对主工程代码或方法的调用。
另外,对应上述组件工程调用主工程代码的方法,本发明还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例所述的组件工程调用主工程代码的方法的步骤。需要说明的是,所述存储介质包括U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。
参见图2所示,对应上述组件工程调用主工程代码的方法,本发明还提供一种组件工程调用主工程代码的设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例的组件工程调用主工程代码的方法。
本发明还提供一种基于上述组件工程调用主工程代码的方法的组件工程调用主工程代码的系统,包括组件工程创建模块、主工程创
建模块和调用模块。
组件工程创建模块用于在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问Target类作为组件工程的对外接口暴露,消息转发组件用于接收消息;主工程创建模块用于在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中;调用模块用于通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工程方法。
组件工程中还创建有头文件和Objective-C源代码文件,头文件用于对组件工程的Target类进行定义,Objective-C源代码文件用于对组件工程的Target类内部的属性进行声明以及内部的方法进行实现。组件工程具备CocoaPods的目录结构。组件工程调用扩展文件中的待调用主工程方法具体包括:组件工程中创建Target类的一对象;将待调用主工程方法的名称作为字符串参数导入对象中。
本发明的组件工程调用主工程代码的系统的原理在于,利用iOS中的消息转发机制,组件工程创建模块在组件工程中创建消息转发组件,将组件工程中能够被其它组件工程和主工程访问Target类作为组件工程的对外接口暴露,然后主工程创建模块在主工程中创建Category类扩展文件,将待调用主工程方法的声明和实现添加至创建的扩展文件中,然后以消息形式发送给组件工程,从而完成组件工程对主工程代码或方法的调用。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
- 一种组件工程调用主工程代码的方法,适用于iOS开发CocoaPods组件化方案中组件工程对主工程代码的调用,其特征在于,包括:S1:在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问的Target类作为组件工程的对外接口暴露,所述消息转发组件用于接收消息;S2:在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中;S3:通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工程方法。
- 如权利要求1所述的一种组件工程调用主工程代码的方法,其特征在于:所述组件工程中还创建有头文件和Objective-C源代码文件,所述头文件用于对组件工程的Target类进行定义,所述Objective-C源代码文件用于声明组件工程的Target类内部的属性及实现该Target类内部的方法。
- 如权利要求1所述的一种组件工程调用主工程代码的方法,其特征在于:所述组件工程具备CocoaPods的目录结构。
- 如权利要求1所述的一种组件工程调用主工程代码的方法,其特征在于,组件工程调用扩展文件中的待调用主工程方法具体包括:S301:组件工程中创建Target类的一对象;S302:将待调用主工程方法的名称作为字符串参数导入对象中。
- 一种存储介质,该存储介质上存储有计算机程序,其特征在 于:所述计算机程序被处理器执行时实现权利要求1至4任一项所述的方法。
- 一种组件工程调用主工程代码的设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1至4任一项所述的方法。
- 一种组件工程调用主工程代码的系统,其特征在于,包括:组件工程创建模块,其用于在组件工程中创建消息转发组件,同时将组件工程中能够被其它组件工程和主工程访问Target类作为组件工程的对外接口暴露,所述消息转发组件用于接收消息;主工程创建模块,其用于在主工程中创建Target类的Category类扩展文件,并将待调用主工程方法的声明和实现添加至创建的扩展文件中;调用模块,其用于通过组件工程的对外接口,以消息转发方式将扩展文件发送至组件工程的消息转发组件,组件工程调用扩展文件中的待调用主工程方法。
- 如权利要求7所述的一种组件工程调用主工程代码的系统,其特征在于:所述组件工程中还创建有头文件和Objective-C源代码文件,所述头文件用于对组件工程的Target类进行定义,所述Objective-C源代码文件用于对组件工程的Target类内部的属性进行声明以及内部的方法进行实现。
- 如权利要求7所述的一种组件工程调用主工程代码的系统,其特征在于:所述组件工程具备CocoaPods的目录结构。
- 如权利要求7所述的一种组件工程调用主工程代码的系统,其特征在于:组件工程调用扩展文件中的待调用主工程方法具体包括:组件工程中创建Target类的一对象;将待调用主工程方法的名称 作为字符串参数导入对象中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710772653.5A CN107577483B (zh) | 2017-08-31 | 2017-08-31 | 组件工程调用主工程代码的方法、存储介质、设备及系统 |
CN201710772653.5 | 2017-08-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019041668A1 true WO2019041668A1 (zh) | 2019-03-07 |
Family
ID=61030330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2017/117386 WO2019041668A1 (zh) | 2017-08-31 | 2017-12-20 | 组件工程调用主工程代码的方法、存储介质、设备及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107577483B (zh) |
WO (1) | WO2019041668A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255495A (zh) * | 2018-01-31 | 2018-07-06 | 中国银行股份有限公司 | 一种基于Mediator的组件化方法及系统 |
CN108469993B (zh) * | 2018-04-04 | 2021-04-27 | 武汉斗鱼网络科技有限公司 | 消息转发方法、计算机可读存储介质及电子设备 |
CN110413268B (zh) * | 2018-04-28 | 2023-11-10 | 武汉斗鱼网络科技有限公司 | 一种中间件验证方法、存储介质、设备及系统 |
CN111443945B (zh) * | 2019-01-16 | 2021-08-27 | 北大方正集团有限公司 | 组件代码修改方法及设备 |
CN109933334B (zh) * | 2019-03-13 | 2022-06-07 | 北京字节跳动网络技术有限公司 | 一种程序执行方法、装置、设备及介质 |
CN110083352A (zh) * | 2019-03-20 | 2019-08-02 | 平安普惠企业管理有限公司 | Js代码注入方法、装置、计算机设备及存储介质 |
CN110262790B (zh) * | 2019-07-04 | 2024-05-07 | 平安科技(深圳)有限公司 | 组件生成方法、装置、存储介质及终端设备 |
CN112416310A (zh) * | 2019-08-22 | 2021-02-26 | 杭州萤石软件有限公司 | 一种扩充的面向对象软件开发工具包的功能扩展方法 |
CN110851126A (zh) * | 2019-10-15 | 2020-02-28 | 稿定(厦门)科技有限公司 | iOS平台上自制私有库配置的方法和装置 |
CN111045717B (zh) * | 2019-11-05 | 2024-01-16 | 北京奇艺世纪科技有限公司 | 获取项目依赖包的方法、装置、计算机设备及存储介质 |
CN111352631B (zh) * | 2020-02-21 | 2024-03-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种接口兼容性检测方法及装置 |
CN112748916B (zh) * | 2021-01-13 | 2022-08-23 | 叮当快药科技集团有限公司 | 基于自定义协议的功能模块组件化方法及装置 |
CN114168227A (zh) * | 2021-12-10 | 2022-03-11 | 掌阅科技股份有限公司 | 程序调用的处理方法、电子设备及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201481A (zh) * | 2016-06-30 | 2016-12-07 | 传线网络科技(上海)有限公司 | 应用程序开发系统中的组件管理方法和装置 |
CN106254491A (zh) * | 2016-08-17 | 2016-12-21 | 成都聚美优品科技有限公司 | 一种稳定快捷的ios客户端架构模型 |
CN106775744A (zh) * | 2016-12-28 | 2017-05-31 | 北京五八信息技术有限公司 | 一种生成静态库的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677854A (zh) * | 2013-12-31 | 2014-03-26 | 曙光云计算技术有限公司 | 适用于云计算环境下的osgi-web框架的设计方法和系统 |
CN106897057B (zh) * | 2017-01-20 | 2020-10-16 | 北京奇虎科技有限公司 | 插件调用通知栏的方法及装置 |
-
2017
- 2017-08-31 CN CN201710772653.5A patent/CN107577483B/zh active Active
- 2017-12-20 WO PCT/CN2017/117386 patent/WO2019041668A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201481A (zh) * | 2016-06-30 | 2016-12-07 | 传线网络科技(上海)有限公司 | 应用程序开发系统中的组件管理方法和装置 |
CN106254491A (zh) * | 2016-08-17 | 2016-12-21 | 成都聚美优品科技有限公司 | 一种稳定快捷的ios客户端架构模型 |
CN106775744A (zh) * | 2016-12-28 | 2017-05-31 | 北京五八信息技术有限公司 | 一种生成静态库的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107577483A (zh) | 2018-01-12 |
CN107577483B (zh) | 2019-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019041668A1 (zh) | 组件工程调用主工程代码的方法、存储介质、设备及系统 | |
CN104615462B (zh) | 跨平台的移动应用生成服务端及系统 | |
CN111090433B (zh) | 一种数据处理的方法、装置和存储介质 | |
TWI528288B (zh) | 一種跨平臺轉換應用代碼的方法及裝置 | |
WO2018126964A1 (zh) | 任务执行方法、装置和服务器 | |
US20060265469A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
CN107741846B (zh) | Fpga工程过程管理优化设计方法、系统及存储介质 | |
WO2016054880A1 (zh) | 扩展apk文件应用的方法及装置 | |
CN110750315B (zh) | Android系统中的类加载方法、装置、设备和存储介质 | |
CN104317589A (zh) | 一种用于加载动态链接库的代码自动生成方法及装置 | |
WO2022166669A1 (zh) | 一种编译期的hook方法、装置、设备及存储介质 | |
CN110471663B (zh) | 一种代码编译方法、装置及电子设备 | |
CN112612452A (zh) | 一种api平台实现方法、装置、设备及存储介质 | |
CN104142819B (zh) | 一种文件处理方法及装置 | |
CN108037932B (zh) | Spi-nand的配置文件获取方法和装置 | |
CN112528619A (zh) | 页面模板文件生成方法、装置、电子设备和存储介质 | |
CN106919374B (zh) | 一种脚本生成方法和装置 | |
CN108595656B (zh) | 一种数据的处理方法及系统 | |
WO2019136843A1 (zh) | 安卓系统中启动页面的方法、存储介质、设备及系统 | |
CN113254014A (zh) | 一种基于Sketch插件的界面开发方法、装置及系统 | |
CN106547537B (zh) | 一种基于qml技术实现可组装的电力应用软件方法 | |
CN110825373A (zh) | 一种移动端动态化方法及装置 | |
WO2022099913A1 (zh) | 界面配置方法、装置、设备及介质 | |
WO2019024392A1 (zh) | 依赖包工具的验证方法、存储介质、电子设备及系统 | |
CN111367509B (zh) | 网页开发模板的生成方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17922989 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 17922989 Country of ref document: EP Kind code of ref document: A1 |