小编gle*_*rey的帖子

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

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

NSArray在被枚举时发生了变异

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

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

collections cocoa cocoa-touch objective-c nsmutablearray

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

如何将UIView缩放(缩放)到给定的CGPoint

我花了很多时间试图找到一种方法来使用CGAffineScale将视图转换为给定点,包括弄乱锚点,在转换之前和之后移动视图的中心以及全面的Google搜索.我知道使用UIScrollview会更简单; 但是我知道技术上可以不用一个,而且它在我脑海里成了一个分裂.

这个答案非常接近我想要实现的目标,但答案只提供了如何通过巧妙地将中心移动到与要放大的角相对的角落来放大到给定角(而不是给定点)的细节. .

如何修改mvds的代码以将UIView扩展到UIView中的任何给定点?

CGFloat s = 3;
CGAffineTransform tr = CGAffineTransformScale(self.view.transform, s, s);
CGFloat h = self.view.frame.size.height;
CGFloat w = self.view.frame.size.width;
[UIView animateWithDuration:2.5 delay:0 options:0 animations:^{
    self.view.transform = tr;
    self.view.center = CGPointMake(w-w*s/2,h*s/2);
} completion:^(BOOL finished) {}];
Run Code Online (Sandbox Code Playgroud)

zoom objective-c cgaffinetransform ios

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

三个整数的最大值(最高值)和最小值(最低值)

我有三个整数

int myI1 = 33;
int myI2 = 44;
int myI3 = 22;
Run Code Online (Sandbox Code Playgroud)

我想确定什么是最高的,哪个是使用Objective-C的最低值

我不知道要走哪条路...... NSArray,int array或其他东西.我知道我可以继续比较这些值,但我正在寻找更优雅和/或更通用的方法.

谢谢!

iphone objective-c ios

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

如何避免修改Xcode的项目文件(.xcodeproj)经常由团队工作?

与Eclipse或其他IDE不同,Xcode会在发现添加,重命名或删除项目中的文件或组时修改.xcodeproj文件.当有多个开发人员在项目上工作时,这非常不方便.

一旦我的SCM工具抱怨.xcodeproj文件上的冲突,我所能做的就是检查整个项目的另一个副本并合并我所做的所有更改并祈祷没有人比我"更快".

是否有解决方法来更改Xcode的默认策略?

iphone macos xcode ios

9
推荐指数
1
解决办法
1475
查看次数

使用CoreData在UITableView中动画行删除会导致断言失败

我有一个UITableView,显示与CoreData一起存储的对象列表.我可以使用以下代码删除对象:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
    NSLog(@"Delete row");
    [managedObjectContext deleteObject:[fetchedResultsController objectAtIndexPath:indexPath]];

    // Save the context.
    NSError *error;
    if (![managedObjectContext save:&error]) {
        /*do this gracefully one day */
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    [self refreshTables]; //where refreshTables just reloads the data the table is using and calls [self.tableView reloadData];
}

}
Run Code Online (Sandbox Code Playgroud)

但它没有动画或美学.

当我尝试通过替换动画

[self refreshTables]; 
Run Code Online (Sandbox Code Playgroud)

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

断言失败 - [UITableView _endCellAnimationsWithContext:],> /SourceCache/UIKit_Sim/UIKit-1261.5/UITableView.m:920 2010-10-30 16:46:35.717 MyApp [38226:207] …

iphone cocoa-touch core-data uitableview

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

如果在SplitViewController的MasterView中选择了另一个对象,则UITableView删除/添加行会导致CoreData:严重应用程序错误

更新18/3#2.我已经开始计算beginUpdates和EndUpdates以确保它们是均匀的.就在出现异常之前,它们就会失去同步.不知道为什么.

UPDATE 18/3: I think I've found the problem, but I'm not sure if I know how to fix it. After experimenting for a couple hours, I found I could only crash the app when I had selected more than one item in the master tableview of the svc during that session. When another item is selected in the master tableview, the detail table view gets a new object set and refreshtables is called EVEN IF it's halfway through …

cocoa-touch core-data uitableview ipad ios

7
推荐指数
1
解决办法
6509
查看次数

在全新的MacBook上安装Xcode 4后找不到Dashcode

我有一台全新的MacBook(空气如果重要的话).我已经安装了Xcode 4,但即使使用finder我也找不到Dashcode.我该怎么办 ?

xcode dashcode

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

像油漆一样添加颜色(颜色)(蓝色+黄色=绿色等)

我正在使用cocos2d库制作iOS游戏.

假设您有两个具有两种不同颜色的对象 - 以RGB格式定义

Blue:    0,0,255
Yellow:  255,255,0
Run Code Online (Sandbox Code Playgroud)

我想添加蓝色和黄色来制作绿色.

为了使事情复杂化,让我们说Blue对象比Yellow对象更大(为了说明,我们说比例为2:1),我加入的蓝色是黄色的两倍 - 我如何计算这个新的(浅绿色)颜色正确.

我理解LAB*Color Space对于这种"自然色"的东西很有用,但我不知道如何使用它 - 特别是在cocos2d对象的上下文中,(AFAIK)仅限于在其中使用RGB配色方案.

我真的很感激如何实现这一点的实际帮助.谢谢堆!

21/4更新:所以在LAB*中蓝色+黄色≠绿色(当你看到它们位于同一个通道的两端时才有意义).它实际上是一个相当棘手的问题,一个 一点的讨论SO.似乎最终的答案是使用Kubelka-Munk方法,即一种名为Krita的开源软件.我找不到任何地方(公式或代码本身).

这个问题一个链接,它使用HSL以类似的方法绘制.我将尝试查看它是否有效,我将在此处反馈结果.

与此同时,如果有人知道如何实现Kubelka-Munk或者我可以找到代码来执行此操作,或者其他解决方案,我会非常非常激动!

c++ math colors objective-c cocos2d-iphone

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

如果您在App Store上更改应用程序的名称,短链接是否会更改?

我们正在改变iTunes App Store上的某个应用程序的名称.

假设我们将应用程序重命名foobar.

目前您可以从中下载应用程序http://itunes.com/app/foo.名称更改后,短链接还会更改为http://itunes.com/app/bar或是绑定到绑定ID的短链接?

app-store ios

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

SKNode上的UITapGestureRecognizer:将坐标从UIView转换为SKNode

我有一个UITapGestureRecognizerUIPanGestureRecognizerUIView一个SKScene就可以了.平移手势识别器从左向右移动SKNode,并且我希望Tap手势识别器检测到平移的SKNode的孩子.平移工作正常,但我在检测水龙头时遇到问题 - Tap Gesture会触发相关方法,但我不确定如何将坐标从视图转换到场景到节点以检测水龙头是否在其中一个子节点.

UIView(带手势)→SKScene→平移节点→平移节点的子节点

如何检查轻击手势的触摸坐标是否为任何给定的SKNode?

-(void)tapAction:(UITapGestureRecognizer*)sender{
if (sender.state == UIGestureRecognizerStateEnded)
{
    // handling code
    CGPoint touchLocation = [sender locationOfTouch:0 inView:sender.view];
    NSLog(@"TAP %@", NSStringFromCGPoint(touchLocation)
          );
    for (SKLabelNode *node in _containerNode.children) {

        if ([node containsPoint:[node convertPoint:touchLocation fromNode:self.parent]]) {
            //This is where I want the tap to be detected.
        }

        CGPoint checkPoint = [node convertPoint:touchLocation fromNode:self.scene];
        NSLog(@"CheckPoint %@", NSStringFromCGPoint(checkPoint)
              );
        //NSLog(@"iterating nodes");
        if ([node containsPoint:checkPoint]) {
            NSLog(@"touch match %@", node);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

objective-c ios uitapgesturerecognizer sprite-kit

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