我有兩個屬性設置爲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