致命的';截面过大,可以';t编码';gcc中的内存地址(iPhone应用程序)
我开发了一个MonoTouch iPhone应用程序。 目前,它通过解析生成所有对象的大量xml数据来工作。 我试图通过序列化这些对象并存储在SQLLite数据库中来提高启动速度。但这实际上是缓慢的。 相反,我所做的是编写一个程序,预解析这个xml,然后写出可以在运行时简单编译和实例化的类文件 这是一个巨大的速度提升,但我只能在gcc编译器失败之前编译一部分集合:我得到一个 “致命:部分太大,无法对r\U地址进行编码” 无法将地址编码为24位分散的重新定位条目的错误 有人能帮我解释一下吗?我不太了解编译器,但我很想知道这是否可行,或者我是否做错了什么 每个单独的类都会编译,只有当我编译了许多类时,它才会失败。致命的';截面过大,可以';t编码';gcc中的内存地址(iPhone应用程序),iphone,ios,gcc,xamarin.ios,Iphone,Ios,Gcc,Xamarin.ios,我开发了一个MonoTouch iPhone应用程序。 目前,它通过解析生成所有对象的大量xml数据来工作。 我试图通过序列化这些对象并存储在SQLLite数据库中来提高启动速度。但这实际上是缓慢的。 相反,我所做的是编写一个程序,预解析这个xml,然后写出可以在运行时简单编译和实例化的类文件 这是一个巨大的速度提升,但我只能在gcc编译器失败之前编译一部分集合:我得到一个 “致命:部分太大,无法对r\U地址进行编码” 无法将地址编码为24位分散的重新定位条目的错误 有人能帮我解释一下吗?我不太
没有特定数量的类导致它失败,也没有函数的长度,相反,它似乎是由应用程序代码的大小引起的 谢谢你抽出时间, 利亚姆这已经是一个问题了 您可以做的是尽量减少应用程序的最终大小。为了减少应用程序的大小,您可以做以下几件事:
- 启用链接(项目属性-iPhone构建-链接器行为:链接所有程序集)
- 避免使用值类型的泛型,因为它会导致每个值类型发出一次代码(因此,如果您使用
和列表
,则列表代码将发出两次-对于较大的泛型类型,这可能会产生很大的差异)。请注意,所有类类型都将共享代码(因此列表
和List
将使用相同的代码),因此可以自由地将泛型与类类型一起使用List