如何正确修改自定义cocoa框架?

时间:2010-03-18 10:15:58

标签: objective-c cocoa frameworks

我正在使用我的可可项目中非常有用的ID3框架。我想在其中修改一个小小的东西,但我似乎无法获得应用于构建框架的更改。

随框架提供的源代码附带一个Xcode项目,所以我打开了它,为了测试,放入NSLog(@"hello");。它肯定会在一个被调用的地方,还有其他在显示的框架中调用NSLog()所以不仅仅是控制台输出受到抑制。

一旦修改后构建框架我首先清理了构建文件夹,确保它实际上删除了文件,然后构建它。然后在我正在使用框架的Xcode项目中,我删除了旧的引用,并在新构建的框架中添加了一个新引用。使用新构建框架运行我的项目不会调用修改后的框架代码。我已尝试使用作为框架Xcode项目一部分的开发和部署版本。

我的直觉是,框架代码编译成的可执行文件正在以某种方式缓存。但由于我对框架的运作方式相当不熟悉,我不确定在哪里看。

1 个答案:

答案 0 :(得分:1)

Mac OS X中没有可执行文件或框架的缓存。为了调试正在进行的操作,有一些有用的技巧:

在命令行上使用otool -L <path_to_your_executable>,以了解加载命令(将库和框架加载到可执行文件中)。尝试找到ID3框架并检查路径。如果以@executable_path开头,则必须将框架复制到可执行文件的包装器中。

要真正了解加载哪些库以及从哪里加载,请将环境变量DYLD_PRINT_LIBRARIES设置为YES。您可以在Xcode(在可执行文件设置中)或终端中执行此操作。

您将看到dyld加载的库及其路径。

我的直觉是,您的可执行文件仍然从可执行文件的应用程序包装器或可能安装它的其他位置加载旧框架。尝试清理您的项目(使用框架的项目,而不是框架本身)。