【问题标题】:NSMutableArray count equals 0 when add object [duplicate]添加对象时,NSMutableArray 计数等于 0 [重复]
【发布时间】:2013-08-03 01:09:02
【问题描述】:

我有下一个代码:

-(void)accountAdded:(GoogleMailAccount *)account
{
    DLog(@"accountAdded %@ ",account.emailAddress);

     DLog(@"_accounts addObject %@ ",account);
    [_accounts addObject:account];

     DLog(@"_accounts count %d",[_accounts count]);

    [_subFolders setValue:[account subscribedFolders] forKey:account.emailAddress];

    [self refreshTableViewTree];
}

以及它的下一个日志输出:

2013-08-02 00:57:28.009 MailClient[9327:11603] accountAdded iosmailclienttest@gmail.com 
2013-08-02 00:57:28.010 MailClient[9327:11603] _accounts addObject <GoogleMailAccount: 0x7db94f0> 
2013-08-02 00:57:28.011 MailClient[9327:11603] _accounts count 0

为什么帐户大小 = 0? (这对我来说是一个真正的问题:(。我没有看到什么???)

【问题讨论】:

  • 数组 _accounts 是否为零?在 ObjC 中,您可以向 nil 发送消息,因此如果它是 nil 并且您在其上调用了方法,它不会给出错误
  • 我明白了。我的错 - 我再次忘记了语言中缺少的 NullPointerException。谢谢。
  • @barn.gumbl 看看我的回答是否有效
  • @Abdullah Shafique - 实际上是汤姆的“_accounts != nil?”足以理解我的虚拟问题。无论如何 - 谢谢。

标签: ios objective-c nsmutablearray


【解决方案1】:

在方法的开始:

 if(!_accounts) _accounts = [[NSMutableArray alloc]init];

或者你可以这样做:

-(NSMutableArray *)accounts
{
    if(!_accounts) _accounts = [[NSMutableArray alloc]init];
    return _accounts;
}

【讨论】:

  • 更好的解决方案是在类的指定初始化程序中执行此操作。
  • @bbum 确实如此,但这种方式可行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多