macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

NSBlockOperationクラス

INDEX>Foundation> >NSBlockOperation


apple(OS X)
apple(iOS)

解説

継承 NSObject
準拠 NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 iOS 4.0以降
定義

概要

一度に複数のブロックを実行しようとするときにこのオブジェクトを使用することができます。

オブジェクトの操作

ブロックでブロックオペレーションを作成するには(+ blockOperationWithBlock:)メソッドを使用します。
オペレーションを追加するには(– addExecutionBlock:)メソッドを使用します。レシーバが管理するブロックを配列で返すには、(– executionBlocks)メソッドを使用します。

1秒ごとに起動するログと1.5秒ごとに起動するログのブロックを同時に動かすサンプル

#pragma mark NSBlockOperation addOperation:

-(void)method001
{
    NSMutableString *muStr = [NSMutableString stringWithCapacity:0];
    [muStr appendString:@"string"];
    
    //一つ目の処理
    NSBlockOperation* operation = [NSBlockOperation blockOperationWithBlock: ^{
        for (NSInteger i=0; i < 10; i++) {
            [muStr performSelectorInBackground:@selector(appendString:)
                                    withObject:@"+"];
            NSLog(@"muStr %@ ", muStr);
            [NSThread sleepForTimeInterval:1.0];
        }
    }];
    
    //2つめの処理を追加
    [operation addExecutionBlock:^{
        NSLog(@"NSThread: %p", [NSThread currentThread]);
        for (NSInteger i=0; i < 5; i++) {
            NSLog(@"muStr %d", i);
            [NSThread sleepForTimeInterval:1.5];
        }
    }];
    
    // 終了時処理
    [operation setCompletionBlock:^{
        NSLog(@"end");
    }];
    
    //実行
    [operation start];
}

メソッド

定数


サブクラス化の注意