iPhone iOS实例化静态NSString单元重用标识符的正确方法是什么?

时间:2013-05-08 12:31:30

标签: iphone objective-c uitableview ios6 uicollectionview

在iOS5和6中,我可以使用它们的重用标识符(在故事板中注册)检索表视图或集合视图的单元格。我看到的大多数代码示例都在cellForItemAtIndexPath方法中定义了一个静态NSString标识符。这对我来说似乎是违反直觉的 - 每次调用此方法时是否重新分配重用标识符?

在我自己的代码中,我在方法调用之外拉静态赋值,以确保它只执行一次。

一个愚蠢的问题,但是如何只实例化一次静态NSString?

//should I define it here, outside the method?
static NSString *kCellID = @"kCellID";

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
{
//or should I define it here, within the method?
static NSString *kCellID = @"kCellID";


//retrieve cell using the identifier
}

2 个答案:

答案 0 :(得分:2)

除了可读性之外,使静态本身没有特别的好处,因为标识符本身是一个常量字符串。将其全局化使其在任何地方都可用,并且从一开始就将内存创建和管理为常量块,否则它是在代码内部创建时创建一次。任何

中没有明显的差异

答案 1 :(得分:1)

函数内部的静态变量在第一次执行函数时初始化,而全局静态将在启动时初始化。

本地静态效率略低,但在封装方面更为整洁。