我仍然试图围绕如何在多个ViewController中最好地创建和初始化自定义类。如何初始化ViewControllers中的自定义类?
假设我创建了一个MyData类。
在FirstViewController中,我想初始化它。
从大学的iPhone课程中的一个,老师建议使用以下内容,以便不会创建同一对象的多个实例。
@property and @synthesize myData is done -(MyData *)myData { if (!myData) { myData = [[MyData alloc] init]; } return myData; } myData is released
这样做的三件事。如果我将一个MyData alloc init放在FirstViewController的一个方法中,那么每次调用该方法时都会告诉我,会创建一个消耗内存的新对象,并且可能会导致内存泄漏。通过创建上面的getter,每次使用该对象时,都会调用getter,这似乎浪费了CPU周期。如果我没有执行alloc init,那么该对象根本就没有创建。
最后在后续的视图中,我发现我只需在SecondViewController中执行@property和@synthesize MyData,然后将FirstViewController中的myData对象传递给它。
那么,为什么我需要alloc init来在FirstVC中创建对象,而不是在SecondVC中?我不应该这样做,为要创建的对象分配一些内存,以便我可以发送参考?
有没有更好的方式来分配初始化对象MyData在FirstVC中不创建多个实例,但不会不必要地浪费CPU周期? (对于那些认为CPU很便宜的公司,如果你有很多对象声明并认为是移动的)
希望这是有道理的。在此先感谢,
Hiren。
嗯......有趣。我没有想到这一点。 – HM1 2011-03-29 06:19:11