很抱歉,如果这是一个菜鸟问题,但是当我开始学习编程时,我会听到一些简单的事情。如果我在我的一个ViewControllers中使用NSDateFormatter以某种格式显示我想要的日期,并且格式没有改变,那么将NSDateFormatter声明为我班级或我班级属性的ivar是“最佳实践”吗?并在viewDidLoad中初始化它,以便我可以在我的不同方法中重用它?现在我只需要在处理显示的方法中实例化一个,并且想知道是否更好地继续声明它,或者声明一次并在整个viewController类中使用它。谢谢!
答案 0 :(得分:3)
这不是“noob问题”;这是一个合理的问题和合理的答案。
从纯粹的效率角度来看,您过早地进行了优化。别担心,快乐。如果你正确地管理内存(这样你就不会泄漏NSDateFormatters),你应该如何获得一个特定的实例并不重要,特别是考虑到这是一个如此轻量级的对象。如果你在一个循环中创建一个新的NSDateFormatter 1000次,那你就是愚蠢的,但如果你现在正在创建这个对象,那么当你需要它并且它已经不再存在时,它就没什么大不了的了。 / p>
另一方面,从架构的角度来看,确保你所做的是干。如果日期格式化程序需要任何配置,请不要在每次创建时重复自己;编写一个方法,每次都以相同的方式提供日期格式化程序,以便配置代码只在一个地方。
答案 1 :(得分:0)
实例化新对象总是以内存和计算时间为代价,所以如果没有太多努力就可以尝试将其声明一次然后重复使用,至少在同一个类中。 NSDateFormatter
不是线程安全的,所以你不能简单地在不同的线程之间共享一个实例。
答案 2 :(得分:0)
对于任何对象,最佳做法是在运行时声明它,使用它并释放它,以便该对象在内存中所用的时间保持最大。
当我们需要整个班级的ivar值时,我们制作一个ivar,就像员工的任何年龄一样,它将在不同的方法中检查,如年龄,年龄等类别等。如果这个iVar是一个对象,然后在iPhone中,总是将它用作属性是一个好习惯,这样内存管理问题就会转向编译器端。
现在,在您的情况下,您可以生成一个简单的方法,它将获取日期对象并返回字符串,或者任何String作为参数和返回日期对象,在那里创建一个NSDateFormater并使用它。无需像iVar那样制作它。