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
577 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:28:05 ] stringWithCString?
578 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:47:18 ] >>577 それを使うと"default encoding"が変わったときに 文字化けして死亡するので、使わないでね。というか deprecated in 10.4. stringWithCString:encoding: か stringWithUTF8String: を使ってください。お願いだから。 これだけのせいで動かない海外製のフリーウェアに何度も出会っているので ...
579 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:54:16 ] 典型的には、OS X の日本語環境では MacJapanese が "default encoding" で、 こいつは円記号とバックスラッシュを区別するので、 海外製の Cocoa でつくったシェルスクリプトのラッパで 不用意に -stringWIthCString: と -cString で行ったり来たりすると シェルスクリプト内に ASCII code でのバックスラッシュ(0x5c)が あるべきところにMacJapanese の バックスラッシュ (0x80) が入って スクリプトが動かなくなったりします ...
580 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 19:55:33 ] >>574 , >>576 オマエの妄想をAppleが言ってるように言うな、この詐欺師が
581 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 21:01:18 ] でたでた
582 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 21:24:17 ] >>574 char* としての文字列の操作すら知らなかったら、ほんとに簡単なプログラムしか書けない、というのは嘘ではないよ。
583 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:09:04 ] >char* としての文字列の操作すら知らなかったら、ほんとに簡単なプログラムしか書けない、というのは嘘ではないよ。 まあそれはそうですね。 NSString のメソッドって一杯あるけどなんか微妙に足りないことがしばしば。 Perl/Ruby/Python みたいに 正規表現が標準でつかえればそんな問題もなくなるんだけど。
584 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:29:01 ] ねぇねぇ、なんでいきなりchar*を受け取る「API」の話になるの?このスレ。。 それともわざとか? 釣られた俺?
585 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:30:01 ] >>583 >Perl/Ruby/Python みたいに >正規表現が標準でつかえればそんな問題もなくなるんだけど。 この人、また来てるのね。正規表現廚。
586 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:46:52 ] >>584 char*を入力したり出力したりするAPIが存在しなければ、char*を使う必要がない。と言いたいんじゃないの?
587 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 06:28:52 ] 「char*を受け取るAPI」と「正規表現」にこだわる思考回路が理解できない件www
588 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 09:00:50 ] 反抗期なんだろ。
589 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 09:12:03 ] ていうか普通 NSString なんか使わないだろ
590 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:16:41 ] >>574 >>576 >>578 >>579 >>583
591 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:08:20 ] NSString NSAutoString NSCString NSIString NSMutableString NSAttributedString ・・・
592 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:07:49 ] Netscapeですか
593 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 07:19:51 ] Netscape NetSTEP NeXTSTEP NeXTscape ・・・
594 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 08:21:40 ] ソープのゴム無し
595 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:41:26 ] バカ専用 普通 ハッカー ウィザード ┝ - - - - ┿━━━┿━━━┥ ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 今はここら辺クマーー!! 彡、 |∪| ,/ / ヽノ /
596 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 20:44:47 ] ゴメンずれてる
597 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:45:31 ] バカ専用 普通 ハッカー ウィザード ┝ - - - - ┿━━━┿━━━┥ ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 今はここら辺クマーー!! 彡、 |∪| ,/ / ヽノ /
598 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:39:05 ] ごめんずれてる
599 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:48:06 ] 普通 まったり 超まったり dat落ち寸前 ┝ - - - - ┿━━━━┿━━━━━┥ ∩___∩ /)
600 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:06:09 ] "\psage"
601 名前:sage [2008/08/20(水) 10:31:33 ] sage
602 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 05:21:02 ] すみません。教えてください。 a = [foo bar_A:[s get] B:[s get]]; というステートメントがありまして、いろいろ実験してみますと、 どうもB:[s get]がA:[s get]より先に実行されてるっぽいです。 どうしてなのか知りたいのですが。
603 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 06:02:59 ] 引数の評価の順番って保証されてたっけ? というか普通は保証されないから理由なんてないと思うよ
604 名前:602 mailto:sage [2008/08/21(木) 08:31:49 ] >>603 わかりました。ありがとう!
605 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 17:35:38 ] 関数の引数をスタックに積んで渡す場合に逆順に積むと、 呼ばれた側で先頭から配列のようにアクセスできて楽だから。
606 名前:デフォルトの名無しさん [2008/08/22(金) 23:33:22 ] >>605 それでいくと、IntelとPowerPCで動作が変わるのかな?
607 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:28:29 ] エンディアンは関係ないから・・・
608 名前:デフォルトの名無しさん [2008/08/23(土) 03:40:36 ] PowerPCは引数をスタックに積まない。多くの場合は。 その前に、gccは実行効率優先でコードを生成するだろうから、引数のセットアップ順序もケースバイケースになりそうな気がする。 push命令使ってるわけでもないし
609 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 05:04:57 ] >>608 恥ずかし過ぎて、俺なら明日会社休んじゃう
610 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 05:30:37 ] >>609 土曜は休みだろ?
611 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 05:38:19 ] 俺は仕事だけどな。
612 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 15:23:24 ] ttp://developer.apple.com/documentation/DeveloperTools/Conceptual/LowLevelABI/Introduction.html
613 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:10:01 ] この数レスに腹抱えて笑ってもた
614 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:28:21 ] あなたつかれてるのよ…
615 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 03:11:51 ] 伝統的なアレだと、C式は後ろから積んで戻ってから呼び出し側がポップ。 Pascal式は前から積んで呼ばれた先でポップだった。
616 名前:デフォルトの名無しさん [2008/08/30(土) 13:55:06 ] ttp://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-blocks-test-8.c?view=markup よくわからん
617 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 15:59:01 ] 「nul」を「にるぽ」と呼ぶスレ
618 名前:デフォルトの名無しさん [2008/09/08(月) 19:07:19 ] >>617 nil じゃね?
619 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:19:35 ] うふふ。すごくにるにるしてるわヨ。
620 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:47:58 ] ににる にる にる ににるに〜 ににる にる にる ににるに〜
621 名前:デフォルトの名無しさん [2008/09/09(火) 21:15:37 ] なあ、もうちょっとまじめにやらないか?
622 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:32:50 ] 3時間後の発表でiPod全機種のOSがiPhoneに移行したらObjective-Cの仕事が激増するかな。 ローコストモデルでは通信できない可能性が高いからプログラマとしては魅力ないのかな? もっともNDAがあるから職業プログラマは話せないと思うけど
623 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:52:44 ] iPhoneでファイルの読み書きってどうすんの? NSDataオブジェクト作ってwriteToFileすりゃいいってのはなんとなくわかるんだけど…。
624 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:39:39 ] GNUStep の AppKit っていつから LGPL になったの? 以前は GPL だった気がするけど、勘違いかな...
625 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 20:58:09 ] まあ、LGPLのほうが使いやすいからいいじゃん
626 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:07:40 ] Unicodeで \u3042\u3044\u3046 とエスケープされた文字を あいう と変換する方法をご教示ください。
627 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:21:26 ] 初心者です。 cocoaはmvcによって アプリを開発していくことはよく分かりました。 ただIBで作成したNSViewに直接modelで作成したクラスを割り当てると この場合controllerを解しているわけではないですよね? そういう解釈で良いんですか?
628 名前:627 mailto:sage [2008/09/27(土) 22:23:12 ] >modelで作成したクラス・・・ というよりxcodeで記述したクラスといったほうがいいのかな?
629 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:12:46 ] どんなクラスか知らんけど 通常、1クラスしか使わない場合、 ないのはモデルということになる。
630 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:50:56 ] Unicodeで ¥u3042¥u3044¥u3046 とエスケープされた文字を あいう と変換する方法をご教示ください。
631 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:53:18 ] どっかで見たな
632 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 04:47:43 ] >>631 ちょっと上でみたよね
633 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 05:09:33 ] ごめん。俺あんまりわかんないけど NSLog(@"¥u3042"); // u の前は半角の¥(円マーク) これだとそのまんまコンソール出力されたけど NSLog(@"¥u3042"); // u の前は半角の\(バックスラッシュ) だと、普通に”あ”って出力されたよ。 Unicodeエスケープとかでググれば何か出るんじゃない? 英語で検索した情報多いかもね。
634 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:14:05 ] ポリモーフィズムを実現するに スーパークラスもサブクラスも 関係ない id型ひとつあればよい
635 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:26:29 ] 普段はゆるーくメッセージング、性能が気になるところはCの関数呼び出し。 Obj-CがあればC++要らんっていうのも分かる。
636 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 08:31:31 ] この前本屋いったら、UNIXナントカっていう雑誌の特集がObjCだった
637 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 09:06:13 ] >>636 UNIX magazine の10月号かな
638 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 10:20:26 ] わかんないけど、季刊誌だったような
639 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 10:31:37 ] UNIX magazine 2008年10月号 MacからiPhoneまでを網羅するアップルの開発言語Objective-C入——前編 www.ascii.co.jp/books/magazines/unix.shtml
640 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:11:30 ] Objective-Pascal Object C
641 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:53:27 ] 買おうと思ったら1500円したので帰ってきた
642 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:55:08 ] 季刊だったのでやっぱ買いに行くことにした
643 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 20:59:23 ] お店閉まってた><
644 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 15:28:24 ] 買ってきた。 冷静に考えると、2冊分の金で 専門誌買えばよかったかもしれない。
645 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 16:54:44 ] >>644 読む価値ある?
646 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 16:58:32 ] 前編ってことは1月号でも特集やるのか?
647 名前:デフォルトの名無しさん [2008/10/06(月) 18:16:03 ] 萩原本でいいと思う。
648 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 19:32:01 ] >>644 言おうと思ったけど黙っていたのに気づいてしまったか
649 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 19:47:03 ] 立ち読みしてきたんだが、「モダンシンタックス」って何?
650 名前:デフォルトの名無しさん [2008/10/06(月) 20:40:16 ] そりゃおまえ現代文法だろ
651 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:25:39 ] NSViewってコントローラー無くても四角形とか描写できるよね。 あれはなんで? コード見ても描写を担う関数が仮引数とか受け取ってるみたいだけど・・・・・・・。 一体この仮引数はなんなの?
652 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:52:57 ] >>651 何を引き受けているのかってことかな? 確かにNSViewって不思議。 他のオブジェクトだったらIBとXcodeはアウトレット、アクションとコントラーを介して つながっているけど、NSViewってクラスでそのままリンクさせることができるもんね。
653 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:29:12 ] >>652 確かにcocoaで良くわからないところだった。 NSTextViewでもコントローラーをソースとして登録しておくって考え方も .net出身者としては腑に落ちなかった。
654 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 09:03:01 ] そのあたりはいくらでも説明しますが、 何が疑問なのか曖昧すぎてわからないので、もうちょっと詳しく書いてくれませんか? >>651 さんとかどの関数の話をしてるの? >>652 はなにがいいたい?クラスでそのままリンクって? >>653 はどういうこと?コントローラをソースとして?ソースって何?
655 名前:651-652 mailto:sage [2008/10/10(金) 14:21:46 ] >>654 ドモ、ありがとうございます。超初心者です。 このサイトにあるGraphic関数です homepage.mac.com/mkino2/cocoaProg/AppKit/GraphicFunctions/GraphicFunctions.html#overview 疑問1 このサイトで四角形を描写させるためのサンプル全ての関数において NSFrame型のframeRectっていう仮引数をうけとっているよね。 でも関数の中身をみるとそんな仮引数を利用している形跡がない。 別に宣言する必要が無いのでは?というのが最初の疑問。 疑問2 サンプルコードをダウンロードしたプログラムにはコントローラー(青色の立体箱)がなかったんですよね。 僕はIBで作成したインターフェイス部分とX-codeで記述したコード部分を繋ぐためには コントローラーでアクションとアウトレットで接続する必要があるって理解していたから コントローラーがなくてなんでX-codeで記述した関数がインターフェイスに反映されるのか全く分かりませんでした。 そしたらこのサンプルではIBのNSViewのクラス名部分がX-codeで作成したクラスに なっていたんです。 これはコントローラーが介在していないってことですよね。?
656 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 15:18:45 ] >>655 NSViewのサブクラスは -drawRect:(NSRect)frame;をオーバーライドして描画をやります。 で frameにはview自身の大きさが入ってきます。 ので、それに習っただけでしょう。 DLしてないけど、多分NSViewのサブクラスがwindowに貼り付けてませんでしたか? 最後の段からすると多分そうなってるんだと思うけど、 そうしておくと、nibロード時にサブクラスを作ってそこに貼り付けてくれます。 (実際には違いますがイメージはそんな感じです) で、NSViewのサブクラスの -drawRect:(NSRect)frame; で描画処理が行われているはずです。
657 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 15:20:24 ] コントローラはデータを扱うクラスですので、データを使ってなければ不要です。
658 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 15:53:59 ] >654じゃないですが、こんな感じじゃないでしょうか。 答え1 - (void)drawRect: (NSRect)frameRect は nib (xib) が読み込まれて初期化する 時や絵を書き直す過程で呼ばれる。frameRect は描画する場所を限定する為のもの。 描画効率upの為に customView の一部に限定する事もできる。初期化の時は多分、 customView.bounds で view の全体を描画させているんだと思うな。 答え2 コントローラは介在していない。ていうか、MVC の View を直接いじっていて、 Model、Controller が無い状態。 と、書いているうちに >656 さんが書いてくれましたね。customView が直接 window に 貼付けられていました。
659 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 20:40:38 ] >>653 > .net出身者としては腑に落ちなかった。 そこがCocoa(MVCパターン)と.NET(n層パターン)のアーキテクチャの違いというやつだ。 MVCのViewは、主に描画だけを行いデータの保持や管理をしない。Model内でデータを更新すると、それに連動してるViewが勝手に再描画される感じ。 n層パターンだと、ビジネス層で処理したデータをプレゼン層に送りこんで、プレゼン層側でデータを保持したり処理したりする。
660 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 01:07:34 ] >>639 書いてるのはシロタンですぞw retain count方式の説明に微妙に誤解を招きそうな表現があった気がした。
661 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 11:50:01 ] >>656-658 イメージとしては理解できました。 本当にありがとうございます。
662 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 23:32:59 ] 10.5以降にはNSViewControllerがある
663 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:59:05 ] x-codeで開いたソースファイルの文字を大きくしたいんだけど、 やりかた知ってますか? 一応必死に探したんだけど見つかりませんでした。
664 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 00:07:56 ] 環境設定 -> フォントとカラー
665 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 02:22:42 ] >>663 >>664 の場所にあるよ。 フォントサイズのみの指定って感じのインターフェイスじゃないからわかりにくいっちゃあわかりにくい。 フォント名をダブルクリックしてフォントパネルの中で指定。
666 名前:663 mailto:sage [2008/10/22(水) 20:35:04 ] >>664-665 ありがとう! フォントサイズをこんなにも決め細やかに設定できるなんてすばらしすぎる。 背景もモダンにして高級感たっぷり。 ありがとう!
667 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 21:51:10 ] >>659 なるほど。 だから .NETではインターフェイスに入力したデータがコードにも受け継がれるけど、 cocoaの場合はインターフェイスに入力したデータはコードでは受け継がれずに 関数で取りに行く必要があるのか。 めんどくさいよね。これ。
668 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 22:53:40 ] >>667 つまり textBoxの値をlabelに反映するだけのアプリケーションで説明すると .netの場合 labe.text = textBox.text; で終了。 cocoaの場合 labeField = [NSTextview setStringValue : textField]; さらにIBでlabelField,textFieldをアウトレットでコネクトする必要あり。 面毒せー! でも高度なテクニックはcocoaのほうが分かりやすいんだよなー
669 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 22:56:19 ] なんでも関数にするからだめなんだよ。 .netはcocoaを見習いようがないけど、cocoaは.netを見習えるような気がする。
670 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 23:36:30 ] BaseTenがダウンロードできないんだけど・・・・・なんで?
671 名前:デフォルトの名無しさん mailto:age [2008/10/27(月) 23:53:43 ] 頭わる…晒しage
672 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 00:02:21 ] かかって来い!
673 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 00:52:53 ] >>668 >cocoaの場合 >labeField = [NSTextview setStringValue : textField]; >さらにIBでlabelField,textFieldをアウトレットでコネクトする必要あり。 何年前の話をしてるんだ? 10.3 のときから、そんなのはコードを一行も書かなくても Interface Builder でバインディングをすればできるわけだが ... developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaBindings/ とかみろ。もっと新しい英語版はこちら: developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/CocoaBindings.html
674 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 01:02:43 ] >>673 ありがとー 実は入門書しか読んでねー。
675 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 23:21:44 ] もうちょっと活発に議論してほしい・・・・・・。 そこでバインディングについて簡単に説明して。 一体どんなすごいことが出来るの?
676 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:01:21 ] バインディングは議論するほどたいしたことじゃないし、 最近 Cocoa やってるひとなら常識だから。 View と Controller 間の glue >.netの場合 >labe.text = textBox.text; >cocoaの場合 >[labeField setStringValue : [textField stringValue]]; を書かなくてよくなるだけです。 インターフェースビルダーで、各 UI 要素が controller のどの変数を 監視/設定するかを設定出来るという機能です。(それだけじゃないけど。) 一番簡単な例は、controller に a という変数を用意して、 label も textfield も a を監視するように設定できます。 そうすると、textfield の内容が変更されると、自動で a が変更されて、 それに伴ってそれを監視している label も自動で変更されると。 別に凄いことじゃないです。 >>673 に引用されてる先を読んでください。
677 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:02:41 ] 書きわすれましたが、 .net でも WPF だったか XAML だったかで同様のことができるんじゃなかったっけ。
678 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:52:23 ] 週刊アスキーを読ませてもらった、大金持ちになりたいです。
679 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 02:11:38 ] >>675 outletを用意しなくても済むため、コード量を劇的に減らすことができるって、HMDTさんが言ってた。 developer.apple.com/jp/documentation/Cocoa/Seminar/Cocoa3/1.CocoaBinding.mov
680 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 23:06:49 ] >.netの場合 >labe.text = textBox.text; >cocoaの場合 >[labeField setStringValue : [textField stringValue]]; いちおう、cocoaでも labeField.stringValue = textField.stringValue; と書ける。objc2.0なら
681 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 23:37:41 ] 明示的にプロパティじゃない setter をプロパティ構文つかうのは Apple 的には推奨してるんだっけ? developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_2_section_3.html anObject.retain はするなとかいてあるが .stringValue はいいのかな。
682 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 16:53:15 ] >>681 その文書を読む限り推奨も否定もしてないようですね。 ただ、書いてる内容を総合的に見れば、ドット構文を一般的なメソッド呼び出しの代替えとして使うな、ということのようだから、ちゃんとしたアクセッサメソッドならドット構文を使ってもいいんじゃないかな。 とりあえず、コンパイルエラーとかも出ないし。
683 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:31:54 ] ボタンを押したらピコーンて音声ファイルが再生されるようにしたいんですけど なんて書けば良いんでしょうか・・。超低レベル質問なのは分かってるんですけども
684 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:34:21 ] >>683 AppleのドキュメントとかAPIリファレンスとかでそれっぽいとこ探せばいいのでは? そこで分かったそれらしいクラス名なりメソッド名とかを使ってググるとか。 APIリファレンスとかにはそのメソッドとかを使ったAppleのサンプルへのリンクがあったりするからそれを見てみるとか。 ClashLandingってAppleのサンプルにそれっぽいのがあるらしい。 [オーディオ] - iPhoneアプリケーション開発 d.hatena.ne.jp/iphone_dev/searchdiary?word=%2a%5b%a5%aa%a1%bc%a5%c7%a5%a3%a5%aa%5d 試してみるとか? 俺も再生の仕方とかわからない・すまない。 他に詳しい方おしえてあげてください。
685 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 03:39:08 ] >>683 質問するスレはCocoa はさっぱり pc11.2ch.net/test/read.cgi/mac/1224960170/ のほうが適当だとおもいますよ。 あと、質問するときはどのていどまで Cocoa を知ってるのか書いてください。 Interface Builder つかってボタンを表示する方法はしってるのかとか。 ではあちらのスレで会いましょう。
686 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 15:01:44 ] >>684 ありがとうございますとりあえず音は出せるようになりました! 半日かかりましたけどw >>685 見落としてました。そのスレが自分向きですね 教えて君にならないよう頑張ってみます
687 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 17:01:52 ] ttp://blog-imgs-40.fc2.com/n/e/t/netamichelin/2008110206.jpg
688 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 02:19:43 ] NSTimerのscheduledTimerWithTimeInterval:target:selector:userInfo:repeats: 関数を使って一定間隔ごとにある関数を呼び出すタイマークラスを作成したいのですが、 上手くいきません。 targetに問題があるのかなと考えているのですが、 メイン関数でタイマークラスを作成し上記の関数をよび出す場合、 targetはselfでいいのでしょうか?
689 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 09:11:25 ] 僕らは超能力者じゃないんだからもうちょっと詳しく書いてもらわないとわかりません。 main 関数ってほんとに C の main() ? それだと NSTimer うごかないよ。Runloop 回さないと。 あと、この質問は Objective-C プロパーというより たぶん Cocoa の話なので、>>685 にもあるように 新マック板の Cocoa スレに行ってください。
690 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 09:25:56 ] >>688 おそらく NSTimer はちゃんと出来ているけど、NSRunLoop に渡してないだけな気が しますが…… NSRunLoop の addTimer:forMode: を参照
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/17(月) 04:06:06 ] Objective-Cで定数って普通どうやって定義するのかな? Javaみたいに、関係あるクラスの中で定義して、AClass.CONST_A_VALみたいに使いたいんだが。
692 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 04:42:09 ] できません。 Global namespace に大量に定数を定義するのが Obj-C 流。 (あまりいいことではないとおもうけど、そういうものなんだからしかたがない。) そのかわり定数の名前がかなり(めちゃくちゃ)長くして衝突をさけます。 NSUTF8StringEncoding とか NSApplicationDidUnhideNotification とか。 Java なら NSApplication.DidUnhideNofitication とかするところを 点を一個抜く感じだと思います。
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/17(月) 05:02:17 ] >>692 うう、そうですか。 それがObjective-C流ならしかたない(泣。 defineとconstではどっちの方がいいんでしょう?
694 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 05:38:41 ] う〜ん、普通は .h では const extern にしておいて、 .m で実際の値を定義するんじゃないですかね? 少なくとも Cocoa の標準ヘッダではそうなってますし僕もそうします。 Obj-C というか C だと const の中身までヘッダにかくと リンク時に衝突するとおもいます。ご存知なら失礼。
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/17(月) 10:45:31 ] >>694 いや、とても参考になりました。 ありがとうございます。
696 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 17:46:29 ] Obj-CからIllustratorドキュメントを操作する場合って直接は無理ですよねぇ… JavaScript書いてそれをObj-Cから実行って感じですか?
697 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 00:32:39 ] .ai のフォーマットを知ってたら直接操作出来るんじゃない? Mac 上でやるんなら JavaScript だけじゃなくて AppleScript もつかえるでしょう。 Obj-C から AppleScript なら呼び出し放題だけど。 developer.apple.com/documentation/Cocoa/Conceptual/ScriptingBridgeConcepts/
698 名前:696 mailto:sage [2008/11/18(火) 16:10:37 ] JavaScriptでいけた ありがとー
699 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 11:49:45 ] エトワレの 0.4 が出たよ。 etoileos.com/news/archive/2008/11/16/2300/ なんだか独自の方向に突っ走ってる気がするが...
700 名前:デフォルトの名無しさん [2008/12/02(火) 22:43:50 ] >>699 (´・ω・`)ショボーン imepita.jp/20081110/801860 imepita.jp/20081130/027170
701 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 03:22:21 ] Obj-C で visitor pattern ってどうやるのがいいのかな? 上のほうで一度話題になりかけてるんだけど、 なんか急激に煽り煽られになっててよくわからん。 C++ なら HogehogeVisitor* visitor にたいして ループ{ element->accept(visitor) } として、 element の accept メンバ関数で更に visitor->visit(this) となってるわけだけど。ネットの議論をいろいろ読む限り、 Obj-C では単に HogehogeVisitor を追加したくなったところで、 各 element をカテゴリで拡張して @class HogehogeVisitorInfo; @interface/implementation FooElement (HogehogeVisitor) -(void)doHogehoge:(HogehogeVisitorInfo*)hoge; @end @interface/implementation BarElement (HogehogeVisitor) -(void)doHogehoge:(HogehogeVisitorInfo*)hoge; @end としてしまって HogehogeVisitorInfo* visitorInfo=[[HogehogeVisitorInfo alloc] init]; ループ { [element doHogehoge:visitorInfo]; } でいい気がするんですが、もっといい方法ありますか?
702 名前:デフォルトの名無しさん [2008/12/19(金) 19:10:07 ] objective-cってc++みたいにtemplateあるの?
703 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 19:21:55 ] 汎用型の id はあるが基本型は入れらんない。
704 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 06:36:47 ] void CopyVector( double *v1, double *v2 ) { v2[0] = v1[0]; v2[1] = v1[1]; v2[2] = v1[2]; } は、以下だと駄目みたいですがどう書くのでしょう? -(void)copyVector:(double *)v1 To:(double *)v2 { v2[0] = v1[0]; v2[1] = v1[1]; v2[2] = v1[2]; }
705 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 06:55:08 ] -(void)copyVector:(double *)v1 To:(double *)v2 このインスタンスメソッド自体にエラーが生じるの? よければそのエラーの内容も書いてほしいんだけど・・・・・・・ それともただ単に仮引数V2に渡した引数にコピーされていないだけなの?
706 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:23:41 ] インスタンスメソッドだと実体化したオブジェクトに引き渡されるだけで 本の配列には全く関係ないと思うんだよね。 v2のアクセッサメソッドを定義する方法もあるだろうけれど、 クラスメソッドにしてみてもだめ?
707 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:24:44 ] double a[2][3]; a[1][0]=a[1][1]=a[1][2]=1.0; copyVector:a[1] To:a[0]; とすると、copyVector のところに、error: syntax error before 'To' と出てしまいます。
708 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:27:31 ] それはいったい何をやっているの? インスタンスメソッドだよね? ちゃんとオブジェクトに送ってるの?
709 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:30:28 ] +(void)copyVector:(double *)v1 To:(double *)v2 { v2[0] = v1[0]; v2[1] = v1[1]; v2[2] = v1[2]; } ということでしょうか? 結果は同じ様です。
710 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:34:28 ] [self copyVector:a[1] To a[0]]; でどう?
711 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:35:17 ] >>709 てかクラスでもインスタンスメソッドでも オブジェクトにメッセージをおくらないと・・・・・
712 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:40:35 ] copyVector:a[1] To:a[0]; ・・・・・・・・・・そりゃToの前にエラーが出るわな。
713 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:43:14 ] >>710 で解決した様です。この場合のself って何に当たるのでしょう?
714 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:46:15 ] 済みません解説をお願いしますう。>>712
715 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 07:47:15 ] >>714 すみません。 突っ込んどいて解説なしはダメですよね。
716 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 08:18:48 ] copyVector: (ラベルやね、ラベル!) a[1] (配列の要素になんか入れようってか!) (...さあ.代入コイ!代入!...) (ふじこ)To:a[0];
717 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 08:46:20 ] >>716 何といいますか、おっしゃる事がよく分からないのですが。。。
718 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:18:41 ] 解説をお願いする前に C と Obj-C の文法をおさらいしたほうがいいと思うんだな
719 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 15:41:56 ] self 知らずに Obj-C のプログラムが書けるわけが無いと思うんだが。
720 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 15:46:57 ] 最優秀Javaプログラマがよく作る グローバルスタティックメソッドライブラリークラス じゃないの?
721 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 18:46:28 ] スーパーサイヤ人にはなれるけど、 空を飛べないサイヤ人みたいだ。
722 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 01:42:16 ] 今おさらい中です。
723 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 02:38:06 ] >>711 が全て。 selfは自分自身だよ。
724 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 02:56:14 ] なんかやっと分かりつつあります。自分て言うのは、そのメソッドを持っているインスタンスということですね。
725 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 11:24:40 ] 人に聞く前に せめて教科書くらいは読んだ方がいいと思うんだよね
726 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 12:15:25 ] Obj-CよりC++勉強した方がいいよって、叔父さんに言われた(´・ω・`)
727 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:44:28 ] 叔父さんってどうせIT土方のクソドザだろ?? そんなには13インチのMacBookプレゼントしてやれ。
728 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:58:46 ] 両方勉強したって大した事でもない。
729 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 18:45:13 ] おすすめのObj-C入門書教えてけろ 「やさしいC」みたいなのがいいっす
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 特別な場合を除いて不要という形ですか、ありがとうございます。
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の弊害