从低内存情况回来后,类变量所持有的状态信息会发生什么变化?
我知道视图会被卸载然后重新加载但是一些辅助类和&其中包含的数据是由启动视图的控制器使用的?
相关示例方案:
@interface MyCustomController: UIViewController
{
ServiceAuthenticator *authenticator;
}
-(id)initWithAuthenticator:(ServiceAuthenticator *)auth;
// the user may press a button that will cause the authenticator
// to post some data to the service.
-(IBAction)doStuffButtonPressed:(id)sender;
@end
@interface ServiceAuthenticator
{
BOOL hasValidCredentials; // YES if user's credentials have been validated
NSString *username;
NSString *password; // password is not stored in plain text
}
-(id)initWithUserCredentials:(NSString *)username password:(NSString *)aPassword;
-(void)postData:(NSString *)data;
@end
app委托创建ServiceAuthenticator类,其中包含一些用户数据(从plist文件中读取),该类使用远程服务记录用户。
在MyAppDelegate的applicationDidFinishLaunching中:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
ServiceAuthenticator *auth = [[ServiceAuthenticator alloc] initWithUserCredentials:username password:userPassword];
MyCustomController *controller = [[MyCustomController alloc] initWithNibName:...];
controller.authenticator = auth;
// Configure and show the window
[window addSubview:..];
// make everything visible
[window makeKeyAndVisible];
}
然后,只要用户按下某个按钮,就会调用“ MyCustomController的doStuffButtonPressed ”。
-(IBAction)doStuffButtonPressed:(id)sender
{
[authenticator postData:someDataFromSender];
}
验证者依次检查用户是否登录(BOOL变量指示登录状态),如果是,则与远程服务交换数据。 ServiceAuthenticator是一种只验证用户凭据一次的类,对该对象的所有后续调用都将是postData。
一旦发生低内存情况并且相关的笔尖和MyCustomController将被卸载 - 当它被重新加载时,重置'ServiceAuthenticator'类的过程是什么?它以前的状态?
我会定期将所有数据保存在实际的模型类中。我是否应该考虑在这些实用程序样式类中保持状态数据?这是要遵循的模式吗?
答案 0 :(得分:0)
如果您没有在实用程序类中处理低内存警告,则不会释放数据,因此您不必保持其状态。