小编Nem*_*Sys的帖子

NSTimer userInfo.对象如何传递给选择器?

我有这个代码:

-(void)startRotation:(RDUtilitiesBarRotation)mode {
    rotationTimer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(rotateSelectedItem:) userInfo:[NSNumber numberWithInt:mode] repeats:YES];
}
-(void)rotateSelectedItem:(NSNumber*)sender {
    float currAngle = [selectedItem currentRotation];
    if ([sender intValue] == RDUtilitiesBarRotationLeft) {
        [selectedItem rotateImage:currAngle - 1];
    }
    else {
        [selectedItem rotateImage:currAngle + 1];
    }
}
-(void)stopRotation {
    [rotationTimer invalidate];
    rotationTimer = nil;
}
Run Code Online (Sandbox Code Playgroud)

当用户按住按钮时,目标开始旋转视图.当用户释放它时,计时器将停止.

但我这样说:

- [__ NSCFTimer intValue]:无法识别的选择器发送到实例0x4ae360

但是,如果我在userInfo中调用一个NSNumber类,为什么我要收到定时器?

谢谢.

nstimer userinfo ios

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

UILongPressGestureRecognizer停止手柄而不停止触摸

我正在使用UILongPressGestureRecognizer类来处理是否正在选择一个项目.

逻辑如下:用户在1秒内按下一个项目(UIView子类).一旦检测到手势,该项目就会突出显示并可移动.

用户必须在屏幕上移动此项目而不停止触摸它.

我面临的问题是手势识别阴影触摸开始/移动/结束项目类安排运动所必需的.

我试图删除一旦检测到识别出的手势并选择了该项目.但仍然发送消息到手势的句柄而不是调用触摸方法.

任何人都知道如何停止"聆听"手势识别器而不离开屏幕的手指?

谢谢.

这里的代码:

-(void)addGestures
{
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                               initWithTarget:self 
                                               action:@selector(handleLongPress:)];
    longPress.minimumPressDuration = iItemLongPressTime;
    [self addGestureRecognizer:longPress];
    [longPress release];
}
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender { 
    if (sender.state == UIGestureRecognizerStateEnded) {

        NSLog(@"Long press Ended");
    }
    else {
        if (self.isSelected) return;

        if ([delegate respondsToSelector:@selector(singleTouch:)])
            [delegate singleTouch:self];

        [self removeGestureRecognizer:[self.gestureRecognizers objectAtIndex:0]];

        NSLog(@"Long press detected.");
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您在else分支中看到的那样,委托调用允许所有过程将此项标记为已选中,并在删除识别器之后.

我错过了什么?

- 编辑 -

完成!这有效:

#pragma mark Gesture Functions
-(void)addGestures
{
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                               initWithTarget:self 
                                               action:@selector(handleLongPress:)];
    longPress.minimumPressDuration = iItemLongPressTime;
    [self addGestureRecognizer:longPress];
    [longPress …
Run Code Online (Sandbox Code Playgroud)

iphone uigesturerecognizer ios

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

迭代NSMutableArray对象.最佳实践

在我的应用程序中,我有几个循环访问NSMutableArray的成员以使用它们.这是一个例子:

for (a=0;a<[items count];a++)
{
iItem *item = [[items objectAtIndex:a] autorelease];

    [page.view addSubview:item];

NSLog(@"Item Added: %d\nItem Frame X:%f Y:%f W:%f H:%f",item.itemId,item.frame.origin.x,item.frame.origin.y,item.frame.size.width,item.frame.size.height);

    [item setDelegate:page];

    if ([[items objectAtIndex:a] zOrder] == 1)
        [page.view sendSubviewToBack:item];
    else 
        [page.view bringSubviewToFront:item];

//[item release];
//item = nil;

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我在使用alloc/init和release将其添加到MutableArray后以不同的方法创建了iItem对象,那么在使用之后是否必须使用在循环中创建的iItem的版本?

谢谢.

release objective-c nsmutablearray

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

NSDateFormatter字符串格式,用于显示毫秒数

我需要使用以下格式检索当前日期:

YYYY-MM-DD-HH-MM-SS-XXX

但是那些用于毫秒的字母是什么?

objective-c nsdateformatter

3
推荐指数
1
解决办法
681
查看次数

从ARGB值创建UIColor对象

我在数据库中有几行,其中一个字段是相关颜色的ARGB值.

我将读取这些表的所有行并将ARGB值十进制转换为UIColor.

我用google搜索了这个,但我没有.

有什么方法可以解决这个问题吗?

谢谢.

objective-c uicolor argb

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

如果应用程序正在被设置,则以编程方式检测ios

我需要知道从安装的设备上卸载我的应用程序的时间.

有什么办法知道吗?

谢谢.

uninstall objective-c ios

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

如何在不使用属性或ivar的情况下引用对象

如果我使用以下内容在子视图集合中添加UIView子类:

-(void)loadOutlet
{
    myOutlet *out = [[myOutlet alloc] init];
    [self addSubview:out];
    [out release];
}

-(void)unloadOutlet
{
    myOutlet *out = <<HOW CAN I REFERENCE IT FROM subviews array?>>
    [out removeFromSuperView];
}
Run Code Online (Sandbox Code Playgroud)

这样做的最佳做法是什么?

从现在开始,我使用isKindOfClass为每个子视图查找使用循环,但是没有更好的方法?

谢谢.

object objective-c ios

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

stringWithFormat是否创建了retain +1实例?

我在NSString课堂上宣布一个类型的ivar .要初始化此ivar的值,我使用以下代码:

NSString *myVar;

-(void)inAnyMethod
{
   myVar = [NSString stringWithFormat:@"%@",theValue];
}
Run Code Online (Sandbox Code Playgroud)

我必须释放这个伊娃吗?根据我的理解,这不是我的责任.但在大多数情况下,我以这种方式使用的字符串会导致泄漏.

我错过了什么?

memory-leaks memory-management objective-c nsstring retain

0
推荐指数
1
解决办法
968
查看次数