我有一个很大的 NSMutableString(可能有数百兆字节),需要对其执行大量 rangeOfCharacterFromSet: 操作。
为了提高性能,我想让一个 NSOperationQueue 将字符串拆分为约 100kb 的块并异步处理每个块。
但是因为字符串太大,为每个线程制作不可变的副本是不可行的。
假设我不允许修改字符串(我打算阻塞主线程直到操作队列完成),这样安全吗?
Apple 将 NSString 记录为线程安全的,所有不可变对象“通常”不是线程安全的,但大概只适用于某些方法?rangeOfCharacterFromSet 是我唯一使用的。
此代码将在 OS X 和 iOS 上运行(通常在 iOS 上使用较小的字符串)