使用NSInteger和int属性时,如何替换增量运算符

问题描述

|| 我正在将一些旧代码更新为我们的新编码标准。在此代码中,变量“ 0”使用旧的“ 1”运算符递增。现在,
int
变量是一个属性,因此使用
++
效果不佳。我不应该使用点,也不应该直接引用ivars。 这是我想出的(totalHeads是
int
类型的属性): 申报部分
@synthesize totalHeads = _totalHeads;
再向下
[self setTotalHeads:[self totalHeads] + 1];
取代了旧的代码
_totalHeads ++;
有没有更优雅的方法可以做到这一点? (很抱歉,如果这是一个重复的问题,我很难找出好的搜索字词)     

解决方法

        如评论中所述,如果不允许使用点语法访问setter方法,则“ 8”是唯一的方法。 禁止在任何情况下都使用语言功能的编码标准是无效的。也许您可以使用此示例来说明您的情况。     ,        您可以使用属性和后增量运算符。这段代码:
@interface Foo: NSObject
@property (assign) int bar;
@end

@implementation Foo
@synthesize bar;
@end

int main() {
    Foo *foo = [[Foo alloc] init];
    foo.bar = 3;
    foo.bar++;
    NSLog(@\"foo.bar: %d\",foo.bar);
    [foo release];
    return 0;
}
产生以下结果:   2011-06-21 21:17:53.552无标题[838:903] foo.bar:4     ,        属性实际上并不重要,它仍然是一个int,除非您为与该属性相关联的ivar声明不同的名称,否则仍然可以使用totalHeads ++;     ,        基于有关NSInteger和int之间转换的问题,我提出了以下内容:
- (NSInteger) incrementNSInteger: (NSInteger) nsInt byNumber: (int)increment
{
    int integer = nsInt;
    integer += increment;
    NSInteger result = integer;

    return result;
}
使用方法:
NSInteger one;
NSInteger two = [self incrementNSInteger: one byNumber: 1];
如果您为“ byNumber”提供-1,则它将递减。同样,2增加2,-2减少2。(为什么++和-不足以使我感到困惑)。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...