这就是我现在的代码:
- (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中弃用
我是新手,我有人帮我编程初始程序,但我该如何解决这些问题呢?
答案 0 :(得分:1)
第一个错误很简单。不要创建UITableViewCell,创建一个自定义单元格:
cell = [[[BSTableViewCell alloc] initWithFrame:CGRectZero
reuseIdentifier:@"StoryList"] autorelease];
第二个错误也是如此。不要使用initWithFrame:reuseIdentifier:。使用initWithStyle:reuseIdentifier:代替,并在自定义单元类中实现该初始化程序。
如果您正在使用故事板并为表视图提供单元标识符,则可能甚至不再需要if(cell == nil)块。在这种情况下,dequeueReusableCellWithIdentifier总是提供一个有效的单元格,即使它需要创建一个单元格。
我发现您的代码中有自动释放调用。您应该做的第一件事是在代码上运行ARC转换。 ARC很棒,消除了人们代码中95%以上的内存错误。