Я пытался создать пакет как
CFBundleRef bundleRef = CFBundleCreate(kCFAllocatorDefault, (CFURLRef)@"/Users/MyUser/source/Mybundle.component");
но получил SIGABRT
Это потому, что строка не является объектом CFURL. CFBundleCreate
требует URL-объект и машет рукой и говорит, что «это полностью объект CFURL» недостаточно, чтобы сделать этот путь одним. Вам нужно создать объект CFURL или NSURL и передать его там.
Убедитесь, что вы используете надлежащую функцию/метод. Для создания URL-адреса из пути в Cocoa вы хотите fileURLWithPath:
, а не URLWithString:
(последний ожидает строку, представляющую URL-адрес, а не путь). CF имеет функции, соответствующие каждому из них.
и
NSBundle* myBundle = [[NSBundle alloc]initWithPath:@"/Users/MyUser/source/Mybundle.component"];
но получил ноль. ... Должен ли я создать каталог Mybundle.component раньше?
Я бы не стал рассчитывать на пустую директорию, принимаемую в виде пакета, но для создания объекта связки для этого вам нужен пакет, который уже существует на этом пути (или URL в CF).
Если вы хотите программно создать пакет на диске с нуля, рассмотрите возможность использования NSFileWrapper.
Почему вы даже думаете, что можете наложить 'NSString' на' CFURLRef'? –
Извините, моя вина. – amplifier