最初のコントローラーのコード:
optionscontroller = [[OptionsViewController alloc] init ];
[optionscontroller setupSocket];
2 番目のコントローラーのコード:
- (void)setupSocket
{
udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
if (![udpSocket bindToPort:0 error:&error])
{
// [self logError:FORMAT(@"Error binding: %@", error)];
return;
}
if (![udpSocket beginReceiving:&error])
{
// [self logError:FORMAT(@"Error receiving: %@", error)];
return;
}
isRunning = YES;
NSLog(@"Udp Echo server started on port %hu", [udpSocket localPort]); }
アクションの 1 つ:
- (IBAction)testbutton:(id)sender {
NSString *host = @"192.168.1.255";
if ([host length] == 0)
{
NSLog(@"Address required");
return;
}
NSString *msg = @"hi";
if ([msg length] == 0)
{
//[self logError:@"Message required"];
return;
}
NSData *data = [msg dataUsingEncoding:NSUTF8StringEncoding];
[udpSocket enableBroadcast:YES error:nil ];
[udpSocket sendData:data toHost:host port:port withTimeout:-1 tag:0];
tag++;
}
最初のコントローラーから「setupSocket」を呼び出すと起動しますが、OptionsViewController に移動してボタンをクリックすると、何も起こりません。2 番目のコントローラーの「view did load function」から「setupSocket」を呼び出すと、すべてが機能します。いいよ、なんで???
そのため、ターゲット ビュー コントローラー以外からいくつかのメソッドを初期化すると、このメソッドは機能しません。私はそれがどのように起こるのか理解できませんか?