1 名前:デフォルトの名無しさん [2009/04/15(水) 00:11:00 ] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) Objective-C [ObjC part:3]; ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/ Objective-C ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/ Objective-C ttp://pc5.2ch.net/tech/kako/990/990574267.html
2 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:11:50 ] *** プログラム技術板 *** 【マック】Macintoshプログラミング質問箱 ttp://pc11.2ch.net/test/read.cgi/tech/1113058054/ Mac OS Xでの開発環境はどれがイイ? ttp://pc11.2ch.net/test/read.cgi/tech/1163314891/ *** 新・mac板 *** Cocoaはさっぱり!!! version.12 ttp://pc11.2ch.net/test/read.cgi/mac/1231853172/ Macでプログラミング{9} ttp://pc11.2ch.net/test/read.cgi/mac/1216824430/ Xcode part7 ttp://pc11.2ch.net/test/read.cgi/mac/1218774554/ iPod touch/iPhone ネイティブアプリ製作 ver.10 ttp://pc11.2ch.net/test/read.cgi/mac/1238385226/
3 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:12:29 ] *** 本家 *** Objective-C 2.0 プログラミング言語 ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/ Introduction to The Objective-C 2.0 Programming Language ttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html そのほか英語 ttp://developer.apple.com/documentation/Cocoa/ObjectiveCLanguage-date.html *** 書籍 *** 荻原本 ttp://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-Objective-C-2-0-%E8%8D%BB%E5%8E%9F-%E5%89%9B%E5%BF%97/dp/4797346809/ref=sr_1_1?ie=UTF8&s=books&qid=1239721407&sr=1-1 HMDTダイナミック本 ttp://www.amazon.co.jp/Dynamic-Objective-C-%E6%9C%A8%E4%B8%8B-%E8%AA%A0/dp/4861006414/ref=sr_1_11?ie=UTF8&s=books&qid=1239721553&sr=1-11
4 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:48:05 ] 乙!でもどうでもいいが アマゾンのリンクは、 ttp://www.amazon.com/dp/数字 だけでいいんで、 来年ぐらいに次にスレたてする人はよろしく。 荻原本 www.amazon.co.jp/dp/4797346809 HMDT ダイナミック本 www.amazon.co.jp/dp/4861006414 ダイナミック Objective-C サイト journal.mycom.co.jp/column/objc/ Apple のランタイムのソースコード (10.5.6) www.opensource.apple.com/darwinsource/10.5.6/objc4-371.2/ 英語のサイトだけど Objective-C 入門 cocoadevcentral.com/d/learn_objectivec/ Objective-C Style 1, 2 (変数名のつけかた等) cocoadevcentral.com/articles/000082.php cocoadevcentral.com/articles/000083.php Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る mikeash.com/?page=pyblog/ C++ と Objective-C の文法の比較 ktd.club.fr/programmation/objective-c.php
5 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 14:26:33 ] ハムスターの Obj-C 講座もおもろい。偶然きのう更新されてた。 www.sealiesoftware.com/blog/archive/
6 名前:3 mailto:sage [2009/04/15(水) 23:38:19 ] >>4 >ttp://www.amazon.com/dp/数字 だけでいい 知らんかった。以後そうする
7 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 04:58:57 ] amazon.jp/dp/4797346809 amazon.jp/dp/4861006414 で良いよ、coもwwwも要らない
8 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 14:02:41 ] 短い URL かっこいい
9 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 18:35:08 ] じゃもうぜんぶTinyURLで。
10 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:19:18 ] あれはかっこわるい
11 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 10:24:27 ] Cのヘッダファイル#importしたら、idって名前のメンバがある構造体でエラーになった。 これはしょうがないのか…。
12 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 16:10:41 ] エラーにならんよ。
13 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 18:05:10 ] #import <objc/objc.h>
14 名前:デフォルトの名無しさん [2009/04/19(日) 22:09:48 ] Windowsで動く処理系ってありますか? 有ったら触って見たいです。
15 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 22:51:36 ] これかな... www.gnu.org/software/gnustep/experience/Windows.html 日本語ではあまり新しい資料はないかもしれん。とりあえず journal.mycom.co.jp/special/2004/gnu/006.html
16 名前:デフォルトの名無しさん [2009/04/19(日) 23:20:09 ] >>15 ありがとう御座います>< 早速試してみます^^
17 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 23:26:10 ] MinGW/GCCじゃだめ?
18 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 00:43:25 ] >>17 >>15 のリンク先は MinGW ベース。 他には、Yellow Box for Windows というのを Apple が昔作ってたから、 ebay とかで粘ってると手に入るかもしれません。 www.shawcomputing.net/resources/apple/os_pictures/yb2k/ Rhapsody DR2 もしくは WebObjects 4.5 というのに付いてきます。
19 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 01:23:36 ] Cocotron は?
20 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 01:32:35 ] Cocotron は XCode でのクロスコンパイルが前提の気がする... つかったことなくてサイトの説明を読んだだけなので何とも言えませんが。
21 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 02:27:54 ] >>20 俺も採用例FileMagnetのWinクライアントぐらいしか知らないな 用途によってはREALBasicとかも検討すべし>>14 ただ遊びたいなら話は別だが
22 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 02:55:55 ] >>21 >用途によってはREALBasicとかも検討すべし REALBasic は Objective-C ではないのでは???
23 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 10:30:20 ] >>22 WIn/Mac両対応のソフトウェアを作るという前提での話 どうももう一回読んでみると>>14 はただObjective-Cの処理系で遊びたかっただけのようだから的外れな指摘だな たしかLinux系にはgccでobjective-cのコンパイラは提供されていたような... 数度インストールオプションで見た覚えがある
24 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 10:42:47 ] 荻原本買って勉強中だけどこれが初プログラムだからどーにもな〜。 やり始めて2週間だからしゃーなか
25 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 15:58:31 ] 初プログラミングなら、荻原本でいきなりObjective-C叩くより、 楽しいCocoa辺りのコードを特に理解せず書いて動かして学んでいく方が進み早いんじゃないかな
26 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:59:56 ] Dynamic-ObjectiveC を勉強中です。IMP 呼び出しについて教えて下さい。 オブジェクトを返すようなメソッドはそのままのものが返ってきましたが、 値を返すようなメソッドの場合、どうやって返ってくるのですか? @interfae Bar: NSObject { double num; } @property(readwrite) double num; @end @implementation Bar @synthesize num; @end として、Bar のインスタンス hoge を作り、numを適当に設定し、 IMP numImp = [[Bar class] instanceMethodForSelector:@selector(num)]; id num = numImp(hoge, @selector(num)); としたところ、num には hoge が入っていました。method_copyReturnType() では、d が返ってくるのですが…よろしくお願いします。
27 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:16:26 ] ええと追記です。id だからオブジェクトを返すものしか駄目なのか、とも考えた のですが、double を試す前にBar の変数に char *name とした場合には、 設定したchar* が返って来たので、やってみた次第です。 int の場合にも設定した値が返ってきました。で、今floatでやってみたのですが、 double と同様、駄目でした。float なら値が返ってくる事を期待したのですが…
28 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:48:49 ] キャストしたらどうよ? double(*numImp)(id,SEL) = [Bar instanceMethodForSelector:@selector(num)]; double num = (*numImp)(hoge, @selector(num));
29 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:06:51 ] それが正解だよね IMP の定義は typedef id (*IMP)(id, SEL, ...); だから、id 以外を返す場合はキャストして使わないといけない。
30 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:16:19 ] >>28 できました!なるほどー、IMPをさらに関数ポインタにしてしまえば良いんですね。 勉強になりました、ありがとうございます。 あと>26の「num には hoge が入っていた」というのはたまたま入っていた だけのようでしたので訂正します(汗
31 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:26:59 ] >>29 ありがとうございます。キャストが必要だろうと思い、そのまま double value = (double) numImp(hoge, @selector(num)); とかやっていたので、コンパイラに怒られていたんです。Cそのものの経験が 無いのでよく分からずにやってました。関数ポインタのキャスト、ってのが 目から鱗でして (^^;;
32 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 14:35:51 ] >>25 楽しいCocoa買ってみます ありがと
33 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 17:11:46 ] KVC準拠を意識して組んでる人いる?
34 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:32:46 ] 普通に書いてればそうならない?
35 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:08:57 ] GUIならバインディング使うだろ バインディング使うにはKVCで書くだろ 普通に書いてりゃkvcで書くと思う
36 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:20:20 ] >>33 は他の言語からうつってきたばかりで、 つい getter を -(NSHage*)hoge でなくて -(NSHage*)getHoge とかいてしまうからそう思うんではなかろうか。
37 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:17:46 ] getだったら - (void)getHoge:(NSHoge *) とか言う形? 違和感有るけど
38 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 08:08:48 ] >>37 -(void)getHoge:(NSHoge**) でないと駄目だとおもう
39 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:03:12 ] Apple gcc で -fconstant-string-class オプションが期待道理動かないんだけどなぜでしょう? Linux で GNU の runtime 使ってると動くんですが… #import <objc/Object.h> #import <stdio.h> @interface MyString : Object { char *bytes; unsigned int numBytes; } - (const char *)cString; - (unsigned int)length; @end @implementation MyString - (const char *)cString { return bytes; } - (unsigned int)length { return numBytes; } @end int main(int argc, char* argv[]) { id s = @"Hello, World"; fprintf(stderr, "<%s:%p>\n", [s name], s); return 0; } % gcc -g -fconstant-string-class=MyString -o main main.m -lobjc main.m: In function ‘main’: main.m:19: error: cannot find reference tag for class ‘MyString’ make: *** [main] Error 1
40 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:04:51 ] Obj-C 2 だとこんなかんじになります。 #import <Foundation/Foundation.h> // copied from objc/runtime.h // because objc_class is opaque in Obj-C 2 struct objc_class_fake { Class isa; Class super_class; const char *name; long version; long info; long instance_size; struct objc_ivar_list *ivars; struct objc_method_list **methodLists; struct objc_cache *cache; struct objc_protocol_list *protocols; } ; @interface MyString : NSObject { char *bytes; unsigned int numBytes; } - (const char *)cString; - (unsigned int)length; @end struct objc_class_fake _MyStringClassReference; つづく
41 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:05:37 ] @implementation MyString +(void)load { memcpy(&_MyStringClassReference,self,sizeof(_MyStringClassReference)); } - (const char *)cString { return bytes; } - (unsigned int)length { return numBytes; } @end int main(int argc, char* argv[]) { [[NSAutoreleasePool alloc] init]; id s = @"Hello, World"; fprintf(stderr, "<%s:%s>¥n", [[[s class] description] UTF8String],[s cString]); return 0; }
42 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:08:43 ] コンパイルは gcc -fno-constant-cfstrings -fconstant-string-class=MyString hogehoge.m -framework Foundation とかしてください。 ポイントは、Apple runtime だと、 1. no-constant-cfstring で CFString の特殊処理をやめさせてやる 2. constant-string-class=HogeString だと、isa ポインタが struct objc_class _HogeStringClassReference というシンボルを指します。 だからそれを初期化してやらないといけないです。 lists.apple.com/archives/objc-language/2006/Jan/msg00013.html を参照してください。
43 名前:39 mailto:sage [2009/04/28(火) 12:28:19 ] >>42 Thx! 試してみます.
44 名前:39 mailto:sage [2009/04/28(火) 18:26:09 ] #import <objc/Object.h> #import <stdio.h> #import <string.h> #if (defined __APPLE__) && (defined __MACH__) # import <objc/objc-runtime.h> struct objc_class _MyStringClassReference; #endif @interface MyString : Object { char *bytes; unsigned int numBytes; } - (const char *)cString; - (unsigned int)length; @end @implementation MyString #if (defined __APPLE__) && (defined __MACH__) + load { memcpy(&_MyStringClassReference, self, sizeof(_MyStringClassReference)); } #endif - (const char *)cString { return bytes; } - (unsigned int)length { return numBytes; } @end int main(int argc, char* argv[]) { id s = @"Hello, World"; fprintf(stderr, "<%s:%p> : \"%s\"\n", [s name], s, [s cString]); return 0; }
45 名前:39 mailto:sage [2009/04/28(火) 18:28:24 ] Apple % gcc -fno-constant-cfstrings -fconstant-string-class=MyString -o main main.m -lobjc GNU % gcc -fconstant-string-class=MyString -o main main.m -lobjc って感じで両方でコンパイル成功して期待した通り動いた.ありがとう >>42
46 名前:デフォルトの名無しさん [2009/05/13(水) 08:16:25 ] オブジェクト自分で作ったら、リリースせんといかんと思うけど、 そのとき、例えば、AppleのCocoaだと、 NSObject obj = [[NSObject alloc] init]; [obj autorelease]; って出来るよね? このautoreleaseって、要するにGCみたいなもんなの?
47 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 11:26:33 ] ちがう。autorelease は NSAutoreleasePool に登録する際に使う。 NSAutoreleasePool は drain/release を受けたときに登録してある インスタンス全てに release を送るだけ。受けなければそのまま放置。 とりあえず、メモリ管理プログラミングガイドを理解しよう。 ttp://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html それでも分からないなら、新Mac板 Cocoaはさっぱりスレ の方へどぞ。 pc11.2ch.net/test/read.cgi/mac/1241407525/
48 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 13:50:54 ] >>46 C言語の自動変数に近い。イベントループ開始でAutoreleasePoolが確保 されて、autoreleaseにするとそこに登録される。イベントループ終了で AutoreleasePoolが解放されて、autoreleaseで登録したオブジェクトは 全てreleaseされる。だから自分でreleaseの手間が省ける。 GCはどこからも参照されていないオブジェクトを見つけて勝手に解放する 機能
49 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 20:21:28 ] メモリ管理プログラミングガイドは日本語版もあるよ developer.apple.com/jp/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
50 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 20:43:38 ] あ、日本語のはログインしないと見れないのかな、ごめん
51 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 23:51:15 ] Xcode で、Objective-c (*.m)のクラスから 別の C++(*.cpp) ファイルの グローバル関数を呼ぼうとすると、下記のようなエラーが出てしまいます。 Linking xxx/xxx -[xxx xxx:] in xxx.o Objective-Cのクラスから、C++のグローバル関数を呼べなかったようです。 *.m ファイル内に作ったローカル関数は呼べたのだけど・・・
52 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 00:18:26 ] extern "C"
53 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 01:42:10 ] トン
54 名前:デフォルトの名無しさん [2009/05/29(金) 19:54:09 ] class Test { Test(){} virtual ~Test(){} }; これコンパイルすると、 error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test' ってエラー出ます 何が悪いんですか?
55 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:17:13 ] うちでは問題無かったよ。セミコロン付けろゴルァって事かな? % cat foo.cpp class Test { Test(){} virtual ~Test(){} }; % g++ -c foo.cpp % ls foo.o foo.o
56 名前:デフォルトの名無しさん [2009/06/01(月) 15:46:54 ] >>55 いろいろ試しましたが、コンパイル通りません… 自分はiPhoneのOpenGL ESベースのアプリでやっているのですが、それがまずいんでしょうか プロジェクト作成して、Other SourcesフォルダにTest.hを作成して、>>54 のコードを記述し、それをmain.mに#importしてるのですが、エラーになります .mmで定義するようにしないといけないのかなと思い、Test.mmを作成してコンストラクタ・デストラクタの定義をそちらに移してもだめでした できればコンパイルを通すまでどのような手順で行っているのか教えてください
57 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:13:50 ] before 'Test' だから、クラス定義に問題があるんじゃなくて、 その前、恐らく includeファイル内などに問題がありそう。
58 名前:デフォルトの名無しさん [2009/06/01(月) 16:33:57 ] ヘッダーファイルの「情報を見る」とファイルタイプが.h,.cになっていたので、.h.cppに変えました。 が、それでもダメでした。これでいけると思ったんだけどなあ。 この問題ってXcodeスレで聞いた方がいいんですかね?
59 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 17:25:52 ] 呼び出し側のmain.mの「情報を見る」でファイルタイプを.c,.objcから.cpp,.objcppに変えたら動きました。 ここら辺説明してるサイトが全然見あたらなかったですよ… 2chのXcodeスレでかろうじて類似の質問があって助かった
60 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:05:51 ] System.Generic.List<T>に相当する 記述方式ってないのでしょうか 毎回毎回別々のオブジェクト書くの面倒です 助けてください
61 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:16:13 ] >>60 NSArray に突っ込んで、型は気にしないというのが Cocoa 流です。 もしくは Objective-C++ にしてSTL の list を使えばいいと思いますが その場合は retain/release に気をつけてください。 >>59 それはだって Obj-C の問題というよりは、C, C++ では 当然の話だから... いつもはどんな言語で開発してるんですか? C, C++, Obj-C の .h ファイルは、コンパイルの際に どの言語からインクルードされるかわからないので、 XCode 等 IDE で設定するにしても .h に言語を設定しても仕方が無いです。 .h に C++ のクラスがあるなら、 インクルードする側を (Obj-)C++ モードにしないと そりゃあコンパイルが詰まりますよ。
62 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:43:19 ] >>61 それなんてJavaですかw iPhoneでもObjective-C++できるのですか
63 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:44:52 ] C++のテンプレートはオブジェクト指向的じゃないとよく批判されるがな
64 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:46:14 ] >>62 iPhone でも Obj-C++ できますよ というか main.m を cpp モードにした時点で Obj-C++ になってます
65 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:52:52 ] >>59 まさかgccでコンパイルしてたとか? g++じゃなくて。
66 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:07:28 ] >>65 そういうことだったんじゃないの。XCode (Mac の IDE) からだと ファイルの言語設定でコンパイラが変わるので。 まあ確かにそのあたりはやっている人には当たり前すぎて、 解説書にもつい書き忘れてしまう... ということかも知れない
67 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:24:34 ] GUI以外の部分で コールバックってどうやって実現すればいいですかね?
68 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:27:45 ] >>67 それだけで貴女以外のひとがなにが聞きたいかわかると本当におもってますか? 僕らはエスパーじゃないよ。
69 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:29:58 ] ネットワーク処理をコールバックで処理したいの
70 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:33:15 ] さっぱり見えてこないんだけど、Objective-Cは関係あるの?
71 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:39:50 ] >>70 C#とC++ならコールバックあるでしょ なんでObjective-Cには無いの? 元のソース移植できないじゃん
72 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:51:43 ] メソッドのポインタ取り出したいってこと?
73 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:03:39 ] >>71 何で無いと思うの? 無い訳無いじゃん。
74 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:09:42 ] じゃあこれと等価の記述を教えていただけないですか? double g( double x, double (*f)(double) )
75 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:11:28 ] それでいいじゃんw
76 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:21:34 ] >>67 関数ポインタみたいなのが欲しいんでしょ。 developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/3objc_language_overview/chapter_7_section_6.html
77 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:27:49 ] 基本は>>76 で、遅いと思ったらこっち。 journal.mycom.co.jp/column/objc/022/index.html でもネットワーク処理なら C で kqueue とか libevent とか使ったら良いのに。
78 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:32:51 ] - (double)g:(double)x callback:(double(*)(double))f; こういう事かな?
79 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:01:43 ] >>71 いや、C++ のソースがあるなら Obj-C++ つかえば なにひとつ移植しなくて済むでしょ。何を考えているんだ?アホ?
80 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:16:49 ] >>74 それそのまんまで何が問題なんだ?w
81 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:54:09 ] わかりにくいね
82 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:58:03 ] typedefすればいいじゃん。
83 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:58:09 ] Obj-Cって型が解らなくなった場合に チェックする方法ってありますか?
84 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:41:19 ] 正確には無いと思うよ。
85 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:24:04 ] >>83 [obj class] developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/class wwwa.dcns.ne.jp/~nito/OSPT/ObjcOthers.html
86 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:43:55 ] >>83 その型ってのは、変数の型? それとも、オブジェクトのクラス? Objective-Cは変数に型がない(idでかまわない)言語なだけですよ(プリミティブ型は除きますが) 型キャストを許す言語であれば、(変数の)型が分からなくなる事はありえるのでは? 変数の型がどうであれ、オブジェクトが自分自身の型/クラス、もしくは受けられるメッセージを知ってれば問題ないって考え方です
87 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:51:14 ] オブジェクトの型が id なんじゃないの? プリミティブがそれぞれの型を持っているのと同じで。
88 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 04:23:39 ] >>87 idは構造体のポインタのtypedefだからそうとも言えるけど、それは変数に型のあるCという言語での実装の話しで...なんというか微妙な感じもする。 idには特別意味もないし、JavaとかC++の縛りのきつい「型/クラス」と、idは別の概念、別のくくりにした方がいいんではないかと。
89 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 22:58:35 ] 何なのこの投げっぱなし質問
90 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 00:15:09 ] interface作ったときにメモリ開放メソッドは どのように記述するのが一般的なのでしょうか
91 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 02:39:56 ] @interface ... @end内にデストラクタをどう宣言するかという話かな? 普通はNSObjectで宣言されているdeallocメソッドをオーバーライドします。 (だから@interfaceにはとくに何も書きません。) メモリ管理については developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html をどうぞ。
92 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 20:48:46 ] 独自にObjを定義したとして [[Obj alloc] initHoge : arg]; allocと組み合わせて利用するinitHogeを定義するとき 定義は以下が一般的なのでしょうか? - (id) initHoge : (NSString *) val;
93 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 22:03:25 ] XmlTextWriterみたいなクラスってないですか?
94 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:24:29 ] >>93 Obj-C スレにきて、返事をする人が .NET を知っていると仮定するとはいい度胸をしている。読み手のことを考えて、 「.NET ならこれこれができるこれこれというクラスが あるんですけど、(ドキュメントは http:// ... に ...)」とか 質問の際に書けんものかね? とりあえず NSXMLDocument をつかえば規格に準拠した XML データは つくれますよ。かなりメソッド名が冗長だけど。 手で文字列をつなぎ合わせて XML にするよりは断然いいです。 あと、これ以上は Mac 板の iPhone プログラミングスレか Cocoa スレに行ったほうがいいとおもいます。ここは一応 Obj-C 言語に特化した 過疎スレなので。
95 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 01:58:33 ] >>93 みたいな手合いは相手する必要ないよ。
96 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:23:27 ] NSMutableDictionaryにオブジェクトをつっこむときに NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; Hoge *hoge = [[Hoge alloc] init]; [dic setObject:hoge forKey:@"hoge"]; とやるのと [dic setObject:[[Hoge alloc] init] forKey:@"hoge"]; とでは、後者はメモリリークするのでしょうか?
97 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:19:50 ] 何処が違うのかさっぱりわからん
98 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:47:19 ] >[dic setObject:[[Hoge alloc] init] forKey:@"hoge"]; て書いたら、 setObject:に渡したHogeインスタンスを後でreleaseする手段が無くなるのでは 上の書き方なら [hoge release]て書けるけど。
99 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 02:47:32 ] >>98 なあにobjectForKey:@"hoge"で取り出してreleaseすればいいさ
100 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 07:22:05 ] [dic setObject:[[[Hoge alloc] init] autorelease] forKey:@"hoge"]; じゃないとだめ