#objective-c #ios #methods #boolean #ibaction
#objective-c #iOS #методы #логическое #ibaction
Вопрос:
мне нужно подключить почтовый сервер imap с помощью приведенного ниже метода -(BOOL)
как я могу вызвать этот метод в IBACTION при нажатии кнопки подключения?
- (BOOL) connectToHost: (NSString*) hostname
{
socket_ = socket(AF_INET, SOCK_STREAM, 0);
if (socket_ < 0) {
NSLog(@"socket");
}
struct sockaddr_in addr;
memset(amp;addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(993);
struct hostent* host = gethostbyname([hostname UTF8String]);
unsigned int** ptr = (unsigned int **) host->h_addr_list;
while (*ptr != NULL) {
addr.sin_addr.s_addr = *(*ptr);
if (connect(socket_, (struct sockaddr *) amp;addr, sizeof(addr)) == 0) {
break;
}
ptr ;
}
if (*ptr == NULL) {
NSLog(@"connect");
}
return [[self readLine] isEqualToString: @"* OK"];
}
Комментарии:
1. просто создайте обычный метод по щелчку с помощью IBACTION, а затем вызовите connectToHost изнутри.
Ответ №1:
… вызвать его из другого метода?
- (IBAction) connectButtonClicked:(id)sender {
[self connectToHost:@"Your host name goes here, variable _or_ constant! :D"];
}
Комментарии:
1. Возможно, вам захочется что-то сделать, если
BOOL
значение равно false, например, отобразитьUIAlertView
сообщение пользователю о том, что соединение не удалось.2. [self connectToHost:@»Здесь указано имя вашего хоста, переменное или постоянное! :D»]; это принимает только один аргумент, который является именем хоста, я беру имя хоста из текстового поля «imap.gmail.com » итак, мой код похож [self connectToHost:@»imap.gmail.com «] когда я ставлю точки останова, я вижу, что он завершается в приведенном выше коде, если (connect(socket_, (struct sockaddr *) amp;addr, sizeof(addr)) == 0) {break; есть ли у вас какие-либо идеи или предложения по его исправлению?
3. @SpaceDust: Нет, и я предлагаю вам создать новый вопрос для этого, потому что это совершенно другой вопрос.