标签: nsarray

NSMutableArray的-removeLastObject是否释放对象?

我正在讨论NSMutableArray的-removeAllObjects,-removeLastObject等方法.文档只说这些方法'从数组中删除'对象.删除的对象是否已释放?

iphone uikit nsmutablearray nsarray

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

使用NSArray*sort*方法后,我负责释放返回的数组

我习惯于编程,我负责释放所有东西,这个目标c时髦的东西是在工作中抛出一些扳手.我使用以下代码.

NSArray *b = [a allObjects];
NSArray *c = [b sortedArrayUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)

谁负责释放"b"和"c".对于记录,"a"是NSSet.如果我手动释放它们似乎会使应用程序崩溃,但我不是百分百肯定所以我想我会问.

谢谢.

sorting iphone objective-c nsarray

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

NSArray的实施

如何实施NSArray,它是否类似于std::vector.

abstraction objective-c nsarray

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

比较值的NSMutableArray元素

我正在寻找一种方法来比较两个NSMutableArray对象的内容.两个数组都填充了NSMutableDictionaries,它们是单独分配的,但偶尔也包含相同的数据.

简化示例:

NSMutableArray *firstArray = [[NSMutableArray alloc] init];
NSMutableArray *secondArray = [[NSMutableArray alloc] init];

NSMutableDictionary *a = [[NSDictionary alloc] init];
[a setObject:@"foo" forKey:"name"];
[a setObject:[NSNumber numberWithInt:1] forKey:"number"];

NSMutableDictionary *b = [[NSDictionary alloc] init];
[b setObject:@"bar" forKey:"name"];
[b setObject:[NSNumber numberWithInt:2] forKey:"number"];

NSMutableDictionary *c = [[NSDictionary alloc] init];
[c setObject:@"foo" forKey:"name"];
[c setObject:[NSNumber numberWithInt:1] forKey:"number"];

[firstArray addObject:a];
[firstArray addObject:b];
[secondArray addObject:c];
Run Code Online (Sandbox Code Playgroud)

a,b和c是不同的对象,但a和c的内容是匹配的.

我正在寻找的是比较firstArray和secondArray并仅返回b的函数/方法.

在伪代码中:

NSArray *difference = [self magicFunctionWithArray:firstArray andArray:secondArray];
NSLog(@"%@",difference)

=> ({name="bar"; number=2})
Run Code Online (Sandbox Code Playgroud)

先感谢您.

compare objective-c nsdictionary nsmutablearray nsarray

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

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

空NSArray是平等的吗?

我在想,为什么这段代码:

NSArray *emptyArr = [[[NSArray alloc] init] autorelease];
NSArray *emptyArrA = [NSArray arrayWithArray:emptyArr];
NSArray *emptyArrB = [NSArray arrayWithArray:emptyArr];

NSLog(@"emptyArrA == emptyArrB => %d", (emptyArrA == emptyArrB));
NSLog(@"emptyArr == emptyArrB => %d", (emptyArr == emptyArrB));
NSLog(@"emptyArrA == emptyArr => %d", (emptyArrA == emptyArr));
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

emptyArrA == emptyArrB => 1
emptyArr == emptyArrB => 1
emptyArrA == emptyArr => 1
Run Code Online (Sandbox Code Playgroud)

也就是说,这些物体似乎是不同的?嗯,我想,这必须是对不可变的空NSArray的特殊情况的iOS(或CoreFoundation?)优化,然后它总是解析为同一个对象实例.

但是......这段代码:

NSLog(@"emptyArr => %p", &emptyArr);
NSLog(@"emptyArrA => %p", &emptyArrA);
NSLog(@"emptyArrB => %p", &emptyArrB);
Run Code Online (Sandbox Code Playgroud)

输出(在我的机器上):

emptyArr => 0xbfffdd64
emptyArrA => 0xbfffdd60
emptyArrB …
Run Code Online (Sandbox Code Playgroud)

objective-c nsarray ios

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

将C数组转换为UIImage(适用于iOS)

我目前在C数组中有一些图像数据,其中包含RGBA数据.

float array[length][4]
Run Code Online (Sandbox Code Playgroud)

我试图把它变成一个UIImage,它看起来像是用文件,NSData和URL初始化的.由于其他两种方法都很慢,我对NSData方法最感兴趣.

我可以将所有这些值都放入NSArray中,如下所示:

for (i=0; i<image.size.width * image.size.height; i++){
    replace = [UIColor colorWithRed:array[i][0] green:array[i][1] blue:array[i][2] alpha:array[i][3]];
    [output replaceObjectAtIndex:i withObject:replace];
}
Run Code Online (Sandbox Code Playgroud)

所以,我有一个NSArray充满了UIColor的对象.我尝试了很多方法,但是如何将其转换为UIImage?

我认为这将是直截了当的.一个类似的函数imageWithData:data R:0 B:1 G:2 A:3 length:length width:width length:length会很好,但据我所知,没有任何功能.

iphone image objective-c uiimage nsarray

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

removeAllObjects崩溃应用程序

我想清除我的阵列,我做的是,

我在我的应用程序中有tableview视图,首先我从服务器获取数据并将其加载到tableView中.

-(void)viewDidLoad{

  //fetching data from server using background thread and storing it in array called (msg_array)
  [table reloadData];

}
Run Code Online (Sandbox Code Playgroud)

当最后一行出现在屏幕上时,我想从服务器获取新数据,我想显示它,

-(void)LoadMoreData{ //this method gets fire when last cell is on screen 

    if ([msg_array count]>0) 
    {
        [msg_array removeAllObjects];  //crashes here
    }

}
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSArrayI removeAllObjects]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)

为什么会导致崩溃:

数组的分配方式如下:

msg_array = [dictShow copy];
Run Code Online (Sandbox Code Playgroud)

dictshow包含数据并将其复制到msg_array,而dictshow是mutabledictionary

(摘自评论)

iphone objective-c nsarray ipad ios

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

NSPredicate在NSString类型的两个日期之间进行过滤

我有一些数据(如NSDictionarya NSMutableArray),样本数据是这样的,

在此输入图像描述

考虑每一行NSDictionary,整个表是一个NSMutableArray包含事件.

我想在两个日期之间产生结果,所以我NSPredicate用来过滤我的数据.


这是我的代码片段,

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Date >=  %@ AND
Date <=  %@", startDate,endDate];

NSArray *filter = [arrayEvents filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

测试过滤:


情况1:

NSString *startDate = @"01/07/14";
NSString *endDate = @"31/07/2014";
Run Code Online (Sandbox Code Playgroud)

输出: 所有事件(行).


案例2:

NSString *startDate = @"20/07/14";
NSString *endDate = @"31/07/2014";
Run Code Online (Sandbox Code Playgroud)

输出: 最后四个事件(行).


案例3:

NSString *startDate = @"11/07/14";
NSString *endDate = @"20/07/2014";
Run Code Online (Sandbox Code Playgroud)

输出: 仅第二个事件(行).


案例4:

NSString *startDate = @"01/08/14";
NSString *endDate = @"31/08/2014";
Run Code Online (Sandbox Code Playgroud)

输出: 所有事件(行).


结论:

案例1,2和3是正确的,案例4不正确.


笔记: …

nsstring nsarray nspredicate ios

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

如何在swift 3中将NSArray转换为Swift数组

我有两个阵列

var arr1 = [NSArray]()
var arr2 = [String]()
Run Code Online (Sandbox Code Playgroud)

我想转换NSArray成我正在使用的字符串数组

arr2 = arr1 as![串]

但它给了我错误: -

'NSString' is not a subtype of 'NSArray'
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以转换吗?

arrays nsarray ios swift

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