1 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 12:18:31 ] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) 前スレ pc11.2ch.net/test/read.cgi/tech/1106983092/ 前々スレ pc5.2ch.net/tech/kako/990/990574267.html
411 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:23:09 ] 「仕様」を「規約」と解釈する人と「実装の裏にある本質」と解釈する人が争ってる感じ
412 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 08:59:06 ] この流れは…iPhoneのお陰かな。
413 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:03:29 ] >>410 NS〜は「de fact」標準ライブラリです。
414 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:11:29 ] >>413 de facto ですよ正しい綴りは。
415 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:15:43 ] >>414 どうも。
416 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:04:21 ] >>410 objc/Objectじゃだめですか><
417 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:17:44 ] >>411 仕様は仕様でしょ? それがあって始めてApple方言とかGNU方言とか言える訳で。 一番近いのは、 developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_951_section_1.html これ。文書全体じゃなくてこの章だけね。 >>412 おれは茶化してるだけのCocoaがなかったら死ぬタイプの人間ですw
418 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:33:50 ] developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_950_section_1.html こっちもそうだった。 こっちはコンパイラのディレクティブのところにNSStringと明記されてる。 これが要求仕様なのかどうかは不明。
419 名前:デフォルトの名無しさん [2008/07/10(木) 17:48:03 ] アップルは、Objective-CとCocoaを別々に開発している。 当然、仕様も別々に存在している。 特に、Objective-Cに関しては、Darwinプロジェクトの中で開発されているのだから、どこまでがObjective-Cなのかは明確になっているんじゃないのか? Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。
420 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:13:07 ] >>419 アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。OpenDarwinも終わっちゃったし。 >Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。 Objective-C文字列リテラル、メッセージの転送、例外処理、@synchronized、ObjC 2.0のプロパティ、高速列挙。Cocoaを前提とした機能はずいぶんと追加されてるよ。
421 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:27:38 ] >当然、仕様も別々に存在している。 その自信はどこから来るわけ? Apple 社員で社外秘の仕様をみられるというの? 社外秘の仕様があるばあいは社外の人には仕様はあることになるのないことになるの?
422 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:18:39 ] >>420 > アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。 困ると思うよ。 「分割して統治せよ」って言葉聞いた事あるよね? 大規模なシステムを設計する場合は、全体が一枚岩のようになると、とても保守が面倒になるので、複数のコンポーネントに分割して管理するものなんだよ。 Cocoaだって、あえてAppKitとFoundationに分かれているのもそういった理由があるからだと思うよ。 NSStringがFoundation側で定義されていて、-[NSString drawAtPoint:withAttributes:]があえてAppKit側にカテゴリーを使って定義してあるのも、そういった理由があるからでしょう。 Objective-Cも同じようにCocoaから分割されていると思う。
423 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:48:59 ] Appleの場合、仕様はJobs(笑)ってのもあるから。 最近、GPGPUに興味を持ってるみたいだから、「Snow Leopard」公開後は新しい言語 「OpenCL(open computing language)」を使用するように仕様が変更されるかもしれない。
424 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:08:20 ] Rubyの仕様がまつもとひろゆきみたいなもんだね
425 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 02:25:22 ] Jobs本人がOpenCLについてなんか言及してるん?
426 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 02:26:24 ] >>422 システム全部大雑把でいいなんて書いてない。あくまで言語仕様とライブラリの境目の話。拡大解釈しないでおくれ。 >Objective-Cも同じようにCocoaから分割されていると思う。 文字列リテラルとかプロパティとか高速列挙とか、いろいろ挙げたのは無視? Objective-Cの権利は全部アップルが持ってるし、自社OSのためにコンパイラもランタイムも開発してるんだから、Cocoa前提の機能を言語仕様に含めたほうがアップルにとって楽なこともあるでしょ。
427 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 07:42:15 ] 文字リテラルもプロパティも高速列挙もCocoaなしで使えるし
428 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 09:37:12 ] >>423 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語
429 名前:デフォルトの名無しさん [2008/07/11(金) 12:05:41 ] まずは自分でコンパイラ程度を作れる技術をつけてからじゃないか? 言語仕様がどうとか言う奴は、どうせ素人だろw
430 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:57:08 ] コンパイラなんて、誰でも作れる基礎技術じゃん。 大学生が授業でやるくらいのはなし。
431 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:15:29 ] OpenCLってObjective-Cから簡単に呼び出せるなら問題ないんじゃね? FFI(Foreign Function Interface)とか経由するのかな?
432 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:22:24 ] 今議論している内容を小学生1年生でも分かるように 説明しなさい。
433 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:35:54 ] >>432 人にモノを頼むときにはそれなりのw
434 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 21:41:24 ] >>432 つくえの上にりんごが一つあります。 さて、このりんごはなぜここにあるのでしょう。 1.りんご農家のおじさんがりんごを育てたから 2.お母さんがかってきたから 3.まさしくんがつくえの上においたから 4.言語仕様 5.苺も食べずにりんごとか素人だろw
435 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:46:40 ] >>434 私という自我がリンゴを個体としてのリンゴをそこに存在すると認識したからそこにあるのです。
436 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:21:47 ] >>434 という他者が「そこにりんごが一つある」と主張 しているだけだから、正確には>>435 は信用した上で認識「することにした」段階かと
437 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:26:01 ] みなさんは変態さんですか?
438 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:43:08 ] 多態です。
439 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 23:30:11 ] >>431 ttp://www.apple.com/pr/library/2008/06/09snowleopard.html >OpenCL is based on the C programming language and has been proposed as an open standard. ttp://en.wikipedia.org/wiki/OpenCL >The initial OpenCL implementation is reportedly built on LLVM and Clang compiler technology.[citation needed] 参考になりそうなのは、これくらい。。。
440 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:38:19 ] OpenCLはCUDAらしい。CgではなくCUDAベースだから見かけほどC言語には似てない気がする。
441 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 17:09:50 ] Cocoaラッパ待ち
442 名前:デフォルトの名無しさん [2008/07/15(火) 18:42:43 ] >>440 >OpenCLはCUDAらしい らしいという話はよくでるんだが ソースって見たことがないんだよな。
443 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:13:14 ] プログラム初心者がobjective-Cから入るのってマズい?
444 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:29:51 ] >>443 マズくはないけど資料は少ないから初心者にとっては最初の学習曲線が急勾配になってしまう。 JavaやC++で基本的なアルゴリズムやデザパタを学んだ方が資料が豊富だから楽に勉強できると思う。 ダイナミックな部分を勉強するにはSmalltalk(Squeak)が適している。あとRubyやPythonも。 そういったことを承知の上でどれで始めるのが良いかを選べばいいんじゃないかな。 あとは好みの問題。
445 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:30:36 ] >>443 あんまりまともなプログラムを書いた事のない俺が思う程度だけど、 他言語をちょっと囓っている+英語の情報も読んでいけるのならアリだと思う。 ただ、全く分からない人がいきなりObjective-Cからだと ・最近は増えてきたものの日本語の情報(Web&書籍)が少なめ。 ・AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり。 この辺でちと大変かも。 基本的には意欲だと思う。逆に言えば意欲が弱いとJavaだろうがC言語だろうがPHPだろうが関係なくだめだと思う。 ベストな環境はリアルでもメールでも掲示板でもいいけど疑問に答えて教えてもらえるような人間がいると覚えは早いと思う。
446 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:40:36 ] >>444 サンクス 各言語の違いが全くわからないのでググって検討してみます C#よりC++の方がいいんですね >>445 サンクス 意欲・・・きっかけがそもそもiPhoneという厨な理由だからどこまでいけるか わかりませんが・・・ >AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり やっぱりC関連から入った方がいいのかもしれませんね
447 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:51:48 ] >>446 そういう動機であれば最初はRuby on RailsとかでWebアプリを作成してiPhoneから利用すれば簡単だと思う。 そういう資料はネット上に沢山転がってるからググって見るといいよ。 ある程度プログラミングに自信が付いてからObjective-Cに移行すればスムーズに学習できそう。 こういう順番でやれば、サーバーサイドとクライアントサイドの両方の知識が得られる。 両方の視点でプログラミングできればiPhoneに負荷をかけないプログラムを作成するノウハウも見つけられると思う。
448 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:22:14 ] >>447 ありがとう。なんて親切なんだ(つД`)・゚・ Ruby on Railsを調べてみます
449 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:46:27 ] ObjCの前にCはやっといた方が良いけど、C++は覚えなくてOK. (C++専用のライブラリを使いたいのでもなければ) C#はiPhoneでの開発には全く不要。 iPhone用プログラムならまずWebアプリから作ってみるというのには賛成。 PHPでベタ書きか、Python + DjangoかRurby + Railsあたりがおすすめ。
450 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:58:24 ] >>449 dクス。感涙で前が見えない。゚(゚´Д`゚)゜。 うーむ、C++でもC#でもなく初代Cがいいのか・・・ iPhone用ゲームの開発が主目的なんですが、やはりWebアプリから学んでいったほうが いいんですかね?
451 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:21:49 ] 明確にiPhone開発がしたいならObjCから始めるべきだと思う. モチベーションは全てに優先するよ.
452 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:32:08 ] うむ、iPhone Application Tutorialからど〜ぞ。
453 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:03:11 ] 皆さんありがとう 明日Amazonから萩原本が届くのでとりあえず読んでみます(`・ω・´)
454 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:33:13 ] まてまて、荻原本はプログラミング初学者には敷居が高いぞ。 他言語でokなので、何かしらの入門本を読んでからの方が良いと思われ。
455 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:43:01 ] 初めてで萩原本読むくらいなら、 英和辞書片手にヒレガス本第3版読んだ方が良さそうだな。 平易な文体だから高校生以上なら辞書なしでも 大体のフィーリングは掴めると思うし、スクリーンショットや挿し絵も多いしな。
456 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:46:52 ] >>454 >>455 Σ (゚Д゚;) そ、そうなのか・・・ では上で教えてもらったCとか、Ruby on Railsとかの入門書から挑戦してみます ヒレガス本第3版というのも見てみます(洋書は気おくれしそうですが・・・) ありがとう ってか皆さん滅茶苦茶お詳しいっすね・・・(;´Д`)
457 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:50:31 ] 個人的な趣味としてRubyと Railsを押すけど、webアプリを作って外部に公開する場合レンサバ借りるときにいろいろ困ることがあるよ。 英語が得意なら海外でRails向けのホスティングサービスがあるけどね。 iPhoneアプリを作りたい位だからLeopardユーザだと思うけど、 TextMateってテキストエディタをDLしてきて p "Hello World" って書いて拡張子を rb 保存して Command+Rをするだけで実行できて楽だと思う。 ってスレ違いになるからこのくらいにしておく。 その心意気はすばらしいけど、荻原本はまったくもってプログラミング初心者が読む本じゃないよ。
458 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:25:47 ] でもObjective-Cの仕様なんてCに毛が生えたようなもんだし、 Objective-Cの書籍として荻原本はベストな選択の一つなのは間違いない。 強いて言うなら、Cの入門書とCocoaフレームワークやInterface Builderに ついての本を一冊ずつ買っとくといいと思う。
459 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:16:38 ] >>457 >>458 アドバイスサンクス 道は一本じゃなさそうなのでいろいろ齧ってみます しかしプログラムの道は高く険しいなぁ・・・
460 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:21:38 ] >>459 あと、iPhone プログラムを突然はじめるより、いちど OS X 用の小さいプログラムを書いてから iPhone にいったほうがわかりやすいかもしれない。 大体構造いっしょだし、OS X 用プログラムの書き方のほうがネットに沢山ころがってます。
461 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:25:19 ] >うーむ、C++でもC#でもなく初代Cがいいのか・・・ Obj-C は C++ と同時期に(80年代) C から派生した言語なので、まあ並列だよ。 べつに C++ を勉強したから Obj-C がわかりやすいとかその逆ということではないです。 両方ともオブジェクト指向だけど、毛色が360度違います。 C# は Java のクローンだよね。Java 自体が C, Obj-C, C++ を参考に開発されたものだし。
462 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:49:02 ] C#、特にC# 3.0はJavaより強力な言語になってるよ。 ただ実質的に実行環境や開発環境がWindowsに限られるのが難。(Monoもあるけど) MS製の環境にどっぷり浸かるならば良いとは思う。VS.Netも強力だし。 ただiPhoneの開発には使えないし、応用できるテクもおそらく無いw
463 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:53:15 ] 勘違いさんいらっしゃーい >>462 はいさようなら。
464 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:55:19 ] >>460 >>461 >>462 俺みたいなクレクレ厨にここまで親切にアドバイスしてくれるなんて・・・ みんな優しいな。゚(゚´Д`゚)゜。 よその板なら「ググれやカス」で終わっても不思議じゃないのに・・・ ありがとう、このご恩は忘れませぬ ノシ Windowsのゲーム作りならC#がいい、って聞いたことあるので いつかC#も触ってみます
465 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:58:27 ] >>464 >このご恩は忘れませぬ 検討を祈る。成功したら後輩に優しくな!
466 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:59:10 ] 自作er乙
467 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:14:15 ] iPhoneアプリに関しては正式に配布できるような形のプログラムのTipsとかは現時点ではNDAがあるからないに等しい。 Appleのサンプルプログラムくらいしかソースも読めない。 Objective-Cをやるなら >>460 が言うようにMacアプリからやった方が現時点ではいいだろうね。
468 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:19:01 ] Mac用だけどObjective-Cの入門記事です。 journal.mycom.co.jp/column/objc/index.html
469 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:36:38 ] Objective-CってVisitor Patternが使えないの?
470 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:39:27 ] え?
471 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:03:20 ] そもそも visitor pattern なんて使わないだろ
472 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:03:52 ] Visitor Patternを使うのに、何か問題でも?
473 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:49:15 ] Visitor Patternといえば木構造の処理系作成に使ったことがある。 でも、Objective-Cはメソッドオーバーロード出来ないから特殊な方法でやった。 普通の意味でならVisitor Patternが使えないのは本当。
474 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:05:42 ] Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ? オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。 単純に複数の名前のメソッドを使い分けるだけでは?
475 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:08:31 ] >単純に複数の名前のメソッドを使い分けるだけでは? そんなメンテナンス性の悪いコーディングしてどうする
476 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:41:48 ] ようするに void action(A obj) void action(B obj) と定義されていたものが、 void actionWithA(id obj) void actionWithB(id obj) となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
477 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:55:39 ] 今帰宅 萩原本届いてた ちょっと読んでみた (´;ω;`) ・・・。 やっぱりCの入門書から読みます >>467 >>468 ありがとう 心折れかけたけど地道に頑張ります
478 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:13:32 ] >>477 まあプログラミングにも王道は無しだよ。あなたの今のように謙虚な気持ちを忘れなければきっとできるようになります。 あと、C のポインタのあたり、文字列操作の細かい話は あまり勉強しなくても大丈夫なので読み飛ばしてください。
479 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:23:20 ] おいおい、ポインタはいるだろ。 Cocoaだって最近のAPIはNSError **が大量にあるだろ。
480 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:26:42 ] ポインタってみんなどういうところでつまづくの? 「変数を入れてるメモリエリアのアドレスを渡す。」 それ以上になにか必要か?
481 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:32:40 ] 478 ですが、全然いらないというつもりはないんだけど。 >>480 さんの言ったことを言いたかったです。言葉が足りませんでした。 & と * はわかっておいたほうがいいけど、Objective-C ではそれで充分だよね。 malloc / free は要らないし、ポインタ演算 (足し算引き算) は要らないでしょ。 あと、配列は知らなくてもいいし、配列とポインタの等価性も要らないし、 文字列が char* 配列だということも知らなくてなんとかなるのでは。
482 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:56:38 ] >>476 >ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね? それで多重継承や多重ディスパッチを出来ると強弁するならご勝手にw
483 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:01:28 ] >>480 >配列とポインタの等価性 エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。>>481 はわかっていない。
484 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:13:51 ] >>482 Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ... visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 とわからない言葉をならべてみる
485 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:15:10 ] >エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。 いやまあ、Objective C スレとしては、そのへんでひっかかろうがひっかかるまいが Objective C では必要ないよというので充分なのでは。
486 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:19:14 ] こういうスレで嘘は良くないのではないかい?
487 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:34:22 ] 世の中には平気で嘘をつける人がいる。 嘘を指摘されるとそういうものは必要ないと言いだす。 そういう無反省な態度は無自覚に行われるから本人は嘘を良くないとは考えていない。
488 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:41:12 ] >>484 >visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 ほんと馬鹿。逝ってよし。
489 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:09:23 ] 481 ですが、嘘を付いてすいませんでした。 折角なので配列とポインタがどんなふうに違うかわかりやすく教えてください ...
490 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:18:07 ] www.cocoadev.com/index.pl?VisitorPattern でも同じような議論になってる
491 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:48:48 ] >>364 でも同じような議論になってる 嘘つきはお断り
492 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:52:06 ] >>489 C FAQ
493 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 03:46:16 ] >>489 ぐぐれカス
494 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 05:46:43 ] >>483 たしかにそうだ なんとなく分かってるつもりでも 間違って覚えてるケースが結構ある 正しい理解が必要
495 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 06:28:26 ] 嘘つき語録 >>474 Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ? オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。 単純に複数の名前のメソッドを使い分けるだけでは? >>476 ようするに void action(A obj) void action(B obj) と定義されていたものが、 void actionWithA(id obj) void actionWithB(id obj) となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね? >>478 @C のポインタのあたり、A文字列操作の細かい話はあまり勉強しなくても大丈夫なので読み飛ばしてください。 >>481 Bmalloc / free は要らないし、Cポインタ演算 (足し算引き算) は要らないでしょ。 あと、D配列は知らなくてもいいし、E配列とポインタの等価性も要らないし、 F文字列が char* 配列だということも知らなくてなんとかなるのでは。 >>484 Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ... visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 とわからない言葉をならべてみる
496 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 07:42:09 ] 他はしらんが、C における文字列操作の細かい話は勉強しなくてもいいのは本当では?strstr とか知っててもしかたないよね。NSString でいいんじゃね?
497 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:19:11 ] いろいろな言語の文字列操作関数の比較表 Ruby, Python, JavaScript, Perl, C++ 0xcc.net/blog/archives/000137.html Ruby, PHP, Objective-C d.hatena.ne.jp/hetima/20061025/1161773698 意外とObjective-Cも健闘してる希ガス。 実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。 テキストエディタの作成のところでもNSStringを使ってる。 第1回:iPod touchにアプリケーションがインストールできる不思議 www.thinkit.co.jp/free/article/0711/9/1/ 第2回:iPod touchの自作アプリケーションが作れる&動かせる! www.thinkit.co.jp/free/article/0711/9/2/ 第3回:iPod touchで動作するテキストエディタはこう作る! www.thinkit.co.jp/free/article/0711/9/3/ 第4回:夢のオフラインRSSリーダを作ろう! www.thinkit.co.jp/free/article/0711/9/4/
498 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:27:53 ] 実際のHello Worldプログラムを紹介する。(その1) // hello.m #import <UIKit/UIKit.h> #import "HelloApplication.h" int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; return UIApplicationMain(argc, argv, [HelloApplication class]); }
499 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:28:40 ] >>497 >実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。 >テキストエディタの作成のところでもNSStringを使ってる。 べつに NSString の使い方を示すのなら 「実際に」iPhone じゃなくて「実際に」Mac / GnuStep でいいのでは...
500 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:28:56 ] (その2) // HelloApplication.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import <UIKit/UIApplication.h> #import <UIKit/UIPushButton.h> #import <UIKit/UITableCell.h> #import <UIKit/UIImageAndTextTableCell.h> @interface HelloApplication : UIApplication { UIImageAndTextTableCell *pbCell; UITableCell *buttonCell; } @end
501 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:31:14 ] (その3) // HelloApplication.m #import <CoreFoundation/CoreFoundation.h> #import <Foundation/Foundation.h> #import <UIKit/CDStructures.h> #import <UIKit/UIPushButton.h> #import <UIKit/UIThreePartButton.h> #import <UIKit/UINavigationBar.h> #import <UIKit/UIWindow.h> #import <UIKit/UIView-Hierarchy.h> #import <UIKit/UIHardware.h> #import <UIKit/UITable.h> #import <UIKit/UITableCell.h> #import <UIKit/UITableColumn.h> #import "HelloApplication.h" @implementation HelloApplication - (int) numberOfRowsInTable: (UITable *)table { return 2; } - (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col { return row ? buttonCell : pbCell; }
502 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:33:15 ] (その4) - (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col reusing: (BOOL) reusing { return pbCell; } - (void) applicationDidFinishLaunching: (id) unused { UIWindow *window; BOOL i = TRUE; window = [[UIWindow alloc] initWithContentRect: [UIHardware fullScreenApplicationContentRect]]; pbCell = [[UIImageAndTextTableCell alloc] init]; [pbCell setTitle: [NSString stringWithFormat:@"Hello World!"]]; UIPushButton *button = [[UIThreePartButton alloc] initWithTitle: @"Touch Me"]; buttonCell = [[UITableCell alloc] init]; [buttonCell addSubview: button]; [button sizeToFit]; UITable *table = [[UITable alloc] initWithFrame: CGRectMake(0.0f, 48.0f, 320.0f, 480.0f - 16.0f - 32.0f)]; UITableColumn *col = [[UITableColumn alloc] initWithTitle: @"HelloApp" identifier: @"hello" width: 320.0f];
503 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:33:47 ] (その5) [window orderFront: self]; [window makeKey: self]; [window _setHidden: NO]; [table addTableColumn: col]; [table setDataSource: self]; [table setDelegate: self]; [table reloadData]; UINavigationBar *nav = [[UINavigationBar alloc] initWithFrame: CGRectMake( 0.0f, 0.0f, 320.0f, 48.0f)]; [nav showButtonsWithLeftTitle: @"Foo" rightTitle: @"Bar" leftBack: YES]; [nav setBarStyle: 0]; struct CGRect rect = [UIHardware fullScreenApplicationContentRect]; rect.origin.x = rect.origin.y = 0.0f; UIView *mainView; mainView = [[UIView alloc] initWithFrame: rect]; [mainView addSubview: nav]; [mainView addSubview: table]; [window setContentView: mainView]; } @end
504 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 10:10:59 ] 勘違いさんいらっしゃーい >>499 はいさようなら。
505 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:04:42 ] POCはMacじゃ使えないんですか?
506 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:23:12 ] めずらしく伸びてると思ったらもう夏休みなんだな… 小中学生ばっかりか
507 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:25:50 ] Objective-Cは、文字列を`char *'型にするか、NSStringオブジェクトにするか選択できるハイブリッド型であるということが特徴です。 これがObjective-CのほうがSmalltalkより高速な理由です。 別な観点から言えば、 Objective-Cプログラムのすべての要素がオブジェクトで表現されていたとしたら、おそらくSmalltalkと同程度の速度であり、 Smalltalkが行なえる基本クラスへの最適化がないことで苦戦するでしょう。 つまり、文字列操作の細かい話は勉強しなくてもいいと言っている人はObjective-Cのメリットを全く理解していないんです。
508 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:27:01 ] >>506 ボクが小学生だからってバカにするオマエがバカ!
509 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:33:53 ] >>505 PoweMacのみ。IntelMacでは動かない。EtoileはIntelMacでも動くよ。
510 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:47:16 ] >>507 ええと、一応聞いておくけど、本気でそう思っているのか ? おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
511 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:02:20 ] >おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ? 逆に質問しよう。なぜ、最適化という問題を持ち出したかと言えばオブジェクトのオーバーヘッドを理解しているからじゃないのか? 自分で最適化しないでも、問題を理解していれば、そういった処理を注意深く扱うようになる。それで速度的な問題を回避できるようになる。