标签: nsarray

为什么我不能将nil对象添加到NSMutableArrays?

我有一种情况,我希望能够维护一个可能都指向nil的指针数组.

Equipment *equipment[19];
Run Code Online (Sandbox Code Playgroud)

但是,我发现我不能将指针数组或双指针设置为对象的属性.

当我不能使用C风格的数组时,我的解决方法是使用NSArray对象.所以我尝试做类似以下的事情:

NSMutableArray *equipment = [NSMutableArray arrayWithCapacity: NUM_EQUIPSLOTS];
for (int i=0; i<NUM_EQUIPSLOTS; i++) {
    [equipment setObject: nil atIndexedSubscript: i];
}
Run Code Online (Sandbox Code Playgroud)

这里的想法是我有一个空指针数组,稍后会指向东西.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x246e012 0x1e4be7e 0x2421b6a 0x2421a20 0xebd02 0xde82b 0xc9d5a 0xcb6bd 0x4d525 0xc94fa 0xc8b6a 0xa18157 0xa18747 0xa1994b 0xa2acb5 0xa2bbeb 0xa1d698 0x3176df9 0x3176ad0 0x23e3bf5 0x23e3962 0x2414bb6 0x2413f44 0x2413e1b 0xa1917a 0xa1affc 0xc8526 0x1fa5)
libc++abi.dylib: terminate called throwing an exception
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用C风格的数组和单个对象轻松地完成这项工作.我宁愿这样做而不是像哑巴一样: …

c null objective-c nsmutablearray nsarray

6
推荐指数
2
解决办法
4148
查看次数

从Swift重写一个Obj-C类方法,返回NSArray

我似乎无法覆盖以下方法,并创建了一个独立的示例,现在让我烦恼了几个小时.

它几乎肯定是愚蠢的,但我似乎无法覆盖swift类中的类方法,其中基类是Objective C,特别是返回类型是一个NSArray*.

我刚收到错误," Method does not override any method from its superclass"

所以我的失败如下所示:

显示错误,包含类和超类的定义

但是如果将返回类型更改为像NSString这样简单的东西,它可以正常工作*

使用NSString的工作示例

现在我已经Array<AnyObject>和其他几个人一起尝试过了,但是我对Swift语法仍然有点新鲜,所以我几乎肯定错过了一些明显的东西.

objective-c nsarray ios swift

6
推荐指数
1
解决办法
551
查看次数

如何使用Swift显示数组的唯一元素?

我有一个公式重新调整数组作为例子var Array = [a,s,d,s,f,g,g,h,e].我想要的是运行一个for循环或其他一些让我回来的选项a,s,d,f,g,h,e- 只有唯一的值.我怎么能用ios Swift做到这一点?

arrays sorting filter nsarray swift

6
推荐指数
1
解决办法
6026
查看次数

Cocoa:检查两个NSArray是否相等

我有两个NSRr数组NSR(使用NSStringFromRect(NSRect)存储).有没有快速的方法来检查并查看数组中的项是否相等或我是否必须循环?因此,数组1中的第1项=数组2中的第1项等.

谢谢

cocoa nsarray

5
推荐指数
2
解决办法
3278
查看次数

计算一组数字的可能排列

我有一个NSArray,数字为{0,1,2,3}

计算阶乘4(数组的计数),我有24个可能的排列0,1,2,3

我想知道是否有办法计算所有这些可能的排列并将它们放在一个单独的数组中.

例如,给定上面的数字{0,1,2,3},得到的排列将是:

0123, 0132, 0213, 0231, 0312, 0321,
1023, 1032, 1203, 1230, 1302, 1320,
2013, 2031, 2103, 2130, 2301, 2310,
3012, 3021, 3102, 3120, 3201, 3210
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.非常感谢!

combinations for-loop objective-c combinatorics nsarray

5
推荐指数
2
解决办法
2551
查看次数

在NSArray中查找重复项

假设您有NSArray重复项@[1,2,3,1,1,2,4,5,6];

找到所有重复项; 这可以是伪代码.这是一个算法问题而不是基础框架(不使用NSSet)问题.

cocoa-touch nsarray

5
推荐指数
2
解决办法
2702
查看次数

保留静态数组会导致非弧项目泄漏吗?

我在下面得到了一个测试代码.
(通过这个例子,我遇到了一个接口,如果没有保留就不能静态分配.)

通过这个代码块,我理解了真正保留的是什么.
我想确定是否会泄漏,我应该在其他地方发布它.我根本不想每次重新初始化阵列.并使其静止.(内存不利但速度有利)

我应该在某处释放这个保留的静态数组吗?它是一个安全的代码还是我完全删除静态和保留单词,并且只是使用arrayObjects方法通常使用init?那么你更喜欢我?

-(NSUInteger)getCoordYByX:(int)ax
{
    NSUInteger ret_=-1;

    static NSArray *coordsX=nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        coordsX=[[NSArray arrayWithObjects:
                      [NSNumber numberWithInt:50],
                      [NSNumber numberWithInt:170],
                      [NSNumber numberWithInt:190],
                      [NSNumber numberWithInt:210],
                      [NSNumber numberWithInt:350],
                      nil]retain];
                      /*it is more longer. cropped for test purposes*/

});
    ret_=[[coordsX objectAtIndex:ax] unsignedIntegerValue];
return  ret_;
Run Code Online (Sandbox Code Playgroud)

}


总结:
为什么静态不保持数组初始值?而
如果我wantto使用保留,可能会发生内存泄漏或不?

static memory-leaks objective-c nsarray

5
推荐指数
1
解决办法
200
查看次数

CFMutableArray超出其容量

考虑到我有一个CFMutableArray使用以下函数调用创建的对象:

CFMutableArrayRef marray = CFArrayCreateMutable(kCFAllocatorDefault, 1, &kCFTypeArrayCallBacks);
Run Code Online (Sandbox Code Playgroud)

根据CFMutableArray文档,的第二个参数CFArrayCreateMutable,这被称为capacity是"可以由新的数组被包含的值的最大数量.该阵列开始空并能长到这个数值(它可以具有更小) .传递0指定最大容量不受限制.该值不得为负数."

但是,如果我向我的新数组附加多个值,它会不断增长.我的意思是,如果新数组已经有一个值并且我附加了一个新CFArrayAppendValue(marray, newValue)值,则存储该值并且数组计数变为2,超过其容量.

那么,为什么会这样呢?我误解了文档吗?

cocoa core-foundation nsarray ios

5
推荐指数
1
解决办法
792
查看次数

你为什么有时会把NSArray强制转换为NSMutableArray,有时你不能?

特别:

self.words = (NSMutableArray*)[self.text componentsSeparatedByString:@" "];
Run Code Online (Sandbox Code Playgroud)

只要有分隔符就可以正常工作.我看到该方法返回包含在NSArray中的原始字符串,如果没有的话.这个单元素NSArray固执地拒绝被强制转换为NSMutableArray.

但是,当我这样做时:

self.words = [NSMutableArray arrayWithArray:self.words];
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

这里有什么我想念的吗?从NSArray转换为NSMutableArray是不好的做法吗?

iphone objective-c nsmutablearray nsarray ios

5
推荐指数
1
解决办法
672
查看次数

目标C代码用于后台进程

我使用NSApplication和NSWorkspace来获取正在运行的应用程序列表.

但它只给我管理员激活的应用程序,而不是后台运行的根进程.

我希望获得所有正在运行的进程的列表,并在新进程生成后立即更新该列表.

我不想使用NSTask和解析输出.

有没有解决这个问题?

NSArray * runningapps = [[NSWorkspace sharedWorkspace] runningApplications];
Run Code Online (Sandbox Code Playgroud)

macos xcode objective-c nsarray nsworkspace

5
推荐指数
1
解决办法
306
查看次数