我的代码中有一个奇怪的行为,我真的不知道如何解决它。
我有一个具有此定义的 Singleton 类:
AppModelLocator.h>
#import <Foundation/Foundation.h>
@interface AppModelManager : NSObject
+ (AppModelManager *)sharedManager;
@end
AppModelLocator.m
#import "AppModelManager.h"
static AppModelManager *instance = nil;
@implementation AppModelManager
#pragma mark - Singletone
#pragma mark
+ (AppModelManager *)sharedManager
{
@synchronized ([AppModelManager class]) {
if (instance == nil) {
instance = [AppModelManager new];
}
}
return instance;
}
+ (id)alloc
{
@synchronized ([AppModelManager class]) {
NSAssert(instance == nil, @"Attempted to allocate the second instance of AppModelManager.");
instance = [super alloc];
return instance;
}
return nil;
}
@end
当我[AppModelLocator sharedManager]
在代码中的某个地方调用时,一切都很好。但是当我在特定的代码行之后调用单例类时,它会抛出 EXC_BAD_ACCESS (code=1, address=0xfffffeec) 并在单例类return instance
的sharedManager
定义中引用。
该特定代码正在初始化一个创建 HTTP 请求并开始发送请求的类,但在该类中没有任何引用AppModelLocator
或特殊内容。它是一个简单的创建NSURLConnection
及其委托方法。
我在其他应用程序中使用了类似的类和方法,它们运行良好,我想知道这个类有什么问题。我尝试了十几种其他创建单例类的方法,但没有一个有用。