gpt4 book ai didi

iphone - 帮助 iPhone 开发 - 超出范围错误

转载 作者:行者123 更新时间:2023-12-03 21:11:50 26 4
gpt4 key购买 nike

我刚刚学习 iPhone 开发,所以请原谅我可能是初学者的错误。我进行了搜索,但没有找到任何特定于我的问题的内容,所以希望这是一个简单的解决方案。

本书提供了通过数组硬编码的数据构建表的示例。不幸的是,它从来没有真正告诉您如何从 URL 获取数据,所以我不得不查找它,这就是我的问题出现的地方。

当我在xcode中调试时,计数似乎是正确的,所以我不明白为什么它会越界?

这是错误消息:

2010-05-03 12:50:42.705 Simple Table[3310:20b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (0)'

我的 URL 返回以下字符串:

first,second,third,fourth

这是 iphone 代码,其中注释掉了本书的工作示例

#import "Simple_TableViewController.h"

@implementation Simple_TableViewController
@synthesize listData;

- (void)viewDidLoad
{
/*
//working code from book
NSArray *array = [[NSArray alloc] initWithObjects:@"Sleepy", @"Sneezy", @"Bashful", @"Bashful", @"Happy",
@"Doc", @"Grumpy", @"Thorin", @"Dorin", @"Norin", @"Ori", @"Balin", @"Dwalin", @"Fili", @"Kili", @"Oin",
@"Gloin", @"Bifur", @"Bofur", @"Bombur", nil];
self.listData = array;
[array release];
*/

//code from interwebz that crashes
NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.mysite.com/folder/iphone-test.php"];
NSURL *url = [[NSURL alloc] initWithString:urlstr];
NSString *ans = [NSString stringWithContentsOfURL:url];
NSArray *listItems = [ans componentsSeparatedByString:@","];

self.listData = listItems;

[urlstr release];
[url release];
[ans release];
[listItems release];


[super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload
{
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.listData = nil;
[super viewDidUnload];
}


- (void)dealloc
{
[listData release];
[super dealloc];
}

#pragma mark -
#pragma mark Table View Data Source Methods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

if (cell == nil)
{
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
}

NSUInteger row = [indexPath row];
cell.textLabel.text = [listData objectAtIndex:row];
return cell;
}

@end

最佳答案

您过度释放了 listItems 和 ans,这可能是您的问题...当您不执行分配或保留(通常)时,返回的对象会自动释放,因此您不需要释放它们。 [NSString ...] 返回一个自动释放的字符串,调用 [ans ComponentsSeparatedByString:@","] ...希望有帮助

关于iphone - 帮助 iPhone 开发 - 超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com