我对我在 Objective-C 中看到的一些行为感到困惑。
我有一个方法如下:
-(void)showFormWithId:(NSString*)formId andMode:(int)mode
{
HPSModelForm* model = [HPSDbUtilities getForm:formId];
HPSFormController* formVC = [ [ HPSFormController alloc ] init ];
[(UINavigationController*) self.view.window.rootViewController pushViewController:formVC animated:YES];
}
在 HPSFormController 类中,我的实现包含以下内容:
@implementation HPSFormController
NSArray* _arrayOfPageNosWithSummaryElements;
即 _arrayOfPageNosWithSummaryElements 不是属性,而是对 HPSFormController 类中的任何方法可见的 ivar。它根本没有在头文件中声明。
当我第一次调用 showFormWithId 时,_arrayOfPageNosWithSummaryElements 为零。但是,当我第二次调用 showFormWithId 时,在我看来 _arrayOfPageNosWithSummaryElements 不是 nil,而是具有上一个 HPSFormController 实例的值。我不明白这一点 - 肯定是因为 formVC 的范围是 showFormWithId 方法,然后我第二次调用 showFormWithId 然后应该创建一个全新的 HPSFormController 实例,而 _arrayOfPageNosWithSummaryElements 未初始化并因此设置为 nil?
我究竟做错了什么?谢谢。