0
我有需要底層CFSocket
一個類的方法,而這種方法被調用非常頻繁,因此太貴創建和每個方法運行時間摧毀一個新的套接字。所以不是我創建了一個CFSocketRef的static
實例,這樣就可以共享一個插座之間的方法調用:哪些原因會導致CFSocket關閉本身?
+(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
?