在iOS上反编译或解释XIB/NIB文件

xxls0lw8  于 2023-02-01  发布在  iOS
关注(0)|答案(2)|浏览(302)

我对NIB/XIB格式的理解进行了相当多的研究,似乎找不到太多关于这个主题的信息。我对了解iOS如何编码按钮按下等事件感兴趣。例如,我知道按钮和它们调用的处理程序可以动态分配,但我特别感兴趣的是知道如何解码NIB/XIB,这样我就可以知道哪个单击事件是为给定的按钮调用的。我很想知道IBOutlets是如何连接的,以及如何知道从某个事件可以访问哪个函数。
我已经开发了一个自动测试框架,这个特性将极大地帮助我的工具的可用性。非常感谢您可能提供的任何见解。

bxpogfeg

bxpogfeg1#

如果在文本编辑器中打开.xib文件,您将看到它是用XML编码的。排列XML节点描述视图层次结构,以及要分配给给定键路径或这些视图的控制状态的值。您可以看到IBAction连接的描述如下:

<connections>
    <action selector="buttonPressed:" destination="-1" eventType="touchUpInside" id="290"/>
</connections>

任何操作连接的选择器都应该由文件的所有者实现,你可以在<objects>部分找到它作为第一个元素。

<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SomeViewController">

注意<resources>部分也很重要,它描述了xib使用的所有资源(通常是映像)。

cwdobuhd

cwdobuhd2#

我在这里找到了格式描述:
https://github.com/matsmattsson/nibsqueeze/blob/master/NibArchive.md
此外,为了澄清:这些nib文件,无论是XML(bplist)还是“NIBArchive”格式,都是 * 编译 * 的nib,不能用Xcode查看,也不能用ibtool处理。
另见我的相关问题:Extract translatable strings from "NIBArchive" .nib files

相关问题