2012-04-30 10 views
0

私はココア... を学んでいる私は私の実装では、この方法を持っている...メソッドの呼び出し - ココア/ OBJの-C

を、私はそれを行うための別の方法を試してみましたが、私は黒で、まだです:

- (void)closeStream:(NSStream *)theStream { 

    [theStream close]; 
    [theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

} 

@synthetizeのIBActionからどのように呼び出すことができますか? closeStream:方法がconnect:方法より同じクラスで定義されている

- (IBAction)connect:(id)sender { 

     if ([[connectNOK stringValue] isEqualToString:@"Disconnected"]) { 

      [connectButton setTitle:@"Disconnect"]; 
      NSString * hostFromField = [hostField stringValue]; 

      CFReadStreamRef readStream; 
      CFWriteStreamRef writeStream; 
      CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)hostFromField, [portField intValue], &readStream, &writeStream); 
      inputStream = (NSInputStream *)readStream; 
      outputStream = (NSOutputStream *)writeStream; 

      [inputStream setDelegate:self]; 
      [outputStream setDelegate:self]; 

      [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
      [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

      [inputStream open]; 
      [outputStream open]; 

     } else { 

      [connectButton setTitle:@"Connect"]; 

      // I want to call this method here 
     } 
    } 

答えて

4

場合は、使用する必要があります:

[ self closeStream: someStream ]; 

someStreamはあなたが合格する必要がNSStreamオブジェクトであるところ。

selfキーワードは、クラスの現在のインスタンスを指します。

あなたはその、またはその意味がわからない場合、私はあなたが/コード何かをしようとする前にObjective-C language basicsを見て提案、そしておそらく後、complete language reference

EDIT:

私は、接続あなたconnect:方法«トグル»は、ボタンのラベルの値に基づいて、あなたのコード内で見ることができます。

これは非常に良い設計ではありませんが、ここでは他の問題があります。

必要に応じて、入力ストリームと出力ストリームを閉じたいと思います。
connectメソッドをもう一度呼び出すと、のように、inputStreamoutputStreamの変数にアクセスできなくなるという問題があります。

代わりにinstance variablesとして保存する必要があるため、後で参照できます。

もう一度、プログラミングの原則やオブジェクト指向プログラミングの原則についてのドキュメントを読むことから始めてください。
あまりにも早く動こうとしないでください。知識はすべての鍵です。私が前に触れたドキュメントを読むことから始めます。

+2

これは完全な言語仕様です。新しい人なら、[Learning Objective-C:A Primer](http://developer.apple.com/library/mac/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/)から始める方がよいでしょう。 –

+0

あなたは完全に正しいです、ありがとうございます)あなたのリンクで私の答えを訂正しました。 – Macmade

+0

私はあなたの答えのために、問題を修正しました。 –

関連する問題