我有一个需要底层CFSocket
的类方法,并且这个方法经常被调用,因此每次运行该方法时创建和销毁一个新套接字的成本太高。所以我改为创建了一个CFSocketRef的static
实例,这样我就可以在方法调用之间共享一个套接字:
+(void)myStaticMethod {
static CFSocketRef udpSocket;
@synchronized(self) {
if (!udpSocket) {
udpSocket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_DGRAM, IPPROTO_UDP, 0, NULL, NULL);
int yes = 1;
setsockopt(CFSocketGetNative(udpSocket), SOL_SOCKET, SO_NOSIGPIPE, (void *)&yes, sizeof(yes));
}
}
//method body
}
我有两个问题:
CFSocketRef
?