在这个客观的C代码中,“at sign”@是什么意思

时间:2013-01-23 13:14:11

标签: objective-c at-sign

我使用Objective C已经有好几年但我不知道@ sign可以像这样使用(for循环中的第6行):

- (void)encodeWithCoder:(NSCoder *)coder
{
    [coder encodeInteger:mti forKey:@"mti"];

    NSMutableArray *arr = [NSMutableArray arrayWithCapacity:N];
    for (int i = 0; i < N; i++)
        [arr addObject:@(mt[i])];
    [coder encodeObject:arr forKey:@"mt"];
}

这是什么意思?令人惊讶的是我可以删除它并且编译器没有抱怨并且代码看起来工作正常吗?!

这是MTRandom https://github.com/preble/MTRandom/blob/master/MTRandom/MTRandom.m#L115

的一部分

3 个答案:

答案 0 :(得分:3)

在此上下文中,@运算符将C数值(int,long,float,double等)转换为NSNumber的实例。它最常用于数字文字(例如@ 3.5),但也适用于表达式中的表达式。

Xcode 4.4引入了Objective-C语言的这种增强功能。

答案 1 :(得分:1)

这是拳击值较少的新语法。假设mt[i]是数字类型,@(mt[i])会将其放在NSNumber对象中。

答案 2 :(得分:1)

这是Objective-C的新手,它将原始整数转换为NSNumber,NSArrays @(..)和NSDictionary @ {...}

也有等价物。