我正在讨论NSMutableArray的-removeAllObjects,-removeLastObject等方法.文档只说这些方法'从数组中删除'对象.删除的对象是否已释放?
我习惯于编程,我负责释放所有东西,这个目标c时髦的东西是在工作中抛出一些扳手.我使用以下代码.
NSArray *b = [a allObjects];
NSArray *c = [b sortedArrayUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)
谁负责释放"b"和"c".对于记录,"a"是NSSet.如果我手动释放它们似乎会使应用程序崩溃,但我不是百分百肯定所以我想我会问.
谢谢.
我正在寻找一种方法来比较两个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)
先感谢您.
如何比较两个NSArrays并将相等的对象放入一个新数组中?
我在想,为什么这段代码:
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) 我目前在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会很好,但据我所知,没有任何功能.
我想清除我的阵列,我做的是,
我在我的应用程序中有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
(摘自评论)
我有一些数据(如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不正确.
笔记: …
我有两个阵列
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)
还有其他方法可以转换吗?
nsarray ×10
objective-c ×7
ios ×4
iphone ×4
abstraction ×1
arrays ×1
cocoa ×1
cocoa-touch ×1
collections ×1
compare ×1
image ×1
ipad ×1
nsdictionary ×1
nspredicate ×1
nsstring ×1
sorting ×1
swift ×1
uiimage ×1
uikit ×1