我的一个视图控制器中有一个属性。我在另一个视图控制器中设置值,如下所示:

iDBArticleViewController *ArticleViewController;

if (ArticleViewController == nil)
{
    ArticleViewController = [[iDBArticleViewController alloc] init];
}


ArticleViewController.bannerIsVisible = [NSNumber numberWithInt:0];

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
[ArticleViewController layoutForInterfaceOrientation:orientation];


调用方法layoutForInterfaceController:时,调试控制台将打印出0,就像我为iDBArticleViewController设置属性一样。当我在另一个地方再次调用相同的方法时,调试控制台会打印出属性bannerIsVisible为零。问题可能是因为我在代码的另一个位置调用了该方法而没有再次设置该属性吗?我希望该属性不会设置为nil。财产不应该保持其价值吗?我像这样初始化属性:@property (nonatomic, strong) NSNumber *bannerIsVisible;

最佳答案

“当我在另一个地方再次调用相同的方法时,调试控制台会打印出属性bannerIsVisible为零。”

如果要在其他类中使用相同的代码调用相同的方法,则可能正在创建ArticleViewController的新实例,其bannerIsVisible将为nil。

如果要始终使用同一实例及其值,则可以选择共享实例/单例类。

10-08 06:24