アプリケーションのログイン詳細を保持する 'Person' という名前の NSObject を作成しようとしています (空想することは何もありません)。アプリは、複数のテーブル ビューを持つナビゲーション コントローラーで構成されていますが、Person オブジェクトの共有に問題があります。
次のような静的オブジェクトを作成しようとしました:
+ (Person *)sharedInstance {
static Person *sharedInstance;
@synchronized(self) {
if(!sharedInstance)
sharedInstance = [[Person alloc] init];
return sharedInstance;
}
return nil;
}
そしてヘッダーはこちら
// Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject {
NSString *fullName;
NSString *firstName;
NSString *lastName;
NSString *mobileNumber;
NSString *userPassword;
}
@property(nonatomic, retain) NSString *fullName;
@property(nonatomic, retain) NSString *firstName;
@property(nonatomic, retain) NSString *lastName;
@property(nonatomic, retain) NSString *mobileNumber;
@property(nonatomic, retain) NSString *userPassword;
+ (Person *)sharedInstance;
-(BOOL) setName:(NSString*) fname;
-(BOOL) setMob:(NSString*) mnum;
-(BOOL) setPass:(NSString*) pwd;
@end
このオブジェクト セッターとゲッターは、アプリケーションのさまざまな部分で必要になります。私はこのようにそれらにアクセスしようとしています
Person * ThePerson = [[Person alloc] init];
ThePerson = nil;
NSString * PersonsName;
PersonsName = [[Person sharedInstance] firstName];
ログイン画面ではすべてがうまく機能しますが、次の使用時に機能しなくなります。通常は EXC_BAD_ACCESS (eek!)。
明らかに、私はここで非常に間違ったことをしています。異なる数のView Controller(コード化されたものとxibの両方)の間でオブジェクトを共有する簡単な方法はありますか?