-3

这就是我的代码现在的样子:

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  NSLog(@"index %d %d", indexPath.row, indexPath.section);
  BSTableViewCell *cell =
  (BSTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"StoryList"];
  if (cell == nil) {
    // Create a new cell. CGRectZero allows the cell to determine the appropriate size.
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                   reuseIdentifier:@"StoryList"] autorelease]; //***
    CGRect startingRect = CGRectMake(0.0, 0.0, 320.0, 60.0);
    cell =
    [[[BSTableViewCell alloc] initWithFrame:startingRect
                        reuseIdentifier:@"StoryList"] autorelease]; //***

但是我收到标记行的以下错误:

/Users/Alex/xCode Projects/FiveMins_1.2(WAV)/Classes/BSGameViewController.m:120:10:从 'UITableViewCell *' 分配给 'BSTableViewCell *' 的指针类型不兼容

第二个标记行出现以下错误:

/Users/Alex/xCode Projects/FiveMins_1.2(WAV)/Classes/BSGameViewController.m:120:38: 'initWithFrame:reuseIdentifier:' 已弃用:首先在 iOS 3.0 中弃用

我是新手,有人帮我编写初始程序,但我该如何解决这些问题?

4

1 回答 1

1

第一个错误很容易。不要创建 UITableViewCell,创建您的自定义单元格之一:

cell = [[[BSTableViewCell alloc] initWithFrame:CGRectZero
                               reuseIdentifier:@"StoryList"] autorelease];

第二个错误也是如此。不要使用 initWithFrame:reuseIdentifier:。使用 initWithStyle:reuseIdentifier: 代替,并在您的自定义单元类中实现该初始化程序。

如果您使用情节提要并为表格视图提供单元格标识符,您甚至可能不再需要 if (cell == nil) 块。在这种情况下,dequeueReusableCellWithIdentifier 总是提供一个有效的单元格,即使它需要创建一个单元格。

我看到您的代码中有自动释放调用。您应该做的第一件事是对您的代码运行 ARC 转换。ARC 很棒,它消除了人们代码中 95% 以上的内存错误。

于 2013-10-11T22:11:13.400 回答