以下哪项在 iOS 中效率更高或速度更快?
/* 公共(public)静态变量 */
static UICollectionView *mDocsCollection;
@interface ClassA ()
{
}
@end
@implementation ClassA
- (UICollectionView *)documentsCollection
{
if (!mDocsCollection) {
mDocsCollection = (UICollectionView *)[self.view viewWithTag:VIEW_TAG_DOCS_COLLECTION];
}
return mDocsCollection;
}
@end
/* 接口(interface)变量 */
@interface ClassA ()
{
UICollectionView *mDocsCollection;
}
@end
@implementation ClassA
- (UICollectionView *)documentsCollection
{
if (!mDocsCollection) {
mDocsCollection = (UICollectionView *)[self.view viewWithTag:VIEW_TAG_DOCS_COLLECTION];
}
return mDocsCollection;
}
@end
/* 私有(private)静态变量 */
- (UICollectionView *)documentsCollection
{
static UICollectionView *docsCollection;
if (!docsCollection) {
docsCollection = (UICollectionView *)[self.view viewWithTag:VIEW_TAG_DOCS_COLLECTION];
}
return docsCollection;
}
/* 每次都会进行类型转换(不使用变量)*/
- (UICollectionView *)documentsCollection
{
return (UICollectionView *)[self.view viewWithTag:VIEW_TAG_DOCS_COLLECTION];
}
最佳答案
以当今设备的速度,我怀疑是否会有任何可测量的差异。然而,还有一些其他的观察结果:
根据其他评论,在这些情况下使用静态变量不是一个好主意。事实上,我建议仅在绝对必要的情况下使用静力学。
除非有必要,我再次建议人们避免使用 viewWithTag:。乍一看,这似乎是寻找控件的一个简单解决方案。但是,一旦您的项目变得更大或其他程序员加入,这很可能是导致错误的原因。我建议使用 IBOutlets 和/或 UIView 扩展,以便您可以直接访问对始终指向所需控件的控件的正确类型引用。
通过使用 IBOutlet 或属性,您根本不需要任何这些方法:)
关于objective-c - 以下哪项在 iOS 中效率更高或速度更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21275396/