新建了一个类
@interface WebConnect : NSObject
//////用户信息
@property (retain, nonatomic) NSString *userID;-(int)splitTableInfo:(NSString*)resData;
@end@implementation WebConnect
-(int)splitTableInfo:(NSString*)resData
{
   NSArray *array = [resData componentsSeparatedByString:@"^"];
    
    userID=[array objectAtIndex:1];
    checkedTableInfoData = true;
    return 0;}
里面有一个userID在某个地方给这个类声明一个对象,并分配空间
 pwebOperator=[[WebConnect alloc] init];
然后将一另外一个字符串赋值给userID如下
NSString *resTimerInfoData = [[NSString alloc] initWithData:XXXXX encoding:NSUTF8StringEncoding];
[pwebOperator splitTableInfo:resTimerInfoData  ];
[resTimerInfoData  release];然后打印userID的值NSLog(@"%@",pwebOperator .userID);//可以打印出来,没有问题但是我发现我加了一个Timer循环打印这一句就不行了给userID赋值以后马上答应OK,在Timer里面就会报这个userID不存在了
我将@property (retain, nonatomic) NSString *userID;修改成了@property (copy) NSString *userID;我想将userID这个值在类中保存,该怎么做呢,iphone下面还真郁闷
用另外一个号说得不清楚,重新说一遍

解决方案 »

  1.   

    userID=[array objectAtIndex:1];这个地方init一下。你都是引用的值,按理说你最开始都不应该能打印出来。内存管理麻烦啊。
      

  2.   

    Timer 执行的时候 pwebOperator 实例还在吗?都是在主线程中执行吗?
      

  3.   

    是的,pwebOperator 都还在的,其中我还测试了一下,在pwebOperator 加了一个bool值,这个值都还存在,po打印的时候都还可以
      

  4.   

    我总不能每次赋值一次都 init一下吧,再说了,现在我类里面至少有30个NSString * 类型的变量,这些数据都是动态变化了,难道每次赋值都这样搞一次,那不麻烦死了啊
      

  5.   

    楼上你在说什么?userID=[array objectAtIndex:1];改userID=[[nsstring alloc]initwithstring [array objectAtIndex:1]];不改你就慢慢研究吧。值类型当然存在,nsstring是个引用类型。
      

  6.   

    self.userID = @"";
    要这样写。
    直接用 userID = @"" 不会增加引用计数。
      

  7.   

    这样的话,只能第二次再赋值的时候,我先release了再赋值了