Chciałem sprawdzić, czy ta poprawka rzeczywiście działa i nie będzie miało negatywnego wpływu na mój kodu:Przyjęcie protokołu z kategorii
Utworzyłem statyczną bibliotekę z MyClass.h nagłówku publicznym, reszta mojego kodu jest wszystko ukryte. MyClass przyjmuje protokół MyProtocol, który jest zdefiniowany w MyProtocol.h. Chcę ukryć MyProtocol.h, ale ponieważ MyClass.h jest publicznym nagłówkiem, nie może znaleźć MyProtocol.h, jeśli staram się ukryć go jako nagłówek projektu. Moje rozwiązanie:
MyClass.h:
@interface MyClass : NSObject {
//instance variables
}
// methods
@end
MyClass.m:
#import "MyProtocol.h"
@interface MyClass() <MyProtocol>
@end
@implementation MyClass
// implementation
@end
Nie widziałem inne przykłady tego typu rzeczy się robi inne niż tutaj: Can a category simultaneously implement a protocol?, a problem/odpowiedzi zakończyły się niezwiązaniem z pierwotnym pytaniem. Tak więc chciałem mieć pewność, że to faktycznie robi to, na co wygląda, i/lub sprawdzić, czy istnieje lepszy sposób osiągnięcia tego, co próbuję zrobić.
Używanie kategorii w celu dostosowania klasy do protokołu jest legalne. –