Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保使用ARC销毁IOS 5中的单例?_Ios_Design Patterns_Ios5_Singleton_Automatic Ref Counting - Fatal编程技术网

如何确保使用ARC销毁IOS 5中的单例?

如何确保使用ARC销毁IOS 5中的单例?,ios,design-patterns,ios5,singleton,automatic-ref-counting,Ios,Design Patterns,Ios5,Singleton,Automatic Ref Counting,比如说,我想创建一个包含一些数据的单例。数据只动态分配一次,正如在单例上所期望的那样 但我现在想知道何时以及如何公布这些数据。我是否应该建立一种特殊的方法来摧毁这个独生子?更具体地说,什么时候将执行此单例的“dealloc”方法?谁对此负责?一般来说,单件物品与普通物品没有什么不同。如果不再(强)引用它,它将被释放。通常,您只能通过静态变量控制一个对象。这个变量是在编译时创建的;因此,它不能被释放。但是所有的“真实”对象都可以。一般来说,单个对象与普通对象没有什么不同。如果不再(强)引用它,它将

比如说,我想创建一个包含一些数据的单例。数据只动态分配一次,正如在单例上所期望的那样


但我现在想知道何时以及如何公布这些数据。我是否应该建立一种特殊的方法来摧毁这个独生子?更具体地说,什么时候将执行此单例的“dealloc”方法?谁对此负责?

一般来说,单件物品与普通物品没有什么不同。如果不再(强)引用它,它将被释放。通常,您只能通过静态变量控制一个对象。这个变量是在编译时创建的;因此,它不能被释放。但是所有的“真实”对象都可以。一般来说,单个对象与普通对象没有什么不同。如果不再(强)引用它,它将被释放。通常,您只能通过静态变量控制一个对象。这个变量是在编译时创建的;因此,它不能被释放。但是所有的“真实”对象都可以。你可以声明一个你显式调用的方法/函数

最简单的方法是使用一个静态C++类来保存它,然后在它的析构函数中释放它。如果您有多个单例,那么这种方法不会很好地扩展,因为销毁顺序是由实现定义的

另一种选择(也是更好的设计)是避免使用单例方法,只需将其作为另一个类中的常规实例使用,该类在应用程序运行期间一直存在(应用程序委托是一个常见的示例)


至于“何时”,则取决于它的依赖关系和使用方式。尽量减少破坏过程中的外部影响也很好。

您可以声明一个显式调用的方法/函数

最简单的方法是使用一个静态C++类来保存它,然后在它的析构函数中释放它。如果您有多个单例,那么这种方法不会很好地扩展,因为销毁顺序是由实现定义的

另一种选择(也是更好的设计)是避免使用单例方法,只需将其作为另一个类中的常规实例使用,该类在应用程序运行期间一直存在(应用程序委托是一个常见的示例)

至于“何时”,则取决于它的依赖关系和使用方式。尽量减少破坏中的外部影响也很好