Nierozpoznana metoda wybierania kategorii selektora w statycznej bibliotece iOS
Używam oprogramowania innych firm, aby pomóc w napisaniu aplikacji na iPada za pomocą Xcode 4.3.2. Oprogramowanie jest otwarte i zazwyczaj jest skonfigurowane, więc jego kod zostanie skompilowany wraz z kodem napisanym przez programistę dla aplikacji. Ponieważ korzystałem z oprogramowania w wielu miejscach, postanowiłem zbudować go jako statyczną bibliotekę dla symulatora iOS.
Udało mi się zbudować bibliotekę i przekonwertować jedną aplikację na link do tej biblioteki, zamiast kompilować oryginalny kod źródłowy. Jednak, gdy idę uruchomić aplikację na symulatorze, pojawia się błąd, który mówi:nierozpoznany selektor wysłany do instancji.
Sprawdziłem, że program z powodzeniem korzysta z części biblioteki statycznej. Istnieje jednak jeden fragment kodu, który próbuje wywołać metodę na obiekcie, oraz ten, w którym wystąpiła awaria. Wywoływana metoda nie jest w rzeczywistości zdefiniowana w interfejsie tego obiektu. Jest to raczej dodatkowy moduł, który definiuje kategorię dla tej klasy obiektu. Plik nagłówkowy dla tego modułu jest poprawnie dołączony, a kompilator powinien był w stanie znaleźć metodę kategorii i zastosować ją do obiektu, jednak w czasie wykonywania występuje wspomniany powyżej błąd.
Użyłem polecenia „nm”, aby sprawdzić, czy metoda kategorii istnieje w bibliotece statycznej. Oto przykład wyjścia:
<code>nm libStaticLibrary.a | grep categoryMethod 00000130 t -[SomeClass(Category) categoryMethod:] 0000354c s -[SomeClass(Category) categoryMethod:].eh </code>
Jakie pomysły mają ludzie na temat poprawnego działania tej biblioteki z żądaną aplikacją?