2010-03-18 36 views
0

我在我的可可项目中使用非常有用的ID3框架。有一件我想修改的小东西,但我似乎无法获得我为应用于构建的框架所做的更改。如何正确修改自定义可可框架?

框架提供的源代码配备了一个Xcode项目,所以我已经打开,最多和testings清酒在把一个NSLog(@"hello");。这是definetly在一个地方,它就会被调用,还有其他NSLog()电话显示的框架不仅仅是控制台输出被抑制。

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

我的直觉是框架代码编译成的可执行文件以某种方式被缓存。但是因为我对框架的工作还不熟悉,所以我不太确定在哪里寻找。

回答

1

有没有缓存在Mac OS X中的可执行文件或框架要调试这是怎么回事,有几个有用的技巧:

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

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

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

我的直觉是,你的可执行文件仍然从你的可执行文件的应用包装器或其他可能安装的地方加载一个旧的框架。尝试清理你的项目(使用框架的项目,而不是框架本身)。

+0

对,我无法让otool工作出于某种原因,但DYLD_PRINT_LIBRARIES非常有用,并且表明它正从Library/Frameworks /中加载。它似乎坚持在那里(即如果我从那里删除它不会编译),但我可以简单地复制框架的新构建,并且它工作正常。非常感谢你。 – Septih 2010-03-18 11:04:25

+0

它希望从那里加载框架的原因是它是框架'INSTALL_PATH'构建设置。使用'otool -L/Library/Frameworks/ID3.framework/ID3'应该显示框架安装路径(第一行输出)。您并不总是必须在那里复制框架,您可以使用框架构建目录中的那个。为了让你的主要可执行文件加载这个框架,还有另一个环境变量:'DYLD_FRAMEWORK_PATH'。请参阅'man dyld' – 2010-03-18 11:12:55

相关问题