1

行: が機能しないのはなぜNSLog(@"request complete");ですか? ブロック内のコードは、FBRequestが完了したときにのみ呼び出されます。その間、私の操作は から削除されNSOperationQueue、ブロックは呼び出されないと思いました。

test.h

#import <Foundation/Foundation.h>
@interface test: NSOperation;
@end

test.m

#import "test.h"
@implementation test

- (void)start {
    [self willChangeValueForKey:@"isExecuting"];
    _isExecuting = YES;
    [self didChangeValueForKey:@"isExecuting"];

    [self loadFBRequest];
}

- (BOOL)isConcurrent {
    return YES;
}

- (void)finish {
    [self willChangeValueForKey:@"isExecuting"];
    [self willChangeValueForKey:@"isFinished"];

    _isExecuting = NO;
    _isFinished = YES;

    [self didChangeValueForKey:@"isExecuting"];
    [self didChangeValueForKey:@"isFinished"];
}

- (void)loadFBRequest {
    FBRequestConnection *conn = [[FBRequestConnection alloc] init];

    // Example: Get my info
    FBRequest *request = [FBRequest requestForGraphPath:@"/me?fields=id,name"];
    [conn addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        if (!error) {
            NSLog(@"result=%@", result);
        }
        NSLog(@"request complete"); // Don't work!
        [self finish];
    }];
    [conn start];
}

@end
4

0 に答える 0