2011-02-03 54 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某处你不指望它。