Можно ли вызвать метод из экземпляра класса? - PullRequest
0 голосов
/ 28 февраля 2011


У меня есть класс, который является производным от UITableViewController и обрабатывает все, что связано с определенным типом таблиц.Давайте назовем это Class T

В майском классе основного приложения, Class A, у меня есть методы для заполнения других областей экрана, например, карты.

Пока я заполняю свою таблицу в пределах Class T, я хотел бы вызвать метод Class A, который наносит на карту x,y точек на карте.

Возможно ли это?Какой должен быть правильный способ сделать это?

Когда я думал об этом подходе, я ожидал, что вызов [super ...] внутри Class T вызовет методы Class A, так как это класс владельцаэкземпляр, но, конечно, он вызывает родительский класс, в моем случае UITableViewController.

Спасибо,
Pedro

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Почему бы не определить ClassAProtocol, а затем добавить свойство "classADelegate" в классе T?ClassAProtocol будет определять метод, подобный следующему:


-(void)plotXYOnMapFromData:(id)someObjectContainingDataToPlot;

Таким образом, в интерфейсе класса T вы добавите:


@property (assign) id classADelegate;

, а затем при создании экземпляра, скажем, от instanceA (экземпляр класса A).), instanceT (экземпляр класса T), который вы сделаете:


instanceT.classADelegate = instanceA;

Наконец, внутри класса T вы можете вызвать метод построения графика следующим образом:


[classADelegate plotXYOnMapFromData:myDataToPlot];

Преимущество делегатаШаблон в этом случае состоит в том, что Классу T просто нужно знать только один маленький фрагмент ClassA, который является протоколом, и ClassA может связываться с T благодаря его реализации протокола.

1 голос
/ 28 февраля 2011

Если A является вашим основным классом приложения, вы сможете получить доступ к экземпляру приложения с помощью [UIApplication sharedApplication], привести его к типу класса A и вызвать API-интерфейсы, которые необходимо вызвать.

...