UITableViewCell不等于null

我在下面的代码中遇到了问题,它基本上是从故事板中实例化一个扩展的uitableviewcell。 我遇到的问题是,似乎leftMenuCell 永远不会等于null,因此永远不会进入启动块。 我究竟做错了什么?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"LeftMenuCell"; MenuCell *leftMenuCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(leftMenuCell == nil) { NSLog(@"creating a new cell"); leftMenuCell = [[MenuCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } .... 

在此处输入图像描述

你没有做错任何事情,这就是在故事板中创建单元格时表视图的工作方式。 方法dequeueReusableCellWithIdentifier:,当该单元格位于故事板中的表视图中时,始终返回有效单元格。 似乎很多程序员都没有想到这一点,并且仍然包含if cell == nil子句。 这是来自文档:

“如果dequeueReusableCellWithIdentifier:方法要求在故事板中定义的单元格,则该方法始终返回有效单元格。如果没有等待重用的循环单元格,则该方法使用故事板本身中的信息创建新单元格。这样就无需检查nil的返回值并手动创建单元格“