簡體   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