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


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

Objective-C [ObjC part:3];



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 に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
逆に質問しよう。なぜ、最適化という問題を持ち出したかと言えばオブジェクトのオーバーヘッドを理解しているからじゃないのか?
自分で最適化しないでも、問題を理解していれば、そういった処理を注意深く扱うようになる。それで速度的な問題を回避できるようになる。






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

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

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