最初に NSInvocation を作成します。これは、タイマーで呼び出したいメソッドにいくつかのパラメーターがあり、ここで設定するためです。
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(addStockPriceForArticle:forInterval:)]];
[invocation setArgument:&varArticle atIndex:2];
NSNumber *interval = [NSNumber numberWithInt:60];
[invocation setArgument:&interval atIndex:3];
インデックス 0 と 1 はターゲットとセレクターであるため、引数を設定するときはインデックス 2 から開始するようにドキュメントに記載されています。
次に、タイマーの間隔を決定します。この場合、記事が公開されてから 60 分後にタイマーを呼び出しているので、間隔は60 - timeSincePubDate
分単位です。これに 60 を掛けて、タイマーの間隔 (秒) にします。
int timeUntilCheck = (60-timeSincePubDate)*60;
次に、間隔を指定してタイマーを作成し、実行ループに追加します。私はこれをやったことがありませんが、簡単に思えます。本来のメソッドを呼び出さない理由がわかりません。
[[NSRunLoop currentRunLoop] addTimer:[NSTimer timerWithTimeInterval:timeUntilCheck invocation:invocation repeats:NO]
forMode:NSDefaultRunLoopMode];