我有两个属性设置为ViewControllers,每个属性都使用不同的NIB文件。 (男性和女性模型,将功能相同,但设置视觉上不同。)我想有一个函数来创建基于我传入的NIB名称和ViewController的ViewController。将属性传递给一个函数并设置要保留的值
发生什么事是ViewController属性不是被保留。如果我在函数中添加实际属性名称并设置它,viewController将被设置并保留ViewController。以下是我在.m文件中的内容(仅显示获得帮助所需的内容)。我一直在试图确定问题出在哪里的两条评论栏中。
@synthesize femaleModelViewController;
@synthesize maleModelViewController;
- (void) loadModelViewControllerWithModelType:(NSString*) model ModelView:(ModelViewController *)modelViewController {
ModelViewController *viewController = [[ModelViewController alloc] initWithNibName:model bundle:nil];
// [self setFemaleModelViewController:viewController]; // I don't want to set the property here, I want to be able to pass it as an argument.
modelViewController = viewController;
// [modelViewController retain]; // I even tried to retain it do see if would but it doesn't.
[viewController release];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self loadModelViewControllerWithModelType:@"FemaleModel" ModelView:femaleModelViewController];
[self loadModelViewControllerWithModelType:@"MaleModel" ModelView:maleModelViewController];
}
在.h文件我的属性是设置像这样:
@property (nonatomic, retain) ModelViewController *femaleModelViewController;
@property (nonatomic, retain) ModelViewController *maleModelViewController;
谢谢!是的,我完全忘记了通过地址和价值。在Objective-C和C#之间来回切换可以做到这一点。 是的这个示例看起来像是过度杀伤性的,但是这个方法会比简单地声明它更多。如果我保留在这里,它应该工作正确吗? –
保留在哪里?有两种方法可以获得对象的保留引用:“alloc”或“保留”它。如果你已经分配了它,你也不需要保留它。另外,即使你有更多的初始化工作,它也会属于视图控制器的'initWithNibName:owner:'方法中,而不是任何类。不要将你的课程紧紧地绑在一起,否则整个应用程序变得脆弱。 – Alex