なんだか無いようなのでperformSelectorInBackground:withObject:のリファレンス+αを書きます。
翻訳ではありません。原文よりは易しく書いているつもりですが、気になる人は一応原文もご確認ください。

参考: Apple公式のリファレンス(英語)



 performSelectorInBackground:withObject:はNSObjectクラスのメソッドであり、バックグラウンドに新しいスレッドを作って、そこで指定した処理を行います。メソッドの宣言はNSThread.hで行われています。

書式

 - (void)performSelectorInBackground:(SEL)セレクター withObject:(id)引数

引数

  • セレクター
    バックグラウンドで実行したいメソッドを一つ、セレクターを使って指定します。例えば、doInBackground:aParameter というメソッドを実行したい場合、@selector()コンパイラディレクティブを用いて、@selector(doInBackground:)と指定するのが一般的な使い方です。引数がある場合は例のようにコロンを付けなくてはなりません。逆にない場合は付けてはいけません。また、実行するメソッドに戻り値を指定しても、(私の知る限り)受け取れないので注意しましょう。
  • 引数
    セレクターで指定したメソッドに渡す引数を指定します。引数を取らない場合は nil を指定します。引数はオブジェクトでなければなりません。例えば、doInBackground:aParameter というメソッドの引数(aParameter)として整数型の 2 を渡したい場合、指定する引数は [NSNumber numberWithInt: 2] です。

バージョン

 iOS 2.0以降で利用できます。

備考

 このメソッドは新しいスレッドを作るため、マルチスレッドプログラミングについての知識がないとメモリリークを頻繁に発生させます。
 Appleがマルチスレッドプログラミングのガイド(英語)を出していますので、ご参照ください。

>Threading Programming Guide: Introduction

例文



バックグラウンドでこっそりと、誰にも気づかれずにFizz Buzzをするコード
動作テストしてない仮のコードです。多分もっといい例に入れ替えます。

/*
 * メインスレッドで動いているメソッド
 */
- (void)processOnMainThread
{
	// Fizz Buzzの回数
	int goal = 100000;

	// 引数はオブジェクトでなければならない
	NSNumber* goalObj = [Number numberWithInt:goal];

	// バックグラウンドでFizz Buzz開始
	[self performSelectorInBackground:@selector(doFizzBuzzInBackground:) withObject:goalObj];
	NSLog(@"マルチスレッド処理を開始しました。");

	// アクティビティインジケータ(ここではself.indicatorとする)のアニメーションを開始
	// ! これはメインスレッドで呼ばなければならない
	[self.indicator startAnimating];

	return;
}

/*
 * コンソールログで誰にも気づかれずに寂しくFizz Buzzをするメソッド
 */
- (void)doFizzBuzzInBackground:(NSNumber *)goalObj
{
	// オートリリースプールを作る
	// 作らずにオブジェクトのインスタンスを作ってるとメモリリークする(このコードでは多分要らない)
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

	// 扱いやすい整数型に戻す
	int goal = [goalObj intValue];

	// Fizz BuzzをNSLogで延々とやる
	for (int i = 1; i <= goal; i++) {
		if (i%5 == 0 && i%3 == 0)
			NSLog(@"FizzBuzz");
		else if (i%5 == 0)
			NSLog(@"Buzz");
		else if (i%3 == 0) {
			NSLog(@"Fizz");
		else
			NSLog(@"%d", i);
	}

	// アクティビティインジケータのアニメーションを終了
	// これもメインスレッドで実行
	[self.indicator performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:NO];

	// オートリリースプールにためたオブジェクトを開放
	[pool drain];

	NSLog(@"マルチスレッド処理を終了します。");

	return;
}

コメントの通りですが、細かい説明はまた今度編集にて追記します。