【发布时间】:2017-03-09 21:21:48
【问题描述】:
我的 Objective-c 应用程序中有一个 JSONModel 类。我将此类与单例一起使用,然后使用以下代码初始化此类:
MyClass *client = [[MyClass alloc] init];
client = [[MyClass alloc] initWithDictionary:myDictionary error:nil];
.h
@interface MyClass : JSONModel
...
+ (id)sharedInstance;
...
@end
.m
static MyClass *singletonObject = nil;
+ (id) sharedInstance
{
if (! singletonObject) {
singletonObject = [[MyClass alloc] init];
}
return singletonObject;
}
- (id)init
{
if (! singletonObject) {
singletonObject = [super init];
}
return singletonObject;
}
我正在尝试检查我是否已经像这样初始化了我的类:
if([MyClass sharedInstance] == nil){
但它不起作用...如何检查是否已初始化?
【问题讨论】:
-
当然这不起作用——
sharedInstance在返回之前初始化对象,如果它是nil。这感觉就像X/Y problem;你想做什么? -
我在通话中使用从服务器接收到的数据初始化 MyClass,但是我想删除它并重新调用,所以我正在检查什么时候是空的来进行通话,什么时候没有,希望清楚跨度>
-
我真的不确定你在这里做什么。为什么你甚至需要一个单例?另外,您的
init方法中发生了什么?我认为您甚至可能违反了内存管理约定,这最终会导致非常奇怪的错误。 -
有数百万个关于如何在 Objective-c 中实现单例的示例。为什么不只是复制一个而不是发明你自己的,你发现这是行不通的。不,您的评论根本不清楚。
-
我复制了我的单身人士。我的单例工作正常,因为我可以使用 [MyClass sharedInstance] 从另一个类加载 MyClass 并且它可以工作,但我想在一个类中销毁它以检查其他类中是否为空并再次调用服务器.. 感谢您的回答
标签: ios objective-c null singleton jsonmodel