我想问我创建了一个有100多个静态方法的类。但是类不是静态的,所以我想问一下,所有方法是否都是在应用程序内存中存在的。或者这是糟糕的编程。请建议我。
请解决我的问题。
答案 0 :(得分:1)
是否还有non-static
方法?
如果否,class
应该static
。
如果是,我会说设计可以改进。
首次使用类时,所有方法都会加载到应用程序内存中。但是只有一个方法的副本保存在内存中。
答案 1 :(得分:0)
如果您确实希望这些程序在可重用的上下文中可用,则将它们编写为常规外部C或C ++函数,并将它们添加到库中以用于其他项目。然后根据需要重新引入或包装它们。我知道 - 它不是objc devs中的流行答案,但至少当你开始拥有非常复杂的代码库时,它的扩展性会更好。
但是类不是静态的,所以我想问一下,所有方法是否都是在应用程序内存中存在。
是的,这些方法可能无法删除。当您在其他项目中使用它们时,您需要为所有项目付费。对于功能,它们可能会被剥离,您只需支付您在程序中实际使用的内容。具体来说,函数或方法的内存只存在于二进制文件和程序的内存中 - 实例不会克隆方法,它们在运行时使用调度表进行引用和查找(如vtable)。该类的每个实例仅通过此表访问其选择器,因此方法计数不会使实例变大。在这种情况下,记忆很少(如果有的话)是一个问题。
或者编程错误。请建议我。
这是非常不寻常的,表明设计中出现了问题。