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 单元重用标识符的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

iOS面向对象的建模:MVC(OC基础)

Java模拟顶级静态类

ios-制作静态.a文件

无法实例化名为 UILayoutGuide 的类

怎样推断 ios设备的类型(iphone,ipod,ipad)

iOS文字编辑之富文本介绍