标签: nsmutablearray

Objective-C的NSMutableArray是否是线程安全的?

我一直试图解决这个崩溃将近一个星期.应用程序崩溃,没有任何异常或堆栈跟踪.在僵尸模式下运行仪器时,应用程序不会以任何方式崩溃.

我有一个在不同的线程上调用的方法.修复崩溃的解决方案正在取代

[self.mutableArray removeAllObjects];
Run Code Online (Sandbox Code Playgroud)

dispatch_async(dispatch_get_main_queue(), ^{
    [self.searchResult removeAllObjects];
});
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一个时间问题,所以我尝试同步它,但它仍然崩溃:

@synchronized(self)
{
    [self.searchResult removeAllObjects];
}
Run Code Online (Sandbox Code Playgroud)

这是代码

- (void)populateItems
{
   // Cancel if already exists  
   [self.searchThread cancel];

   self.searchThread = [[NSThread alloc] initWithTarget:self
                                               selector:@selector(populateItemsinBackground)
                                                 object:nil];

    [self.searchThread start];
}


- (void)populateItemsinBackground
{
    @autoreleasepool
    {
        if ([[NSThread currentThread] isCancelled])
            [NSThread exit];

        [self.mutableArray removeAllObjects];

        // Populate data here into mutable array

        for (loop here)
        {
            if ([[NSThread currentThread] isCancelled])
                [NSThread exit];

            // Add items to mutableArray
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

NSMutableArray的这个问题不是线程安全的吗?

multithreading objective-c nsmutablearray ios

50
推荐指数
5
解决办法
3万
查看次数

静态NSArray字符串 - 在View Controller中初始化的方式/位置

在Master-Detail应用程序中,我想显示一个标题为5个部分的TableView:

  1. 你的举动
  2. 他们的举动
  3. 赢得了比赛
  4. 失落的游戏
  5. 选项

所以我在Xcode 5.0.2中创建了一个空白的Master-Detail应用程序,然后在它的MasterViewController.m(这是一个UITableViewController)中我正在尝试实现该方法:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return _titles[section];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何初始化NSArray _titles?

我正在尝试使用MasterViewController.m:

#import "MasterViewController.h"
#import "DetailViewController.h"

static NSArray *_titles_1 = @[
    @"Your Move",
    @"Their Move",
    @"Won Games",
    @"Lost Games",
    @"Options"
];

@interface MasterViewController () {
    NSMutableArray *_games;

    NSArray *_titles_2 = @[
                         @"Your Move",
                         @"Their Move",
                         @"Won Games",
                         @"Lost Games",
                         @"Options"
    ];
}
@end

@implementation MasterViewController

- (void)awakeFromNib
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        self.clearsSelectionOnViewWillAppear = NO;
        self.preferredContentSize = CGSizeMake(320.0, …
Run Code Online (Sandbox Code Playgroud)

initialization objective-c nsmutablearray nsarray ios

46
推荐指数
5
解决办法
4万
查看次数

将对象添加到NSMutableArray的开头?

有没有一种有效的方法来添加一个对象来开始NSMutableArray?我正在寻找一个好的双端队列objective C.

iphone objective-c deque nsmutablearray ios

45
推荐指数
2
解决办法
3万
查看次数

使用NSMutableArray的2D数组

我需要在Objective-C中创建一个可变的二维数组.

例如,我有:

NSMutableArray *sections;
NSMutableArray *rows;
Run Code Online (Sandbox Code Playgroud)

每个项目都sections包含一个数组rows.rows是一个包含对象的数组.

我想做这样的事情:

[ sections[i] addObject: objectToAdd]; //I want to add a new row
Run Code Online (Sandbox Code Playgroud)

顺序如下:第0节,行:obj1,obj2,obj3第1节,行:obj4,obj5,obj6,obj 7 ...

有没有办法在Objective-C中做到这一点?

cocoa cocoa-touch objective-c multidimensional-array nsmutablearray

44
推荐指数
5
解决办法
5万
查看次数

避免"NSArray在被枚举时发生变异"

我有一个NSMutableArray存储用于Box2d物理模拟的鼠标接口.当使用多个手指播放时,我会得到例外陈述

NSArray在被枚举时发生了变异

我知道这是因为我正在从数组中删除对象,同时也通过它枚举,使枚举无效.

我想知道的是,解决这个问题的最佳策略是什么?我在网上看到了一些解决方案:@synchronized在枚举或将触摸关节放入垃圾数组之前复制数组以便以后删除(我不确定是否可行,因为我需要在移除后直接从数组中删除鼠标点它来自世界).

collections cocoa cocoa-touch objective-c nsmutablearray

43
推荐指数
4
解决办法
5万
查看次数

NSMutableArray检查对象是否已存在

我不知道该如何解决这个问题.我有一个NSMutableArray(addList),它包含要添加到我的数据源NSMutableArray的所有项目.

我现在想检查从addList数组添加的对象是否已经存在于数据源数组中.如果不存在则添加项目,如果存在则忽略.

这两个对象都有一个名为iName的字符串变量,我想比较它.

这是我的代码片段

-(void)doneClicked{
    for (Item *item in addList){
        /*
        Here i want to loop through the datasource array 
        */
        for(Item *existingItem in appDelegate.list){
            if([existingItem.iName isEqualToString:item.iName]){
                // Do not add
            }
            else{
                [appDelegate insertItem:item];
            } 
        }
}
Run Code Online (Sandbox Code Playgroud)

但即使它存在,我也会发现要添加的项目.

我究竟做错了什么 ?

iphone objective-c nsmutablearray ios

42
推荐指数
4
解决办法
8万
查看次数

如何将NSMutableArray中的字符串排序为字母顺序?

我有一个字符串列表NSMutableArray,我希望在我的表视图中显示它们之前将它们按字母顺序排序.

我怎样才能做到这一点?

sorting cocoa-touch objective-c nsmutablearray ios

42
推荐指数
2
解决办法
4万
查看次数

反转NSMutableArray

逆转NSMutableArray的最佳/正确方法是什么?

macos nsmutablearray ios

40
推荐指数
3
解决办法
2万
查看次数

查找NSMutableArrays的交集

我有三个NSMutableArray包含根据不同的标准添加到列表中的名称.

这是我的数组伪代码:

NSMutableArray *array1 = [@"Jack", @"John", @"Daniel", @"Lisa"];
NSMutableArray *array2 = [@"Jack", @"Bryan", @"Barney", @"Lisa",@"Penelope",@"Angelica"];
NSMutableArray *array3 = [@"Jack", @"Jerome", @"Dan", @"Lindsay", @"Lisa"];
Run Code Online (Sandbox Code Playgroud)

我想找到第四个数组,其中包括这三个数组的交集.在这种情况下,例如它将是:

NSMutableArray *array4 = [@"Jack",@"Lisa"];
Run Code Online (Sandbox Code Playgroud)

因为所有三个阵列都有jack和lisa作为元素.有没有办法简单地这样做?

iphone intersection nsmutablearray

40
推荐指数
1
解决办法
2万
查看次数

按对象的属性对NSMutableArray进行排序

所以这是一个关于NSMutableArray自定义对象排序的最佳方法的基本问题.

我有一个NSMutableArray自定义对象,每个对象都有一个NSString并且NSDate一起去.我需要通过最新的对象(最新的NSDate)对数组进行排序,我很确定NSDate compare: NSDate如果这只是一个数组,我可以简单地使用NSDate,但是因为我需要对所有对象进行排序而不仅仅是日期,所以我我不确定我是否可以使用该方法.

在伪代码方面,我需要:查看单个对象,确定当前对象是否NSDate是数组中的下一个最大对象,如果是,则移动对象,而不仅仅是日期.

再次,这是我甚至犹豫不决的问题,因为它是如此基本,但我不想写一些非常低效的方法,如果有一个预先存在的类方法基本上做我想要的,搜索一个对象的数组子属性并根据子属性对对象进行排序.

谢谢你的帮助.

sorting iphone nsdate nsmutablearray

40
推荐指数
2
解决办法
2万
查看次数