我遇到了一个问题:我有两个视图控制器,viewController1
和viewController2
。
以下是viewController1
中我关注的方法:
-(void)msgToServer:(NSString*)identifier:(NSString *)_username{
NSString *message = [NSString stringWithFormat:@"%@|%@|<END>", identifier, _username];
CFDataRef messageData = (CFDataRef)[message dataUsingEncoding:NSUTF8StringEncoding];
CFSocketSendData(s, NULL, messageData, 0);
}
此方法在viewController1
中完美运行。
现在我从viewController2
调用此方法。我传递了两个论点,identifier
和_username
。它完美地生成字符串,但当它到达最后一行时,它会错过s
的值 - 这是CFSocketRef
。
即使我在s
,我应该怎样做才能viewController2
保留其价值?
来自viewController2
的代码调用上述方法:
- (void)viewDidLoad {
[super viewDidLoad];
WatchListViewController *watchListViewController = [[WatchListViewController alloc]init];
[watchListViewController msgToServer:@"PREQ" :userName];
}
提前致谢。
答案 0 :(得分:0)
您可以使用retain
的{{1}}功能。
NSObject
另请参阅“内存管理编程指南”中的Object Ownership and Disposal
<强>编辑:强>
尝试使用以下代码
您可能遇到函数原型问题,而不是保留问题。
使用以下
- (id)retain
。
-(void)msgToServer:(NSString*)identifier withUsername:(NSString *)_username;
答案 1 :(得分:0)
感谢所有帮助我的人,我以这种方式解决了这个问题:
当我从viewController1推送到viewController2
时,我将两个参数“username
”和“s
”传递给viewController2
,然后我在viewController2
中编写此方法。
-(void)msgToServer:(NSString*)identifier:(NSString *)_username{
NSString *message = [NSString stringWithFormat:@"%@|%@|<END>", identifier, _username];
CFDataRef messageData = (CFDataRef)[message dataUsingEncoding:NSUTF8StringEncoding];
CFSocketSendData(s, NULL, messageData, 0);
}
然后我在同一个视图控制器中调用此方法,它完美地工作。我认为这是我找到的唯一解决方案。如果有任何身体可以使它更有效,那么欢迎你。 :)