1

我在我的应用程序中反复使用这个片段。那么,最好读取一次并将其存储在全局变量或 appDelegate 中,还是在需要时继续执行代码片段?

#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
if (SYSTEM_VERSION_LESS_THAN(@"7.0"))
    return NO;
return YES;
4

2 回答 2

5

我会说只是将它保存在 AppDelegate 拥有的变量中 - 它是一个简单的 BOOL,因此它不是存储密集型的。

然而,这个片段根本不是系统密集型的——它在性能方面几乎是免费的。但是,由于您正在考虑这种优化,最好将其保留在 AppDelegate 中。

于 2013-09-03T19:18:05.947 回答
1

A contrived example, as in this case is completely unnecessary, but if you want to use this pattern in future to ensure something is only called once, use dispatch_once from GCD:

- (BOOL) isIOS7 {
    static dispatch_once_t onceToken;
    __block BOOL isIOS7 = NO;
    dispatch_once(&onceToken, ^{
        isIOS7 = SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0");
    });
    return isIOS7;
} 
于 2013-09-03T20:09:13.980 回答