2011-02-03 94 views
0

我有一類這樣的:的NSString複製屬性不起作用

@interface DataModel : NSObject { 
    NetworkClient *networkClient_; 
    NSString *lastIp; 
    int lastPort; 
} 

@property (nonatomic, readonly) NetworkClient *networkClient_; 
@property (nonatomic, copy) NSString *lastIp; 
... 

而在一些地方,我正在寫:

[DataModel sharedDataModel].lastIp = addressField_.text; 
NSString *temp = [DataModel sharedDataModel].lastIp; 

而且tepm字符串是零。有什麼問題 ?

PS:我@synthesise

+0

如果您的對象一次可以在多個線程中修改,我會建議將該屬性設爲原子。 – Nyx0uf 2011-02-03 17:48:41

+0

如果temp爲零,則addressField_.text爲零,[DataModel sharedDataModel]返回nil或[DataModel sharedDataModel]返回不同的實例。 – 2011-02-03 17:49:44

回答

1
[DataModel sharedDataModel].lastIp = addressField_.text; 
NSString *temp = [DataModel sharedDataModel].lastIp; 

temp做將是零,如果任何的addressField_addressField_.text,或[DataModel sharedDataModel]要麼是零或返回nil。或者,如果[DataModel sharedDataModel]返回一個尚未初始化的不同實例lastIp

記錄和/或檢查每一個這些項目;你會發現一個nil某處你不指望它。