Компилятор должен быть верным, вы уверены, что не делаете что-то не так? Опубликуйте больше кода. В каждом случае вы можете пометить переменную как неиспользованную:
__unused NSTimer *timer = …;
Я использую это, например, в утверждениях, которые компилируются в производственном коде и приводят к предупреждениям:
__unused NSString *foo = …;
NSAssert(foo, @"Bar");
// foo no longer used
Но в вашем случае я почти уверен, что компилятор прав. Вы говорите, что «останавливаете время с помощью метода селектора», вы имеете в виду метод, который вызывается при срабатывании таймера? Как вы получаете указатель на таймер? Потому что вы, очевидно, храните его в локальной переменной, которая там не будет доступна.