【问题标题】:Decompiling or interpreting XIB/NIB files on iOS在 iOS 上反编译或解释 XIB/NIB 文件
【发布时间】:2014-06-16 21:19:12
【问题描述】:

我对 NIB/XIB 格式的理解进行了相当多的调查,但我似乎找不到关于该主题的太多信息。我有兴趣了解 iOS 如何将事件编码为按钮按下等。例如,我知道按钮和它们调用的处理程序可以动态分配,但我特别想知道如何解码 NIB/XIB,以便知道给定按钮调用了哪个单击事件。我很想知道 IBOutlets 是如何连接的,以及我如何知道某个事件可以访问什么功能。

我正在开发一个自动测试框架,这个功能将极大地帮助我的工具的可用性。非常感谢您提供的任何见解。

【问题讨论】:

    标签: ios objective-c xib nib


    【解决方案1】:

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

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

    任何操作连接的选择器都应由文件所有者实现,您可以在&lt;objects&gt; 部分下找到它作为第一个元素。它看起来像这样:

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

    注意&lt;resources&gt; 部分也很重要,该部分描述了 xib 使用的任何资源(通常是图像)。

    【讨论】:

    • 我应该澄清一下,我很少看到这种格式的。它们几乎总是采用 NibArchive 格式,我想知道如何查看或取消归档它。感谢您的有用回复。
    • Xcode6-beta,但是我有兴趣提供一个向后兼容大多数 xcode 版本的框架。
    • 在 Xcode 中单击一个 xib 文件,然后查看右侧实用工具工具栏中的文件检查器。 Interface Builder Document 下的下拉菜单有哪些设置?
    • 嗯,我正在寻找一种编程方式来做到这一点。在我的最终用户环境中使用 xcode 不是一个选项。
    • 我不建议使用 xcode,只是要找出您要解码的 .xib 版本。 xibs 的实现经历了多次迭代,其中最新的是简单易读的 XML
    猜你喜欢
    • 2011-11-19
    • 2010-10-29
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多