在另一个类中设置对象?
我有一类,“DogViewController”,在这里我声明属性和合成它:在另一个类中设置对象?
@property (nonatomic, assign) NSInteger myInt;
@synthesize myInt;
我有另一个类,"CatViewController"
,其中我想设置的敏可变的,所以这是我做过什么:
@property (nonatomic, retain) DogViewController *myDogViewController;
@synthesize myDogViewController;
myDogViewController.myInt = 5;
然后,我想从DogViewController类,这是我做的访问敏:
someVar = self.myInt;
someVar应b该命令之后的e == 5。
有没有原因,为什么不行?
您必须先实例化DogViewController。因此,在CatViewController:
DogViewController *dogViewController = [[DogViewController alloc] [email protected]"DogViewController" bundle:nil];
dogViewController.myInt = 5;
// If you are using a navigation controller push DogViewController like this:
[self.navigationController pushViewController:dogViewController animated:YES];
[dogViewController release];
如果你不使用导航控制器,只显示你想要
你能否编辑你的答案以反映OP可能没有使用视图控制器的事实? – Perception
当然 - 但这不是讨论VC的问题吗? – darksky
根据OP今天在SO上的其他问题,这些不是VC的。Ofc,他在这个问题中从来没有说过他们 - 总是可以安全地采取最低的共同标准。 – Perception
任何方式,我想你不会得到值为5,因为它将被重置了这一观点。
你可以像下面这样做。
你的 “CatViewController” 中,创建一个像 “的setParent”
拿在.h文件中变量的一种方法:
ID父母;
功能.m文件:在CatViewController.m文件
-(void)setParent:(id)pidParent{
parent = pidParent;
}
进口 “DogViewController.h”。
当您推送到DogViewController时,也称为它的setParent方法。
Like [objDogViewController setParent:self];
那么你可以通过使用“父”变量来设置值。
干杯。
这不是他的问题的原因。他的例子中的DogViewController永远不会被初始化,这就是为什么他无法访问它的任何属性。 – Perception
尝试使用不使用retain
而使用基本数据类型使用assign
。
@property (nonatomic, assign) NSInteger myInt;
您是否在myDogViewController.myInt = 5时实例化了'myDogViewController'? –
@property命令是否实例化它? – Andrew
@property指令只是指示Objective-C预编译器准备在实现文件中创建getter和setter。 @synthesize关键字然后使预编译器注入实际的getter/setter代码(除非手动覆盖这些方法)。如果您的属性需要初始化,您需要单独执行(例如,在构造函数中)。 – Perception