[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 10/07 16:29 / Filesize : 229 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Objective-C



1 名前:デフォルトの名無しさん mailto:sage [05/01/29 16:18:12 ]
ほんとプログラマにとってはMacって
本当に興味が無いOSだよねw

Macでの標準的な言語であるObjective Cのスレすら無いし。
過去にはあったんだろうけど。

802 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 01:49:39 ]
カプセル化はアクセス制御出来ないとダメなんじゃないの。

クラス指向とオブジェクト指向は、何を本質とするかであって、
単にマッピング出来るかどうかの問題じゃないんじゃないかな。

803 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 02:03:45 ]
>>801
いや。それは Smalltalk がその三点を満たしているかと問われれば、たしかにそうなるけど…。

でも実際のところ、ケイは彼のオブジェクト指向において、そういうことは言っていないし、目指してもいない。
本気でそう(「カプセル化、継承、多態性」がケイのオブジェクト指向においても要件である…)
と信じているなら、下のにひとおとり目をとおしてから出直してきてくれると助かる。

www.purl.org/stefan_ram/pub/doc_kay_oop_en
lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html
gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html

もちろん、こうしたケイの意向があったとしても、Smalltalk ユーザーがそれを無視して、
ストラウストラップのオブジェクト指向を(部分的ながらも) Smalltalk を用いて実践したいと思ったとしても、
それを妨げるものは何もないわけだけれども…。

たとえば、この人なんか Smalltalker として有名だけど、典型的なストラウストラップの
オブジェクト指向実践者(の、わりに C++ には批判的なのが笑える)。

www.sra.co.jp/people/aoki/IntroductionToOOAOOD/chapter1/Chapter1.htm

804 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 02:20:10 ]
>>802
ダメってことはない。なぜなら、カプセル化、継承、多態性というのは、Smalltalk にも
当てはまるようにデフォルメされているから。Smalltalker はケイをないがしろにした上に、
ストラウストラップの考えも都合よく骨抜きにしてしまった。じつに傲慢な奴らだ。w 

ただ、802 のいうことは当たらずとも遠からずで、ストラウストラップが要件としてあげた
ものは、抽象データ型、継承、仮想関数を用いた動的性…に加えて、静的型チェック、
多重継承、アクセス制御…なので、これにはちゃんと含まれている。

portal.acm.org/citation.cfm?id=679041
www.research.att.com/~bs/whatis.pdf (上の '90 改訂版。内容はほぼ同じ)

だから、真にストラウストラップのオブジェクト指向を実践するには、ほんとうは、
Smalltalk ではダメ(だからデフォルメして対応せざるをえなかったわけだけれども…)。

805 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 13:45:01 ]
Smalltalkの多態は継承ツリーがどうこうという話ではなく、
呼ぶメソッドを実装されてるか、という1点にかかっているあたりクラス指向
というよりメッセージ指向な感じがするわけだけど、

Simula の末裔の C++ が template で似たようなスタイルを実現している(しかも
それが標準ライブラリとして広く使われている)あたりとか面白いですよね。


806 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 22:27:12 ]
gccがこんなエラー吐いてくれるぜwwww

In file included from linking.m:28:
objc/Object.h:38: error: 構文解析エラー before '{' token
objc/Object.h:43: fatal error: method definition not in class context

807 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 22:42:49 ]
ただ単にObject.hが壊れてるだけじゃね?

808 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 20:28:49 ]
developer.apple.com/jp/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/GCC40PortingReleaseNotes.pdf
の32ページに、

Objective Cでは、インスタンス変数にデフォルトで@protectedというラベルが付きます。GCC 4.0
では、これを明示的に警告するようになりました。また、将来のコンパイラではこれをエラーとし
て取り扱います。この問題を修正するには、Objective-Cインターフェイスでインスタンス変数のス
コープを明示的に指定してください。

ってあるんだけど、これってインスタンス変数を定義する時に今までは省略していた@protectedを書かなければいけなくなるってこと?

809 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:55:46 ]
デフォルトで~っていうのは、書かなくても @protected 扱いになるということだと思われ
エラー/警告が出るのは、他の class からインスタンス変数を @public として操作した場合の話じゃないかな

810 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:03:19 ]
220度くらいズレてる気がする



811 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:09:34 ]
適当な事を行ってすいませんでした m(__)m

812 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:41:11 ]
>>808
いつの間にか翻訳、英語版に追いついてるな。
ObjC 2.0でまた置いて行かれそうだが。

813 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:24:57 ]
インスタンスメソッドから、インスタンス変数と同名のグローバル変数へアクセスすることはできないのでしょうか?
早い話、

グローバル変数
const int foo = 100;

- (id)init {
[super init];
self->foo = foo;
return self;
}

上記のような感じでグローバル変数でインスタンス変数を初期化したいのです。
何か良い方法は無い物でしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:40:51 ]
そのことやるくらいなら、マクロで初期値設定した方がいい

815 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:49:14 ]
すみません、正確には変数じゃなくて配列なんです。
元々はC++のソースで、namespaceで対応されている部分なのですが……。
やはり同名のグローバル変数にはアクセス出来ないのでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 04:25:59 ]
static int global_foo() { return foo; }

817 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 04:30:18 ]
Objective-C++ にして、普通にnamespace::varじゃいかんの?
手元で確かめずに言ってすまんけど。

818 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 20:16:00 ]
>>817
なるほど、Objective-C++という逃げ道がありましたね……。
何の問題も無くクリア出来ました。ありがとうございました。

819 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 09:26:41 ]
>>813
Objective-C++ じゃない場合でも以下でいけるんじゃね?
const int foo = 100;
static int getFoo(){ return foo; }
- init{
 self->attr = getFoo();
 return self;
}

820 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 12:48:51 ]
こんなのがあったべ。
www.informit.com/articles/article.asp?p=665128&seqNum=3&rl=1
GCC のテストスートにObjC2.0のサンプルコードがあるらしい
gcc.gnu.org/viewcvs/branches/apple/trunk/gcc/testsuite/objc.dg/



821 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 17:06:10 ]
がー。
Windowsで使えるObjCコンパイラってないの?Cygwin+gccは面倒い。

822 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 20:38:03 ]
つMinGW

823 名前:デフォルトの名無しさん [2006/11/15(水) 14:48:56 ]
>820
クロージャが無いって明言されてるorz

824 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 19:08:38 ]
ObjCって今でもプリプロセス段階でCに変換されてるの?

825 名前:デフォルトの名無しさん [2006/11/15(水) 21:46:05 ]
してないでしょ、多分>>プリプロセスでC変換
もししてたらインテルのコンパイラも使えるの?

826 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 21:56:07 ]
GCCとかではCに変換したりせずにそのままコンパイルしてるはずだけど、
Cに変換するプリプロセッサも出回ってるからそれ使えばIntelのC/C++ Compilerも使えるかと。

827 名前:デフォルトの名無しさん [2006/11/15(水) 22:05:50 ]
クロージャー無いのか、残念だ

Smalltalkでdo:メソッド見たときは感動したんだよな

828 名前:デフォルトの名無しさん [2006/11/15(水) 22:19:07 ]
ifTrue:メソッドとかやりすぎw>>SmallTalk

829 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 22:33:37 ]
確かにw
でも至るところにデザインパターンを見ることができて面白いよね
Booleanクラスに何もしないifTrue:とifFalse:を定義して
TrueクラスのifTrue:がクロージャーを評価し、
FalseクラスのifFalse:がクロージャーを評価する


ここまでObjective-Cに求めるつもりはないけど
クロージャーを導入するとどうしてもよりSmalltalk化しちゃいそうだね

830 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 23:39:48 ]
>>828
アラン・ケイもそんなふうに言っているよね。彼の手を離れてからずいぶんとLISP化しちゃったから。



831 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 23:44:56 ]
ケイは message passing style の発案以外で Smalltalk に対して何かしたんだっけ?

クロージャは今回入らなかっただけで、いずれ入ると思うよ。

832 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 00:22:53 ]
>>829
茶々入れでスミマセン。

厳密には Boolean に定義されている #ifTrue: と #ifFalse: はあくまで仮想メソッド、
つまり、サブクラスで再定義されることが期待されるメソッド…という位置づけになっていて
(C++ のオブジェクト指向の影響)、引数ブロックを無視する #ifTrue: や #ifFalse: は
False、True クラスにそれぞれ普通に再定義されています。現実は、あまりおもしろみがないですね。

もっと夢のない話をすると、メッセージ ifTrue: [] や ifFalse: [] はコンパイル時にはインライン展開されて
しまうので、実際にはメソッドとしての #ifTrue: や #ifFalse: がコールされることはなかったりもします。
(なので、#ifTrue: や #ifFalse: の定義を書き換えるイタズラをしても、実際には何も起こせません)。

833 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 18:12:51 ]
ja.wikibooks.orgにはObjective-Cの記事がないのな。

834 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 21:16:51 ]
抽象クラスとプロトコルってどう使い分ければいいの?

835 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 01:12:06 ]
抽象クラス(Objective-Cに抽象クラスという仕様はないから、単なるクラスだが)は継承しないと使えない。特定の実装を強制させるなら抽象クラス。
実装は各クラスで好き勝手にしていいか、すでに他のクラスを継承していて抽象クラスを使えない場合はプロトコル。利便性を考えて、プロトコルの参考実装として抽象クラスを用意することもある。

使い分けようとしなくても、実装を何度も見直すうちに自然と使い分けられるようになると思うよ。

836 名前:デフォルトの名無しさん [2006/12/03(日) 00:19:53 ]
gdbでObjCのメソッド名指定でブレイクはることは、できないのでしょうか?
ライン指定は出来ます。
gcc 4.0.1-Apple
gdb 6.3.5-Apple




837 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 07:06:16 ]
ttp://developer.apple.com/technotes/tn/tn2032.html

> Objective-C method: b -[Foo bar], or for an action method example, b -[Foo bar:]

838 名前:デフォルトの名無しさん [2006/12/04(月) 22:16:51 ]
返事できなくてすみません。
メッセージ呼び出しとおなじ書式なんですね。
失礼しました。


839 名前:デフォルトの名無しさん [2006/12/31(日) 01:55:01 ]
書き始める前に何重のネストになってるか明確でないとダメなのがイマイチな気がする。
見た目だけでも、メジャーな言語風だったら、かなり敷居が下がると思うんだけど。
この書き方のメリットって、何かあるの?。

840 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 11:43:19 ]
まあ、Objective-C が出来た頃はどのオブジェクト指向言語もメジャーじゃなかったので、ね...
そんなに見た目って敷居になるのかな?Cocoa と他のクラスライブラリの違いのほうが余程問題だと思うけど...
たとえば Cocoa Java があったけど、だからといってそんなに書きやすかったかというと疑問。
[[[ の数がはじめに判らないのが面倒なのは同意。メリットは、つねに引数に名前が書いてあるので、あとで読んだときになにをやっているかが分かりやすい、かな。



841 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 17:33:20 ]
Smalltalkという超メジャーなオブジェクト指向言語風の書き方じゃないか。

842 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 18:25:56 ]
Smalltalk は [ ] はなかったんじゃなかったっけ?
というか、[ ] はあったけどそれはクロージャだったので、用途が違ったんでは...

843 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 23:52:38 ]
Objective-Cってリフレクション以上に動的な事できるよな?

844 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 00:04:54 ]
ポージング (Posing) とかできますよ
journal.mycom.co.jp/column/objc/012/
メソッドスウィズリング (Method Swizzling) とかも。
www.cocoadev.com/index.pl?MethodSwizzling
まあランタイムのAPI呼べば何でも出来ます。

845 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 00:18:35 ]
>>844
ありがとうございます。ランタイムの弄りかたさえわかれば何でも出来るのか。

846 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 01:57:16 ]
>>842
[ ] はなかったけど、
  receiver selector:arg
って形は同じでしょ。

847 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 06:22:38 ]
見かけだけはね

848 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 08:22:31 ]
見かけは重要だ。つか、内部的にも一緒なんじゃないの。
動的言語のメソッド呼び出し方法なんて一種類しか無いような。

849 名前:デフォルトの名無しさん [2007/01/03(水) 22:45:09 ]
emacかXcodeつかって仰山のソースコードのインデントを一括で行う方法ってありませんか?
いっこいっこ開いてメニュー選ぶのかったるいです。

850 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 23:23:38 ]
emacsならelisp書けばよか



851 名前:デフォルトの名無しさん [2007/01/03(水) 23:37:09 ]
>>850
emacs elisp インデント
などとGoogleで検索してみましたがよくわかりませんでした。
当方少しのコマンドラインなら打てます。例えば
find . -name *.m -exec emacs -batch -indent {} ¥;
などといった簡単なやり方ではなくて、何か特殊な方法なんでしょうか?

852 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 02:00:27 ]
スレ違いだボケ

853 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 05:56:55 ]
emacs インデント
でぐぐればいいんじゃないかな。
www.bookshelf.jp/texi/emacs-20.6-man-jp/emacs_21.html
もちろんObjective-Cモードにしてね。

854 名前:デフォルトの名無しさん [2007/01/04(木) 11:44:55 ]
>>853
ありがとうございます。
それみても私の理解不足で、エディタ内で行う編集作業のコマンド集にしか見えないです。

>>852
ごめんなさい。
すれ違いとのことで以降はemacsスレッドを探してそこで聞いてきます。


855 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 22:07:54 ]
Objective-C に対応したソースコード整形ツールって無いのか。


856 名前:デフォルトの名無しさん [2007/01/04(木) 22:11:43 ]
>>855
NeXT Step には独自改良版の GNU Indent が対応していたそうですがそれ以外だと単体の整形ツールは存在しません。
現状私の知る範囲ですとXcode、emacsなどの「エディタ」のソース整形機能を引っ張ってくるほかないです。

857 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 23:15:25 ]
>>856
NeXTが独自改良したならばソースがどっかにころがってんじゃねーの?
GNUって逝ってんだから。

ぐぐっても出てこなかったけど(w


858 名前:デフォルトの名無しさん [2007/01/04(木) 23:56:07 ]
だれかこれを改造してObjective-Cでも使えるようにしてくれ
動的な言語だと難しいかもしれんが
ttp://www.tamacom.com/global-j.html

859 名前:デフォルトの名無しさん [2007/01/08(月) 14:16:12 ]
MacPortsで試しにGNUStepを入れてみたけど、これってなんとなく手作り感が
出てて良いね。
でも、ProjectCenterの*.gormをクリックしても、Gormの起動に失敗してしまう。
何か設定とかあるのかな。


860 名前:デフォルトの名無しさん [2007/01/13(土) 00:09:59 ]
>>859 です。
*/System/Applicationsにパスを通してできました。

一応簡単なサンプルを作ってみたんだけど、
あまり期待してなかったのもあったから、使ってみてxcodeとほとんど同じような感じで使えて
予想以上に便利なんでびっくりした。
これってLinux等のGUIアプリの作成でもうちょっと普及してもよさそうだけどな。



861 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 12:35:54 ]
xcodeってjavaはどの程度サポートしてるの?

862 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 17:58:12 ]
Xcode part4
pc9.2ch.net/test/read.cgi/mac/1149300142/

863 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:23:40 ]
thx

864 名前:本田 [2007/01/25(木) 19:47:35 ]
>ディベロッパー:Windows環境下でMacのAPIによるコーディングを可能にするCocotron
opentechpress.jp/developer/article.pl?sid=07/01/23/0121247

>COCOTRON
www.cocotron.org/

865 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:04:50 ]
Cocoaスレでとうの昔にガイシュツ

866 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 20:50:41 ]
oneway voidって別に
メソッドを別スレッドで実行するわけではないよね?

867 名前:デフォルトの名無しさん [2007/02/23(金) 08:29:29 ]
使ったことないけど、そういうことじゃないんじゃない?
リモート側の応答を待たないだけということじゃないかな。
実は別スレッドで受信待ちして、デリゲートで通知とかあるのかもしれないけど。




868 名前:デフォルトの名無しさん [2007/02/23(金) 14:35:39 ]
そういうことじゃないんじゃないんじゃないかな?

869 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 16:25:24 ]
分散オブジェクトのときのみ使用されます。
NSConnection 使わなければまったく意味はないです。

870 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:28:13 ]
Apple Inc.、Objective-Cの商標登録出願
www.appleinsider.com/article.php?id=2519

これまた問題にならないかね。



871 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 20:04:22 ]
なんでそういうわけ解らんことするんだろうねアップルは

872 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2007/02/24(土) 21:41:36 ]
DRM反対を唱える一方で自らも版権ゴロか

873 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 22:15:01 ]
糞ダンゴは去ね。

874 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 02:04:30 ]
わざわざ商標なんて取らなくたって、
誰もObj-Cなんて名前の製品出さないってば。

875 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 11:13:24 ]
実質的にまともに商用利用してるのAppleだけだしね
まぁコンパイラはgccだし将来的に使うやつが万に一つくらいで
出てくるかもしれないとかで取ってるのかねぇ…

876 名前:デフォルトの名無しさん [2007/02/26(月) 12:49:51 ]
1995年に、開発元のStepstone社から、NeXT社が言語と商標を買い取ってる。
Appleが商標を取得しなおす理由はよく判らない。
ja.wikipedia.org/wiki/Objective-C

877 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:45:11 ]
>>876
www.apple.com/legal/trademark/appletmlist.html
"Objective-C"は登録されていない商標。

878 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 01:21:47 ]
でも、例えばボーランドがObj-Cコンパイラを作ったら、
"Borland Objective-C (TM) Compiler"
みたいな名称になるんでしょ。

879 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 02:03:45 ]
「Redmond, start your photocopies.」
なーんて言ってたら、マジでVistaでCore Audioをまんまパクられたから
焦って商標を取得したとか?


880 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 15:07:39 ]
そもそも言語名って商標として登録できんの?
よくわからんのだけど、SunがJavaの商標を持ってたりMSがC#の商標持ってたりするの?



881 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 16:42:13 ]
いや、そりゃ持ってるだろ。MSは知らんけど昔のSunはJavaをかなり厳格に管理してた。

882 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 18:37:41 ]
Objective-CでWin32アプリ書こうかと思ったんだけど、
そもそもWindowsで使えるObjective-Cの処理系ってある?

883 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 18:51:42 ]
GNUstep

884 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:17:48 ]
Objcの処理系って意味なら gcc でOK。
# ってか他にまともに動く処理系ってある?

885 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:19:16 ]
MinGWのObjective-CでWin32API使って書いたほうが
今のところは実用的だと思うけど

886 名前:・∀・)っ-○◎● mailto:sage [2007/03/29(木) 01:28:09 ]
Cで十分ってことじゃんそれ
Win32のメッセージAPIまわりがObj-Cのメッセージに綺麗にラップされてるならまだわかるが

887 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 02:48:14 ]
>>886
まぁまったくその通りだと思うのだが>>882がラッパを書いてくれればOK

888 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 21:18:45 ]
文字列オブジェクト定数に使われるクラスに自作のクラスを使えない?
コンパイラオプションにあるあらかじめ用意されたクラスしか使えないの?

889 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 02:18:05 ]
>>888
www.mhatt.aps.anl.gov/dohn/programming/gcc/gcc_7.html#SEC158
こういう話?

890 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:17:50 ]
>>889
それそれ!
どうもありがとうございます!



891 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 12:39:32 ]
Cocoaプログラミングの無料セミナー開催
今月4月にCocoaプログラミングの無料セミナーの初級・中級・上級を東京初台
のアップルセミナールームで開催し ます。次期OS Leopardには、Objective-Cの
APIのみで提供される新機能がたくさ んあります。今後、Cocoaの習得はMac OS
ソフトの開発に必須となります。是非 この機会をご活用下さい。講師はHMDTの
木下誠さんです。
developer.apple.com/jp/rss/adcjapan.rss


892 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:16:44 ]
今更の質問かもしれないですが、NSURLConnectionで2chデータの差分を取得しようとした時に416エラーが返ってくるのをどう解釈して良いのか分からず困っております。
NSURLRequest内容:
{
Accept = "text/plain";
"Accept-Encoding" = "gzip, deflate";
"Accept-Language" = ja;
"Cache-Control" = "no-cache";
Connection = close;
Host = "news21.2ch.net";
Pragma = "no-cache";
Range = "bytes=6198-";
Referer = "news21.2ch.net/namazuplus/subject.txt";
"User-Agent" = "Monazilla/1.00 (Jane/0.01)";
}

NSURL内容:news21.2ch.net/namazuplus/dat/1177098491.dat

他方、cURLで取得しようとするときちんと差分が取得できます。
curl -H 'Range: bytes=6198-' -v -A 'Monazilla/1.00 (Jane/0.01)' -H 'Accept: text/plain' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Connection: keep-alive' news21.2ch.net/namazuplus/dat/1177098491.dat

893 名前:デフォルトの名無しさん [2007/04/23(月) 08:06:01 ]
NSURLConnectionではヘッダー部分の、特にHTTP/1.1とかのパラメーターが触れないので、
この辺が原因なのでしょうかね、ほかに何かおかしな事をやってるのでしょうか、
NSURLConnectionのバグ?

894 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 16:50:01 ]
NSURLRequest の内容と
curl に渡している物が違うのはわざとですか?

ステータスコード 416 の意味は何かご存知ですか?

Accept-Encoding : gzip の場合は何が起こりますか?


NSURLConnectionのバグだと思うのでしたらバグレポート出せばよいと思いますよ。

895 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 20:05:10 ]
416は範囲がそれているという意味でしょ、んでConnection = closeでもConnection = keep-aliveでも
ストリームで受け取る場合に挙動はかわらないっぽいです。
curlでAccept-Encoding : gzipを付けなかったのは-vで出されるヘッダフィールドはzipがかからないと考え、
gzip に渡して解読できないかもと思ったからで、416の本筋ではないです。

ヘッダを全くそろえても、NSURLConnection側のみ416エラーが出てます。
ただし、Range設定しない場合はきちんとダウンロードできます…。

今はとりあえずCore Foundationで直読みできるかどうか試してるところです。

896 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 20:12:25 ]
>>894
つまりcurlのverboseを見るため、意図してAccept-Encodingヘッダを飛ばしてます。

416とはRange指定範囲が本体の範囲から外れている事を意味していると思うのですが、
もし違う解釈があるのなら指摘いただけるとありがたいです。
curlでは正常に範囲指定が受け付けられているのに、NSURLConnectionでは範囲外と返ってくる。
ヘッダ情報が微妙に違うのか、何が原因なのかよくわからないのです。

897 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 22:37:46 ]
tcpdumpとかでヘッダを覗いてみたらすぐに解決するんじゃない?


898 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 12:55:18 ]
Accept-Encoding : gzip に答えてサーバーが gzip してコンテンツを返す
かつ
レンジ指定の場合
そのレンジは”何に対して”のレンジでしょう?

元のコンテンツですか?違いますか?
違う場合は、何に対してですか?

899 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 08:09:24 ]
>>898
curl -H 'Range: bytes=6198-' -A 'Monazilla/1.00 (Jane/0.01)' -H 'Accept-Encoding: gzip, deflate' -H 'Accept: text/plain' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache'
-H 'Connection: keep-alive' news21.2ch.net/namazuplus/dat/1177098491.dat | gzip -d -c

curl: (18) transfer closed with outstanding read data remaining
あれ、zip元のデータ長ではないのですね…

900 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:09:45 ]
2ch の dat を差分取得しようとするときに誰もがはまる罠です。

不意のコネクション切断等のときに、
その続きを取得する時のことを考えれば、
この動作が”正しい”ことが分かると思います。

http コンテンツで 2ch の dat の様に差分を取得できる物って
そんなに無いと思いますよ。



901 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 22:42:59 ]
selfでないインスタンスオブジェクトに対して->を使って
@protectedまたは@publicなインスタンス変数にアクセスするのって
お前ら的にはどうなの?

902 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 22:48:35 ]
そういうおまえはどうなのよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<229KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef