objective-c - 以下哪项在 iOS 中效率更高或速度更快?

标签 objective-c

以下哪项在 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];
}

最佳答案

以当今设备的速度,我怀疑是否会有任何可测量的差异。然而,还有一些其他的观察结果:

  1. 根据其他评论,在这些情况下使用静态变量不是一个好主意。事实上,我建议仅在绝对必要的情况下使用静力学。

  2. 除非有必要,我再次建议人们避免使用 viewWithTag:。乍一看,这似乎是寻找控件的一个简单解决方案。但是,一旦您的项目变得更大或其他程序员加入,这很可能是导致错误的原因。我建议使用 IBOutlets 和/或 UIView 扩展,以便您可以直接访问对始终指向所需控件的控件的正确类型引用。

  3. 通过使用 IBOutlet 或属性,您根本不需要任何这些方法:)

关于objective-c - 以下哪项在 iOS 中效率更高或速度更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21275396/

相关文章:

ios - 在 UITableView 中插入和删除行有时会导致崩溃?

objective-c - 测试 NSDocument

ios - 如何在不重启模拟器的情况下将项目添加到 TableView

objective-c - __unsafe_unretained 代表不会建立

iphone - 如何检查 UIView 中的方向?

iphone - 实现为本地存储的视频中的每一帧触发的委托(delegate)

ios - 购买历史记录中的inApp购买待定

objective-c - 当用户默认值更改时如何收到通知?

ios - 为什么我的 UIView 中没有显示任何内容?

ios - 在 SKAction 之后移除 FromParent