我试图创建一个像
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 目录吗?
我不会指望一个空目录被接受为一个捆绑包,但您确实需要一个捆绑包已经存在于该路径(或 CF 中的 URL)中,然后才能为其创建捆绑包对象。
如果您希望以编程方式从头开始在磁盘上创建包,请考虑使用NSFileWrapper。