Я создал ни одной тонны, как это для АРК,Проблемы с одноплодной
+ (MyClass *)sharedInstance {
static MyClass *sharedSpeaker = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedSpeaker = [[self alloc] init];
});
return sharedSpeaker;
}
- (id)init {
if (self = [super init]) {
}
return self;
}
Но здесь я создаю экземпляры, как это:
id speaker3 = [[MyClass alloc] init];
id speaker = [MyClass sharedInstance];
id speaker2 = [[MyClass alloc] init];
NSLog(@"Speaker 1= %@ \n speaker 2 = %@\n Speaker3 = %@",speaker,speaker2,speaker3);`
Я получил выход как:
Speaker 1= <MyClass : 0xa45f5e0>
speaker 2 = <MyClass : 0xa461740>
Speaker3 = <MyClass : 0xa4529e0>
Это похоже на желаемое поведение. Как остановить это, когда я даю singleton в библиотеке пользователю. Мне нужно заблокировать его от создания нового экземпляра. Мне нужно сделать статический глобальный, если я сделаю его глобальным, он не сможет создать глобальную переменную с тем же именем, что и конфликт будет правильным. Так что любые члены могут дать решение?
одной тонны не требуется в itialize с помощью init в проекте, чтобы получить доступ к своему экземпляру, вам нужно только вызвать его метод класса. если вы инициализируете его извне, то он будет возвращать новый экземпляр все время, если вы хотите создать объект, то какая цель singleton ?? –
Обратите внимание, что даже если вы отключите init, вы не можете принудительно применять одноэлементное поведение в Objective-C, так как пользователь всегда может создавать больше экземпляров с использованием 'NSAllocateObject()' и 'class_createInstance()'. – Jano
Я не знаю, почему я получил понижение до этого. Фактически, новичок, который использует мою библиотеку, может создать инициализацию alloc объекта ... И если я использую глобальную переменную и проверяю ее во время метода init для создания объекта, тогда конфликт глобальной переменной имен появляется, если кто-то хочет создать переменную с тем же именем. Я просто хотел проверить с лучшими людьми, чтобы получить хорошие решения для этого ... Я не знаю, какой мозговой вопрос понижен ... – Star