- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 objective-c 书上看到了一个单例示例。但是,我不知道 objective-c 和其他语言之间的“单例”定义的含义是否存在差异。这个 [[SingletonClass alloc] init] 仍然可以用来创建一个新对象吗?如果是,如何保证内存中只有一个对象?
#import "SingletonClass.h"
@implementation SingletonClass
static SingletonClass *sharedInstance = nil;
// Get the shared instance and create it if necessary.
+ (SingletonClass*)sharedInstance {
if (sharedInstance == nil) {
sharedInstance = [[super allocWithZone:NULL] init];
}
return sharedInstance;
}
// We can still have a regular init method, that will get called the first time the Singleton is used.
- (id)init
{
self = [super init];
if (self) {
// Work your initialising magic here as you normally would
}
return self;
}
最佳答案
如果您想要真正的单例,即只能实例化一次的对象,请查看 Apple 的文档:Creating a Singleton Instance .
基本上,思路是重写一些与分配和管理对象相关的方法:+allocWithZone(由+alloc调用),-retain,-release,-copyWithZone等,这样就变得相当困难了创建一个以上的单例类实例。 (仍然可以通过直接调用运行时来创建第二个实例,但这应该足以说明要点。)
几乎所有曾经以任何身份撰写过 Objective-C 的博主都对如何实现单例提出了意见。这些意见中有很多看起来都不错,而且大多数都非常相似。很明显Dave DeLong知道他在说什么,his piece on singletons简短、甜美、直截了当。
关于objective-c - objective-c 中的单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7143162/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!