NSArray 导致 viewDidLoad 崩溃
我有一个应用程序,它有两个单独的视图和两个单独的(并且单独填充的)NSArrays
。在 array1 中,我有 10 个 @"ABC" 对象,在 array2 中,我有 18 个 @"ABC" 对象。 view1 和 array1 加载完全正常;然而,view2 崩溃了。我更改了 array2 中 @"ABC" 项目的数量,作为一种调试的试错方法,发现我只能有 15 个 @"ABC" 对象。一旦我添加了第十六个 @“ABC”,应用程序就会崩溃并显示有关 viewDidLoad
的内容。有谁知道如何解决这个问题或者我正在做的事情会导致应用程序崩溃?
- (void)viewDidLoad {
array2 = [[NSArray alloc] initWithObjects:@"ABC1", @"ABC2", @"ABC3", @"ABC4", @"ABC5", @"ABC6", @"ABC7", @"ABC8", @"ABC9", @"ABC10", @"ABC11", @"ABC12", @"ABC13", @"ABC14", @"ABC15", ABC16", @"ABC17",@"ABC18",nil];
[super viewDidLoad];
}
(#pragma mark Table view methods)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [array2 count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Set up the cell...
cell.textLabel.text = [array2 objectAtIndex:indexPath.row];
cell.textLabel.textColor = [UIColor redColor];
return cell;
}
就像我说的,array2 对于 15 个或更少的对象来说工作得非常好,但是一旦我添加了 16 个或更多的对象,它就会崩溃。
I have an app that has two separate views with two separate (and separately populated) NSArrays
. In array1, I have 10 @"ABC" objects, and in array2, I have 18 @"ABC" objects. view1 with array1 loads perfectly fine; however, view2 crashes. I changed the amount of @"ABC" items in array2 as a sort of trial-and-error way to debug and found I can have only 15 @"ABC" objects. Once I add the sixteenth @"ABC", the app crashes saying something about viewDidLoad
. Does anyone know how to get around this or what I'm doing that would cause the app to crash?
- (void)viewDidLoad {
array2 = [[NSArray alloc] initWithObjects:@"ABC1", @"ABC2", @"ABC3", @"ABC4", @"ABC5", @"ABC6", @"ABC7", @"ABC8", @"ABC9", @"ABC10", @"ABC11", @"ABC12", @"ABC13", @"ABC14", @"ABC15", ABC16", @"ABC17",@"ABC18",nil];
[super viewDidLoad];
}
(#pragma mark Table view methods)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [array2 count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Set up the cell...
cell.textLabel.text = [array2 objectAtIndex:indexPath.row];
cell.textLabel.textColor = [UIColor redColor];
return cell;
}
Like I said, array2 works perfectly fine with 15 or fewer objects, but once I add number 16 or any more, it crashes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据您的问题:
NSArray 只能包含对象,而不包含原始 C 类型。您的第 16 个元素
ABC16"
在 array2 初始化期间被作为原语读入,导致应用程序崩溃。ABC16"
应该是@"ABC16"
From your question:
NSArrays can contain only objects, not primitive C types. Your 16th element,
ABC16"
, is being read in as a primitive during array2 initialization and crashing your app.ABC16"
should be@"ABC16"