Iphone 简单的应用程序结构。你怎么认为?
我对保留属性的方式和内存管理方面感兴趣。这适用于编辑存储在表中的类信息的简单应用程序。有3个视图控制器Iphone 简单的应用程序结构。你怎么认为?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我对保留属性的方式和内存管理方面感兴趣。这适用于编辑存储在表中的类信息的简单应用程序。有3个视图控制器 列表视图(列出所有类) 所选项目的详细视图 (列出选定类的属性) 编辑视图(列出单个属性 所选类别的,并允许 (编辑) 这就是它目前的结构,你怎么看 ListViewController @属性(非原子,保留)NSMutableArray*池 @属性(非原子,保留)PoolFacilityEdit控制器*childController 要将新类实例添加到表中,请单击运行此方法的“添加”按钮
- 列表视图(列出所有类)
- 所选项目的详细视图 (列出选定类的属性)
- 编辑视图(列出单个属性
所选类别的,并允许 (编辑)
@属性(非原子,保留)PoolFacilityEdit控制器*childController 要将新类实例添加到表中,请单击运行此方法的“添加”按钮
//Loads up the editPoolFacility controller to add a new pool
-(作废)添加{
}
现在加载下一个控制器,下面是它有趣的实例变量。不管明智与否,我选择只将池分配给新控制器,而不是保留。我不想不必要地保留
详细视图
@property (nonatomic, assign) PoolFacility *thePoolFacility; (assigned in the above add method)
@属性(非原子,赋值)NSMutableArray*池;(也在add方法中指定)
详图视图有一个执行以下操作的方法
- (void)viewWillAppear:(BOOL)animated {
//Pass the copy onto the child controller
if (self.childController.thePoolFacility != self.thePoolFacility) {
self.childController.thePoolFacility = self.thePoolFacility;
}
}
该池被传递到详细信息编辑控制器,以便它知道它正在编辑的池
现在,用户单击一个单独的池信息位(例如名称),就会弹出详细视图控制器。它允许编辑单个属性
有趣的是,这些属性如下所示:
@property (nonatomic, retain) PoolFacility *thePoolFacilityCopy;
@财产(非原子,分配)池设施*池设施
它会创建一个副本进行编辑,以防用户更改值,然后想要取消。如果用户按save,则会将值从副本复制到非副本
- (void)viewWillAppear:(BOOL)animated {
PoolFacility *poolCopy = [self.thePoolFacility copy];
self.thePoolFacilityCopy = poolCopy;
[poolCopy release];
}
如果按“保存”或“取消”,则会弹出视图
然后我们回到显示所有字段的中间视图
现在,如果用户按下save,我就弹出ViewController,我们回到列表视图。或者,如果用户按cancel,我将运行此方法
-(void)cancel {
[self.pools removeObject:self.thePoolFacility];
[self.navigationController popViewControllerAnimated:YES];
}
总而言之
我在不同的视图控制器中指定属性,而不是保留它
此外,“我的视图”控制器仅加载一次,在“消失”时不会解除分配
我希望这有点道理!我的问题是。。这是一个好的方法吗
谢谢
Dan我在这里没有看到具体的问题,所以我只做一些一般性的评论
谢谢你,布伦特。是否有任何在线代码示例以您上面描述的方式显示通知的使用?
-(void)cancel {
[self.pools removeObject:self.thePoolFacility];
[self.navigationController popViewControllerAnimated:YES];