相关疑难解决方法(0)

什么是洗牌NSMutableArray的最佳方式?

如果你有NSMutableArray,你如何随机洗牌?

(我有自己的答案,发布在下面,但我是Cocoa的新手,我很想知道是否有更好的方法.)


更新:正如@Mukesh所述,从iOS 10+和m​​acOS 10.12+开始,有一种-[NSMutableArray shuffledArray]方法可用于改组.有关详细信息,请参阅https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc.(但请注意,这会创建一个新数组,而不是将元素移动到位.)

cocoa shuffle objective-c

187
推荐指数
6
解决办法
8万
查看次数

NSInvocation for Dummies?

NSInvocation工作究竟如何?有一个很好的介绍吗?

我特别关注以下代码(来自Cocoa Programming for Mac OS X,3rd Edition)的工作原理,但是也可以独立于教程示例应用这些概念.代码:

- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index
{
    NSLog(@"adding %@ to %@", p, employees);
    // Add inverse of this operation to undo stack
    NSUndoManager *undo = [self undoManager];
    [[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
    if (![undo isUndoing])
        [undo setActionName:@"Insert Person"];

    // Finally, add person to the array
    [employees insertObject:p atIndex:index];
}

- (void)removeObjectFromEmployeesAtIndex:(int)index
{
    Person *p = [employees objectAtIndex:index];
    NSLog(@"removing %@ from %@", p, employees);
    // Add inverse of this operation to undo stack
    NSUndoManager …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c undo-redo

138
推荐指数
3
解决办法
6万
查看次数

在数组中存储块

在Objective-C中,我知道块被认为是对象,所以我想知道是否可以将它们存储在数组中.这引出了一个问题,是阻塞第一类对象还是只是为了在对象之间传递它们而被视为对象?如果它们是第一类对象,那么它们不应该存储在数组中吗?

memory-management objective-c objective-c-blocks

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