我面临一个关于NSMutableArray的奇怪问题。 我搜索了几个类似的帖子,但没有运气。情况是这样的:在我的appDelegate中,我声明了一个NSMutableArray属性,如下所示:

@property (nonatomic, retain) NSMutableArray *myRequests;

然后在同一个类的方法中,我像这样初始化数组:

self.myRequests = [[[NSMutableArray alloc] init] autorelease];

然后在同一方法的for循环中,我将对象添加到数组中:

while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
    MyRequest *req = [MyRequest alloc];

    req.s_prp= [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
   .
   .
   .
  [self.myRequests addObject:req];


  [req release];
}

我使用这个数组来为数据提供uitableview。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

 // Cell initialization ...

    MyRequest *req = (MyRequest *) [delegate.myRequests objectAtIndex:indexPath.row] ;
    cell.stypeLabel.text = req.ser_type_name; // RANDOMLY OCCURING ERROR !!!!!!!!!!!
}

异常随机发生,消息显示:[MyRequest ser_type_name]:发送到解除分配的实例0x6e7af20的消息

上面的代码有什么问题吗? MyRequest是一个自定义类。 我正在使用自定义tableviewcell类。

MyRequest类非常简单。 它在表单中有几个属性

@property (retain,nonatomic)    NSString *ser_type_name;

以及释放对象的dealloc方法。

谢谢

===============>>#1 票数:2

这行不正确:

MyRequest *req = [MyRequest alloc];

它应该是:

MyRequest *req = [[MyRequest alloc] init];

可能还有其他错误,但那个错误非常明显。

===============>>#2 票数:0

您没有显示如何定义MyRequest及其属性/ ivars,而不显示如何在代码中设置req.ser_type_name。 根据它们是否被保留,您可能会看到一些奇怪的行为,因为NSString的stringWithUTF8String返回一个自动释放的字符串。 您应该检查并在必要时修复它(虽然我看不出有什么错误会给您报告的消息)

  ask by Stathis translate from so

未解决问题?本站智能推荐: