CN107291531A - 数组处理方法、装置、移动终端及计算机可读存储介质 - Google Patents
数组处理方法、装置、移动终端及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107291531A CN107291531A CN201710468921.4A CN201710468921A CN107291531A CN 107291531 A CN107291531 A CN 107291531A CN 201710468921 A CN201710468921 A CN 201710468921A CN 107291531 A CN107291531 A CN 107291531A
- Authority
- CN
- China
- Prior art keywords
- array
- index
- operational order
- data
- operating system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供的数组处理方法、装置、移动终端及计算机可读存储介质,属于信息处理领域。该方法包括:获取针对数组的操作指令;当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。在所述操作指令满足预设标准后,再调用操作系统默认的操作方法对数据进行操作。因此,能够避免由于操作指令不符合标准而导致系统方法在执行时出错而使系统崩溃。
Description
技术领域
本发明属于信息处理领域,具体涉及一种数组处理方法、装置、移动终端及计算机可读存储介质。
背景技术
数组容器是一种数据结构,通过数组容器我们可以方便的以数组的数据结构的方式进行添加、读取、删除、修改数据。移动终端的操作系统默认有多个对数组的操作的函数,例如,添加数据至数组、读取数组内的某个或某些数据等。但是,在调用操作系统内的针对数组的函数去执行一些针对数组的操作时,如果针对数组的操作不当,就会导致系统崩溃。
发明内容
本发明的目的在于提供一种数组处理方法、装置、移动终端及计算机可读存储介质,以改善上述的问题。
第一方面,本发明实施例提供了一种数组处理方法,包括:获取针对数组的操作指令;当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
第二方面,本发明实施例提供了一种数组处理装置,包括:获取单元和执行单元。获取单元用于获取针对数组的操作指令。执行单元用于当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
第三方面,本发明实施例提供了一种移动终端,包括:处理器和存储器,所述处理器与所述存储器耦合。所述存储器用于存储程序。所述处理器用于调用存储在所述存储器中的程序,执行上述方法。
第四方面,本发明实施例提供了一种计算机可读存储介质。所述可读取存储介质存储有处理器可执行的程序代码于计算机内。所述可读取存储介质包括多条指令,所述程序代码多条指令被配置成使所述处理器执行上述方法。
与现有技术相比,本发明实施例提供的数组处理方法、装置、移动终端及计算机可读存储介质,在获取到针对数组操作指令之后,并非直接调用操作系统默认的操作方法根据操作指令对数据操作,而是在所述操作指令满足预设标准后,再调用操作系统默认的操作方法对数据进行操作。因此,能够避免由于操作指令不符合标准而导致系统方法在执行时出错而使系统崩溃。
本发明实施例的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明实施例的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。
图1为本发明实施例提供的移动终端的方框图;
图2为本发明第一实施例提供的数组处理方法的方法流程图;
图3为图2中数组处理方法的步骤S22的一种实施方式的方法流程图;
图4为图2中数组处理方法的步骤S22的另一种实施方式的方法流程图;
图5为图2中数组处理方法的步骤S22的又一种实施方式的方法流程图;
图6为本发明第一实施例提供的数组处理装置的模块框图;
图7为本发明第二实施例提供的数组处理装置的模块框图;
图8为本发明第三实施例提供的数组处理装置的模块框图;
图9为本发明第四实施例提供的数组处理装置的模块框图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参阅图1,示出了一种移动终端100。具有多点触摸能力的移动终端100可以包括存储器接口102、一个或多个处理器104以及外围接口106。
存储器接口102、一个或多个处理器104和/或外围接口106既可以是分立元件,也可以集成在一个或多个集成电路中。在移动终端100中,各种元件可以通过一条或多条通信总线或信号线来耦合。传感器、设备和子系统可以耦合到外围接口106,以便帮助实现多种功能。例如,运动传感器110、光传感器112和距离传感器114可以耦合到外围接口106,以方便定向、照明和测距等功能。一个或多个其他传感器116同样可以与外围接口106相连,例如定位系统(例如GPS接收机)、温度传感器、生物测定传感器或其他感测设备,由此可以帮助实施相关的功能。
相机子系统120和光学传感器122可以用于方便诸如记录照片和视频剪辑的相机功能的实现,其中所述相机子系统和光学传感器例如可以是电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器。
可以通过一个或多个无线通信子系统124来帮助实现通信功能,其中无线通信子系统可以包括射频接收机和发射机和/或光(例如红外)接收机和发射机。无线通信子系统124的特定设计和实施方式可以取决于移动终端100所支持的一个或多个通信网络。例如,移动终端100可以包括被设计成支持GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BlueboothTM网络的无线通信子系统124。
音频子系统126可以与扬声器128以及麦克风130相耦合,以便帮助实施启用语音的功能,例如语音识别、语音复制、数字记录和电话功能。
I/O子系统140可以包括触摸屏控制器142和/或一个或多个其他输入控制器144。
触摸屏控制器142可以耦合到触摸屏146。举例来说,该触摸屏146和触摸屏控制器142可以使用多种触摸感测技术中的任何一种来检测与之进行的接触和移动或是暂停,其中感测技术包括但不局限于电容性、电阻性、红外和表面声波技术。
一个或多个其他输入控制器144可以耦合到其他输入/控制设备148,例如一个或多个按钮、摇杆开关、拇指旋轮、红外端口、USB端口、和/或指示笔之类的指点设备。一个或多个按钮(未显示)可以包括用于控制扬声器128和/或麦克风130音量的向上/向下按钮。
存储器接口102可以与存储器150相耦合。该存储器150可以包括高速随机存取存储器和/或非易失性存储器,例如一个或多个磁盘存储设备,一个或多个光学存储设备,和/或闪存存储器(例如NAND,NOR)。
存储器150可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器150用于存储程序,所述处理器104在接收到执行指令后,执行所述程序,后续本发明实施例任一实施例揭示的流程定义的移动终端100所执行的方法可以应用于处理器104中,或者由处理器104实现。另外,存储器150可以存储操作系统152,例如Android、IOS或是Windows Phone之类的操作系统。于本发明实施例中,操作系统为IOS。该操作系统152可以包括用于处理基本系统服务以及执行依赖于硬件的任务的指令。存储器150还可以存储各种应用154。在移动设备运行时,会从存储器150中加载操作系统152,并且由处理器104执行。应用154在运行时,也会从存储器150中加载,并由处理器104执行。应用154运行在操作系统之上,利用操作系统以及底层硬件提供的接口实现各种用户期望的功能,如即时通信、网页浏览、图片管理等。应用可以是独立于操作系统提供的,也可以是操作系统自带的。
处理器104可以是一种集成电路芯片,具有信号的处理能力。上述的处理器104可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,例如,数据处理器、图像处理器和/或中央处理单元。
请参阅图2,示出了数组处理方法的步骤流程图,该方法应用于上述移动终端,该方法包括:步骤S21和步骤S22。
步骤S21:获取针对数组的操作指令。
数组用于存放某一种类型的数据,多种不同类型的数组存在房数组容器内,数组容器是一种数据结构的实现,通过数组容器我们可以方便的以数组的数据结构的方式进行添加、读取、删除、修改数据。针对数组的操作指令可以是用户直接操作移动终端100而输入操作指令,也可以是通过其他的电子设备将操作指令发送至移动终端100。操作指令是指针对数组的操作,具体地可以是一个程序段,该针对数组的操作可以包括读取数组中的某个元素的数据,删除数组中的某个元素或者向数组添加某个数据。移动终端100的操作系统包括多个针对数组的操作方法。例如,OjbectAtIndex函数、AddObject函数和RemoveObjectAtIndex函数等。其中,OjbectAtIndex函数用于根据传入的索引读取数组索引位置的数据,如果传入的索引数大于数组本身的数组长度会导致数组越界引发系统崩溃。AddObject函数用于数组写入数据。如果写入的数据是空数据,外部没有做数据非空判断向数组中写入空数据,就会导致系统崩溃。RemoveObjectAtIndex函数用于删除数组指定位置索引的数据。如果删除的指定位置索引超出数组的范围,就会导致系统崩溃。
步骤S22:当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对数组的操作方法。
其中,操作系统默认的针对所述数组的操作方法定义为系统方法。操作指令包括根据第一索引读取所述数组内的数据、向所述数组内添加目标数据和删除所述数组内第二索引处的数据。该操作指令包括操作对象,操作对象是指操作指令所对应的操作的对象,例如,操作指令为根据第一索引读取所述数组内的数据,则操作对象为第一索引;所述操作指令为向所述数组内添加目标数据,则操作对象为目标数据;所述操作指令为删除所述数组内第二索引处的数据,则操作对象为第二索引。则对所述操作指令是否满足预设标准的判断,即是对操作指令对应的操作对象是否满足预设标准的判断。
作为一种实施方式,在操作系统内嵌入用户自定义的操作方法,将该用户自定义的操作方法将系统针对数组的默认的操作方法替换。在获取到该操作指令之后,不直接执行系统默认的针对数组的操作方法,而是执行该用户自定义的操作方法。该用户自定义的操作方法用于判断所述操作指令是否满足预设标准,当满足预设标准时,调用所述操作指令对应的系统方法。其中,用户自定义的操作方法与操作系统默认的操作方法不同,是程序开发者或者客户端使用者自定义的操作方法。作为一种实施方式,在IOS系统内,利用Runtime特性,在操作系统NSArray类的load系统方法中使用swizzleMethod系统方法,达到使用自定义的操作方法替换系统方法去执行。其中,swizzleMethod系统方法的作用是iOS系统Runtime特性中用于在运行时交互两个方法。例如,针对数组的读取数据操作,将自定义的操作方法替换系统方法的部分代码如下:
[objc_getClass("__NSArrayI")swizzleMethod:@selector(objectAtIndex:)withMethod:@selector(dy_objectAtIndex)error:nil]
[objc_getClass("__NSArrayI")swizzleMethod:@selector(addObject:)withMethod:@selector(dy_addObject:)error:nil]
上述代码中,objc_getClass("__NSArrayI")通过类名获取类方法。这里通过NSArrayI字符串反射获取到NSArray的类对象。使用上面获取的类对象调用swizzleMethodwithMethod交换类对象的原生方法objectAtIndex与自定义方法dy_objectAtIndex。上述代码的目的是为了在调用NSArray的objectAtIndex方法时不执行系统方法(objectAtIndex方法)而是执行用户自定义的方法dy_ObjectAtIndex。
另外,预设标准可以根据针对数组的不同操作而定义,下面将针对不同的操作指令而详细描述。
当操作指令为根据第一索引读取所述数组内的数据时,则步骤S22的实施方式如图3所示,包括:步骤S2211、步骤S2212和步骤S2213。
步骤S2211:判断第一索引是否属于所述数组的元素索引。
数组中的每个元素都对应一个索引,该数组中的每个元素的索引可以作为对应该元素的元素索引。例如,数组由5个元素构成,5个元素的数据分别为A,B,C,D和E,五个元素的索引分别是index1,index2,index3,index4和index5。则数组的结构如表1所示:
表1
索引 | 数据 |
index1 | A |
Index2 | B |
Index3 | C |
Index4 | D |
Index5 | E |
则判断第一索引是否属于所述数组的元素索引的实施方式可以是:
判断该数组的每个元素的索引中是否有与该第一索引相同的索引,若是,则判定第一索引属于所述数组的元素索引。若否,则判定第一索引不属于所述数组的元素索引。需要说明的是,当判定第一索引属于所述数组的元素索引时,表示所述操作指令满足预设标准,否则,表示所述操作指令不满足预设标准。
作为一种实施方式,由于数组的所有元素的索引默认是从0开始的,例如,上述表1中,A的索引位置是0,B的索引位置是1,E的索引位置是4,而数组的数组长度是5,即数组中的最大的索引值也小于数组的数组长度,因此,可以通过索引值与数组的数组长度的比较来判断第一索引是否属于所述数组的元素索引,具体的实施方式为:
判断所述第一索引的数值是否小于所述数组的数组长度,若所述第一索引的数值小于所述数组的数组长度,判定所述第一索引属于所述数组的元素索引,若所述第一索引的数值大于或等于所述数组的数组长度,判定所述第一索引不属于所述数组的元素索引。
若所述第一索引属于所述数组的元素索引,则执行步骤S2212。若所述第一索引不属于所述数组的元素索引,则执行步骤S2213。
步骤S2212:调用所述操作系统的数组数据读取函数,读取所述数组内与所述第一索引对应的数据。
具体地,调用所述IOS操作系统的objectAtIndex函数,读取所述数组内与所述第一索引对应的数据。例如,第一索引的数值为index3,则通过objectAtIndex函数读取到数组的C。objectAtIndex函数是IOS操作系统内针对NSArray的一个操作方法,用于读取数组内指定索引处的数据。
步骤S2213:返回第一预设数据。
返回第一预设数据的目的是为了给发送操作指令的执行主体返回一个指示信息,用于指示针对数组的操作失败,以操作指令为根据第一索引读取所述数组内的数据为例,返回第一预设数据表示针对数组的读取操作失败。其中,第一预设数据可以是一个约定的数值,优选地,第一预设数据为空。具体地,步骤S2211、步骤S2212和步骤S2213的程序段如下:
其中,nil的值为空,index为所述第一索引。
因此,通过步骤S2211、步骤S2212和步骤S2213,能够在执行系统方法去读取数组内的数据时,先判断所要读取的数据对应的第一索引是否属于该数组内的元素的索引,然后再在确定了第一索引属于数组的元素索引之后再读取第一索引对应的数据,避免索引越界引发系统崩溃。
当操作指令为向所述数组内添加目标数据时,则步骤S22的实施方式如图4所示,包括:步骤S2221、步骤S2222、步骤S2223和步骤S2224。
步骤S2221:判断目标数据是否为空。
数据为空是指数据的值未知,常用null表示。例如,string str=“”,表示该字符串为空。判断数据是否为空的方式可以是直接判断数据是否为“”,例如,目标数据为string型,且用num1表示,通过代码if(num1==“”)可以判断数据num1是否为空。若目标数据不为空,表示所述操作指令满足预设标准,则执行步骤S2222,若目标数据为空,表示所述操作指令不满足预设标准,则执行步骤S2224。
步骤S2222:调用所述操作系统的数组添加函数,将所述目标数据添加至所述数组。
具体地,调用所述IOS操作系统的addObject函数,将所述目标数据添加至所述数组。在IOS操作系统内,addObject函数用于向数组容器内添加对象。当目标数据不为空时,默认将目标数据添加至数组的最末位置。如果,需要在指定位置将目标数据插入,则可以另外新建一个数组,将该指定位置之前的索引以及自身所对应的所有数据复制到新数组内,然后再插入目标数据,然后再在目标数据之后,将在原数组内的指令位置处之后的数据插入新数组内。
以上述表1为例,假设要插入的目标数据为M,插入的位置为index3和index4之间,则插入M之后,新的数组为[A,B,C,M,D,E]。
步骤S2223:返回第二预设数据。
返回第二预设数据的目的是为了给发送操作指令的执行主体返回一个指示信息,用于指示针对数组的操作失败,以操作指令为向所述数组内添加目标数据为例,返回第二预设数据的目的为指示数据添加成功。第二预设数据为约定的数据,优选地,第二预设数据为1,表示操作成功。
步骤S2224:返回第三预设数据。
同理,第三预设数据用于指示数据添加失败,优选地,第三预设数据为0,表示操作失败。
作为一种实施方式,步骤S2221、步骤S2222、步骤S2223和步骤S2224的程序段如下:
其中,NO的值为0,YES的值为1。
因此,通过步骤S2221、步骤S2222、步骤S2223和步骤S2224,能够在执行系统方法为数组添加目标数据之前,先判断目标数据是否为空,当目标数据不为空,再将数据添加到数组内,能够避免在目标数据为空的情况下,执行系统方法而导致系统崩溃。
当操作指令为删除所述数组内第二索引处的数据时,则步骤S22的实施方式如图5所示,包括:步骤S2231、步骤S2232、步骤S2233和步骤S2234。
步骤S2231:判断所述第二索引是否属于所述数组的元素索引。
判断第二索引是否属于所述数组的元素索引与步骤S2211相似,在此不在赘述。若第二索引属于所述数组的元素索引,表示所述操作指令满足预设标准,则执行步骤S2232,若第二索引不属于所述数组的元素索引,表示所述操作指令不满足预设标准,则执行步骤S2234。
步骤S2232:调用所述操作系统的数组数据删除函数,删除所述数组内与所述第二索引对应的数据。
具体地,调用IOS操作系统的removeObjectAtIndex函数,删除所述数组内与所述第二索引对应的数据。removeObjectAtIndex函数的方法的功能是在可变数组中删除指定位置的元素,其语法形式如下:
(void)removeObjectAtIndex:(unsigned)index;其中,(unsigned)index用来指定要删除元素的位置。
步骤S2233:返回第四预设数据。
返回第四预设数据的目的是为了给发送操作指令的执行主体返回一个指示信息,用于指示针对数组的操作失败,以操作指令为删除所述数组内第二索引处的数据为例,返回第四预设数据的目的为指示数据删除成功。第四预设数据为约定的数据,优选地,第四预设数据为1,表示操作成功。
步骤S2234:返回第五预设数据。
同理,返回第五预设数据的目的为指示数据删除成功。第五预设数据为约定的数据,优选地,第二预设数据为0,表示操作失败。
作为一种实施方式,步骤S2231、步骤S2232、步骤S2233和步骤S2234的程序段如下:
其中,NO为0,YES为1。
因此,通过步骤S2231、步骤S2232、步骤S2233和步骤S2234,能够在执行系统方法删除数组的第二索引的数据之前,先判断该第二索引是否属于该数据的元素索引,当该第二索引属于该数据的元素索引时,再将数据添加到数组内,能够避免执行系统方法时,因为索引越界而导致系统崩溃。
以直播APP为例,数组容器是日常使用最多的一种数据结构。如在直播领域要展示房间列表,需要包含一系列包括房间名、房间图片、主播名、房间分类等信息顺序显示,这时就需要一种容器去保存这些信息供界面显示。
首先初始化一个数组容器,分数组容器分配内存空间。
当客户端向服务器端发送网络请求后,调用上述自定义的dy_addObject方法取代系统的addObject方法将网络获得的数据保存到数组容器中,自定义方法能保证在即使获取到的数据是nil即空的情况下,客户端也能正常运行。
请求完成后刷新视图进行展示,客户端在视图方法中通过自定义方法dy_ObjectAtIndex取代系统objectAtIndex方法获取到指定位置的数据,自定义方法能保证在因为其它的原因如获取的索引位置超出了数组容器大小的情况,客户端也能正常运行。
客户端在删除某一条视图时,需要同时对改视图的数据进行清除,这时需要调用自定义方法dy_removeObjectAtIndex取代removeObjectAtIndex系统方法在指定索引位置删除数据,自定义方法能保证在因为其它的原因如获取的索引位置超出了数组容器大小的情况,客户端也能正常运行。
综上所述,在获取到针对数组操作指令之后,先判断操作指令是否满足预设标准,而非直接调用操作系统默认的操作方法根据操作指令对数据操作。在所述操作指令满足预设标准后,再调用操作系统默认的操作方法对数据进行操作。因此,能够避免由于操作指令不符合标准而导致系统方法在执行时出错而使系统崩溃。具体的,在执行系统方法去读取数组内的数据时,先判断所要读取的数据对应的第一索引是否属于该数组内的元素的索引,然后再在确定了第一索引属于数组的元素索引之后再读取第一索引对应的数据,避免索引越界引发系统崩溃。在执行系统方法为数组添加目标数据之前,先判断目标数据是否为空,当目标数据不为空,再将数据添加到数组内,能够避免在目标数据为空的情况下,执行系统方法而导致系统崩溃。在执行系统方法删除数组的第二索引的数据之前,先判断该第二索引是否属于该数据的元素索引,当该第二索引属于该数据的元素索引时,再将数据添加到数组内,能够避免执行系统方法时,因为索引越界而导致系统崩溃。
另外,通过修改系统方法,在底层优化系统方法的缺陷,达到增强使用数组的代码的强健性与稳定性。增加了使用数组的安全性与强健性,在任何情况下保证数组不会引发系统异常,读取与写入过程中增加判断解决由于传入的数据异常以及因为数组修改导致数组读取数据异常引发的读取非预期数据甚至引发系统崩溃的情况。在不改变原有代码的情况下进行了代码优化,做到面向切面编程。优化代码与原有工程代码完全无耦合性,可以随意使用与不使用。
请参阅图6,示出了一种数组处理装置。该数组处理装置600包括:获取单元601和执行单元602。
获取单元601用于获取针对数组的操作指令。
执行单元602用于当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图7,示出了一种数组处理装置。该数组处理装置700包括:获取单元701和执行单元702。
获取单元701用于获取针对数组的操作指令。
执行单元702用于当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
具体地,所述操作指令为根据第一索引读取所述数组内的数据时,执行单元702包括第一判断子单元7021和第一执行子单元7022。
第一判断子单元7021用于判断所述第一索引是否属于所述数组的元素索引。
第一执行子单元7022用于在第一判断子单元7021判断结果为是时,调用所述操作系统的数组数据读取函数,读取所述数组内与所述第一索引对应的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图8,示出了一种数组处理装置。该数组处理装置800包括:获取单元801和执行单元802。
获取单元801用于获取针对数组的操作指令。
执行单元802用于当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
具体地,所述操作指令为向所述数组内添加目标数据时,执行单元802包括第二判断子单元8021和第二执行子单元8022。
第二判断子单元8021用于判断所述目标数据是否为空。
第二执行子单元8022用于在第一判断子单元8021判断结果为否时,调用所述操作系统的数组添加函数,将所述目标数据添加至所述数组。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图9,示出了一种数组处理装置。该数组处理装置900包括:获取单元901和执行单元902。
获取单元901用于获取针对数组的操作指令。
执行单元902用于当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
具体地,所述操作指令为删除所述数组内第二索引处的数据时,执行单元902包括第二判断子单元9021和第二执行子单元9022。
第二判断子单元9021用于判断所述第二索引是否属于所述数组的元素索引。
第二执行子单元9022用于在第一判断子单元9021判断结果为否时,调用所述操作系统的数组数据删除函数,删除所述数组内与所述第二索引对应的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数组处理方法,其特征在于,包括:
获取针对数组的操作指令;
当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
2.根据权利要求1所述的方法,其特征在于,所述操作指令包括根据第一索引读取所述数组内的数据,所述的当所述操作指令满足预设标准时,根据所述操作指令执行系统方法,包括:
判断所述第一索引是否属于所述数组的元素索引;
若所述第一索引属于所述数组的元素索引,调用所述操作系统的数组数据读取函数,读取所述数组内与所述第一索引对应的数据。
3.根据权利要求2所述的方法,其特征在于,判断所述第一索引是否属于所述数组的元素索引的步骤,包括:
判断所述第一索引的数值是否小于所述数组的数组长度,若所述第一索引的数值小于所述数组的数组长度,判定所述第一索引属于所述数组的元素索引。
4.根据权利要求2所述的方法,其特征在于,所述操作系统为IOS操作系统,所述调用所述操作系统的数组数据读取函数,读取所述数组内与所述第一索引对应的数据,包括:
调用所述IOS操作系统的objectAtIndex函数,读取所述数组内与所述第一索引对应的数据。
5.根据权利要求1所述的方法,其特征在于,所述操作指令包括向所述数组内添加目标数据,所述的当所述操作指令满足预设标准时,根据所述操作指令执行系统方法,包括:
判断所述目标数据是否为空;
若所述目标数据不空,调用所述操作系统的数组添加函数,将所述目标数据添加至所述数组。
6.根据权利要求5所述的方法,其特征在于,所述操作系统为IOS操作系统,所述调用所述操作系统的数组添加函数,将所述目标数据添加至所述数组,包括:
调用所述IOS操作系统的addObject函数,将所述目标数据添加至所述数组。
7.根据权利要求1所述的方法,其特征在于,所述操作指令包括删除所述数组内第二索引处的数据,所述的当所述操作指令满足预设标准时,根据所述操作指令执行系统方法,包括:
判断所述第二索引是否属于所述数组的元素索引;
若所述第二索引属于所述数组的元素索引,调用所述操作系统的数组数据删除函数,删除所述数组内与所述第二索引对应的数据。
8.一种数组处理装置,其特征在于,包括:
获取单元,用于获取针对数组的操作指令;
执行单元,用于当所述操作指令满足预设标准时,根据所述操作指令执行操作系统默认的针对所述数组的操作方法。
9.一种移动终端,其特征在于,包括:处理器和存储器,所述处理器与所述存储器耦合;
所述存储器用于存储程序;
所述处理器用于调用存储在所述存储器中的程序,执行所述权利要求1-7任一项所述方法。
10.一种计算机可读存储介质,其特征在于,所述可读取存储介质存储有处理器可执行的程序代码于计算机内,所述可读取存储介质包括多条指令,所述程序代码多条指令被配置成使所述处理器执行所述权利要求1-7任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710468921.4A CN107291531A (zh) | 2017-06-20 | 2017-06-20 | 数组处理方法、装置、移动终端及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710468921.4A CN107291531A (zh) | 2017-06-20 | 2017-06-20 | 数组处理方法、装置、移动终端及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107291531A true CN107291531A (zh) | 2017-10-24 |
Family
ID=60096510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710468921.4A Pending CN107291531A (zh) | 2017-06-20 | 2017-06-20 | 数组处理方法、装置、移动终端及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291531A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021630A (zh) * | 2017-11-21 | 2018-05-11 | 深圳市雷鸟信息科技有限公司 | 垃圾文件清理方法、智能终端及计算机可读存储介质 |
CN108287767A (zh) * | 2017-12-29 | 2018-07-17 | 五八有限公司 | 一种数据容错方法、设备及计算机可读存储介质 |
CN108304196A (zh) * | 2018-01-04 | 2018-07-20 | 武汉斗鱼网络科技有限公司 | 一种iOS中获取网络接口数据的方法及装置 |
CN112685747A (zh) * | 2020-01-17 | 2021-04-20 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313287A1 (en) * | 2008-06-17 | 2009-12-17 | Microsoft Corporation | Identifying objects within a multidimensional array |
CN105868031A (zh) * | 2016-03-24 | 2016-08-17 | 车智互联(北京)科技有限公司 | 一种数据传输装置和方法 |
-
2017
- 2017-06-20 CN CN201710468921.4A patent/CN107291531A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313287A1 (en) * | 2008-06-17 | 2009-12-17 | Microsoft Corporation | Identifying objects within a multidimensional array |
CN105868031A (zh) * | 2016-03-24 | 2016-08-17 | 车智互联(北京)科技有限公司 | 一种数据传输装置和方法 |
Non-Patent Citations (2)
Title |
---|
夜千寻墨: "iOS数组防止越界crash", 《HTTPS://WWW.JIANSHU.COM/P/B0D3A64E76A2》 * |
流火緋瞳: "[iOS]防止数组越界及添加空值的crash的扩展", 《HTTPS://BLOG.CSDN.NET/LQQ200912408/ARTICLE/DETAILS/50761139》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021630A (zh) * | 2017-11-21 | 2018-05-11 | 深圳市雷鸟信息科技有限公司 | 垃圾文件清理方法、智能终端及计算机可读存储介质 |
CN108021630B (zh) * | 2017-11-21 | 2021-03-30 | 深圳市雷鸟网络传媒有限公司 | 垃圾文件清理方法、智能终端及计算机可读存储介质 |
CN108287767A (zh) * | 2017-12-29 | 2018-07-17 | 五八有限公司 | 一种数据容错方法、设备及计算机可读存储介质 |
CN108304196A (zh) * | 2018-01-04 | 2018-07-20 | 武汉斗鱼网络科技有限公司 | 一种iOS中获取网络接口数据的方法及装置 |
CN112685747A (zh) * | 2020-01-17 | 2021-04-20 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN112685747B (zh) * | 2020-01-17 | 2022-02-01 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291531A (zh) | 数组处理方法、装置、移动终端及计算机可读存储介质 | |
CN104424359B (zh) | 用于根据字段属性来提供内容的电子设备和方法 | |
CN104965664A (zh) | 应用程序操作方法和装置 | |
CN104615546B (zh) | 文件数据管理方法及装置 | |
CN104484200A (zh) | 对固件进行升级的方法及装置 | |
CN103927466A (zh) | 移动终端的控制方法和装置 | |
CN105512033B (zh) | 一种移动终端的自动化测试方法、装置及移动终端 | |
CN107291626A (zh) | 数据存储方法和装置 | |
CN104462805A (zh) | 一种基于a*算法的地图寻路方法、设备及计算终端 | |
CN106528163B (zh) | 一种页面切换方法和装置 | |
CN108415734A (zh) | 一种应用恢复装置、方法和移动终端 | |
CN104516643A (zh) | 一种启动应用的方法、设备和计算终端 | |
CN109246467A (zh) | 标记待分享视频的方法、装置、摄像机和智能手机 | |
CN106776908A (zh) | 数据清理方法、装置及终端 | |
CN106249995B (zh) | 通知方法和装置 | |
CN105205153A (zh) | 文件存储方法和装置 | |
CN106897172A (zh) | 系统设置方法、装置及终端 | |
CN105589575B (zh) | 输入法调用方法及装置 | |
CN107239236A (zh) | 数据写入方法及装置 | |
CN111857497A (zh) | 操作提示方法和电子设备 | |
CN105094608A (zh) | 任务展示方法和装置 | |
CN107506496A (zh) | 碎片整理方法、装置及计算机可读存储介质 | |
CN106375983B (zh) | 一种标识符生成方法和装置 | |
CN106776847A (zh) | 删除媒体文件的方法、装置及移到终端 | |
CN109981873B (zh) | 一种通讯录权限开启方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171024 |