【问题标题】:Singleton class method in static library in iOSiOS静态库中的单例类方法
【发布时间】:2013-04-18 08:51:11
【问题描述】:

我有一个包含Singleton类方法的静态库,我在(IBAction)函数中调用它,第一次调用没问题,但第二次崩溃了,也没有错误信息, 单例类方法如下:

   +(myClass *)sharedClient{
    static myClass *_sharedClient = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        _sharedClient = [[[myClass alloc] init] autorelease];

    });

    return _sharedClient;
    }

我这样称呼它:

   -(IBAction) action

    {
        [myClass sharedClient] action];
    }

【问题讨论】:

  • no error information - 你确定吗?

标签: ios static singleton


【解决方案1】:

您正在向共享访问器内的新对象发送自动释放。下次自动释放池弹出时,共享对象将被释放然后销毁。只需删除自动释放,崩溃就会自行修复。

【讨论】:

  • 它确实有效,但我不使用ARC,我应该什么时候发布它?
  • 作为一个(非严格的)单例访问器......你不会释放它。这就是为什么在使用单例模式时要格外小心的原因——如果共享对象使用了太多内存,您可能需要重新考虑应用程序的设计以使用不那么严格的方法。但是,如果您没有遇到这个问题,那很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2018-08-12
  • 1970-01-01
相关资源
最近更新 更多