0

以下の 3 つのストック オプションを 1 回だけ宣言して初期化する必要があります。それを達成するための疑似コードがいくつかありますが、それを機能させる方法がわかりません。

.mこれはiOS アプリのファイルで宣言されており、ファイルには何もありません.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];
}
4

1 に答える 1

0

変数をプロパティまたはインスタンス変数として宣言するのではなく、静的変数として宣言してください。.m ファイルの最上位のスコープ内、または上記のメソッドがそれらの変数にアクセスできる唯一の場所である場合は、そのメソッドのすぐ内側のいずれかです。そのようです:

static NSArray *anArray=nil;

静的変数は、クラスのすべてのインスタンスに表示されます。明らかに、設計 (スレッド) によっては、同時アクセスによって引き起こされる問題を防ぐ必要があります。

于 2013-08-28T14:19:40.520 に答える