Ios Objective-C对象方法数组?
我想了解一下下面的代码:Ios Objective-C对象方法数组?,ios,objective-c,arrays,Ios,Objective C,Arrays,我想了解一下下面的代码: NSMutableArray<DEVICEID*>* device_a = @[ [device_IDENTIFY command], [device_STATUS command], [device__POWER command]].mu
NSMutableArray<DEVICEID*>* device_a = @[
[device_IDENTIFY command],
[device_STATUS command],
[device__POWER command]].mutableCopy;
NSMutableArray*设备\u a=@[
[设备识别命令],
[设备状态命令],
[设备\电源命令]].mutableCopy;
这段代码是否正在创建一个对象数组,其中数组中每个元素的每次初始化都会调用每个对象的构造函数?A
NSMutableArray
是Objective-c中的数组,可以在运行时修改。显然,数组可以容纳它所喜欢的任何类型的对象NSMutableArray
保存通用对象,有时我们需要在分配之前指定数组,它应该保存哪种类型的对象
NSMutableArray<DEVICEID*>* device_a;
这将创建和NSArray
,它是不可变的
,在运行时无法修改,因此最后我们创建了NSArray的可变副本
最后一行mutableCopy
创建了一个可变副本
我希望这对你有帮助
这段代码正在创建一个对象数组 对 数组中每个元素的每次初始化调用每个对象的构造函数的位置 现在还不清楚你在问什么,但是如果你解释了这个陈述的执行,你可能会得到你的答案 执行语句时,步骤如下:
[device\u identification command]
、[device\u STATUS command]
和[device\u POWER command]
;进行评估。每个将返回对对象的引用@[…]
进行评估。这是Objective-C语法,用于从封闭表达式创建不可变数组。此计算的结果是对三元素数组的引用,类型为NSArray
,其中包含步骤1中的对象引用NSArray
的.mutableCopy
方法。此方法返回对类型为NSMutableArray
的新可变数组的引用设备\u a
中device\u a
的类型被声明为NSMutableArray*
,这是引入Objective-C以改进与Swift接口的轻量级泛型的一个示例。标准的Objective-C可变数组,NSMutableArray
,存储对任何类型对象的引用。device\u a
类型的
部分声明此数组应仅包含对类型为DEVICEID
的对象(或其任何子类)的引用,Objective-C将执行编译时检查,以在大多数情况下强制执行此操作(“轻量级”部分)
根据苹果的文件 NSMutableArray类向声明编程接口 管理可修改对象数组的对象。这个类增加了 对基本数组处理行为的插入和删除操作 继承自NSArray 在上面的代码中,我假设
命令
是一个在扩展文件中声明的方法(device\u IDENTIFY
的类型),它返回类型为DEVICEID*
的对象
即
DEVICEID*identity=[device_IDENTIFY命令];
DEVICEID*状态=[设备状态命令];
DEVICEID*标识=[device_POWER command];
NSArray*数组=@[identity,status,identity]//已创建包含3个DEVICEID*对象的数组。
NSMUTABLEARRY*设备_a=[array mutableCopy]//从不可变副本创建可变副本。
此代码是否正在创建对象数组?:YES和子类DEVICEID*的任何对象。mutableCopy创建具有支持CURD功能的相同对象类型的深度副本。
@[[device_IDENTIFY command], [device_STATUS command], [device__POWER command]]
DEVICEID* identity = [device_IDENTIFY command];
DEVICEID* status= [device_STATUS command];
DEVICEID* identity = [device_POWER command];
NSArray *array = @[identity, status, identity]; //Created array with 3 DEVICEID* objects.
NSMutableArray<DEVICEID*>* device_a = [array mutableCopy]; //created mutable copy from An immutable one.