2012-03-14 12 views
5

Obecnie pracuję nad podklasą NSProxy, która przechwytuje określone wiadomości i nigdy nie przekazuje ich nikomu, ale tylko je przetwarza, więc te metody nigdy nie istnieją. I tu pojawia się problem, oczywiście kompilator zaczyna narzekać na brakujące implementacje metod i nie mogę wymyślić, jak to zatrzymać, dodawanie metod stub do interfejsu tylko po to, aby kompilator się zamknął, nie działa, ponieważ metody są formowane arbitralnie i nie znam ich z wyprzedzeniem (aby było to trochę bardziej szczegółowe, proszę o projekt this).Dezaktywuj metodę instancji nie znaleziono ostrzeżenie

Idealnie chciałbym powiedzieć kompilatorowi, że nie powinien on wykonywać żadnej metody sprawdzania dla tej konkretnej klasy, ale ponieważ wydaje się to raczej mało prawdopodobne, byłbym również szczęśliwy dla #pragma lub w jakikolwiek inny sposób (który doesn ' t include, aby zamknąć kompilator dla każdego ostrzeżenia w całym projekcie/pliku!)

Odpowiedz

1

Twoje instrukcje przełączników nie są tak naprawdę arbitralne, mogą mieć dowolną długość. W przypadku dużej liczby długości można je zgłaszać z korzyścią dla kompilatora (a następnie sprawdzać błędy, co nie byłoby możliwe po wyłączeniu ostrzeżenia). Na przykład:

typedef void (^ObjCCaseBlock)(); 

@interface NSObject() 
- (id)switch; 
- (void)case:(NSString*)a :(ObjCCaseBlock)b; 
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b; 
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b; 
@end 

Powtórz tak wielu poziomach, jak jest prawdopodobne (i można dodać poziomy jeśli kiedykolwiek wpadł na problem). To trochę żmudne, ale nie trudne.

+0

To nie działa z 'default', który nie musi być na końcu ... – JustSid

+0

Albo dobrze, działa, ale staje się duży i nieprzyjemny prawie w żadnym momencie. – JustSid

+0

Po trochę googlowaniu, wydaje się, że jest to jedyna opcja (wypełniłem radar dla '# pragma') ... Nie jestem zadowolony z rozwiązania, ale myślę, że to musi wystarczyć teraz. – JustSid

Powiązane problemy