iphone - iOS——尝试设置锁字典

标签 iphone locking nslock

我有一些代码将 NSString 作为输入并使用该字符串创建对象。我需要确保它不会对同一个字符串进行两次操作,例如如果从不同的线程调用,或者即使同一个线程尝试递归地执行此操作。

我可以通过创建一个初始化对象的字典开始,如果再次传递相同的字符串,则获取该对象。但这仍然留下了当其他代码正在初始化该对象时第二次请求该对象时会发生什么的问题。

我看到 Apple 为我提供了 NSLock 类。我不知道如何将其应用于我的问题。我看到 Apple 允许我为我的锁命名,但我没有看到任何方法来访问具有给定名称的锁。我想我可以创建一个锁字典,但即使这样似乎也不是万无一失的——如果两个线程尝试同时创建同名的锁怎么办?

有人能指出我正确的方向吗?

最佳答案

如何使用所有字符串创建一个静态 NSMutableArray 并同步代码。

当然,您需要首先在某处初始化数组;)

也许像这样:

static NSMutableArray* myArrayWithStrings;

-(void) someMethod:(NSString*) key
{
    @synchronized(myArrayWithStrings)
    {
        if(![myArrayWithStrings containsObject:key])
        {
            NSLog(@"Working with the key %@", key);
            [myArrayWithStrings addObject:key];

        }else
        {
            NSLog(@"Ignoring key '%@'. Already worked with it.",key);
        }
    } 
}

关于iphone - iOS——尝试设置锁字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197800/

相关文章:

iphone - 什么会导致 dyldbootstrap 中出现 EXC_BAD_INSTRUCTION?

iphone - UIPageViewController 手势问题

ruby-on-rails-3 - Rails/ActiveRecord 悲观锁定 - 获得锁定后是否需要重新加载?

ios - 保护对 NSManaged 对象数组的读/写访问

ios - UIView宽度问题

iphone - Objective-c iPhone 百分比编码一个字符串?

java - 对象锁定私有(private)类(class)成员 - 最佳实践? ( java )

c# - 锁定对 bool 的访问是必需的还是 Overkill

ios 基于 key 创建写锁