在 Cocoa/Objective C 中,静态类方法线程安全吗?我正在定义一个类来发出相关的自定义 URL 请求,我想从许多不同的线程调用该请求。假设我有一个类:
@interface URLConnector : NSObject {
}
+(Response *)getData:(NSString *)category;
+(Response *)put:(NSString *)category content:(NSData *)content;
@end
每个方法都定义一个 NSMutableURLRequest,调用它,并使用 NSRunLoop:runUntilDate: 等待响应。他们还创建另一个类 URLConnectorDelegate 的实例来处理来自 NSMutableRequests 的回调,并在返回之前释放它们。 (注意:此代码基于一个流行的公共(public)库,用于发出 URL 请求)
我喜欢这种方法的地方在于,它使所有线程保持简单,并将所有与自定义服务器相关的代码放在一个位置。线程可以通过单个函数调用来执行 URL 请求。
我的所有线程是否可以同时使用这些静态函数来进行同时调用(即静态 Objective-C 方法本质上是线程安全的)?
最佳答案
作为类方法对线程安全没有任何影响。重要的是您如何访问数据。如果您以非线程安全的方式访问数据,则该方法也不是线程安全的。
我只是附加NSURLConnection
,而不是泵送您自己的运行循环。主运行循环和 URL 加载系统按照设计的方式进行 self 管理。请参阅NSURLConnection scheduleInRunLoop:forMode:
关于objective-c - cocoa /objective-c : methods and thread safety,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209149/