私はNSUserDefaults
からのユーザーの詳細を5つ以上のView Controllerに表示する必要があります。だから最初のビューコントローラviewDidLoad
が呼び出されたときにサーバからユーザの詳細をロードするNSObject
サブクラスを作成しました。ここでObjective Cのプロパティメモリの問題
は私の最初のビューコントローラのviewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// Getting the Current User Details
CurrentUserDetails *userDetails = [[CurrentUserDetails alloc]init];
[userDetails initializeTheCurrentUserData];
//CurrentUserDetails is my NSObject class
}
そして
#import <Foundation/Foundation.h>
@interface CurrentUserDetails : NSObject
@property(strong,nonatomic) NSString *memberName;
@property(strong,nonatomic) NSString *designation;
@property(strong,nonatomic) NSString *memberType;
@property(strong,nonatomic) NSString *entreprenuer;
@property(strong,nonatomic) NSDate *expiryDate;
@property(strong,nonatomic) NSData *imageData;
- (void) initializeTheCurrentUserData;
@end
と実装
@implementation CurrentUserDetails
- (void) initializeTheCurrentUserData{
NSData *data = [[NSUserDefaults standardUserDefaults] valueForKey:@"userDictionary"];
NSDictionary *retrievedDictionary = [NSKeyedUnarchiver unarchiveObjectWithData:data];
self.memberName = [retrievedDictionary valueForKey:@"Name"];
self.designation = [retrievedDictionary valueForKey:@"Designation"];
self.memberType = [[retrievedDictionary valueForKey:@"Member_type"] stringValue];
self.expiryDate = [retrievedDictionary valueForKey:@"Expiry"];
self.kanaraEntreprenuer = [retrievedDictionary valueForKey:@"CityName"];
NSString *imageUrl = [retrievedDictionary valueForKey:@"Member_image"];
self.imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",[GlobalVariables getBaseURLForMemberImage],imageUrl]]];
}
そして、IAMは、このような他のクラスから詳細を取るしようとしている..です
CurrentUserDetails *userDetails = [[CurrentUserDetails alloc]init];
memberName = userDetails.memberName;
designation = userDetails.designation;
memberType = userDetails.memberType;
dateFromServer = userDetails.expiryDate;
entreprenuer = userDetails.entreprenuer;
imageDataFromServer = userDetails.imageData;
値がゼロになりました。
しかし、毎回initializeTheCurrentUserDataメソッドを呼び出す場合は、正確な値を取得しています。プロパティーに値が割り当てられると、そのプロパティーをプログラム全体に使用できます。私は混乱しています。誰でもこのことについて教えてもらえますか?値を使用するたびにinitializeTheCurrentUserDataを呼び出す必要がありますか?
いいえsetterとgetterメソッドを使用して保存できるサーバーレスポンスを再度初期化する必要はありません –