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