繁体   English   中英

自应用程序启动以来第一次确定方法内部是否是最简单的方法?

[英]What's the easiest way to determine inside a method if it has been called the first time since app start?

我有做一些启动动画的方法。 在应用程序使用过程中,该方法被调用了很多次,但是在第一次调用时,它还需要做一些特殊的事情。

Singletons可以走吗? 也许还有更好的方法,而不是测量此方法被调用的次数并将其存储在ivar中。

- (void)someMethod {
    static BOOL hasBeenCalledBefore = NO;
    if (!hasBeenCalledBefore) {
        // perform setup
        hasBeenCalledBefore = YES;
    }
    // do other stuff
}

如果使用线程,可能需要额外的工作,但这是基本思想。

为什么构造函数中没有初始化代码? 也许您需要将该方法分解到它自己的类中,该类使用构造函数来处理您提到的init块。

对查克答案的修正(非常正确)

他的工作可以回答您的问题,但是您可以使用的另一种选择(假设它不需要访问传递给该方法的任何变量)将代码从您的方法中取出并放入静态初始化器中。 它仅在首次加载该类时执行,并将隔离本质上完全不同的代码段。

如果希望每个新类都调用它,请使用Chuck的答案但要带有成员变量,或者使用类初始化程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM