Я столкнулся с этой же проблемой. В моем случае у меня был код, который искал класс, используя
Class aClass = objc_getClass("Foo");
, который работал, когда класс Foo находился в том же комплекте проекта, что и мой AppDelegate.
В рамках рефакторинга кода я переместил класс Foo и связанные классы модели из проекта AppDelegate в общий статический проект lib, который было бы проще тестировать и повторно использовать.
Когда я переместил класс Foo в libFooBar, objc_getClass ("Foo") теперь возвращал nil вместо класса Foo.
Чтобы решить эту проблему, я вызвал интересующий меня класс, чтобы классы из libFooBar были зарегистрированы в среде выполнения Objective-C. Я сделал это так:
Foo* foo = [[Foo alloc] init];
[foo release];
Class aClass = objc_getClass("Foo");
Теперь objc_getClass ("Foo") снова возвращает класс Foo вместо nil.
Я могу только предположить, что классы статической библиотеки не зарегистрированы, пока не будет сделан вызов одному из классов в статической библиотеке.