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
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の弊害