NSArray 导致 viewDidLoad 崩溃

发布于 2024-12-27 13:56:48 字数 1567 浏览 1 评论 0原文

我有一个应用程序,它有两个单独的视图和两个单独的(并且单独填充的)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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅沫记忆 2025-01-03 13:56:48

根据您的问题:

array2 = [[NSArray alloc] initWithObjects:@"ABC1", @"ABC2", @"ABC3", @"ABC4", @"ABC5", @"ABC6", @"ABC7", @"ABC8", @"ABC9", @"ABC10", @"ABC11", @"ABC12", @"ABC13", @"ABC14", @"ABC15", ABC16", @"ABC17",@"ABC18",nil];

NSArray 只能包含对象,而不包含原始 C 类型。您的第 16 个元素 ABC16" 在 array2 初始化期间被作为原语读入,导致应用程序崩溃。

ABC16" 应该是 @"ABC16"

From your question:

array2 = [[NSArray alloc] initWithObjects:@"ABC1", @"ABC2", @"ABC3", @"ABC4", @"ABC5", @"ABC6", @"ABC7", @"ABC8", @"ABC9", @"ABC10", @"ABC11", @"ABC12", @"ABC13", @"ABC14", @"ABC15", ABC16", @"ABC17",@"ABC18",nil];

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"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文