需要保留CFSocketRef吗?
我面临一个问题:我有两个视图控制器,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];
}
提前致谢。
I am facing a problem: I have two view controllers, viewController1
, and viewController2
.
Here is the method I'm concerned about in 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);
}
this method is working perfectly in viewController1
.
Now I am calling this method from viewController2
. I am passing two arguments, identifier
and _username
. It generates the string perfectly, but when it reaches the last line it misses the value of s
-- which is a CFSocketRef
.
What should I do so that s
will retain its value, even if I am in viewController2
?
Code from viewController2
which calls the above method:
- (void)viewDidLoad {
[super viewDidLoad];
WatchListViewController *watchListViewController = [[WatchListViewController alloc]init];
[watchListViewController msgToServer:@"PREQ" :userName];
}
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
NSObject
的retain
函数。参见 Apple 文档
另请参阅 内存管理编程指南中的对象所有权和处置
编辑:
尝试使用以下代码
您可能有问题在于函数原型,而不在于保留。
使用下面
-(void)msgToServer:(NSString*)identifier withUsername:(NSString *)_username;
。you could use the
retain
function ofNSObject
.See in Apple Documentation
Also have a look to Object Ownership and Disposal in Memory Management Programming Guide
EDITED:
Try with below code
You might have issue with function prototype,not with retaining.
use below
-(void)msgToServer:(NSString*)identifier withUsername:(NSString *)_username;
.感谢所有帮助我的人,我通过以下方式解决了这个问题:
当我从 viewController1 推送到 viewController2 时,我将两个参数“
username
”和“s
”传递给viewController2
并然后我在viewController2中编写这个方法。然后我在同一个视图控制器中调用这个方法,它工作得很好。我认为这是我找到的唯一解决方案。如果任何机构可以提高效率,那么欢迎您。 :)
Thanx to all who helped me well i solved this problem in this way:
when I push from viewController1 to
viewController2
i am passing two parameters "username
" and "s
" toviewController2
and then I write this method inviewController2
.then I am calling this method in the same view controller and it works perfectly. I think this is the only solution which i find. if any body can make it more efficient then you are welcome. :)