代码之家  ›  专栏  ›  技术社区  ›  RonLugge

如果不对NSNumber执行alloc,它将响应initWithInt,如何获取NSNumber?

  •  3
  • RonLugge  · 技术社区  · 14 年前

    我的理解是,像[nsnumber initWithInt]这样的“便利”方法应该创建所指示类的副本,并初始化为所需的值。

    minutesLeft=[NSNumber initWithInt:((timeLeft)%60)];
    

    Timeleft是一个整数,因此initWithInt应该工作,结果应该是minutesLeft(要保留的属性集)应该接收并保留新的NSNumber。问题是,出于某种原因,我得到了“NSNumber可能不响应+initWithInt”的警告。因为所讨论的属性设置为retain,所以我不想使用[nsnumber alloc]initwithint,因为这样我就必须释放它。

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Justin Meiners    14 年前

    你是说: [NSNumber numberWithInt:number]; 请记住,此值是自动释放的,因此您可能需要保留它。如果你在Mac上,不用担心。

    http://cocoadevcentral.com/d/learn_objectivec/

        2
  •  2
  •   justin    14 年前

    self.minutesLeft = [NSNumber numberWithInt:number];
    

    self.minutesLeft = [[[NSNumber alloc] initWithInt:number] autorelease];
    

    或者最后呢

    NSNumber * n = [[NSNumber alloc] initWithInt:number];
    self.minutesLeft = n;
    [n release], n = 0;