简体   繁体   English

NSInteger 的可变副本

[英]mutableCopy of NSInteger

I'm trying to make a mutableCopy of an NSInteger ?.我正在尝试制作NSInteger的 mutableCopy ?。 However, since an NSInteger is a non-mutable object this doesn't work.但是,由于NSInteger是非可变对象,因此这不起作用。 If I don't make a mutableCopy of the row variable the UIPickerView jumps to the next row when selecting one.如果我不制作行变量的 mutableCopy,则UIPickerView在选择一行时会跳转到下一行。

Here my code:这是我的代码:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component
{
    if (pickerView == _frequencyPicker) {
        [_detailTableViewController.currentAlarm.cycles replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:row]];
        [self.tableView reloadData];
    } else {
        int rowNumber = (int)row;
        // -> mutableCopy
        rowNumber++;
        NSLog(@"%s:%d",__PRETTY_FUNCTION__,rowNumber);
        [_detailTableViewController.currentAlarm.cycles replaceObjectAtIndex: withObject:[NSNumber numberWithInteger:row]];
        [self.tableView reloadData];
    }
}

Since you are using NSInteger , not NSNumber , you can rewrite your code without declaring and incrementing a primitive variable, like this:由于您使用的是NSInteger ,而不是NSNumber ,因此您可以在不声明和增加原始变量的情况下重写代码,如下所示:

[_detailTableViewController.currentAlarm.cycles
    replaceObjectAtIndex:0
    withObject:@(row+1)];
[self.tableView reloadData];

Since NSInteger is a typedef for a primitive type, mutability considerations do not apply here.由于NSInteger是原始类型的typedef ,因此此处不适用可变性考虑。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM