ページ 11

iOSネットワークプログラミングの文法

Posted: 2014年5月31日(土) 18:28
by Supreme
こんばんは。

iPhoneアプリ作成の初心者です。

「iPhoneアプリ ネットワーク + GPS プログラミング」 という書籍を勉強しています。

90ページ(サーバへPOSTするという項)に紹介されているコードの下記の部分の文法的な意味がわかりません。

書籍には次の説明があります




見慣れないASCII_DATAは、データを7ビットのASCIIコードに変換してNSData型として取得するための、NSStringを使ったマクロ定義である。
複数の情報を一度に送っているので複雑なことをやっているように見えるが、境界(boundary)となる行でデータ項目を区切り、Content-Dispositionという説明情報に続けて実際のデータを順番に配置している。

コード:


//写真データ
[result appendData:
ASCII_DATA(([NSString stringWithFormat:@"--%@\n",boundary]))];

[ result appendData:
ASCII_DATA(([NSString stringWithFormat:@"Content-Disposition: form-data;
name=\"%@\";filename=\"%@\"\n",@"uploaded",@"upload.JPG"]))];


わからない箇所は下記のとおりです。


①form-dataの後のセミコロンの文法的な意味

②name=\"%@\"の後のセミコロンの文法的な意味

③filename=\"%@\"\n"の後のカンマの文法的な意味

④@"uploaded"の後のカンマの文法的な意味

⑤なぜASCII_DATAの後、小カッコが二重なのか


どうか教えていただきたく、よろしくお願い致します。

Re: iOSネットワークプログラミングの文法

Posted: 2014年5月31日(土) 19:12
by h2so5
1) セミコロンはパラメータの区切りのための文字です。RFC2183とRFC2388でMIME拡張として定義されています。
2) 1 と同じ
3) カンマはメッセージ式の引数の区切りです。Objective-Cの文法を確認してください。
4) 3 と同じ

Re: iOSネットワークプログラミングの文法

Posted: 2014年5月31日(土) 19:31
by h2so5
5) メッセージ式の引数のカンマが、関数マクロの引数の区切りとして解釈されてしまうのを防ぐためです。

Re: iOSネットワークプログラミングの文法

Posted: 2014年6月01日(日) 18:36
by Supreme
こばんは。

③と④については、メソッドの引数はコロンで区切り、関数の引数はカンマで区切る、ということで理解しました。

⑤についてはマクロの復習をします。

①と②に関係しますが、Content-Disposition: form-data; 〜 ;filename=\"%@\"\n",までの文はObjective-Cではないと思うのですが、言語は何でしょうか?

どうか教えていただきたく、お願い致します。

Re: iOSネットワークプログラミングの文法

Posted: 2014年6月01日(日) 19:42
by softya(ソフト屋)
既にh2so5さんが書いた通り、①と②は通信データの部分ですので、通信データのRFC仕様を御覧ください。