1 名前:デフォルトの名無しさん mailto:sage [05/01/29 16:18:12 ] ほんとプログラマにとってはMacって 本当に興味が無いOSだよねw Macでの標準的な言語であるObjective Cのスレすら無いし。 過去にはあったんだろうけど。
730 名前:デフォルトの名無しさん [2006/09/28(木) 11:05:31 ] OCUnitでUnitTestをしているのですが、 「オブジェクトがdealloc済であることをチェックする」にはどうしたら良いでしょうか? dealloc 済のオブジェクトなので、何かメッセージを送ると落ちてしまいますし、 かといって、nil になっているわけでもないので、STAssertNil によるチェックも できません。
731 名前:デフォルトの名無しさん [2006/09/29(金) 00:28:56 ] >>728 自分も試しに、以前作った自作CocoaアプリのMalloc Debugやってみたら、 ウィンドウアクティブにするたびにリークが増えてくorz 一番最初はノーリーク。一回ウィンドウをアクティブにして、Updateすると、 40 bytes in 1 nodeのリーク。 症状全く同じだわ。 もしかして、アクティブにするたびに40bytesずつ増えてったりしない?? 40 bytes in 1 node 80 bytes in 2 nodes 120 bytes in 3 nodes 160 bytes in 4 nodes みたいに… どなたかご存知の方いましたら、ご教示お願いします。
732 名前:731 [2006/09/29(金) 01:33:14 ] まさかと思い、Apple純正のCocoaアプリ「計算機」でMallocDebug やってみたら、なんと同じリークが…。ウィンドウアクティブにする たびにリークが同じく40bytesずつ増えてく。 これって仕様なの??それとも他の理由が?? 気にしなくていいということですかね? もし本当にリークしてるなら、ウィンドウをアクティブにするのは 極力控えた方がいいってことなのかな〜(^^;)
733 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/09/29(金) 02:04:09 ] どう見てもココアのバグです。本当にありがとうございました。
734 名前:731 [2006/09/29(金) 02:46:52 ] >>733 やっぱそうなんですかね。 Appleは自分のCocoaアプリをMallocDebugにかけてないとは思えないですが…。 本当にCocoaのバグなら残念です。
735 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 04:27:46 ] 設計が古いからしょうがないですね。.NETなら原理的にありませんよ
736 名前:728 [2006/09/29(金) 09:45:54 ] Safariをleaksで確認してて気がついたんだけど、リークしてるメモリの内容が... 英字入力状態: Leak: 0x0581ad70 size=48 instance of 'NSCFString' 0xa07b9674 0x0001078c 0x1b636f6d 0x2e617070 .{.t.....com.app 0x6c652e69 0x6e707574 0x6d657468 0x6f642e52 le.inputmethod.R 0x6f6d616e 0x00000000 0x00000000 0x00000003 oman............ ひらがな入力状態: Leak: 0x004a8d30 size=48 instance of 'NSCFString' 0xa07b9674 0x0001078c 0x1e636f6d 0x2e617070 .{.t.....com.app 0x6c652e69 0x6e707574 0x6d657468 0x6f642e4a le.inputmethod.J 0x6170616e 0x65736500 0x00000000 0x00000003 apanese......... カタカナ入力状態: Leak: 0x0584e340 size=64 instance of 'NSCFString' 0xa07b9674 0x0001078c 0x27636f6d 0x2e617070 .{.t....'com.app 0x6c652e69 0x6e707574 0x6d657468 0x6f642e4a le.inputmethod.J 0x6170616e 0x6573652e 0x4b617461 0x6b616e61 apanese.Katakana 0x00610076 0x006f0072 0x0076006f 0x00726525 .a.v.o.r.v.o.re% 全角英字入力状態: Leak: 0x0574b260 size=64 instance of 'NSCFString' 0xa07b9674 0x0001078c 0x2d636f6d 0x2e617070 .{.t....-com.app 0x6c652e69 0x6e707574 0x6d657468 0x6f642e4a le.inputmethod.J 0x6170616e 0x6573652e 0x46756c6c 0x57696474 apanese.FullWidt 0x68526f6d 0x616e0072 0x00660061 0x0075006c hRoman.r.f.a.u.l 英字とひらがなの場合はウィンドウをアクティブにするたびにリークが増えますが、 カタカナと全角英字は増えません。やっぱinputmethodのバグですかね。
737 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 10:23:37 ] >>735 Objective-C 2.0でガベージコレクションが導入されたら、 Cocoaも原理上リークがなくなるはずだ。
738 名前:728 [2006/09/29(金) 10:24:14 ] とりあえずバグレポート提出してきたです。下手な英語で書いたけど、 どこか日本語で受け付けてくれるところはないんでしょうかね。
739 名前:731 mailto:sage [2006/09/29(金) 10:36:08 ] >>738 おぉ、助かります!!早く解決されることを祈るばかりです。 できれば、Cocoaのバグではなくて、MallocDebugのバグであってほしいです。
740 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 21:16:08 ] >>730 とりあえず思いついた方法 ・ひとつ余分なretainをして、retainCount == 1となることを検証 ・MallocScribble環境変数を設定して、idのサイズ分0x55になっていることを検証
741 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 21:20:21 ] >>740 そもそもretainできない件
742 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 21:31:30 ] -dealloc の中で「dealloc されました」って通知すればいいんでないの
743 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 22:00:28 ] >>742 確かに。自作クラスだったら-deallocをオーバーライドして通知のためのコード 入れればいいもんね。
744 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 22:26:27 ] Java出身ですが、objcに興味津々 てかcocoaとかのライブラリーに興味あり 今とりあえずCを勉強中。preprocessorってコード読みにくい。。。 で、Cをひとまず覚えたらobjcの本とかPDFとか何を読むのがおすすめですか? 英語でかまいません。むしろ英語がよい。
745 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 22:45:17 ] Apple のサイトに一杯あります。 あと、Cをそんなに勉強する必要はないと思う。 developer.apple.com/documentation/Cocoa/ から好きなだけ読め。 言語自体は developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ それをさっと眺めたら developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/ で実際にappをかいてみて、そのあと developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/ で基本を学ぶのがいいと思う
746 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 22:54:10 ] >>744 自作のCでやるクラス・ライブラリーは完成したんですか?
747 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:17:36 ] >>746 すいません。よくわかりません。 >>745 サンクスです。本とかよりappleのpdfで十分ってことですね。 とりあえずcは基礎だけは勉強しておこうと思ってます。 structすらまだ学んでないので。。。
748 名前:744 mailto:sage [2006/10/04(水) 01:31:01 ] cocoaのこの辺りがいけてるとか、充実してるとかってありますか? CやJavaに比べて ぱっとみCoreAudio, CoreImageは凄そうと思いました
749 名前:デフォルトの名無しさん [2006/10/04(水) 02:39:43 ] Cocoaっつーか、IBが面白い。
750 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 09:28:13 ] Objective-C のいいところは、C++/Java とちがって 非常にダイナミックなところでしょう。 binding 多用しだすともう殆どスクリプト言語状態だと思います。
751 名前:745 mailto:sage [2006/10/04(水) 09:30:31 ] >サンクスです。本とかよりappleのpdfで十分ってことですね。 充分かどうかは... 本もいいのがいろいろあるよ。 ヒレガスとか。 www.cocoadev.com/index.pl?CocoaBooks に書評があるのでみてみてね。
752 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 20:57:38 ] >>751 ひれがす?
753 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 06:36:37 ] >>744 はCocoaとObjective-Cを混同している予感
754 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 08:20:41 ] 混同してるようには見えんが
755 名前:744 [2006/10/05(木) 12:38:03 ] >>753 Cocoaはobjcのライブラリーでしょ? >>751 ありがとうございます。参考にします。
756 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/10/06(金) 06:37:45 ] Obj-C自体実質MacOS X専用言語だからなー
757 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 11:40:45 ] はつみみです
758 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 14:38:05 ] はなしし?
759 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 15:35:07 ] Mr.ダンゴリオン・・・あなたは一体何者なんですか?
760 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 15:37:17 ] お団子ちゃんの退化系
761 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 15:46:14 ] ウソップとそげキングみたいなものでつか?
762 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 00:37:38 ] ってか Mac 以外の環境で Objective-C 触ってる物好きなヤツっているの??
763 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 00:39:14 ] いまだにOpenStep使ってる椰子とか
764 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 01:16:13 ] 白豚さんとか
765 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 01:52:05 ] GNUstepではだめ?Windows環境で学びたいんだが... つーわけで、とりあえずcygwinでApacheモジュール作ってみた
766 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 10:18:53 ] Objective-Cのソースコード整形ツールってあるん? 人から渡されたコード読んでるけど汚くってかなわん。 両刀使いだからWinでもMac用でもかまへん。
767 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:11:40 ] ObjC 2.0でますますCocoa専用言語な印象が強まったんですが。
768 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 21:41:54 ] GNUstepの中の人たちが頑張ってくれるだろう。 もしくは中の人になれ。
769 名前:デフォルトの名無しさん [2006/10/10(火) 01:00:55 ] >>766 汚いソースの例が見たい
770 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 01:53:17 ] WinとMacで両刀使いか ならばMonaも使ってると三所責めだな
771 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 20:42:55 ] ObjCをコンパイルできる無料のコンパイラってgcc以外にある?
772 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 00:09:03 ] POC 使えば、原理的にはどんな C Compiler でもコンパイル出来るはず。 users.pandora.be/stes/compiler.html
773 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 13:31:16 ] >>772 ちょっくら読んでみたけど、これってObjc -> Cに変換するプリプロセッサ?
774 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 14:08:58 ] うn、中々面白いよ、でも癖があったりするからちょっと困る
775 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 22:38:16 ] macでプログラミングをしてみたいのです mac関連のプログラミング本はほとんどObjCで書かれていますが この板ではObjCはあまり人気がないように見えます。 みなさんはぶっちゃけどの言語をお勧めしますか
776 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 22:44:33 ] ぶっちゃけObj-C
777 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 23:21:46 ] ObjCスレで聞いてObjC以外の答えが返ってくると思うのかい?
778 名前:デフォルトの名無しさん [2006/10/17(火) 00:30:34 ] Obj-C最高! とまで言わないがかなりイイ!
779 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 06:51:47 ] Macでのプログラミングの話題は新Mac板の方が活発。
780 名前:デフォルトの名無しさん [2006/10/17(火) 10:12:35 ] >>777 このスレできいて、違う言語があがればそれこそObjCを見限ろうと 思ってました
781 名前:デフォルトの名無しさん [2006/10/17(火) 10:40:03 ] う〜ん、言語の善し悪しというよりはライブラリの善し悪し、そのライブラリを使うためのObjC、かなぁ? Cは好きだけどCarbon onlyで書こうとは思わんし、Cocoa-javaも付け焼き刃の印象しかない WebObjectsみたいに気合いが入ってなさそうだし>>Cocoa-Java
782 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 11:41:21 ] 見限るとか見限らないとか、そんな大層な問題じゃないような… 気になったら遊んでみればいいし、飽きたら忘れれば良い
783 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 13:23:53 ] というか ObjC は C とオブジェクト指向を知ってたら文法は屁でもない。 C++ 知ってたらとりあえず一日でだいたい使えるようになる。 Cocoa の API をつかむのは案外時間いるかもだけれども。
784 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 13:38:36 ] ObjC→C++はどうでつか?
785 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 14:40:34 ] C++ はとんでもない機能が沢山あるので、そこまでやりたければじかんがかかるでせう
786 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 15:06:24 ] >>781 WebObjectsも気合いは入ってない
787 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 15:53:38 ] ていうか Cocoa-Java はとうとう deprecate された
788 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 17:31:08 ] もうだめぽ
789 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/10/17(火) 18:31:34 ] Cocoa-Ruby まじでおすすめ
790 名前:-○◎○ mailto:sage [2006/10/17(火) 19:01:04 ] この道を行けばどうなるものか、危ぶむなかれ。 危ぶめば道はなし。踏み出せばその一足が道となる。 迷わず行けよ。行けばわかる ありがとう、ダンゴリオンさん Cocoa-Ruby でいってみます
791 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 22:33:56 ] ちなみに RubyCocoa だと思ふ... あと、RubyCocoa は Objective-C+Cocoa をやってから やっぱスクリプトがいいや〜、と移行するものであって それではじめるものではないと思うけどどうでせう。 Obj-C 有る程度わかってないと Cocoa のドキュメント読めないでそ。
792 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:58:29 ] Smalltalk、Objective-C、Ruby メッセージ指向なオブジェクト指向言語の方がCocoa向きだよね
793 名前:デフォルトの名無しさん [2006/10/22(日) 15:02:51 ] >>792 >メッセージ指向 なんだそれ?
794 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 15:06:33 ] >>>792 Ruby は違うでしょ。単に動的なだけ。
795 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:38:38 ] >>793 アラン・ケイのオブジェクト指向。メッセージングという考え方を表現や問題解決の中心に据える。 対して、C++、Eifflel、Java などが立脚しているのは「クラス指向」なビアルネ・ストラウストラップの オブジェクト指向。抽象データ型を(Simulaの)クラスという機能を用いて実現するという考え方。 >>792 ,794 Ruby のポリシーは、「いろんな言語のいいとこどり」なので、オブジェクト指向についても どっちつかず。
796 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/10/22(日) 20:43:12 ] メッセージ指向っていえばWin32のウィンドウクラスの考え方がそうだ 汚いが。
797 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 03:35:31 ] caseの化け物のことか
798 名前:デフォルトの名無しさん [2006/10/23(月) 07:08:43 ] >>795 解説アリガォ。 結局動的か静的かになるんだろうけど、どちらもオブジェクト指向つーのは分かりづらいな。 オブジェクト指向メッセージ指向? オブジェクト指向クラス指向? 指向指向うるさいなw
799 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 09:51:02 ] メッセージ指向とクラス指向って排他なの? あとクラス指向って本当にStroustrupがベースなの?
800 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 21:03:11 ] >>798 ケイのオブジェクト指向、ストラウストラップのオブジェクト指向でおk 動的か静的か…のくくりだと語弊があるかも。 ケイは静的型チェックを否定しているわけじゃなく、ストレスなしに使える 静的型チェック機構の存在を知らない…と言っているだけだし。 >>799 排他ではない。けれど、前提となるもの、視点が違うから適所でうまく切り替えるべき。 たとえば、ストラウストラップの…は抽象データ型に軸足をおいているから、 クラスやオブジェクトの中身の設計や見せ方に重きを置くけれど、ケイの…は そういうことには頓着しない、とか。 別の例では、ストラウストラップの…は基本データ型との混在を許すが、ケイの…では論外、とか。 抽象データ型を SIMULA のクラスを使って…というアイデアは、ストラウストラップが C++ の前身である C with Classes で試したのが最初。メイヤーは、C++ にあれこれ いちゃもんを付けたり、ストラウストラップの主張を黙殺したりするけど、言っていることは ほぼ、ストラウストラップ+α(契約によるプログラミング)の類で、新機軸を打ち出しているわけではない。 まあ、ストラウストラップ自身は「クラス指向」という言葉を使っているわけではないので、 (彼は、「抽象データ型のスーパーセット」、「継承によるプログラミング」と称している) 799が疑問を呈しているその「クラス指向」がなにかにもよるけれど…。いずれにせよ、 よく言われる「カプセル化・継承・多態性」とかのオブジェクト指向は、ストラウストラップので、 ケイのじゃない。
801 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 01:24:11 ] >>800 ん、そうだっけ? Smalltalk78の時点で継承という概念は導入されているし、メッセージを飛ばすSmalltalkはそもそも多態性だろう。 カプセル化については、オブジェクトを作るという行為そのものがカプセル化ではないのか。
802 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 01:49:39 ] カプセル化はアクセス制御出来ないとダメなんじゃないの。 クラス指向とオブジェクト指向は、何を本質とするかであって、 単にマッピング出来るかどうかの問題じゃないんじゃないかな。
803 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 02:03:45 ] >>801 いや。それは Smalltalk がその三点を満たしているかと問われれば、たしかにそうなるけど…。 でも実際のところ、ケイは彼のオブジェクト指向において、そういうことは言っていないし、目指してもいない。 本気でそう(「カプセル化、継承、多態性」がケイのオブジェクト指向においても要件である…) と信じているなら、下のにひとおとり目をとおしてから出直してきてくれると助かる。 www.purl.org/stefan_ram/pub/doc_kay_oop_en lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html もちろん、こうしたケイの意向があったとしても、Smalltalk ユーザーがそれを無視して、 ストラウストラップのオブジェクト指向を(部分的ながらも) Smalltalk を用いて実践したいと思ったとしても、 それを妨げるものは何もないわけだけれども…。 たとえば、この人なんか Smalltalker として有名だけど、典型的なストラウストラップの オブジェクト指向実践者(の、わりに C++ には批判的なのが笑える)。 www.sra.co.jp/people/aoki/IntroductionToOOAOOD/chapter1/Chapter1.htm
804 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 02:20:10 ] >>802 ダメってことはない。なぜなら、カプセル化、継承、多態性というのは、Smalltalk にも 当てはまるようにデフォルメされているから。Smalltalker はケイをないがしろにした上に、 ストラウストラップの考えも都合よく骨抜きにしてしまった。じつに傲慢な奴らだ。w ただ、802 のいうことは当たらずとも遠からずで、ストラウストラップが要件としてあげた ものは、抽象データ型、継承、仮想関数を用いた動的性…に加えて、静的型チェック、 多重継承、アクセス制御…なので、これにはちゃんと含まれている。 portal.acm.org/citation.cfm?id=679041 www.research.att.com/~bs/whatis.pdf (上の '90 改訂版。内容はほぼ同じ) だから、真にストラウストラップのオブジェクト指向を実践するには、ほんとうは、 Smalltalk ではダメ(だからデフォルメして対応せざるをえなかったわけだけれども…)。
805 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 13:45:01 ] Smalltalkの多態は継承ツリーがどうこうという話ではなく、 呼ぶメソッドを実装されてるか、という1点にかかっているあたりクラス指向 というよりメッセージ指向な感じがするわけだけど、 Simula の末裔の C++ が template で似たようなスタイルを実現している(しかも それが標準ライブラリとして広く使われている)あたりとか面白いですよね。
806 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 22:27:12 ] gccがこんなエラー吐いてくれるぜwwww In file included from linking.m:28: objc/Object.h:38: error: 構文解析エラー before '{' token objc/Object.h:43: fatal error: method definition not in class context
807 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 22:42:49 ] ただ単にObject.hが壊れてるだけじゃね?
808 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 20:28:49 ] developer.apple.com/jp/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/GCC40PortingReleaseNotes.pdf の32ページに、 Objective Cでは、インスタンス変数にデフォルトで@protectedというラベルが付きます。GCC 4.0 では、これを明示的に警告するようになりました。また、将来のコンパイラではこれをエラーとし て取り扱います。この問題を修正するには、Objective-Cインターフェイスでインスタンス変数のス コープを明示的に指定してください。 ってあるんだけど、これってインスタンス変数を定義する時に今までは省略していた@protectedを書かなければいけなくなるってこと?
809 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:55:46 ] デフォルトで~っていうのは、書かなくても @protected 扱いになるということだと思われ エラー/警告が出るのは、他の class からインスタンス変数を @public として操作した場合の話じゃないかな
810 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:03:19 ] 220度くらいズレてる気がする
811 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:09:34 ] 適当な事を行ってすいませんでした m(__)m
812 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:41:11 ] >>808 いつの間にか翻訳、英語版に追いついてるな。 ObjC 2.0でまた置いて行かれそうだが。
813 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:24:57 ] インスタンスメソッドから、インスタンス変数と同名のグローバル変数へアクセスすることはできないのでしょうか? 早い話、 グローバル変数 const int foo = 100; - (id)init { [super init]; self->foo = foo; return self; } 上記のような感じでグローバル変数でインスタンス変数を初期化したいのです。 何か良い方法は無い物でしょうか?
814 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:40:51 ] そのことやるくらいなら、マクロで初期値設定した方がいい
815 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:49:14 ] すみません、正確には変数じゃなくて配列なんです。 元々はC++のソースで、namespaceで対応されている部分なのですが……。 やはり同名のグローバル変数にはアクセス出来ないのでしょうか?
816 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 04:25:59 ] static int global_foo() { return foo; }
817 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 04:30:18 ] Objective-C++ にして、普通にnamespace::varじゃいかんの? 手元で確かめずに言ってすまんけど。
818 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 20:16:00 ] >>817 なるほど、Objective-C++という逃げ道がありましたね……。 何の問題も無くクリア出来ました。ありがとうございました。
819 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 09:26:41 ] >>813 Objective-C++ じゃない場合でも以下でいけるんじゃね? const int foo = 100; static int getFoo(){ return foo; } - init{ self->attr = getFoo(); return self; }
820 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 12:48:51 ] こんなのがあったべ。 www.informit.com/articles/article.asp?p=665128&seqNum=3&rl=1 GCC のテストスートにObjC2.0のサンプルコードがあるらしい gcc.gnu.org/viewcvs/branches/apple/trunk/gcc/testsuite/objc.dg/
821 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 17:06:10 ] がー。 Windowsで使えるObjCコンパイラってないの?Cygwin+gccは面倒い。
822 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 20:38:03 ] つMinGW
823 名前:デフォルトの名無しさん [2006/11/15(水) 14:48:56 ] >820 クロージャが無いって明言されてるorz
824 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 19:08:38 ] ObjCって今でもプリプロセス段階でCに変換されてるの?
825 名前:デフォルトの名無しさん [2006/11/15(水) 21:46:05 ] してないでしょ、多分>>プリプロセスでC変換 もししてたらインテルのコンパイラも使えるの?
826 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 21:56:07 ] GCCとかではCに変換したりせずにそのままコンパイルしてるはずだけど、 Cに変換するプリプロセッサも出回ってるからそれ使えばIntelのC/C++ Compilerも使えるかと。
827 名前:デフォルトの名無しさん [2006/11/15(水) 22:05:50 ] クロージャー無いのか、残念だ Smalltalkでdo:メソッド見たときは感動したんだよな
828 名前:デフォルトの名無しさん [2006/11/15(水) 22:19:07 ] ifTrue:メソッドとかやりすぎw>>SmallTalk
829 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 22:33:37 ] 確かにw でも至るところにデザインパターンを見ることができて面白いよね Booleanクラスに何もしないifTrue:とifFalse:を定義して TrueクラスのifTrue:がクロージャーを評価し、 FalseクラスのifFalse:がクロージャーを評価する ここまでObjective-Cに求めるつもりはないけど クロージャーを導入するとどうしてもよりSmalltalk化しちゃいそうだね
830 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 23:39:48 ] >>828 アラン・ケイもそんなふうに言っているよね。彼の手を離れてからずいぶんとLISP化しちゃったから。