Как получить имя статической / перемещаемой структуры из имени класса в objective-c

У меня есть строка с именем класса, и я пытаюсь получить имя фреймворка, которому принадлежит класс.

Вещи, которые я пробовал:

  1. bundleForClass
Class *myClass = NSClassFromString(@"ClassName");
[NSBundle bundleForClass:myClass];

Но я не могу заставить его работать с перемещаемым / статическим типом mach-o.

  1. Добавление нового метода в NSObject с использованием категорий
// This is on NSObject+ModuleID.h
@interface NSObject (ModuleID)
- (NSString *) moduleIdentifier;
@end

// This is on NSObject+ModuleID.m
@implementation NSObject (ModuleID)
- (NSString *) moduleIdentifier { return @"Framework Name"; }
@end

Class *myClass = NSClassFromString(@"ClassName");
[myClass moduleIdentifier];

Это не работает, поскольку проект включает более 1 фреймворка.

  1. Добавление нового строкового свойства, содержащего имя фреймворка, к каждому классу в фреймворках
-(NSString *)moduleIdentifier
{ return @"Framework Name"; }

Это невозможно, учитывая, что количество классов легко превышает сотню.

Есть какой-либо способ сделать это? Любой вклад будет оценен, спасибо!

1 ответ

Пытаться

-(NSString *)moduleIdentifier
{
    return [NSBundle bundleForClass:self.class].bundleIdentifier;
}
Другие вопросы по тегам