[NSThread detachNewThreadSelector:@selector(colourChange) toTarget:del withObject:nil];
これは、クラスのデリゲート(del)でcolourChangeメソッドを呼び出す必要がありますが、そうではありませんか?
デバッガーを使用してdel!= nilをチェックし、デリゲートを指していることをチェックしました。
で解決
dispatch_async(dispatch_get_global_queue(0, 0),
^{
[del colourChange];
});
詳細については、以下のマークされた回答のリンクを確認してください。