Методы экземпляра называя методы класса, называя методы экземпляра

Я раньше любил Нантакет способ управления версиями их компилятор Clipper в 80-х:

Зима 1984 года Clipper
Лето 1985 года Clipper
Зима 1985 года Clipper
Осень 1986 года Clipper
Лето 1987 года Clipper

, О, и оверлейные программы....

[становится слезным следивший]

5
задан Eric Christensen 8 July 2009 в 03:37
поделиться

2 ответа

Нет единственного правильного ответа; это зависит от того, как ваш настраиваемый объект взаимодействует с контроллером. Большинство представлений UIKit используют шаблон «цель-действие» для связи с контроллером, в то время как многие объекты модели используют шаблон делегата. Какой из них вы используете, зависит от особенностей вашего контроллера и вашего настраиваемого объекта.

Однако механически вам, вероятно, потребуется передать указатель на ваш ViewController при создании customObj через настраиваемый инициализатор, например:

customObj *customObjInstance = [[customObj alloc] initWithController: self];

Убедитесь, что ваш customObj имеет смысл быть тесно связанным с вашим контроллером, если вы это сделаете.

5
ответ дан 14 December 2019 в 04:45
поделиться

Вы, возможно, подбрасывали мне различные упоминания класса для экземпляра классу, но если все, что вы имеете в виду, это то, что контроллер должен создавать объекты, которые могут вызывать контроллер (для создания большего количества то же самое), с чем я могу вам помочь.

Я довольно часто делаю это, используя - как упоминал Джон - шаблон делегирования:

Определите протокол для вызовов от объекта к контроллеру: 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 контроллер, который вы передаете, должен быть назначен делегатом

3
ответ дан 14 December 2019 в 04:45
поделиться