Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Objective C中初始化空可变数组_Ios_Arrays_Cocoa_Object - Fatal编程技术网

Ios 如何在Objective C中初始化空可变数组

Ios 如何在Objective C中初始化空可变数组,ios,arrays,cocoa,object,Ios,Arrays,Cocoa,Object,我有一个包含各种属性的对象(卡车)列表,用于填充tableview。当你点击它们时,它们会进入一个单独的卡车页面。有一个“添加”按钮,可以将它们添加到另一个tableview中的收藏夹列表中。如何在Cocoa中初始化空的可变数组 我有以下代码: -(IBAction)addTruckToFavorites:(id)sender:(FavoritesViewController *)controller { [controller.listOfTrucks addObject: ((Tru

我有一个包含各种属性的对象(卡车)列表,用于填充tableview。当你点击它们时,它们会进入一个单独的卡车页面。有一个“添加”按钮,可以将它们添加到另一个tableview中的收藏夹列表中。如何在Cocoa中初始化空的可变数组

我有以下代码:

-(IBAction)addTruckToFavorites:(id)sender:(FavoritesViewController *)controller
{
    [controller.listOfTrucks addObject: ((Truck_Tracker_AppAppDelegate *)[UIApplication sharedApplication].delegate).selectedTruck];

}

listOfTrucks=[NSMutableArray]为您提供一个新的可变数组。

更新:

使用新语法,您可以使用:

NSMutableArray *myArray = [NSMutableArray new];
原始答案:

例如:

NSMutableArray *myArray = [[NSMutableArray alloc] init];

然后找出原因(类和实例方法之间的差异)

基本上,有三种选择:

首先

NSMutableArray *myMutableArray = [[NSMutableArray alloc] init];
let myArray = NSMutableArray()

NSMutableArray *myMutableArray = [NSMutableArray new];
NSMutableArray *myMutableArray = [NSMutableArray array];
第三

NSMutableArray *myMutableArray = [NSMutableArray new];
NSMutableArray *myMutableArray = [NSMutableArray array];

您也可以用这种方式初始化

除了@NSSam的答案之外,目标C的另一种方法

NSMutableArray *myMutableArray = [@[] mutableCopy];
用于Swift

NSMutableArray *myMutableArray = [[NSMutableArray alloc] init];
let myArray = NSMutableArray()


我使用这种方式初始化目标C中的空可变数组:

NSMutableArray * array = [NSMutableArray arrayWithCapacity:0];

在现代Objective-C中,它可以更短:

NSArray *array = @[];

即使阵列最初是空的,如果您知道将向其中放入一定数量的对象,
initWithCapacity:
可能会加快填充速度(因为阵列最初可能会为这么多对象创建具有空间的备份存储)。此外,自动释放并不是某些人所说的邪恶。
[NSMutableArray]
没有问题;假设控制器将直接将新数组分配给其私有的
\u listOfTrucks
实例变量,则不适合这种情况。您不应该这样公开控制器的可变数组。控制器应仅使不可变数组可用于其他对象;要添加新卡车,您应该向控制器添加一个方法来执行此操作。然后,您告诉控制器进行更改,而不是在控制器不知情的情况下获取
listOfTrucks
并直接更改它。这不会创建可变数组。