2011-02-03 44 views
1

這是我想要做的。
我有一個名爲userInfo的類。我在另一個名爲LoginInfo的類中創建了這個對象的一個​​實例。我想保持這個instace活着,併爲所有其他類訪問,直到應用程序仍然活着...在應用程序中保持對象的活性 - 如何?

我如何實現這一目標?我讀了一些地方,我可以做到這一點與單身人士班。但我不知道他們是什麼...我是很新的cocoa..Please指南..提前

謝謝..


@interface UserInfo : NSObject { 
    NSString * firstName; 
    NSString * lastName; 
    NSString * uID; 
    NSString * password; 
    NSString * userType; 

} 

-(id)initWithFirstName:(NSString *)fname andLastName:(NSString *)lname andUID:(NSString *)userID andPassword:(NSString *)pwd andUserType:(NSString *)type; 
@property (readwrite, copy) NSString * firstName; 
@property (readwrite, copy) NSString * lastName; 
@property (readwrite, copy) NSString * uID; 
@property (readwrite, copy) NSString * password; 
@property (readwrite, copy) NSString * userType; 

@end 



#import "UserInfo.h" 


@implementation UserInfo 

-(id)initWithFirstName:(NSString *)fname andLastName:(NSString *)lname andUID:(NSString *)usid andPassword:(NSString *)pwd andUserType:(NSString *)type{ 
    self=[super init]; 
    if (self) { 
     self.firstName=fname; 
     self.lastName=lname; 
     self.uID=usid; 
     self.password=pwd; 
     self.userType=type; 
     } 
    return self; 
} 

@synthesize firstName; 
@synthesize lastName; 
@synthesize uID; 
@synthesize password; 
@synthesize userType; 


@end 

這是我想要做的類單身......請指導我做什麼改變..我想使用自定義構造函數... M很抱歉把這段代碼作爲答案。但我無法在評論中得到它...

回答

1

這聽起來的確像是對Singleton模式的小描述。實現Singleton的一種方法是通過類方法訪問它的功能;這些類方法訪問單個實例作爲私有類成員,如果它尚未存在,則創建它。

我不能幫你與可可語法(Objective-C的,如果我沒有記錯),這裏是一些僞代碼來說明一個可能的實現:

class Singleton { 
    /* class member */ 
    private static Singleton instance = undef; 

    /* class methods */ 
    public static type1 doSomething() { 
     Singletong instance = Singleton::getInstance(); 
     return instance->reallyDoSomething(); 
    } 

    private static Singleton getInstance() { 
     if(!defined(Singleton::instance)) { 
      Singleton:instance = new Singleton(); 
     } 
     return Singleton::instance; 
    } 

    // instance method 
    private type1 reallyDoSomething() { 
     type1 result; 
     /* exciting stuff */ 
     return result; 
    } 
}; 
+0

您是如何使你的代碼中的註釋不同? – 2011-02-03 10:49:33

相關問題