Objective-c-fast-enumeration

提供:Dev Guides
移動先:案内検索

Objective-C高速列挙

高速列挙は、コレクション全体の列挙に役立つObjective-Cの機能です。 したがって、高速列挙について知るためには、まずコレクションについて知る必要があります。これについては、次のセクションで説明します。

Objective-Cのコレクション

コレクションは基本的な構成要素です。 他のオブジェクトを保持および管理するために使用されます。 コレクションの全体的な目的は、オブジェクトを効率的に保存および取得する一般的な方法を提供することです。

コレクションにはいくつかの異なるタイプがあります。 それらはすべて、他のオブジェクトを保持できるという同じ目的を果たしますが、オブジェクトの取得方法が主に異なります。 Objective-Cで使用される最も一般的なコレクションは次のとおりです-

  • NSSet
  • NSArray
  • NSDictionary
  • NSMutableSet
  • NSMutableArray *NSMutableDictionary

これらの構造の詳細については、link:/objective_c/objective_c_foundation_framework [Foundation Framework]のデータストレージを参照してください。

高速列挙構文

for (classType variable in collectionObject ) {
  statements
}

高速列挙の例を次に示します。

#import <Foundation/Foundation.h>

int main() {
   NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
   NSArray *array = [[NSArray alloc]
   initWithObjects:@"string1", @"string2",@"string3",nil];

   for(NSString *aString in array) {
      NSLog(@"Value: %@",aString);
   }

   [pool drain];
   return 0;
}

プログラムをコンパイルして実行すると、次の結果が得られます。

2013-09-28 06:26:22.835 demo[7426] Value: string1
2013-09-28 06:26:22.836 demo[7426] Value: string2
2013-09-28 06:26:22.836 demo[7426] Value: string3

出力からわかるように、配列内の各オブジェクトは順番に出力されます。

後方列挙

for (classType variable in [collectionObject reverseObjectEnumerator] ) {
  statements
}

高速列挙のreverseObjectEnumeratorの例を次に示します。

#import <Foundation/Foundation.h>

int main() {
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   NSArray* array = [[NSArray alloc]
   initWithObjects:@"string1", @"string2",@"string3",nil];

   for(NSString *aString in [array reverseObjectEnumerator]) {
      NSLog(@"Value: %@",aString);
   }

   [pool drain];
   return 0;
}

プログラムをコンパイルして実行すると、次の結果が得られます。

2013-09-28 06:27:51.025 demo[12742] Value: string3
2013-09-28 06:27:51.025 demo[12742] Value: string2
2013-09-28 06:27:51.025 demo[12742] Value: string1

出力からわかるように、配列内の各オブジェクトは、通常の高速列挙と比較して逆の順序で印刷されます。