- 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
- 730 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 18:51:31 ]
- NSString に入っているファイル名なテキストから拡張子を取り除きたいのですが、
対応するメソッドはありますか? 拡張子を取るなら NSString#pathExtension で出来ますが、それ以外の部分が欲しいのです。
- 731 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:14:02 ]
- >>729,730
この手の話・質問はここよりも、新Mac板 Cocoaはさっぱり!!! の方がレスポンス良いよ。 pc11.2ch.net/test/read.cgi/mac/1224960170/ >>729 「やさしいC」は読んでないけど、入門書は 木下誠「たのしいCocoa」、アーロン・ヒレガス「MacOSX Cocoa プログラミング」 >>730 -(NSString *)stringByDeletingPathExtension
- 732 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:22:05 ]
- >>731
ありがとうございます 「たのしいCocoa」にします
- 733 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 13:29:54 ]
- 「やさしいC」は言語の理解に重点を置いた本だから
荻原 剛志「詳解 Objective-C 2.0」 Stephen G. Kochan "Programming in Objective-C" この2冊が該当する。Kochanの本を和訳して欲しいと思っている。
- 734 名前:730 mailto:sage [2008/12/30(火) 12:26:15 ]
- >>731
サンクス
- 735 名前:デフォルトの名無しさん [2008/12/30(火) 12:30:53 ]
- ObjectiveCってわざわざC言語の拡張にしたから構文がキッタナイキッタナイ
この言語の構文は学部生の卒論レベルだぞ まったく整理されてない 企業でやるならもう少し良く考えて作ってほしい
- 736 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:37:51 ]
- そんなに汚い汚い言うほど派手に拡張されてないし、
言語というよりは動的な環境を提供するライブラリ+呼び出し用マクロって感じだよ。 昔からあるじゃんESQL/Cとか。ああいう系統。
- 737 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:48:11 ]
- ごめん、C++のほうがキッタナカかったわ
まぁ、C言語を拡張した言語ってのはろくなもんじゃないってことで
- 738 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:53:08 ]
- Obj-C の方が汚いだろ・・・。
- 739 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:56:28 ]
- Obj-C は拡張じゃなくてハイブリッドじゃないの?
まあ、僕も中括弧族の言語は好きくないけど >>735 綺麗だと思う言語教えて
- 740 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:18:30 ]
- 735じゃないけど、綺麗だなって思うのはPythonくらい。
そもそもSmalltalkの構文が(思想は別にして)美しく感じられない。
- 741 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:27:41 ]
- 構文が美しいっていうのは、大抵その美しいと言われるところで好みが分かれがちだよね。
- 742 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:43:08 ]
- まあ、世界の最高級の頭脳が集うアップルの上を行く 735 が
画期的な新言語を発表して、あっという間に世界中に広まるよ
- 743 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:44:58 ]
- >>739
何が1番きれいかといえば scheme シンプルだしな。 2番目は haskell モナドで一貫性あるプログラミングができる。 3番目は smalltalk でもプログラミング環境や動作環境は最悪最低。遊び専用言語。
- 744 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:45:44 ]
- >>742
別にそんな最高の頭脳が集まってるわけじゃないと思うぞw 俺だって一応オックスフォード出身だし。
- 745 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:24:14 ]
- Obj-C はあのモサイところがいいんじゃないか。
美しさばかり追い求めていてはいかんよ。まだまだ若いな。
- 746 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:17:46 ]
- >>742
残念ながら、言語が広まるかどうかはマーケティングに大きく依存するんだよ。
- 747 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 05:30:07 ]
- アップルはマーケティングだけはうまいはずなのにw
単に中途半端だから普及しないんでしょ。 言語の洗練度ではJavaやらに劣り、速度ではC++に劣り、ここ数年のトレンドのWEB系ではPHPやperlに劣る。
- 748 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 06:02:26 ]
- iPhoneは今はまだObjective-Cだけでしょ。
どうせ英語のリファレンスが読めなくて、使いたくても使えないからヒガンでるだけでしょ。
- 749 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 06:31:10 ]
- >>748
日本語の解説もでてるっつーの。アップルのサイトとか見ろ。 つーか、そもそも他の言語は英語だけでも普及したけどな。
- 750 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:18:05 ]
- Javaが洗練されているとかいってるやつは頭がおかしいだろ
- 751 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:36:58 ]
- まさにマーケティングの効果w
- 752 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 11:33:32 ]
- >>747
だったら何でハードもOSもシェアがあんなに少ないんだ?
- 753 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 11:35:00 ]
- >>748
Objective-Cが使えるか使えないかなんて低レベルな話はしてないんだよw あんなものチュートリアル読んだら30分で使えるだろ
- 754 名前:デフォルトの名無しさん [2008/12/31(水) 12:12:59 ]
- まあ、もっと低レベルな話ならしてるよな。
- 755 名前:デフォルトの名無しさん [2008/12/31(水) 12:40:42 ]
- ihoneアプリを開発してるんですが、ObjectiveCで質問があります。
ObjectiveCのクラス内で、C++クラスを宣言したいんですが、include文でエラーが出ます。 どうやらC++クラスファイル内のclass宣言などで構文エラーが出ているようなんですが、 ObjectiveC内でC++クラスを宣言する際にコンパイルオプション等の設定は必要なんでしょうか? どなたかご教授していただけるとありがたいです。
- 756 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 12:44:34 ]
- >>747
Objective-CはC言語に変換されるんだからC++より早いか同等のはずだぞw
- 757 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 12:51:37 ]
- それはないw
- 758 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 14:19:13 ]
- >>755
拡張子をmからmmにする 外してたらスマン
- 759 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 10:41:46 ]
- メッセージパッシングしなければCと同等だろうな。
そんなのはObj-Cじゃないけど。
- 760 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 11:59:59 ]
- オブジェクト指向では本当のメッセージパッシングは行えないよ。
Erlangのように部品が本当にプロセス(OSのプロセスとは別物)で動いているような言語がオブジェクト指向の進化系だと思うね。
- 761 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 12:36:32 ]
- 誰もそんな話はしてない。
- 762 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 12:55:42 ]
- つまりだね、Objective-Cはもはや古臭い言語の一つというわけなんだよ
- 763 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:09:03 ]
- そらあ、30年以上前の言語を二つ合体させたんだから、古いよな
- 764 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 15:16:09 ]
- でもプログラミング言語って意外と新しいから良いっていう感じでもないよね。
- 765 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:03:33 ]
- >>764
それはマーケティングの効果 あるいはすでに普及している言語から移行のしやすさの効果
- 766 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:04:04 ]
- 良い悪いが普及しているかしていないかではないんだよ
- 767 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:20:39 ]
- 移行するメリットだな。
- 768 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:29:03 ]
- 人が物を買うインセンティブは「より良いもの」よりも「不便」から生まれるらしい。
たしかにC++でどんなプログラムだって書けるから、多少便利になる程度では移行するインセンティブは生まれない。 だからほかの言語に移行するのがめんどくさい。 RubyOnRailsみたいに、使わないと不便になる、という状況が生まれない限り言語の以降はないだろうね。
- 769 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:07:06 ]
- apple的にMac/iPhone専用言語なんやし、他に広げる意味なんてないと思うが。
- 770 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:17:30 ]
- >>769
広まることはappleとObjCプログラマの双方に有益だと思うね。 ObjCが広まればObjCプログラマはObjC製だらけのMacOSXを使いたくなるかもしれないし、 ObjCプログラマはMacOSXで培った技術をほかのOSでも活用しやすくなる。
- 771 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 22:23:25 ]
- 広まるって自動詞的に書いてるけど、広げる努力しなきゃどんなに良いモンだって広まらんでしょ。
Appleにはそんな事期待できんし、CocoaフレームワークのないObjective-Cなんぞ誰が使うのよ?
- 772 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 22:49:02 ]
- そこで Cocotron ですよ
www.cocotron.org/
- 773 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:34:06 ]
- オブジェクト指向な言語とフレームワークを勉強したいのですがOBJECTIVE-CとCOCOAって
適していますか? それともJAVAとかMFCの方がいい?
- 774 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:38:33 ]
- MFC は設計マズいので適さない。
今更 Java するよりは .NET の方が良い。 Objective-C & Cocoa と .NET のどっちがいいかは OS 次第だろう。
- 775 名前:755 [2009/01/03(土) 19:12:38 ]
- >>758
ありがとうございます。mmに変更しいろいろやってみましたが、駄目です。 怪しいところはないと思うんだけど、なんでだろう。。。 どうもコンパイラがC++ではなく、Cのみでコンパイルしているっぽいのですが。 エラー文です。 ----- error: syntax error before 'ClassName' error: syntax error before '{' token error: syntax error before '=' token error: syntax error before '=' token もうC++のクラスを使用するのは、あきらめた方がいいんでしょうか。
- 776 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:56:56 ]
- >>775
;を忘れてるとかそういうのじゃないの? アップルの構文解析は糞だから、エラーはあてにならない。
- 777 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:40:04 ]
- >>775
僕らだってエスパーじゃないんだから、ソースコードをアプロダに貼るとか、最低限の行数まで削ってここに貼るなりしてください。 うちでは以下 #import <Foundation/Foundation.h> @interface Aho:NSObject { int aMember; } -(id)aMethod:(int)baka; @end class Baka { public: int i; }; を aho.mm に保存して gcc -c aho.mm でコンパイルできるよ?
- 778 名前:デフォルトの名無しさん [2009/01/05(月) 21:36:17 ]
- 評論家がたくさんいるようだが、そんなにobj-cを修得している椰子がいるとは思えない。
しったかはみっともないぞ。
- 779 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:51:35 ]
- 多言語厨なら言語習得ぐらい1時間かそこらでできるだろ
- 780 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:05:01 ]
- メモリに関するいいサイトってありますか?
C 自体の初心者なんですが、dealloc とかしなきゃいけないと思って いたら、そういう事をしていないサンプルばかりで困っています。 一般的な流れとして、どういう感じに alloc して dealloc するのか 知りたいのですが…。
- 781 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:13:59 ]
- dealloc は自分で呼ばず release を呼ぶ。
あるいは autorelease するか。
- 782 名前:デフォルトの名無しさん mailto:age [2009/01/07(水) 23:14:37 ]
- ttp://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_8_section_2.html
自己レスですが、ここは一応読みました。 でももっとフローが分かりやすい実際のサンプルが見たいんです…。
- 783 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:24:22 ]
- これ買っとけ
ttp://www.amazon.co.jp/dp/4797346809/
- 784 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:14:17 ]
- >>780
>dealloc とかしなきゃいけないと思って >いたら、そういう事をしていないサンプルばかり どこにそんなのあるの?
- 785 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:08:29 ]
- >>784
例えばこのサンプルの中では dealloc という文字は出てこないです。 まぁ必要がないだけかもしれませんが…。 でも IBOutlet 系のクラス変数は dealloc しなくていいのでしょうか? 少なくともヘッダを見ると4つのクラス変数がある様ですが…。 ttp://developer.apple.com/samplecode/InstallerPluginSample/listing3.html
- 786 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:39:51 ]
- すいませんこりゃまた自己レスですが、IBOutlet 系のものを dealloc したら
元のオブジェクトが破棄されちゃうからしない、って事でしょうか?
- 787 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:47:13 ]
- 「一応読みました」じゃなくってちゃんと読め。
「dealloc は直接呼び出してはなりません」って書いてあるだろうが。
- 788 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:54:33 ]
- >>787
何でダメなんでしょうか? では、dealloc はオーバーライドするためだけにあると考えていいでしょうか?
- 789 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 07:12:40 ]
- >>788
なぜだと思う? 調べればすぐ分かることは自分で調べろ。
- 790 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 08:20:18 ]
- アホすぎて朝からビビった
- 791 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 10:04:57 ]
- すんません。Objective-C どころか C 自体が初めてなのでおかしな事も
言っているかもしれません。 直接 dealloc しないのはどこかで retain している可能性があるからって 事でしょうかね。 なんとなく分かって来た気がします。にしても release しているサンプルが あんまりないのが気になりますが…。 dealloc 時に自動的にインスタンス変数も解放してくれないのは仕様ミス の様な気がするんですけどねぇ…。オブジェクトは解放したのにその インスタンス変数だけ確保しておきたい事なんてあるんでしょうか。
- 792 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 10:11:45 ]
- >>791
こっちへ移動してください。 pc11.2ch.net/test/read.cgi/mac/1224960170/
- 793 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 13:09:06 ]
- つか詳解Objective-C2.0買うなり何なり、
Obj-C関連の ドキュメント を読め。 それともあれか、ソースがドキュメントとかの ドキュメントレスの世界で生きてきたのか? ついでにオーナーシップの仕組みも理解してない内から、 仕様云々ってのは単なる理解の放棄でしかない。
- 794 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:28:26 ]
- 参照カウンタでググれとしか言いようが無い。
- 795 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:33:39 ]
- 誘導した人間じゃないんだが、新Mac板Cocoaはさっぱり!!でお預かりしましたので、
引き続きご歓談ください。
- 796 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:28:43 ]
- >>773
smalltalkが一番向いていると思う。
- 797 名前:755 [2009/01/09(金) 00:30:43 ]
- >>774
>>775 亀レスで申し訳ないですが、事故解決しました。 どうやらheaderファイルを使用してそちらにC++クラス宣言を書いていたのが原因のようです。 C++クラスだけ.mmファイル内で宣言するようにしたらコンパイルできました。 ありがとうございました。
- 798 名前:デフォルトの名無しさん [2009/01/13(火) 18:05:29 ]
- ↑↑馬鹿だろ
- 799 名前:デフォルトの名無しさん [2009/01/17(土) 20:50:45 ]
- 799
- 800 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 20:51:19 ]
- 800
- 801 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:47:52 ]
- 矢追
- 802 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 17:22:07 ]
- ”NSKVONotifying_....”というクラスについて質問です。
MyObject というクラスを作って + initialize を埋めました。そしたら、子クラスが無いに も関わらず、initialize が2回呼ばれました。変だなと思い、中で NSLog(@"%@", self) を やると、”MyObject" と"NSKVONotifiying_MyObject" が出てきたんです。MyObject は KVO を使っているので、勝手に作られた子クラスと思われますが、これって何ですかね?
- 803 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:34:23 ]
- >>802
KVO は実装するために、Cocoa の runtime が Objective-C の runtime を駆使して別個のクラスを動的につくって入れ替えて... とやってます。 "isa swizzling" とか呼ばれます。ググって勉強してみてください。
- 804 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 08:29:17 ]
- ちょうど解説があったよ。
www.mikeash.com/?page=pyblog/friday-qa-2009-01-23.html
- 805 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:14:50 ]
- ありがとう。勉強してみます。
- 806 名前:デフォルトの名無しさん [2009/01/25(日) 22:33:33 ]
- iPhoneの低層のAPIを使って動画プレーヤー作りたい.
vlc-4-iphoneとかで使われてるcore_surfaceクラスとか使いたいがヘッダとか見当たらんのだけど,DSOとかで使えるようになったりするもん?
- 807 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 20:45:58 ]
- 最近、Cocoaプログラミング始めた初心者です。
特定のTextFieldにフォーカスが移った時に、 半角英数入力に強制的に替えるにはどうすればいいですか?
- 808 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 21:54:49 ]
- >>807
pc11.2ch.net/test/read.cgi/mac/1231853172/ こっちで再度質問して。
- 809 名前:jP [2009/02/01(日) 20:02:11 ]
- 最近Mac向け開発を始めたんだけど、手順がよくわからん。
javaとかCと違って、インタフェースとコードが分かれてるから感覚がつかめないんだよね。 だれか、C/javaからobjective-C始めた人っている? その辺を話したいんだけどなぁ。(ここに書くようなことじゃなかっから、ごめんちゃい)
- 810 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:13:07 ]
- むしろ大半がそうじゃね
- 811 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:20:37 ]
- ごめん俺AppleScript → ObjCだわ
- 812 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:24:24 ]
- 俺なんかなでしこ→AppleScript→Objective-C(移行中)だぞw
- 813 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:37:45 ]
- Java→Objective-Cだけど呼んだ?
つかJava分かるならObjective-Cなんかすぐ分かると思うんだがなぁ。 勉強しなきゃいけない分量で言ったらJavaの1/3くらいじゃなかろうか。
- 814 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:40:44 ]
- 気味の悪い文法が障害
- 815 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:41:34 ]
- 文法はどうでもいいんだけど、
MSのダブルクリック&コードとn層データ構造に慣れてたから CocoaのMVCには結構馴染みにくかったな。 あ、あとVSのIntelisenceに慣れてたからXcodeも面倒くさかった。 まぁ慣れだな。
- 816 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:46:42 ]
- >>809
既にプログラミングやったことあるなら、ADCのObjective-Cプログラミング言語とかCocoa基礎ガイドとか読めばいいと思うよ。
- 817 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 23:53:31 ]
- gccの-fobjc-direct-dispatchってもしかして
メソッドの実装を直接呼び出してくれるの?
- 818 名前:デフォルトの名無しさん [2009/02/02(月) 03:10:32 ]
- objective-cを使ってアプリを作れるようになるには、何をすれば良いですか?
cocoaプログラミングの本は読みました。 例えば、Cの関数を覚えるとか、何かあったら教えてください。
- 819 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 03:25:06 ]
- >>818
釣れますか?
- 820 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:44:55 ]
- >>815
ダブルクリック&コードにかんしては dotnetaddict.dotnetdevelopersjournal.com/dcacs.htm のひとが面白い分析をしてるなとおもった。 まあこのひとは .Net から Obj-C に半分ぐらい転向したひとなので、 無理に弁護してる感もなきにしもあらずなのだが...
- 821 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:50:37 ]
- >>817
>gccの-fobjc-direct-dispatchってもしかして >メソッドの実装を直接呼び出してくれるの? そんなことしたら Obj-C の良さが台無しだろう。 それは objc_msgSend を呼び出すのが速くなる最適化です。 メソッドの実装が欲しければ Obj-C のランタイムつかってとってこれます。 五年前の msgSend の実装 を解析したのが www.mulle-kybernetik.com/artikel/Optimization/opti-9.html にあります。最近はもっと最適化進んでるんでしょうが。
- 822 名前:デフォルトの名無しさん [2009/02/02(月) 23:45:10 ]
- >>809
Cocoaアプリ開発って極端な話XCodeで新規プロジェクトを選んだ時点で 完成してるんだよね。だからコード書かなくても動く。 サブクラスで必要な部分だけどんどん拡張していける。 CarbonやWin32って1から全部書かないといけないんだよね。 Cocoaアプリ開発=Cocoaフレームワークの拡張かな。
- 823 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:14:27 ]
- というか、C / Java だって、大昔アセンブラつかってたひとからすれば、
レジスタをいじらなくても動くなんてよく判らん、とか、 自分で vram を叩かなくても文字が表示される、どうなってるんだ、 とかだったはずで、単に慣れの問題だとおもう。 徐々にシステム側が沢山の部分をやってくれるわけでさ。
- 824 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:27:52 ]
- >>821
レスどうも。リンク先面白かったです。 ObjCのメソッド呼び出しが遅いとかなんとか 読んだ記憶がありましたので、もしかしたらと。 にしても、ObjC動的すぎて素敵。 いや、むしろ変態。
- 825 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:26:04 ]
- Cはアセンブラとあまり変わらない感覚だったよ。
特に68系の場合はアセンブラもわりと高級言語っぽかったから、 コンパイルしたらどういうコードになるか容易に想像ついた。
- 826 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 06:20:08 ]
- >>814
> 気味の悪い文法が障害 smalltalk一回経験してるとそうでもないんだけどね c++に慣れてると目が点になるかもしれん
- 827 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 08:14:20 ]
- 822みたいな奴を見ると、Mac使ってることが嫌になる
- 828 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:06:40 ]
- マク関係はどうもスルー力が試される機会が多いんだよな
- 829 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:31:49 ]
- >>814
気味の悪い文法が障害 CやJavaやPHPやってるんだが、始めて2日でむしろ気持ち良くなってきたんだが。
- 830 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:33:34 ]
- 自然にコメントを大量につけてることになるのがいいよね。
自分でつくるクラスのメソッド名もならって読んで意味のわかる英語になるようにしてる。 これだけで数ヶ月後にコードを見直したときの理解度が全然違うベ。
- 831 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:30:15 ]
- >>829
俺も大分気持ち良くなって来ました。
- 832 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 16:13:30 ]
- [Meta2ch agreeTo:829 with:"passion" ]
- 833 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:09:21 ]
- WindowsがF#に移行しつつあるのにobj-c2.0ぐらいの文法で障害とか
どんだけ池沼なんだよw
- 834 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:14:22 ]
- >>833
>WindowsがF#に移行しつつある まあ一般化はあと5年は先だろうな。
- 835 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:44:28 ]
- iPhone デベロッパーズ クックブック
もうすぐ出るね。 www.amazon.co.jp/dp/4797352418/
- 836 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 20:56:13 ]
- >>833
Windows、F#に移行しつつあんの? 最新版VSで辛うじてサポート程度としかしらんかったわ。
- 837 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 12:43:58 ]
- C# <= C++
J# <= Java F# <= Fortran??
- 838 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:37:06 ]
- Functional Language
- 839 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 15:42:45 ]
- F#は、Objective Camlだよ。
研究とか趣味の人向けの選択肢であって、大多数のプログラマには無縁の存在だから。
- 840 名前:デフォルトの名無しさん [2009/02/18(水) 14:21:32 ]
- Windows版のGCCにはobjective-cコンパイラも付属してますが、
これを用いて、Windows APIをコールして、簡単なGUIアプリを作成できますか?
- 841 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 14:25:00 ]
- できるはず
- 842 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:33:30 ]
- Windows API をどうやって Obj-C にくるむかという問題があるのでは...
Windows で Cocoa で開発したければ Cocotron www.cocotron.org/ とか GNUStep www.gnu.org/software/gnustep/experience/Windows.html とかあるよ。
- 843 名前:デフォルトの名無しさん [2009/02/19(木) 03:43:53 ]
- GNU Step入門
www.amazon.co.jp/gp/offer-listing/4861863007/ なんて本がこっそり出てるんだけど、1ナノセカンドも 話題になってない気がする。
- 844 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 04:18:22 ]
- 作者の名前と経歴がなぜか笑えるw
そういえばFileMagnetのWindowsクライアントはCocotronで作られたんじゃなかったっけ?
- 845 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 08:33:44 ]
- >>842
直接APIをコールすればいいんでねいの?
- 846 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 21:12:59 ]
- >>843
なか見検索できないんだが、なかはどうなの?
- 847 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 21:37:40 ]
- あったかいナリ
- 848 名前:デフォルトの名無しさん [2009/02/20(金) 00:54:58 ]
- >>822
>完成してるんだよね。だからコード書かなくても動く。 おまえプログラム組んだ事ほぼ皆無だろw Interface Builderでコントロールをドラッグ&ドロップしてアプリが完成したつもりになってる輩とみたw そんな作業、アプリ制作の1%程度の作業なんだが。
- 849 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 02:14:38 ]
- アホなりw
- 850 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 12:35:06 ]
- >>848
まあほぼ同意だが、Interface Builder は何かほかの GUI デザイナとちがって 作業時間が長いようなきがするな... バインディングとかターゲット、outlet とかも一杯で。 ソースコードになってない情報が多すぎてわかりにくいときも。
- 851 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 09:30:44 ]
- NSObjectのカテゴリ作ってperformSelectorを上書きして
呼びだされたメソッド名を逐一NSLogで出力したいんだが、 元のperformSelectorを呼びだす方法ってあるかな? おもしろそうなのに全然使いこなせてない気がする>カテゴリ
- 852 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 13:46:53 ]
- カテゴリでは同名のメソッドは追加できない気がする。
journal.mycom.co.jp/column/objc/029/index.html にやりかたがのってますが、Leopard になってすこし runtime がかわったので 10.5 でコンパイルする場合は 10.4 用にインスペクタで設定しないと そのままではコンパイルエラーがでるでしょう。 何にせよその連載は勉強になります。 また、メソッドの呼び出しの際に performSelector: がいつでも呼ばれるか というとそうではないので... developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_13_section_1.html developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ developer.apple.com/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/ developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef1/ のあたり参照。
- 853 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 16:03:34 ]
- >>851
> 呼びだされたメソッド名を逐一NSLogで出力したい それはずばりアスペクト指向の典型的な活用例なんで、素のObjC/Cocoaでは難しい。 journal.mycom.co.jp/column/objc/044/index.html
- 854 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 03:05:20 ]
- そういうのは DTrace が得意そうだね >> 呼び出されたメソッドの書き出し
- 855 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 03:57:43 ]
- >>854
DTraceはカーネルの呼び出しだけでしょう? ユーザー空間内での やり取りは無感知。
- 856 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:34:51 ]
- >>855
そうでもないよ。objc????:: という provider があります。 www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html とか参照。
- 857 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 11:37:13 ]
- >>855
そんな事無いですよ。DTrace 自体はプローブポイントさえあれば、カーネルか ユーザープロセスかは無感知。
- 858 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:49:31 ]
- objective-cで、あるパターンの中から文字列を抽出したいと思っています
<p class="info"><strong class="number">6</strong>|<strong class="time">3:16</strong>... 上記のような文字列から 6 と 3:16 の部分だけをそれぞれ取得したいのです C#ではSystem.Text.RegularExpressionsのRegexクラスを使用して取得できたのですが、Objective-Cで同様の処理はどのように取得すればいいのでしょうか? ちなみにiPhone上で動かそうと思っています
- 859 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:14:10 ]
- >>858
標準の NSScanner つかって頑張ってもいいけど、 個人的には RegEx Kit Lite がおぬぬめ。 regexkit.sourceforge.net/RegexKitLite/
- 860 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:29:01 ]
- >> 859
おおおまさにこれです! ありがとうございました
- 861 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 01:59:36 ]
- 質問です。
カテゴリを利用して、(ある1つのクラスの)ソースファイル の分割を行うとします。 クラスAの実装ファイルを、 ファイル1とファイル2に分割、といった具合です。 そのとき、ファイル1で定義、実装されているプライベートメソッドを、 ファイル2で使おうとすると、ビルドのときに警告がでますが、これを なんとかできないものでしょうか。 解決策として、そもそも、同一のプライベートメソッドを利用する メソッド群を分割するな、という考えもあるかと思います。 また、コンパイラの警告レベルの調節でも、できるのかもしれません。 ですが、ほかにいい方法をご存知の方がいればご教示下さると助かります。 もしも、こういうこと(プライベートメソッドの他ファイルでの利用) がプログラミングのマナー違反であれば、ご指摘下さい。
- 862 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 06:12:25 ]
- プライベートメソッドをならべたヘッダをひとつつくればいいんでは?
ClassAPrivate.h に @interface ClassA (Private) -(id)hoge:(id) ... @end とかしておいて、それを実装ファイルで #import すればいいとおもいます。 Obj-C では@interface ClassA (CategoryX) で宣言したやつの 実装を @implementation ClassA (CategoryX) の中でしないといけないという ルールもないので、自由自在です。
- 863 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 12:43:26 ]
- その方法も頭に浮かんだのですが、ビルドのときに2重定義の警告と
なる気がして試してみませんでした。
- 864 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 17:17:10 ]
- >>861
分からないので聞くのですが、他から参照したいならなんでプライベートにするのでしょうか?
- 865 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:31:08 ]
- 他から、といっても同じクラスなのです。
- 866 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:26:48 ]
- >>865
なるほど。 どうも私の頭がJAVA脳だったようです。
- 867 名前:デフォルトの名無しさん [2009/03/07(土) 18:35:46 ]
- ClassA.hで
#import <Cocoa/Cocoa.h> #import "ClassB.h" @interface ClassA : NSObject { ClassB* b; } @end ClassB.hで #import <Cocoa/Cocoa.h> #import "ClassA.h" @interface ClassB : NSObject { ClassA* a; } @end というように、互いにインスタンスを持ち合うとコンパイル時にエラーが出ますが、 ClassA.h内で #import "ClassB.h" @class ClassB; ClassB.h内で #import "ClassA.h" @class ClassA; というふうに@classディレクティブを付けることでエラーが出なくなります。 @class classnameが、classnameがクラスであることを宣言しているのはわかるのですが、 なぜこれをやると、ClassA.h、ClassB.hを互いにimportしているにもかかわらずエラーが出なくなるのでしょうか。 逆に、付けないとなぜエラーになるのでしょうか。 また、@classを付ける基準ですが、 ・そのクラスのスーパークラス ・Cocoa等のフレームワーク内のクラス を除く全てのクラスを使用する時、必ず@classをつけるという考え方で良いのでしょうか。 どなたか詳しくご存知のかたよろしくお願いします。
- 868 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:01:04 ]
- >>867
詳しくはないが、自分ならこう考える Objective-Cの背後にある仕組みは結局Cと何もかわらない importは本質ではなくひとつのファイルに連続して次のように書けるかという問題 Cではこう書けない struct A { struct B *b; }; struct B { struct A *a; }; なぜならAの宣言時にBはまだ宣言されていないから。しかしCでは不完全型を定義できて、 struct B; struct A { struct B *b; }; struct B { struct A *a; }; こう書く事ができる。Aの定義時にBは不完全型なのでインスタンスは作れないが、ポインタは作れる。ポインタのサイズはどの構造体でも固定だからだ で、Objective-Cでも背後で同じようなことが起きてるんだと思うよ @class B; として不完全型を定義すればそのポインタを次の行からは使えるようになる だからエラーにならない どう?
- 869 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:10:43 ]
- >>867
だから、@classを付ける基準は 相互に依存するクラスを定義しなければならない時、またこのときは@classを書かざるを得ない だけ それ以外は冗長で無駄
- 870 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:18:21 ]
- >>868
ありがとうございます。今までずっと悩んでたのですが、すっきりしました。 >>869 特別な場合を除いて不要という形ですか、ありがとうございます。
|

|