gpt4 book ai didi

ios - 卡在循环形式 CFRunLoop 中

转载 作者:行者123 更新时间:2023-11-29 04:41:48 26 4
gpt4 key购买 nike

ViewController.h

@interface ViewController : UIViewController{
CFSocketRef s;
int connectFlag;
}

ViewController.m

void receiveDataCilent(CFSocketRef cs, 
CFSocketCallBackType type,
CFDataRef address,
const void *data,
void *info)
{

CFDataRef df = (CFDataRef) data;
int len = CFDataGetLength(df);
if(len <= 0) return;

CFRange range = CFRangeMake(0,len);
UInt8 buffer[len];
NSLog(@"Received %d bytes from socket %d\n",
len, CFSocketGetNative(cs));
CFDataGetBytes(df, range, buffer);
NSLog(@"Client received: %s\n", buffer);
NSLog(@"As UInt8 coding: %@", df);
NSLog(@"len value: %d", len);


}

-(void) clientConnect:(int)sender;{



s = CFSocketCreate(NULL, PF_INET,
SOCK_STREAM, IPPROTO_TCP,
kCFSocketDataCallBack,
receiveDataCilent,
NULL);

struct sockaddr_in sin;
struct hostent *host;

memset(&sin, 0, sizeof(sin));

host = gethostbyname("localhost");

memcpy(&(sin.sin_addr), host->h_addr,host->h_length);

sin.sin_family = AF_INET;
sin.sin_port = htons(6666);

CFDataRef address;
CFRunLoopSourceRef source;

address = CFDataCreate(NULL, (UInt8 *)&sin, sizeof(sin));
CFSocketConnectToAddress(s, address, 0);

CFRelease(address);

source = CFSocketCreateRunLoopSource(NULL, s, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(),
source,
kCFRunLoopDefaultMode);
CFRelease(source);
CFRunLoopRun();

}

- (void)viewDidLoad
{
[super viewDidLoad];
}

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

if(connectFlag == 0 ){
[self clientConnect:1];
}

}

首先,我很抱歉混淆了 xcode 编程和线程编程的概念,我对 xcode 很陌生,我需要尽快完成我的游戏项目

此代码假设连接到服务器并等待来自服务器的消息。我尝试测试一下,效果很好。在 View 中,我有 IBAction,可以按下并更改 View 。

但是当我将它应用到我的主要项目中之后。它可以运行,但我无法按任何按钮或执行任何操作。注销后。看起来它停留在 CFRunLoopRun(); 附近我认为它陷入了循环,但为什么当我测试它时。它没有卡住吗?

在我的项目中,这段代码是从另一个 View 运行的,而不是像我刚刚测试的那样从 ViewController 运行。我不知道为什么它卡在我的项目中。

如有任何帮助,我们将不胜感激。

最佳答案

不要在主线程上自己运行运行循环。主事件循环将运行它。

编辑:我应该说,“在 GUI 应用程序的上下文中”。在命令行工具中,您确实需要自己运行运行循环。

关于ios - 卡在循环形式 CFRunLoop 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com