Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在另一个类中设置对象?_Iphone_Objective C_Xcode_Ipad - Fatal编程技术网

Iphone 在另一个类中设置对象?

Iphone 在另一个类中设置对象?,iphone,objective-c,xcode,ipad,Iphone,Objective C,Xcode,Ipad,我有一个类“DogViewController”,我在其中声明一个属性并合成它: @property (nonatomic, assign) NSInteger myInt; @synthesize myInt; 我还有另一个类,“CatViewController”,我想在其中设置myInt变量,所以我就是这么做的: @property (nonatomic, retain) DogViewController *myDogViewController; @synthesize myDo

我有一个类“DogViewController”,我在其中声明一个属性并合成它:

@property (nonatomic, assign) NSInteger myInt;

@synthesize myInt;
我还有另一个类,
“CatViewController”
,我想在其中设置myInt变量,所以我就是这么做的:

@property (nonatomic, retain) DogViewController *myDogViewController;

@synthesize myDogViewController;

myDogViewController.myInt = 5;
然后,我想从DogViewController类访问myInt,我通过以下方式进行访问:

someVar = self.myInt;
在该命令之后,someVar应该是==5


有没有这样做不起作用的原因?

您必须先实例化DogViewController。因此,在CatViewController中:

DogViewController *dogViewController = [[DogViewController alloc] initWithNibName@"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];

如果您不使用导航控制器,只需以您想要的任何方式显示该视图

我想您不会得到值5。因为它将被重置

你可以按下面的方法做

在“CatViewController”中,创建一个类似“setParent”的方法

在.h文件中引入变量:

身份证父母

.m文件中的函数:

-(void)setParent:(id)pidParent{
parent = pidParent;
}
在CatViewController.m文件中导入“DogViewController.h”

当您按下DogViewController时,它也被称为setParent方法

像 [objDogViewController setParent:self]

然后您可以使用“parent”变量设置值


干杯。

尝试在基本数据类型中不使用
retain
,而是使用
assign

@property (nonatomic, assign) NSInteger myInt;

您是否已在执行
myDogViewController.myInt=5时实例化了
myDogViewController
?@property命令没有实例化它吗?@property指令只是指示Objective-C预编译器准备在实现文件中创建getter和setter。@synthesis关键字然后导致预编译器注入实际的getter/setter代码(除非手动重写这些方法)。如果您的属性需要初始化,您需要单独进行初始化(例如,在构造函数中)。这不是问题的原因。他的示例中的DogViewController从未初始化,这就是他无法访问其任何属性的原因。您能否编辑您的答案以反映OP可能未使用视图控制器这一事实?当然-但问题不是在谈论VC吗?基于OP今天的其他问题,这些不是VC的。Ofc,他在这个问题上也从来没有说过,他们总是安全地采用最低公分母。