NSNumber没有被保留?

时间:2011-04-03 16:20:11

标签: objective-c ios retain nsnumber

我有一个变量lastPostsGrabbedCounterNSNumber,定义如下。

.h
NSNumber *lastPostsGrabbedCounter;
@property (nonatomic, retain) NSNumber *lastPostsGrabbedCounter;

.m
@synthesize postDetailViewController, lastPostsGrabbedCounter;

- (void)viewWillAppear:(BOOL)animated {
    self.lastKnownLocation = [[CLLocation alloc] init];
    self.lastPostsGrabbedCounter = [[NSNumber alloc] initWithInt:25];
 [self showActivityViewer];

}

这个.m文件是我主视图中的表控制器。加载应用程序时会调用此viewWillAppear,但如果我导航到另一个TAB并返回并尝试使用lastPostsGrabbedCounter var,我会将其显示为nil?

当我离开时为什么不保留?

1 个答案:

答案 0 :(得分:4)

如果没有保留NSNumber,那么您的应用程序(很可能)会崩溃,或者至少表现不佳。您看到nil表示发生了非常不同的问题。

检查以确保您不会在其他代码路径上将其缩小。此外,请确保您回到您认为自己的实例。在整个方法中传播的少量NSLog(@"%@ %p", [self class], self]);非常有用。

正如安德烈所说,你正在泄露数字;过度保留它。