标签: nsinteger

Int或NSInteger作为方法参数的对象.Objective-C的

我在传递一个数字作为方法的参数时遇到了一些麻烦:

- (void)meth2:(int)next_int;
Run Code Online (Sandbox Code Playgroud)

要调用该方法,我需要这个:

int next_int = 1;
[self performSelectorOnMainThread:@selector(meth2:) withObject:next_int waitUntilDone:NO];
//update next_int and call meth2 again
Run Code Online (Sandbox Code Playgroud)

在这一点上,我得到一个"没有强制转换的整数指针"错误,并且会发生相同的情况NSInteger.一个NSNumber没用,因为它是不可变的,我需要不断更改值.知道我该怎么办?

谢谢.

iphone objective-c nsinteger

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

将NSInteger转换为NSString

我试图用几个不同的部分制作一个字符串.以下就是我现在所拥有的.我的代码中没有任何错误,但是一旦我运行它并执行触发它的事件我得到EXC_BAD_ACCESS.有没有另一种方法将其NSInteger投入NSString

NSString *part1, *part2, *tempString;

NSInteger num1;
NSInteger num2;

part1=@"some";
part2=@"text";    

tempString = [NSString stringWithFormat:@"%@%@%@%@", 
              part1,
              (NSString *)num1, 
              part2, 
              (NSString *)num2];
Run Code Online (Sandbox Code Playgroud)

objective-c string-formatting nsstring nsinteger ios

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

为什么cocoa到处都没有使用相同的枚举声明风格?

我想知道可可的不同风格的枚举声明背后的理由是什么?

像这样:

enum { constants.. }; typedef NSUInteger sometype;
Run Code Online (Sandbox Code Playgroud)

是否有理由使用typedef来获取NSUInteger的分配而不进行强制转换?

有时typedef是NSInteger/NSUInteger,为什么不总是使用NSInteger?使用NSUInteger真的有好处吗?

枚举标记名有时仍然使用,就像这里的_NSByteOrder.

这个答案也非常有用:Objective-C中的typedef枚举是什么?.

cocoa objective-c nsinteger nsuinteger

12
推荐指数
2
解决办法
3507
查看次数

如何将typedef enum转换为NSNumber?

  1. 每个值都typedef enum被视为一个int

    例如,给出以下内容typedef enum:

    // UIView.h
    
    typedef enum {
        UIViewAnimationCurveEaseInOut,
        UIViewAnimationCurveEaseIn,
        UIViewAnimationCurveEaseOut,
        UIViewAnimationCurveLinear
    } UIViewAnimationCurve;
    
    Run Code Online (Sandbox Code Playgroud)

    我如何知道使用哪种方法创建NSNumber

    + (NSNumber *)numberWithShort:(short)value;
    + (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
    + (NSNumber *)numberWithInt:(int)value;
    + (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
    + (NSNumber *)numberWithLong:(long)value;
    + (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
    + (NSNumber *)numberWithLongLong:(long long)value;
    + (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
    + (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
    + (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
    
    Run Code Online (Sandbox Code Playgroud)

    我认为这+[NSNumber numberWithInt:]是正确的使用方法,因为使用Core Data实现Enums的最佳方法可接受答案.例如:

    [NSNumber numberWithInt:UIViewAnimationCurveLinear]
    
    Run Code Online (Sandbox Code Playgroud)

    但是,如果+[NSNumber numberWithInt:]是正确的,为什么呢?

  2. 对于按位 …

enums typedef nsnumber nsinteger nsuinteger

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

NSNumber对实例级计数器是否过度杀伤?

我是Objective-C和Cocoa的新手.我已经读过NSInteger和NSNumber在使用简单整数时是首选,因为它们是原始数字类型的"平台安全"版本(在NSNumber的情况下,包装在一个对象中).所以,我需要一个我的课程中的计数器,当NSTimer激活时它会增加.在Apple论坛上,我发现一群人都向类似情况的人推荐他们应该在标题中声明一个NSNumber指针,用numberWithInt:初始化它,然后每次需要增加它时通过将它分配给一个新的对象(类似的东西counter = [NSNumber numberWithInt:[counter intValue]+1];).这对我来说太过分了.如果我需要的只是一个int计数器(顺便说一句,我会在它达到15后将其重置为0,因此大小不是问题),我不能只使用一个int而不必分配一个每次迭代我的计时器循环的新对象?

如果是这样,我如何在整个班级中提供原始类型.我知道对于对象类型,我在我的界面中声明它并使用@property和@synthesize ...当使用原语时,等价(如果存在)是什么?

iphone cocoa objective-c nsnumber nsinteger

9
推荐指数
2
解决办法
2842
查看次数

ARC中不允许从NSInteger到NSString的隐式转换.应该使用哪种解决方法来处理整数

这是我的viewcontroller.m文件中的代码

- (void)viewDidLoad{
[super viewDidLoad];
[self.abilitygeneration setText:((TestAbility *)[self.testabilities objectAtIndex:0]).abilitygeneration]; }
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误NSInteger的隐式转换,也就是ARC不允许将NS转换为NSString.如何启用ARC并为此设置解决方法.而不是setText我可以使用什么?

能力生成在TestAbility.h文件中设置为NSInteger ..谢谢

xcode nsstring nsinteger ios5 xcode4.2

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

检查整数是正还是负 - 目标C.

如果整数是正数还是负数,我如何在objective-c编码中说明.我正在这样做,以便我可以写一个"if"语句,声明如果这个整数是正数,那么这样做,如果它的负数做这个.

谢谢,

凯文

xcode objective-c nsinteger

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

为什么我不能在switch语句中使用NSInteger?

为什么这不起作用:

NSInteger sectionLocation = 0;
NSInteger sectionTitles = 1;
NSInteger sectionNotifications = 2;

switch (section) {
    case sectionLocation:
        //
        break;
    case sectionTitles:
        //
        break;
    case sectionNotifications:
        // 
        break;
    default:
        //
}
Run Code Online (Sandbox Code Playgroud)

我得到这个编译错误:

错误:case标签不会减少为整数常量

是不是可以像这样使用NSInteger?如果是这样,是否有另一种方法在switch语句中使用变量作为案例?sectionLocation等具有可变值.

iphone cocoa-touch objective-c switch-statement nsinteger

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

如何将NSIndexPath转换为NSInteger?

我已经搜查,发现了这个问题,一个以前的答案在这里.问题是标记为解决方案的答案不起作用.在我的tableView:didSelectRowAtIndexPath:方法里面,我有

NSInteger *currentRow = indexPath.row;
Run Code Online (Sandbox Code Playgroud)

它给了我警告'不兼容的整数到指针转换初始化'NSInteger*'(又名'int*'),表达式为'NSInteger'(又名'int').

任何帮助表示赞赏!

iphone objective-c nsinteger nsindexpath

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

如何比较两个NSInteger?

我们如何比较两个NSInteger数字?我有两个NSIntegers并比较它们常规方式不起作用.

if (NSIntegerNumber1 >= NSIntegerNumber2) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,第一个值是13,第二个值是17,if循环正在执行

任何的想法 ?

objective-c nsinteger ios

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