Мне интересно, если можно установить делегат входного потока в другой класс. Пока все примеры, с которыми я столкнулся, связаны с самим собой: [inputStream setDelegate:self]
. Я хочу установить делегат в другой класс, как ViewController
, а не сам. Заранее спасибо.iOS - Установка делегата входного потока в другой класс
ответ
Если ваш ViewController
отвечает на NSStreamDelegate
, вы можете инициировать экземпляр контроллера и установить делегат, как обычно.
@interface ViewController : NSOperation<NSStreamDelegate>
...
-
ViewController *vc = [[ViewController alloc] init];
[inputStream setDelegate:vc];
, например
обновление:
использовать идентификатор или UIViewController<NSStreamDelegate>
переменные в классе TCPConnection
держать родитель.
Например:
// TCPConnection.h
@interface TCPConnection : NSOperation<NSStreamDelegate>
@property(nonatomic, assign) UIViewController<NSStreamDelegate> parent;
-(id)initWithParent:(UIViewController<NSStreamDelegate> *)p_parent;
...
...
// TCPConnection.m
-(id)initWithParent:(UIViewController<NSStreamDelegate> *)p_parent
{
self = [super init];
self.parent = p_parent;
return self;
}
// UIViewController<NSStreamDelegate>.m
TCPConnection *connection = [[TCPConnection alloc] initWithParent:self];
Или Синглтон решение, где вы всегда вызывать только
TCPConnection *connection = [TCPConnection sharedInstance];
и иметь только один экземпляр этого класса. В большинстве случаев лучший способ;)
Спасибо, но я думаю, что это немного жестко закодировано, потому что в моем механизме я хочу динамически назначать этот 'ViewController'. Например, я создаю класс с именем 'TCPConnection', который имеет такие атрибуты, как inputStream и outputStream. С этим я могу создать этот объект в каждом «ViewController» в моем проекте. Проблема заключается в том, что в классе TCPConnection я могу узнать, какой «ViewController» создал объект «TCPConnection», поэтому я могу установить в качестве делегата «ViewController». У меня все ясно? :) –
вы можете передать класс, который создал экземпляр для вашего TCPConnection (id parent). Уже подумал, может ли здесь быть один сингл-решение? Таким образом, только ваш TCPConnection обрабатывает все и просто корректируется другими классами? ;) – geo
Спасибо за советы, я это рассмотрю. :) –
Вы можете отобразить делегат и назначить его определенному делегату, и он будет вызван.
- 1. Установка делегата в «несвязанный» класс
- 2. Передача объекта, полученного из входного потока, в другой класс
- 3. iOS - как получить класс делегата
- 4. Установка делегата в Android
- 5. Могут ли ведущие байты входного потока копироваться в другой файл без закрытия входного потока?
- 6. IOS: передать данные в другой класс
- 7. Probem Установка Другой класс Variable
- 8. Обработка потока входного потока в Java
- 9. Правильный способ форматирования входного потока
- 10. Шифрование входного потока
- 11. Очистка входного потока
- 12. Java-перенаправление входного потока
- 13. C++ - Размер входного потока
- 14. Сбой входного потока C++
- 15. установка делегата пользовательского класса
- 16. Сброс входного потока Socket в Java
- 17. обновление gui из потока (другой класс)
- 18. Реализация потока Oauth2.0 в IOS
- 19. поведение странного делегата iOS?
- 20. Подключение входного потока к OutputStream
- 21. Установка входного Box фона
- 22. класс ios и ios_base для форматирования потока
- 23. импортировали класс не распознается в файле делегата Ios 7.0
- 24. Вызов метод делегата из потока
- 25. Модифицировать данные входного потока на лету
- 26. метод вызова делегата (IOS)
- 27. Ошибка ввода входного потока файла
- 28. Чтение из входного потока сокета
- 29. Установка делегата при использовании canDisplayBannerAds
- 30. установка делегата на цели ViewController
Вы не можете решить проблему? Или он все еще открыт? – geo
Я искал механизм делегирования, но позже я заметил, что механизм центра уведомлений более подходит для меня. Я создаю свой singleton 'TCPConnection' объект, и когда я получаю вход с сервера, и я отправляю уведомление, чтобы просмотреть класс контроллера, чтобы позаботиться об ответе и внести изменения в интерфейс. Спасибо за ваши советы. :) –