IOS: вызов метода в другом классе

У меня есть класс «ClassA» с «MethodA», у меня также есть «ClassB», и я хочу назвать «methodA» из «ClassB»; я пишу

@classA; @property(nonatomic, retain) ClassA *classA; //and also @synthesize... 

то я вызываю метод с

 [self.classA method]; 

но он не вызывает метод …. тогда я пишу в viewdidload в classB

 self.classA = [[ClassA alloc]init]; 

но эта вещь сбросит varaibles в ClassA.

Как я могу решить эту ситуацию?

EDIT: Я решил переписать свой ответ, поскольку я не думаю, что оригинал был хорошо сформулирован.

Я думаю, что вы не понимаете, что такое точечное обозначение Objective-C 2.0. Это запутанно, особенно если вы программируете на C или C ++, так как он синтаксически эквивалентен оператору доступа к struct или class , но семантически отличается.

Когда вы используете:

 self.classA = newClassA; 

Вы на самом деле делаете то же самое, что:

 [self setClassA: newClassA]; 

И когда @property classA определен с атрибутом retain , компилятор генерирует метод setter как-то вроде:

 - (void) setClassA:(ClassA *)newClassA { if (classA != newClassA) { [newClassA retain]; [classA release]; classA = newClassA; } } 

В коде, который вы указали:

 [self.classA method]; 

Фактически расширяется до:

 [self setClassA: method]; 

Это не то, что вы намеревались.

Самый простой способ избежать этой путаницы – не использовать точечную нотацию вообще, и особенно не в методе экземпляра того же класса, который имеет дело с распределением или освобождением переменной.

Вы создаете новый экземпляр ClassA с помощью alloc и init. Вам нужно установить свойство в ваш существующий экземпляр класса A, сложно сообщить, как без контекста, но, возможно, когда вы создаете класс b, do

 classB.classA = self; 

Это предполагает, что класс A создает класс B в первую очередь.

  • Как вызвать другой метод из другого класса в swift?
  • iPhone iOS как сравнить объект класса с другим объектом класса?
  • Учебник UIImagePickerController?
  • Класс не читается ... Неизвестный тип имени
  • Добавление и удаление наложения вида в Swift
  • Переменная AppDelegate, используемая как глобальная переменная, не работает
  • Как вы правильно возвращаете структуру, например CLLocationCoordinate2D, из метода класса?
  • NSPredicate isKindOfClass работает только для не для
  • Класс UIView для выпадающего списка с UIButtons - проблема делегирования / протокола?
  • Задачи и роли пользовательского класса Objective-C
  • Как получить класс из пакета
  • Interesting Posts

    Как интегрировать Unity в проект iOS Swift 3

    UIImagePickerControllerMediaMetadata хранит разные данные по сравнению со встроенной камерой iOS

    UIlabel показывает дополнительное пространство перед текстом

    iOS – Как просмотреть вывод NSLog и printf в сеансе ssh по телефону?

    элементы iphone keychain сохраняются после удаления приложения?

    iPhone / iOS: подклассификация UITableViewCell два раза -> не может ссылаться на свойства родительского класса в InterfaceBuilder

    iOS 7 SpriteKit – Создание игровых меню / кнопок (Сцены и другие контроллеры представлений)

    Установить кнопку Sharekit с помощью UIButton, а не UIBarButton

    Как получить данные с сервера через сокет в iOS?

    Расширение AVMutableComposition

    xcode – недопустимый биткод

    Распространение приложений iOS In-House

    Как сделать вертикальную прокрутку в iOS?

    Имитировать левое перетаскивание UITableViewCell

    Применение части текстуры (лист спрайта / текстуры) для точечного спрайта в iOS OpenGL ES 2.0

    Давайте будем гением компьютера.