财产申报中的含义atomic和nonatomic含义是什么?
@property(nonatomic, retain) UITextField *userName;
@property(atomic, retain) UITextField *userName;
@property(retain) UITextField *userName;
Run Code Online (Sandbox Code Playgroud)
这三者之间的运作区别是什么?
在Cocoa中,如果我想循环遍历NSMutableArray并删除符合特定条件的多个对象,那么每次删除对象时如何在不重新启动循环的情况下执行此操作的最佳方法是什么?
谢谢,
编辑:只是为了澄清 - 我正在寻找最好的方式,例如比手动更新索引更优雅的东西.例如在C++中,我可以做;
iterator it = someList.begin();
while (it != someList.end())
{
if (shouldRemove(it))
it = someList.erase(it);
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我正在访问并从多个线程更改可变数组.一开始它在我尝试访问一个对象时崩溃objectAtIndex,因为索引超出了界限(该索引处的对象已经从另一个线程中的数组中删除).我在互联网上搜索了如何解决这个问题,我决定尝试这个解决方案.我创建了一个带有NSMutableArray属性的类,请参阅以下代码:
@interface SynchronizedArray()
@property (retain, atomic) NSMutableArray *array;
@end
@implementation SynchronizedArray
- (id)init
{
self = [super init];
if (self)
{
_array = [[NSMutableArray alloc] init];
}
return self;
}
-(id)objectAtIndex:(NSUInteger)index
{
@synchronized(_array)
{
return [_array objectAtIndex:index];
}
}
-(void)removeObject:(id)object
{
@synchronized(_array)
{
[_array removeObject:object];
}
}
-(void)removeObjectAtIndex:(NSUInteger)index
{
@synchronized(_array)
{
[_array removeObjectAtIndex:index];
}
}
-(void)addObject:(id)object
{
@synchronized(_array)
{
[_array addObject:object];
}
}
- (NSUInteger)count
{
@synchronized(_array)
{
return [_array count];
}
}
-(void)removeAllObjects …Run Code Online (Sandbox Code Playgroud)