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
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 特別な場合を除いて不要という形ですか、ありがとうございます。
871 名前:デフォルトの名無しさん [2009/03/13(金) 01:31:08 ] NSObjectのinitの実装部分を見たくて /System/Library/Frameworks/Foundation.framework内を調べてたんですが、 ヘッダーファイルしかありませんでした。。 どこにあるかわかりますか?? ちなみに環境はMacOSX10.5.6 Xcode:3.1.2 です。
872 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 04:16:06 ] >>871 フレームワークに入っているのはコンパイル済みオブジェクトだけで、ソースコードは無いかも。 GNUSTEPのCVS漁るのは一つの手かな。微妙に実装違うだろうが… www.gnu.org/software/gnustep/
873 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:44:40 ] >>871 ttp://www.koders.com/c/fid39AE071FDC4C990EA35773A29AF0EE2C5F79DF03.aspx
874 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:48:18 ] >873です。リンクミスった、そこから探して下さいな。
875 名前:デフォルトの名無しさん [2009/03/13(金) 13:50:27 ] >>872 ありがとうございます! >>873 ありがとうございます!早速調べてみたら - (id)init { return selft; } でした。それにしてもこの検索エンジンすごいですね。
876 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 11:31:42 ] は?
877 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 12:58:08 ] る??
878 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 13:00:18 ] は
879 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 14:03:25 ] あ
880 名前:デフォルトの名無しさん [2009/03/14(土) 17:25:22 ] Google Objective-C Style Guide ttp://google-styleguide.googlecode.com/svn/trunk/objcguide.xml なぜ、googleがマイナーなObjective-C のドキュメントなんかつくってるんだ?
881 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:35:17 ] >>880 GoogleがObjective-Cで開発するからだろ。
882 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:36:55 ] それ随分と前からあるよね
883 名前:デフォルトの名無しさん [2009/03/15(日) 17:38:04 ] 昔はObjectice-CのコードはプリプロセッサでCのコードに変換するしくみだったけど 今は違うの?
884 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 20:36:41 ] >>883 同じ developer.apple.com/jp/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_9_section_2.html#//apple_ref/doc/uid/TP30001163-CH14-SW2
885 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:22:46 ] プリプロセッサではないだろ
886 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:53:45 ] ちょw
887 名前:デフォルトの名無しさん [2009/03/16(月) 13:44:14 ] プリプリセッサじゃね?
888 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 21:02:03 ] >>880 Google自身も普通にMac用アプリ作ってるから、なんも不思議に感じないけども。 一体なにが引っかかったんだ?
889 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:47:05 ] >>888 あの娘の良さを認めているのは僕だけの筈だったのに、どうしてグーグルまで... とかそういう感じなんではないでしょうか。
890 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:05:10 ] Googleは例外の良さを認めていないから、まだ俺の嫁
891 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 02:52:04 ] >>890 Cの資産があるからしょうがあるめぇよ 最初からC++なら例外処理を使う規定ができたとおもうぞ
892 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 19:38:49 ] Objective-Cを覚えるのに、C++を勉強する必要なし? Objective-Cを解説してるのを見ると、C++ではこう書くのを Objective-Cではこう書く、みたいなのばっか
893 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 19:44:30 ] Cの知識はいるがC++の知識はなくてもおk
894 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 20:04:01 ] >>892 C++の知識があるとストレスがたまるから、Cだけ勉強しとけばOK。
895 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:49:47 ] >>892 >C++を勉強する必要なし? なし。同じオブジェクト指向言語といえども C++ とは殆ど関連性無いから。 C++ の混沌ワールドはむしろ知らない方が良い。もしどうしても他の言語を 参考にしたいなら Smalltalk(か Java)をお薦めする。もちろん C は必須。
896 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:29:15 ] >>892 >Objective-Cを解説してるのを見ると、C++ではこう書くのを >Objective-Cではこう書く、みたいなのばっか そりゃオブジェクトなんたらってばC++プログラマが多いからだろ もしC知ってんなら、ご本家眺めてみたら ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/
897 名前:デフォルトの名無しさん [2009/03/19(木) 00:45:17 ] 質問です。自分の持っている本に 「クラスメソッド内からはインスタンス変数を参照する事ができない。(インスタンスオブジェクトは複数存在する場合がある) 同様にインスタンスメソッドを呼び出す事もできません。」 という記述があるんですが、サンプルプログラム内のあるクラスの実装で //指定イニシャライザ - (id)initWithA { ・・・ } //副次的イニシャライザ + (id)subWithA { id f = [[self alloc] initWithA]; return [f autorelease]; } のように呼び出してる記述があるんですが。。 これってクラスメソッド内からインスタンスメソッド呼び出してますよね?
898 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 01:17:43 ] クラスメソッド内のselfはクラスオブジェクトを指す。 クラスオブジェクトってのはクラス自身を表す特殊(?)なオブジェクトで、 id f = [[self alloc] initWithA];はクラスオブジェクトに対してクラスメソッドallocを呼び、それをinitWithAで初期化して得られたインスタンスをfに代入していることになる。
899 名前:897 [2009/03/19(木) 02:42:14 ] という事はサンプルプログラムの場合は 直接インスタンスメソッドを呼び出しているわけじゃなく、 allocによって生成されたインスタンスオブジェクトのメソッドを操作している。という事でしょうか?
900 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 02:45:04 ] >>899 initWithAとかautoreleaseのことを言っているなら、その通り。 allocの戻り値や、fに対して呼び出してるでしょ。
901 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 18:45:03 ] 『チャート式Objective-C』
902 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 10:48:55 ] こやつめw
903 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:13:46 ] プログラミング言語のチャート式ってどんな内容・・・
904 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 10:42:36 ] >>903 数研出版は学校向けの情報処理系の教科書も作ってるから、普通の内容になると思う。
905 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:17:56 ] チャート式Objective-C でぐぐっちゃったじゃないかw だまされた><
906 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 00:45:22 ] >>904 まずそのためには センター試験の数学Bの選択科目にObjective-Cが採用される必要性があるな そしてMac OS Xの開発者激増→開発本増加→ウマーな展開だなw
907 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 01:58:11 ] ありえない。 オブジェクト指向はそこまで体系化された概念じゃないから。
908 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:00:01 ] 何でオブジェクト指向限定?
909 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:11:00 ] オブジェクト指向でプログラミングしないならObjective-Cの利用価値が無いから。
910 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:46:22 ] ありえないのはありえない話をしてるから当たり前として、 その理由がオブジェクト指向だからというのが風変わりだね。
911 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:34:32 ] >>907 冗談で書いたものにマジレスされてもw
912 名前:デフォルトの名無しさん [2009/03/26(木) 21:33:45 ] ここで聞いていいのかわからんですが質問です。 iphoneSDKいじってるところなんだけど、touchesBegan等のタッチハンドラを子ビューで実装してしまうと、親ビューのtouchesBeganは一切呼ばれなくなると思うんだけど、 たとえば子ビューのtouchesBeganの中で判定処理を書いて、かつ親ビューのtouchesBeganもよびたい場合てどうすればいいんでしょう。 子ビューのtouchesBeganの中で親クラス(UIView)のtouchesBeganをよぼうとしてもprivateでよべないみたいだし。 教えてくんでごめそだがよろしくです。
913 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 21:52:05 ] >>912 pc11.2ch.net/test/read.cgi/mac/1234555020/
914 名前:デフォルトの名無しさん [2009/03/27(金) 01:24:52 ] インスタンスからクラスメソッドって呼べないのかな?
915 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 01:33:49 ] 呼べるよ。
916 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 01:34:41 ] >>914 [[インスタンス class] クラスメソッド];
917 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:59:16 ] それは「呼んでいる」とは言えんだろう…
918 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:13:11 ] >>917 では「呼んでいる」の定義を教えてください
919 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:30:10 ] NSStringのboolValueメソッドってどんな時に使うんでしょ?
920 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 10:58:40 ] 文字列表現から真偽値を取得したい場合じゃない。
921 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 10:45:02 ] >>871 cocotronでググれ。
922 名前:デフォルトの名無しさん [2009/03/29(日) 14:04:13 ] >>912 UIResponder
923 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 15:40:12 ] もしObjective-CがC++より流行って、C++みたく影響を受けた言語が続々出ていたら それはそれで怖いものがある
924 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 15:45:12 ] C++の影響を受けた言語って何かあったっけ? D言語くらい?
925 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 17:01:27 ] Java。あとOOでJava風の構文を採用しているという意味では間接的ではあるけどPHPも。
926 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 17:31:02 ] Java は C++ の直接の影響下にあるというよりも C++ の置き換えを狙ってああ成った感じが強い。 オブジェクトシステムやクラスライブラリはむしろ Smalltalk や OPENSTEP の影響が大きそうだし。 あんまり C++ って感じはしないね。
927 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 18:18:27 ] C++に影響を受けた言語ってたいがい打倒C++的な雰囲気だろ
928 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 18:20:51 ] 打倒っていうか脱C++って感じかな。
929 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:28:11 ] >>928 C#の事か。
930 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:53:51 ] >>923 >流行って、C++みたく影響を受けた言語が続々出ていたら リスペクト的な意味合いでフォロワーが生まれたと 言いたいのかと思ったら違うのね。
931 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 00:21:00 ] >>924 Object Pascal
932 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 00:40:46 ] >>931 >Object Pascal ウィキペで済まんがSmalltalkに影響受けたって書いてあるね ja.wikipedia.org/wiki/Object_Pascal en.wikipedia.org/wiki/Object_Pascal
933 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:01:57 ] >>931 Object PascalはC++より前じゃね?
934 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 22:09:14 ] Photoshopの初期はObject PascalとMacAppで書かれてたんだよねたしか。 C++コンパイラが出回るよりも前。
935 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:08:21 ] >>934 C++化されたMacAppを更にAdobeがいじったバージョンが最近まで使われてたんじゃなかったっけ?
936 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 09:17:58 ] CS2くらいまで使ってたような
937 名前:デフォルトの名無しさん [2009/04/05(日) 11:57:18 ] いまはQtって話を聞いたが? 昔はcopyrightの中にappleの名前もあったらしいが・・・
938 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 12:51:37 ] QtはElementsの方と聞いた覚えがある
939 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:08:43 ] ここまで中の人無し。
940 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:40:32 ] // NSStringのClassを取得する Class cls; cls = [NSString class]; // クラス名を、printfで表示する printf("class name %s\n", ((struct objc_class*)cls)->name); クラス名を表示させたいのですがコンパイルエラーで main.c:184: error: dereferencing pointer to incomplete type となってしまいます。。 これはなぜでしょう??
941 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:47:05 ] >>940 Leopard になってランタイムが変わったので objc_class のメンバはアクセス出来なくなりました。 gcc を10.4 モードにしてつかうか、 Obj-C 2.0 のランタイムの関数 class_getName をつかってください。 developer.apple.com/DOCUMENTATION/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef1/Reference/reference.html を参照。
942 名前:940 mailto:sage [2009/04/05(日) 15:04:12 ] >>941 うおー!マジでありがとうございます!!感謝!! ここ1週間ぐらいこのエラー原因がわからず彷徨ってました。 助かります(涙
943 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:11:24 ] >>942 いえいえ。きっとネットで検索だけしてたんだと思いますが、 objc_class を XCode のドキュメントで調べると Obj-C 1 Runtime Reference がひらいてなんか変だなと判ると思いますし、 あとはインクルードされてるヘッダを辿っていくと 最終的に /usr/include/objc/runtime.h に至って それを読めば Obj-C 2 なら objc_class が使えない事も書いてますから、 今後は手元のドキュメント、ヘッダファイルも いろいろ読むようにしてみてください。
944 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:38:13 ] Dynamic objcの弊害