我正在开发一款可拍照的应用程序。iPhone:内存警告破坏强壮的物体?
最近我遇到了一个很奇怪的行为,这里是我的代码。
@interface ViewControllerPhotos : UIViewController
@property (strong) NSString* _albumID;
@end
@implementation ViewControllerPhotos
@synthesize _albumID;
- (void)didReceiveMemoryWarning
{
return;
// commented or not : give the same issue
// [super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.navigationItem setHidesBackButton:YES];
self._albumID = [Tools generateUUID];
NSLog(@"new photoset : local UUID \"%@\"", self._photoSetLocalID);
}
@end
我的问题是:如果有一个内存警告,存储在_albumID
的UID被遗忘和再生,所以我的专辑分为二。为什么? strong
关键字不能保持当前值吗?
还是因为viewDidload
被再次调用?如果是这样的话,那么如何确定我们第一次加载我们的视图以获得适当的init?这些方法听起来是为它设计的。
默认情况下,对象强壮,所以strong关键字在此处不起作用。尝试将您的albumID写入文件并在收到内存警告时进行检索。 – Dustin
'if(!self._albumID || [self._albumID isEqualToString:@“”])self._albumID = [Tools generateUUID];'in'viewDidLoad'解决了它! – dvkch