1

在 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
}
4

2 回答 2

2

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

于 2013-05-08T12:41:34.160 回答
1

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

局部静态的效率略低,但在封装方面更整洁。

于 2013-05-08T12:38:40.410 回答