objective-c - cocoa /objective-c : methods and thread safety

标签 objective-c cocoa thread-safety

在 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/

相关文章:

iphone - iPhone-尝试,捕获问题

ios - float 比较

python - tkinter 的 `after` 方法线程安全吗?

ios - n 个 View Controller 或 n 个单元格

ios - 台风 Storyboard与手动装配激活集成

XCode Instruments - 查找代码泄漏的行

objective-c - 是否可以以编程方式生成触摸板手势事件?

objective-c - 使另一个应用程序的窗口无边框

java - 在决定使用 volatile 时,实际的锁是否重要?

python - python zipfile 是线程安全的吗?