You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GCDAsyncUdpSocket项目警告:发送ViewController至不兼容类型参数

解决GCDAsyncUdpSocket初始化时的类型不兼容警告

嗨,我来帮你搞定这个烦人的警告!这个问题其实很常见,原因很简单:你给GCDAsyncUdpSocket的初始化方法传了ViewController对象作为代理,但编译器不知道你的ViewController遵守了它要求的代理协议,所以才会抛出“类型不兼容”的警告。

下面是具体的解决步骤:

1. 在ViewController中声明遵守代理协议

打开你的ViewController.h文件,找到类声明的那一行,把它修改成这样:

#import <UIKit/UIKit.h>
// 别忘了先导入UDP的头文件
#import "GCDAsyncUDPSocket.h"

@interface ViewController : UIViewController <GCDAsyncUdpSocketDelegate>

@end

这里关键是加上<GCDAsyncUdpSocketDelegate>,告诉编译器你的ViewController是符合这个代理协议要求的对象。

2. 可选:实现代理协议的方法(推荐)

虽然GCDAsyncUdpSocketDelegate里的大部分方法都是可选的,但为了让UDP功能正常工作,建议你至少实现接收数据的方法。在ViewController.m里添加:

- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(nullable id)filterContext {
    // 这里处理接收到的UDP数据,比如转成字符串
    NSString *receivedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"收到UDP数据:%@", receivedString);
}

做完这两步,那个类型不兼容的警告应该就消失啦!

内容的提问来源于stack exchange,提问作者Vollen

火山引擎 最新活动