Cocoa API解説(macOS/iOS)

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。

目次

NSStreamクラス

INDEX>Foundation>

apple(OS X)
apple(iOS)

解説

ソケット通信を行うためのクラスです

APPLE MacBook Pro 13.3/2.5GHz Core i5/4GB/500GB/8xSuperDrive DL MD101J/A

APPLE MacBook Pro 13.3/2.5GHz Core i5/4GB/500GB/8xSuperDrive DL MD101J/A

継承 NSObject
準拠 NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 Mac OS X v10.3以降
iOS 2.0以降
watchOS 2.0以降
定義 NSStream.h

OS X
developer.apple.com

iOS
developer.apple.com

watchOS
developer.apple.com

概要

ソケット通信を行うためのクラスです。NSStreamは抽象クラスで、実際に使用する際はサブクラスであるNSInputStreamNSOutputStreamを使います。
メモリ・ファイル・ネットワークに対してデータを読み書きすることができます。

初期化

デリゲートをセットするには(– setDelegateメソッドを使用します。デリゲートを取得するには(– delegateメソッドを使用します。通信の結果がデリゲートに返ってきます。
プロパティをセットするには(– setProperty:forKeyメソッドを使用します。プロパティを取得するにはキーを指定して(– propertyForKeyメソッドを使用します。
SSL通信を行うとき(キーをNSStreamSocketSecurityLevelKeyにして、値NSStreamSocketSecurityLevelNegotiatedSSLをセットする)などに使用します。

ストリームの使用

ストリーム開いてを使用を開始するには(– openメソッドを使います。ストリームを閉じて終了するには(– closeメソッドを使います。

実行ループの管理

ストリームを実行するための実行ループにセットするには(– scheduleInRunLoop:forModeメソッドを使用します。ストリームの使用を止め、実行ループから取り除くには(– removeFromRunLoop:forModeメソッドを使用します。

ストリーム情報の取得

ストリームの状態を取得するには(– streamStatusメソッドを使用します。

ストリームの状態(NSStreamStatus)
NSStreamStatusNotOpen ストリームが開かれていない。
NSStreamStatusOpening ストリームを開こうとしている。
NSStreamStatusOpen ストリームが開かれている。
NSStreamStatusReading ストリームを読んでいる。
NSStreamStatusWriting ストリームに書いている。
NSStreamStatusAtEnd 最後まで来た。
NSStreamStatusClosed ストリームが閉じられている。
NSStreamStatusError エラーが発生した。

ストリームのエラーを取得するには(– streamErrorメソッドを使用します。

NSInputStreamを使って、ユーザー「oogon」のTwitterタイムラインを取得する。

#pragma mark JSONObjectWithStream
-(void)method002
{
    NSData *tweets = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.search.twitter.com/search.json?q=from:oogon"]];
    NSInputStream *twitterStream = [[NSInputStream alloc] initWithData:tweets];
    [twitterStream open];
    
    if (twitterStream) {
        NSError *parseError = nil;
        id jsonObject = [NSJSONSerialization JSONObjectWithStream:twitterStream options:NSJSONReadingAllowFragments error:&parseError];
        if ([jsonObject respondsToSelector:@selector(objectForKey:)]) {
            for (NSDictionary *tweet in [jsonObject objectForKey:@"results"]) {
                NSLog(@"Tweet: %@", [tweet objectForKey:@"text"]);
            }
        }
    } else {
        NSLog(@"NG");
    }
    
    
}

適合するプロトコル

関連サイト

developer.apple.com

サブクラス化の注意