我需要这三个股票期权是类级变量,所以它们只被声明和初始化一次

时间:2013-08-28 10:29:59

标签: objective-c initialization declaration

我需要声明下面的三个股票期权并初始化一次。我有一些伪代码来实现它,但我不确定如何使它工作。

这是在iOS应用的.m文件中声明的,.h文件中没有任何内容。

伪代码如下:

// _msftStockPrice _googStockPrice _applStockPrice need to be class level
if(_msftStrockPrice == nil)
googStockPrice = [[[CPDStockPriceStore sharedInstance] monthlyPrices:CPDTickerSymbolMSFT]

if(_appleStrockPrice == nil)
_msftStockPrice = [[[CPDStockPriceStore sharedInstance] monthlyPrices:CPDTickerSymbolMSFT]


if(_msftStrockPrice == nil)
msftStockPrice = [[[CPDStockPriceStore sharedInstance] monthlyPrices:CPDTickerSymbolMSFT]

if ([plot.identifier isEqual:CPDTickerSymbolAAPL] == YES) {
   return [_appleStockPrice objectAtIndex:index];
} else if ([plot.identifier isEqual:CPDTickerSymbolGOOG] == YES) {
   return [[_googStockPrice objectAtIndex:index];
} else if ([plot.identifier isEqual:CPDTickerSymbolMSFT] == YES) {
   return [_msftStockPrice objectAtIndex:index];
}

1 个答案:

答案 0 :(得分:0)

不要将变量声明为属性或实例变量,而是将其声明为静态变量。在.m文件的顶部范围内,或者如果上面的方法是访问这些变量的唯一位置,就在该方法内部。像这样:

static NSArray *anArray=nil;

静态变量将对您的类的所有实例可见。显然,根据您的设计(线程),您需要防止因并发访问而导致的问题。