1

我想通过静态库中的一些代码从 CFBundle 加载 XIB。

例子:

MyViewController * foo = [[Static Library] instance] getMyViewController];

所以我在手动创建的 CFBundle 中有一个 MyViewController .xib,在它的 Resources 目录中。

但是,如果我尝试通过 getMyViewController 中的 [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:MyBundlePointer] 加载它,我会得到 NSInternalInconsistencyException。

任何想法?我或多或少难倒这个。不确定是否有可能做到这一点。

4

2 回答 2

0

这可能不是您的具体问题,但可能是一个问题:

CFBundle 不是与 NSBundle 的免费桥接。由于您在描述中使用了术语 CFBundle,我想知道您是否传递了 CFBundle,而不是 NSBundle。

这是两种不同的类型,您需要显式创建一个 NSBundle 实例,因为您不能像使用 CF/NS-String、Array、Data 等一样将 CFBundleRef 转换为 NSBundle。

于 2011-01-30T22:23:37.803 回答
0

我目前对 Monotouch 有完全相同的问题,这就是我找到你的问题的原因。我得到了和你一样的例外。这让我假设我面临的不是 Monotouch 问题,而是 XIB/Cocoatouch 的基本(错误)行为。

所以答案是:不,这是不可能的。虽然很伤心。

勒内

于 2011-01-30T21:37:58.743 回答