这个问题看起来非常直接,但我在这里有一个情况,我只需要一些帮助,如何以有效的方式做到这一点。比如说:我有三个视图视图1,视图2,视图3.
首先,我从基本视图推送View 1,然后从View 1推出View 2,然后从View 2推送View 3.现在View 3需要一个保存用户信息的对象。所以我在这里做的是将用户对象从基础1传递到视图1,并在加载所有视图时查看2和视图3,这里每个视图都将该对象存储为Ivar,即使视图1和2不使用
我认为从基地直接访问View 3以设置对象不好,或者从View 3访问基础来获取价值,任何想法的人如何处理这种情况。
作为初学者,我想澄清一下这个疑问。感谢。
答案 0 :(得分:5)
如果要在所有3个视图周围传递相同的对象,它不会占用任何额外的内存,因为每个视图只会增加该对象的保留计数。因此,只考虑一个对象的有效内存。
答案 1 :(得分:1)
使用单身人士在整个应用程序中的不同类/视图中保存所需的信息。
如果你不知道如何在Objective C中实现单例,那么答案 2 :(得分:1)
根据我的理解,您正在尝试在视图1中创建一个对象并在视图3中使用。 假设该对象是Employee Class。 以下是如何使用它。
视图1中的Alloc和init Employee对象。 覆盖View 2的init方法,如
-(id)initWith:(Employee*)emp
{
temEmp=emp;
}
同样覆盖View 3 init。
由于您只分配和初始化对象一次,因此所有三个视图共享同一个对象。 你不浪费记忆
答案 3 :(得分:1)
您可以将用户信息定义为UserInfo类。然后您可以在UserInfo.m中编写代码:
static UserInfo *sharedUserInfo_ = nil;
+ (UserInfo*)sharedUserInfo{
if(sharedUserInfo_ == nil){
sharedUserInfo_ = [[UserInfo alloc] init];
}
return sharedUserInfo_;
}
答案 4 :(得分:1)
在视图3中的AppDelegate.Create appdelegate引用中创建该用户对象。
in view3.h
AppDelegate *appdelegate;
in view3.m
-(void)viewDidLoad
{
appdelegate = (AppDelegate *)[[UIApplication SharedApplication]delegate];
appdelegate.userobj=......
}
直接在view3中使用该对象