小编LaN*_*LaN的帖子

设置SOCKS代理配置后CFStream崩溃

下面的代码有什么问题?我使用AsyncSocket连接到SOCKS代理并在onSocketWillConnect委托方法上设置代理设置.如果我省略了调用CFReadStreamSetPropertyCFWriteStreamSetProperty插座式连接器能够顺利跟进.另外,我在一个没有可跟踪堆栈跟踪的解除分配的实例上得到[Not A Type retain](它可能与CFNetwork有关?).有谁知道是什么给出的?

CFDictionaryRef proxyDict = CFNetworkCopySystemProxySettings();
CFMutableDictionaryRef socksConfig = CFDictionaryCreateMutableCopy(NULL, 0, proxyDict);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyHost, CFSTR("192.168.1.148"));
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyPort, (__bridge CFNumberRef)[NSNumber numberWithInt:3129]);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSVersion, kCFStreamSocketSOCKSVersion4);

// set SOCKS for read streams
CFReadStreamRef readStream = [sock getCFReadStream];
if (!CFReadStreamSetProperty(readStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
  CFStreamError error = CFReadStreamGetError(readStream);
  NSLog(@"[SEVERE] Web Socket Read Stream Error: %ld[%ld]", error.domain, error.error);
}

// set SOCKS for write stream
CFWriteStreamRef writeStream = [sock getCFWriteStream];
if (!CFWriteStreamSetProperty(writeStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
  CFStreamError error = …
Run Code Online (Sandbox Code Playgroud)

objective-c socks cfnetwork ios cfstream

7
推荐指数
1
解决办法
1088
查看次数

Apple改变了他们的命名约定内存管理规则

正如之前的Cocoa Memory Management Rules中所述

如果使用名称以"alloc"或"new"开头或包含"copy"(例如,alloc,newObject或mutableCopy)的方法创建对象,或者向其发送保留消息,则获取对象的所有权.

在2010年12月之后没有看过它,但从那时起已经改变了

使用名称以"alloc","new","copy"或"mutableCopy"开头的方法(例如,alloc,newObject或mutableCopy)"创建"对象.

请注意,现在需要将"copy"作为前缀.这导致Clang静态分析器发出一些与内存相关的警告:(.在搜索了互联网之后,我还没有得出结论,为什么这会改变,因为这是iOS内存管理的基础之一.

有人知道为什么吗?谢谢!

memory-management objective-c clang-static-analyzer

5
推荐指数
1
解决办法
713
查看次数