iPhone iOS 实例化静态 NSString 单元重用标识符的正确方法是啥?
Posted
技术标签:
【中文标题】iPhone iOS 实例化静态 NSString 单元重用标识符的正确方法是啥?【英文标题】:iPhone iOS what's the correct way to instantiate static NSString cell reuse identifiers?iPhone iOS 实例化静态 NSString 单元重用标识符的正确方法是什么? 【发布时间】:2013-05-08 12:31:30 【问题描述】:在 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
【问题讨论】:
【参考方案1】:除了可读性之外,将其设置为静态本身并没有什么特别的好处,因为标识符本身是一个常量字符串。使其全局化使其在任何地方都可用,并且从一开始就将内存作为常量块创建和管理,否则它是在代码中创建时创建一次。没有任何明显的区别
【讨论】:
【参考方案2】:函数内的静态变量在函数第一次执行时被初始化,而全局静态变量将在启动时初始化。
本地静态的效率略低,但在封装方面更整洁。
【讨论】:
以上是关于iPhone iOS 实例化静态 NSString 单元重用标识符的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章