如何保存类中的字符串变量,求解,请教各位

illhan98 2012-08-10 10:13:21
新建了一个类
@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下面还真郁闷
用另外一个号说得不清楚,重新说一遍


...全文
144 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
illhan98 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

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

谢谢你的回答,你的答应是正确的,我试过了,感谢,也谢谢大家的回复
illhan98 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

楼上你在说什么?userID=[array objectAtIndex:1];改userID=[[nsstring alloc]initwithstring [array objectAtIndex:1]];

不改你就慢慢研究吧。值类型当然存在,nsstring是个引用类型。
[/Quote]
这样的话,只能第二次再赋值的时候,我先release了再赋值了
illhan98 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

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

谢谢你们的回答,我试试看
Proteas 2012-08-10
  • 打赏
  • 举报
回复
Timer 执行的时候 pwebOperator 实例还在吗?都是在主线程中执行吗?
Proteas 2012-08-10
  • 打赏
  • 举报
回复
Timer 在主线程中吗?
Proteas 2012-08-10
  • 打赏
  • 举报
回复
self.userID = @"";
要这样写。
直接用 userID = @"" 不会增加引用计数。
ixfly 2012-08-10
  • 打赏
  • 举报
回复
userID=[array objectAtIndex:1];这个地方init一下。你都是引用的值,按理说你最开始都不应该能打印出来。内存管理麻烦啊。
ixfly 2012-08-10
  • 打赏
  • 举报
回复
楼上你在说什么?userID=[array objectAtIndex:1];改userID=[[nsstring alloc]initwithstring [array objectAtIndex:1]];

不改你就慢慢研究吧。值类型当然存在,nsstring是个引用类型。
illhan98 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

userID=[array objectAtIndex:1];这个地方init一下。你都是引用的值,按理说你最开始都不应该能打印出来。内存管理麻烦啊。
[/Quote]
我总不能每次赋值一次都 init一下吧,再说了,现在我类里面至少有30个NSString * 类型的变量,这些数据都是动态变化了,难道每次赋值都这样搞一次,那不麻烦死了啊
illhan98 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

Timer 在主线程中吗?
[/Quote]
是的,pwebOperator 都还在的,其中我还测试了一下,在pwebOperator 加了一个bool值,这个值都还存在,po打印的时候都还可以

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧