解いてみた/ザッカーバーグの面接試験2:アクティビティ・インディケーター

ザッカーバーグの面接試験2:アクティビティ・インディケーター
http://satoshi.blogs.com/life/2012/08/zack2.html

こんな感じかな?

#import "NetworkActivityManager.h"

@implementation NetworkActivityManager

+ (id) sharedInstance {
    static NetworkActivityManager* manager;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [[NetworkActivityManager alloc] init];
    });
    return manager;
}

- (id)retain {
    [super retain];
    if ([self retainCount] > 1) {
        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    }
    return self;
}

- (oneway void)release {
    [super release];
    if ([self retainCount] <= 1) {
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    }
}

また、このケースで、シングルトンへのstrong referenceを使う利点と欠点を述べてください。

・利点:Reference countがインジケータのON/OFFスイッチの代わりにつかえてシンプルに書ける
・欠点:うーん、とくに思いつかない。関係ないところでは、上のコードはARC対象外になっちゃうので微妙ってくらいかなぁ。。