私のコードには奇妙な振る舞いがあり、それを解決する方法が本当にわかりません。
私はこの定義を持つシングルトンクラスを持っています:
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
AppModelLocator
その特定のコードは、HTTPリクエストを作成してリクエストの送信を開始するクラスを初期化していますが、クラス内には参照や特別なものはありません。NSURLConnection
これは、とそのデリゲートメソッドの簡単な作成です。
私は他のアプリケーションで同様のクラスとアプローチを使用しましたが、それらは正常に機能しており、このクラスの何が問題になっているのでしょうか。シングルトンクラスを作成する他の12の方法を試しましたが、どれも役に立ちませんでした。