Скорее всего, вы отправляете сообщения, которые игнорируются, например, они отправляются на объекты, которые не существуют / не являются тем, который вы ищете, и по какой-то причине не сбои. Это происходит в случае сообщения ноль или, возможно, других незаконных значений. Хотя вы, похоже, ожидаете, что переменные m_ будут инициализированы в 0, это не очень хорошая форма, и, кроме того, вы не следуете очень типичному шаблону objc для ваших синглетонов - m_dataModel должен быть иваром m_instance, а m_instance, вероятно, должен быть объявлен статическим, так как вы , вероятно, не хотите, чтобы к нему обращались напрямую из других файлов. Кроме того, наиболее вероятным источником вашей ошибки является метод -init, который никогда не следует вызывать для синглтона - вместо этого сделайте что-то вроде этого:
+ (ApplicationSingleton *)sharedInstance {
static ApplicationSingleton *instance = nil;
if(!instance) {
instance = [[self alloc] init]; //or whatever custom initializer you would like, furthermore some people just put the initialization code here and leave -init empty
}
return instance;
}
код, который у вас есть, теперь утекает, потому что вы выделяете объект (self) и не освобождаете его до возвращения потенциально другого экземпляра (общего, если он уже существует), так что вновь выделенный обычно теряется.