0
iPhoneでネットワーキングを行っています。特定のサーバーに接続してデータを送受信できます。 iPhoneの別のクラスのデリゲートからのアクセス値
例: 以下のコードでは、デフォルトの委任ストリームは特定のサーバーから受信したデータを文字列出力として表示します。どのようにアクセスできますかそれは別のクラスからですか?
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
NSLog(@"stream event %i", streamEvent);
switch (streamEvent) {
case NSStreamEventOpenCompleted:
NSLog(@"Stream opened");
break;
case NSStreamEventHasBytesAvailable:
if (theStream == inputStream) {
uint8_t buffer[1024];
int len;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
NSLog(@"server said: %@", output);
[self messageReceived:output];
}
}
}
}
break;
case NSStreamEventErrorOccurred:
NSLog(@"Can not connect to the host!");
break;
case NSStreamEventEndEncountered:
[theStream close];
[theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[theStream release];
theStream = nil;
break;
default:
NSLog(@"Unknown event");
}
}
他のクラスから、私は次のことをやった:
SEL mySelector = @selector(stream:handleEvent:);
[NSTimer scheduledTimerWithTimeInterval:30.0 target:ISIS selector:mySelector
userInfo:nil repeats:YES];
NSLog(@"Output: %@",ISIS.output);
しかし、私はISIS.outputにnullを取得。
誰かが私にこれを理解させてくれますか?
こんにちはAkshayは、私はあなたを得ることはありません、あなたは私に良い例を与えることができます? – Suppi
handleEventメソッドに他のクラスへのポインタを渡す必要があります。次に、次の行を追加します。[otherClass actOnEvent:output];後に[self messageReceived:出力]; – Akshay
actOnEventを使用すると、見つかりませんでした... – Suppi