Я раньше любил Нантакет способ управления версиями их компилятор Clipper в 80-х:
Зима 1984 года Clipper
Лето 1985 года Clipper
Зима 1985 года Clipper
Осень 1986 года Clipper
Лето 1987 года Clipper
, О, и оверлейные программы....
[становится слезным следивший]
Нет единственного правильного ответа; это зависит от того, как ваш настраиваемый объект взаимодействует с контроллером. Большинство представлений UIKit используют шаблон «цель-действие» для связи с контроллером, в то время как многие объекты модели используют шаблон делегата. Какой из них вы используете, зависит от особенностей вашего контроллера и вашего настраиваемого объекта.
Однако механически вам, вероятно, потребуется передать указатель на ваш ViewController
при создании customObj
через настраиваемый инициализатор, например:
customObj *customObjInstance = [[customObj alloc] initWithController: self];
Убедитесь, что ваш customObj
имеет смысл быть тесно связанным с вашим контроллером, если вы это сделаете.
Вы, возможно, подбрасывали мне различные упоминания класса для экземпляра классу, но если все, что вы имеете в виду, это то, что контроллер должен создавать объекты, которые могут вызывать контроллер (для создания большего количества то же самое), с чем я могу вам помочь.
Я довольно часто делаю это, используя - как упоминал Джон - шаблон делегирования:
Определите протокол для вызовов от объекта к контроллеру: callBack
// CallBackDelegate.h
#import <Foundation/Foundation.h>
@protocol CallBackDelegate<NSObject>
- (void)callBack;
@end
в файле заголовка для контроллера. Я импортирую протокол
#import "CallBackDelegate.h"
и указываю, что контроллер реализует этот протокол:
@interface MyViewController : UIViewController < CallBackDelegate >
{ ...
тем временем в заголовке пользовательского класса объекта также импортируем протокол
#import "CallBackDelegate.h"
и добавляем член экземпляра, который соответствует протоколу:
id<CallBackDelegate> delegate;
и свойство, которое должно быть назначено, а не сохранять, иначе у вас будет циклическое сохранение, контроллер и настраиваемый объект будут сохранять друг друга, что означает, что они никогда не будут освобождены
@property(assign) id<CallBackDelegate> delegate;
(этот член не обязательно называть делегатом)
Затем убедитесь, что когда ваш контроллер представления создает настраиваемый объект, он устанавливает себя в качестве делегата
customObject.delegate = self;
Затем в своем настраиваемом объекте вы можете сделать это:
[ delegate callBack];
надеюсь что помогает, mat
, если вы выполните поиск по образцу кода Apple, вы найдете такие примеры:
[делегат touchesEnded: touch withEvent: event];
конечно, если вы хотите, чтобы метод передавал вам идентификатор созданного объекта, метод не должен возвращать (void), как в моем примере
, если вы хотите, вы можете написать метод инициализации, который принимает делегата, как предложил Джон
customObj * customObjInstance = [[customObj alloc] initWithController: self];
внутри initWithController контроллер, который вы передаете, должен быть назначен делегатом