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
2 名前:関連スレ mailto:sage [2007/08/08(水) 12:33:50 ] *** プログラム技術板 *** 【マック】Macintoshプログラミング質問箱 pc11.2ch.net/test/read.cgi/tech/1113058054/ Mac OS Xでの開発環境はどれがイイ? pc11.2ch.net/test/read.cgi/tech/1163314891/ Macは難しすぎる pc11.2ch.net/test/read.cgi/tech/1095818624/ *** 新・mac板 *** Cocoaはさっぱり!!! version.8 pc11.2ch.net/test/read.cgi/mac/1179498292/ Macでプログラミング{6} pc11.2ch.net/test/read.cgi/mac/1161656142/ Xcode part5 pc11.2ch.net/test/read.cgi/mac/1176452734/ 【ADC】Apple Developer Connection pc11.2ch.net/test/read.cgi/mac/1143011492/
3 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 12:35:16 ] if((self = [ super init]) != nil){ } return self;
4 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 16:22:49 ] if(self = [super init]) { } でいいじゃん
5 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 21:39:10 ] nilを確認したいんだよ。nilをよー [obj release]; obj = nil; とかするだろ?
6 名前:デフォルトの名無しさん [2007/08/08(水) 23:09:46 ] こっちが本スレだよね?
7 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:17:54 ] こっちの方が早い
8 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:24:23 ] Objective-C プログラミング言語 developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/index.html Objective-C入門 wisdom.sakura.ne.jp/programming/objc/index.html ダイナミックObjective-C journal.mycom.co.jp/column/objc/ Objective-C FAQ Answers wwwa.dcns.ne.jp/~nito/objective-c/answers.html かんたんObjective-C www.nslabs.jp/objc.rhtml
9 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:24:51 ] あっちのスレは削除依頼に出しました ごめんなさい
10 名前:デフォルトの名無しさん [2007/08/09(木) 09:36:37 ] [self age];
11 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 10:55:41 ] Étoilé project >ttp://www.etoile-project.org/ 一応GNUstep系のデスクトップ環境ってことで。独自拡張も有りつつ、0.2リリースもLiveCDも合わせて公開されたし。 GNUstep >ttp://www.gnustep.org/ Cocoa?何それ?って人はこちらに(w。 >ttp://www.gnustep.org/developers/documentation.html このあたりは読むと少しは幸せになれると思われ。Cocoa使いでもソース読むといろいろと楽しい。
12 名前:デフォルトの名無しさん [2007/08/09(木) 11:03:28 ] Etoileってのはおもしろそう
13 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:47:49 ] いートイレ
14 名前:デフォルトの名無しさん [2007/08/13(月) 13:50:08 ] initは初期化に失敗したときは何を返せばいいの?
15 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 14:19:22 ] nil。 - (id)init { self = [super init]; if(self) { // hogehoge if(failed) { [self autorelease]; return nil; } return self; } return nil; }
16 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 14:48:23 ] >>15 ありがとう。autoreleaseしとくのか。
17 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 14:57:52 ] それってほんとにあってる?
18 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 17:00:54 ] 正直聞いたことない
19 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 21:01:22 ] https://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_6.html#//apple_ref/doc/uid/TP40002974-CH4-SW17
20 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 21:45:41 ] 普通失敗したら、nilを返す前に [self release];のはず
21 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 01:30:49 ] NSAutoreleasePool が無い場合もあるからね。 安全のために autorelease はやめた方がいい。 普通は大丈夫だからどうでもいいっちゃどうでもいいけど。
22 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 15:30:43 ] 自分を解放するのってなんか怖くね?
23 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 16:03:22 ] クラスメソッドでインスタンス開放してるだけなんだから別に問題なくね?
24 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 16:25:50 ] クラスメソッドじゃなくね?
25 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 17:01:25 ] あっ本当だ。勘違いしてた。すまん
26 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 07:30:23 ] 自分は解放されたいです
27 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 10:25:40 ] autorelease か release かってのは NSFoundation 使ってるかどうかで決めるんじゃないのかね?
28 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 14:06:08 ] だれかCocoa使わずに標準クラス使ってコード書いてる神いる?
29 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 14:11:08 ] つ X Window / B$D UNIX のアプリのコード
30 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 14:33:05 ] ObjC使ってんの?
31 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 15:23:41 ] いや、テスト的にLazarus使った。 簡単に動作するお。
32 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 15:40:26 ] >>28 なんか変な返事ばっかだが gcc 附属の Object クラスを基底クラスにして Objective-C を 使うって意味なら書いたことある. 書きながら NSArray と NSDictionary と NSAutoreleasePool が恋しくなってきたが…
33 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 17:33:34 ] GNUstepは使うけれど、これじゃCocoaと大して違わないしなぁ。 俺様まさか古のSoftwareICなクラスを使ってる人探してる?(w
34 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 18:13:23 ] >>32 おまいさん変態ですか?
35 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 20:42:22 ] stepstone使ってたよ
36 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 22:33:37 ] MinGWでObjCでWin32API叩いたり
37 名前:32 mailto:sage [2007/08/16(木) 23:27:32 ] >>34 否定はしない. Linux なんで Cocoa はなかったし,GNUStep は Base だけでもかなりでかいんで採用しなかった… でも結局途中で自前でArray.mとDictionary.mを実装したりで面倒だったよ…
38 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:44:46 ] 29, 31 はここが Obj-C スレであることを理解できない可哀想な人なんではなかろうか。
39 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 14:21:36 ] >>37 GCCについてるList.hってどうよ? ってかこれって他のObjC処理系(あるのかどうか知らんけど)にもついてんの?
40 名前:32 mailto:sage [2007/08/17(金) 15:32:58 ] >>39 最近のGCCにはそんなのが付いてくるんですか? objc-list.h や hash.h とは別物なんですよね? あれはCのAPIですし…
41 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 16:33:02 ] 俺の環境(OSX)だと/usr/include/objcにList.hってのがあるわ。 コメント見る限り、「最近の」って感じではなさそうだけど。 /* List.h Copyright 1988-1996 NeXT Software, Inc. DEFINED AS: A common class HEADER FILES: objc/List.h */
42 名前:32 mailto:sage [2007/08/17(金) 16:45:04 ] ちょっと調べてみた, gcc-3.3.6 と gcc-4.1.2 の環境のLInux では/usr/include や /usr/lib/gcc/i486-linux-gnu/include 以下にも List.h は存在しなかった. あと win32 の mingw の gcc-3.4.2 環境や cygwin の gcc-3.4.4 環境にも存在しなかった. OSX だけじゃないかな?
43 名前:32 mailto:sage [2007/08/17(金) 16:48:20 ] あー >Copyright 1988-1996 NeXT Software, Inc. なんだから OSX には入ってても素の gcc には入ってないのでしょうね…
44 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 16:56:55 ] OSXだとObjC関連のヘッダには全部NeXTのコピーライト入りだけどね。 Object.hとか。
45 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 17:55:14 ] なあなあ、俺らでObjective-Cの新しいクラスライブラリ作らね?
46 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 18:44:43 ] >45 設計方針をどうするかで纏まらないとかってオチ?(汗
47 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 18:48:25 ] いや、 ・C++版をコピーするも使われない ・C++に移植されて終焉 のどっちかしか未来が無いってオチ。
48 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 18:53:10 ] どんなクラス作るの?
49 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 19:07:10 ] 2CHObject
50 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 19:46:57 ] それはクラス名として不正では?
51 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 23:33:53 ] >>47 C++ と Objective-C はメッセージ周りの概念がかなり違うから、 大規模なクラスライブラリはなかなか互いには移植できないと思う ...
52 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 01:55:09 ] >>45 15年位前に某所でそれを提案したんだけど自然消滅
53 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:31:32 ] >>52 15年前とはObjC人口が違うからな
54 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 13:58:52 ] >>45 GTK++ のラッパー GTK-- みたいなのを作って欲しい
55 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 15:48:27 ] >>54 obgtk や gnome-objc はどこに行ったのだろうか…
56 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:02:29 ] gtkイラネ
57 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:17:45 ] >>56 kwsk
58 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 11:22:06 ] まあ gtk の Obj-C への移植より先に gtk を Aqua で X11 無しに移植するのが先決だろうね
59 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 13:47:38 ] OSXでわざわざgtk使うのかよ
60 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 15:01:38 ] 普通は使う必要性はないだろうが、gtkベッタリのを移植する手間は思いっきり省ける(w
61 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:25:02 ] OSXだってgtkでもQtでもWxWidgetsでも選択肢は多い方が仕事はしやすいよ。
62 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:13:32 ] >>61 それはもっともなのだがマックプログラマは無駄にCocoaで再実装する方を 選びたがるからちっとも完成度が上らないんだよな…
63 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:34:10 ] >61 それはプログラマじゃなくて、ユーザーから要望があるから。 マカーは細かい差異を異常に気にするんよ。
64 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:47:40 ] レス番ずれてるぞ さてはBSユーザか
65 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 17:22:50 ] まぁマカーはどうでもいいんだけど Linux 向けに gnome-objc は ちゃんと保守してほしかったなぁ… ftp.gnome.org/pub/gnome/sources/gnome-objc/1.0/ 1999年って…
66 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:55:31 ] >>61 MacOSX でも Qt と wxWidgets は使える。Gtk+ は大したアプリ無いしイラネ。 >>65 ObjC は C を混ぜて書けるんだから、Gtk+ 部分だけ C で書いたら良いじゃない。
67 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 01:40:42 ] >>62 まあ MVC がきちんと分離されてれば、 Cocoa のガワをかぶせるのはそんなに大変じゃないよね ...
68 名前:デフォルトの名無しさん [2007/09/03(月) 22:47:54 BE:375293838-2BP(400)] #import <stdio.h> #import <objc/Object.h> int main(int argc, char *argv[]) { id agemasuyo = [Object new]; fputs(stderr, "agemasuyo"); [agemasuyo release]; return 1; }
69 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:45:16 ] IDE はありますか?
70 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 00:46:18 ] >69 MacOSXならXCode & Interface Builder GNUstepならProject Center & GORM って、マジレスしていいのだろーか?
71 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 00:47:57 ] 忘れてた。最強のIDE emacs
72 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 15:41:37 ] Eclipse を期待してた。
73 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:30:57 ] Windows 用の IDE はないのかい?
74 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 19:40:06 ] >>73 cygwin で vi + make + gcc
75 名前:デフォルトの名無しさん [2007/09/05(水) 01:17:15 ] すみません、NSBezierPath について教えて下さい。 NSBezierPath *pathCollection をあらかじめ作っておき、 直線と円弧で構成された幾何学図形(複数)をそれぞれNSBezierPath *aPathとして作り、 [pathCollection appendBezierPath: aPath] とやっています。これを繰り返して、物が 膨らむ様子のアニメーションを作っているのですが、途中でデバッガが立ち上がり、 [pathCollection stroke] で止まってしまいます。pathCollection 中は以下のようになって います。止まる前までは順調に描けているので、何が悪いのか分からなくて…… よろしくお願いします。 _state 2 _segmentCount 185 _segmentMax 310 _head 0x1976200 _lastSubpathIndex 184 _elementCount 121 _lineWidth 1 _bounds x=0, y=0, width=0, height=0 _controlPointBounds x=0, y=0, width=0, height=0 _flags 3 '¥003' _miterLimit 10 _flatness 1 _dashedLinePattern 0x0 _dashedLineCount 0 _dashedLinePhase 0
76 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 05:28:03 ] >>75 そんな突然デバッガの、それも pathCollection の出力だけかかれてもわからんよ。 クラッシュレポーターにでるような スタックトレースかいてくれたほうがましなんだけど。 そのまわりのソースコードをすこしぐらい書いて下さい。
77 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 11:34:24 ] こういうので良いのでしょうか?詳しくないので見当違いでしたらごめんなさい。 Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_INVALID_ADDRESS (0x0001) at 0xc0003c2d Thread 0 Crashed: 0 com.apple.CoreGraphics 0x9048c018 draw_line + 3776 1 com.apple.CoreGraphics 0x9048b144 line_to + 1448 2 com.apple.CoreGraphics 0x9048ab4c aa_line_render + 804 3 libRIP.A.dylib 0x9482a3ac ripr_Coverage + 1304 4 libRIP.A.dylib 0x94829d48 ripc_Render + 504 5 libRIP.A.dylib 0x94832474 ripc_DrawPath + 488 6 com.apple.CoreGraphics 0x904533bc CGContextDrawPath + 176 7 com.apple.AppKit 0x938beeb8 -[NSBezierPath(NSBezierPathDevicePrimitives) _doUserPathWithOp:inContext:] + 252 8 com.apple.AppKit 0x938bec7c -[NSBezierPath stroke] + 212 9 com.mac.*********** 0x00031914 -[MyDocument turnEndOperation] + 3228 (MyDocument.m:486) 10 com.mac.*********** 0x00030c2c -[MyDocument startCaluculation:] + 1080 (MyDocument.m:333) 11 com.apple.AppKit 0x93842c4c -[NSApplication sendAction:to:from:] + 108 つづく
78 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 11:35:14 ] つづき 12 com.apple.AppKit 0x93842b80 -[NSControl sendAction:to:] + 96 13 com.apple.AppKit 0x93842a60 -[NSCell _sendActionFrom:] + 156 14 com.apple.AppKit 0x93842540 -[NSButtonCell performClick:] + 472 15 com.apple.AppKit 0x93841d64 -[NSButton performKeyEquivalent:] + 424 16 com.apple.AppKit 0x93841b68 -[NSView performKeyEquivalent:] + 140 17 com.apple.AppKit 0x93841ac8 -[NSWindow performKeyEquivalent:] + 32 18 com.apple.AppKit 0x9389c820 -[NSApplication _handleKeyEquivalent:] + 56 19 com.apple.AppKit 0x937a6408 -[NSApplication sendEvent:] + 2944 20 com.apple.AppKit 0x9379dd10 -[NSApplication run] + 508 21 com.apple.AppKit 0x9388e87c NSApplicationMain + 452 22 com.mac.*********** 0x0000efac main + 64 (main.m:13) 23 com.mac.*********** 0x0000290c start + 812 24 com.mac.*********** 0x00002610 start + 48
79 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 19:37:52 ] ソースを書けって言ってなかったっけ?
80 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 22:00:41 ] クラッシュレポートでほんのちょっとだけ想像がついてきました。 ソースも書いてね。 というかデバッグってのは自分でいろいろみながら どこがおかしいのかなぁ、と考えるわけでさ。 こういう応答しかできないってことはデバッグに 苦労してるだろうなぁというのはわかるけど ...
81 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 14:33:14 ] UIKitおもすれー
82 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 16:58:40 ] GormとProjectBuilder入れました。
83 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 11:27:08 ] プロトコルへの適合を動的に削除したい時って objc_protocol_listをいじればいいのかな?
84 名前:デフォルトの名無しさん [2007/09/30(日) 15:02:45 ] オブジェクトに演算子は定義できますか?
85 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:08:28 ] 演算子の多重定義は実装してないようですね。自己解決しました。
86 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 19:50:30 ] >>85 Objective-C++ つかえ
87 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 21:12:09 ] >Windowsの世界には、Objective-Cプログラマの数は0だから、事実上不可能だな。 ttp://www.haloscan.com/comments/mkino/20071018/#424562
88 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:56:54 ] iPhone/touchのtoolchain遊んでる奴いるかい いや、聞いてみただけ
89 名前:デフォルトの名無しさん [2007/10/28(日) 10:20:25 ] Objective-C 2.0 だってよ https://developer.apple.com/leopard/devcenter/docs/documentation/Cocoa/Conceptual/ObjectiveC/index.html
90 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:06:55 ] 何をいまさら・・・ ってム板なら知らないやつがいてもおかしくないか
91 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:19:46 ] いや、前スレで散々話題になったと思うが。
92 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:29:30 ] notepad-plus.sourceforge.net/commun/screenshots/scrsh_lexerObjC.gif 変態だ…変態すぎる…
93 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:32:42 ] グロ注意
94 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 12:34:21 ] ログインしなくても見れるようになったので : developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/index.html いや、ぼくみたいにお金なくて Online 会員のひともいるかなとおもって、貼ってみたんだけど、だめですか ??? いまいち @synthesize と @dynamic の違いがわからないんですが おしえてください
95 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 13:40:47 ] >>94 ナイス張り!
96 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:04:07 ] macでしか使えないのが痛い・・
97 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:12:21 ]  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」 ―――――――――――――‐┬┘ | ____.____ | | | | | | | ∧_∧ | | | |( ´∀`)つ ミ | | |/ ⊃ ノ | |  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ミ Xcode(ObjC2.0)
98 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:26:29 ] 捨てないで ... 個人用のちっちゃな GUI ソフトを作るのは簡単で良いですよ GC がついてさらに簡単になりました
99 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:34:12 ] GCもう使ってる?
100 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:46:54 ] とりあえずつかってみました (perl でつくってた画像ダウンローダーの GUI ラッパーをつくっただけですが) retain / (auto)release を書かなくて良いのでかなりタイプ数がへりますね アクセッサをかくのもルーチンワークがうざいので @property は便利 あとは UI は binding をすれば、かなりなにもかかなくてもよい気がする
101 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:56:14 ] @propertyってメンバ変数のアクセス「.」と同じようなもん?
102 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 15:04:39 ] ドキュメントによると、 id x; に対して、 x.area = y; は [x setArea: y]; y = x.area; は y=[x area]; と全く等価だそうです。 public メンバにアクセスするには x->area とか書かないといけないはず。(やったことないのでわからないけど。) @interface 内で @property をつかってそういうのを宣言して、 @implementation 内で @synthesize をつかってアクセッサを生成するみたい アクセッサをつかう重要な点は、そうしておくと KVO というか binding が効くということ。area がなんか GUI にバインドしてあると x.area = 10; とかすると GUI の表示が自動的にかわる。
103 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 16:45:55 ] どうでもいいけど、ObjCオブジェクトのインスタンス変数を@publicにしてる奴なんて 見たことないぞ。
104 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 21:36:24 ] Rubyでいい気がする
105 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 05:13:51 ] >>104 ネイティブコード吐けるようになったらまたおいで
106 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 06:26:40 ] ObjC も [] の中はネイティブコードじゃないと言っても過言じゃないかと…
107 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 08:49:32 ] KVO とか内部で無茶苦茶やってるよね。isa-swizzling とか。 正気の沙汰じゃない。
108 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:14:13 ] でもネイティブコードには変わりないんだよ
109 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:52:58 ] 分かってないべ?
110 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 11:52:34 ] なかなか楽しいけどね。 RubyCocoaでWebページ表示 japan.zdnet.com/sp/feature/07leopard/story/0,3800081890,20359550,00.htm
111 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:16:17 ] GCC3.3で、例外を投げると値を返すはずのメソッドが値を返してなくても警告が出なくなるのな。
112 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:17:28 ] Objective-C 2.0プログラミング言語 developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC
113 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 13:38:27 ] twitter.com/implementation
114 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:47:50 ] Leopard の objc/Object.h 見ると、2.0 では Object クラスはさぶくなってるのね。 「ルートクラスには NSObject 使えよゴラア」という意味でしょうか?
115 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:51:11 ] 保守
116 名前:デフォルトの名無しさん [2008/01/06(日) 21:53:31 ] Objective-C
117 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:47:16 ] windowsの環境だとgnustepやっぱり普通はですかね。 gunstepがないPCには、ランタイムとかどうやって持ってけばいいのか…
118 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:42:24 ] これを読むとシアワセがくるかも。 ttp://mediawiki.gnustep.org/index.php/Deployment_on_Windows ttp://www.gnustep.org/resources/documentation/User/GNUstep/README.MinGW まとめると - exe本体と同じディレクトリ階層に関連するdllを全部集める。 - gnustepが使う各種パスをソレに応じて書き換える。 の2点で出来るらしい。
119 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:23:06 ] 日本語の情報が少ないと思ったら英語に活路があったんですか。 shipping するときは他のPCの方にもmsys, mingw(gcc) がないとダメってことですか? それとgunstep runtime の最小サイズが書いてませんでしたが、どれほど必要でしょうか。 objc はjava の源流なんで非常に興味あったんですけど、mac に取られてばっかりで どうして日本だとwindows な環境で広がらないんでしょうね。 objc はまだ趣味の範囲ですけど。
120 名前:118 mailto:sage [2008/01/07(月) 23:44:08 ] README.MinGWの方の8.Cleanupに First thing, you should remove the MSYS libraries, which we never use -- rm Gomoku.app/msys-1.0.dll rm Gomoku.app/msysltdl-3.dll rm Gomoku.app/libW11.dll rm Gomoku.app/libperl.dll . . と書いてあるからgccは必要ないですよ。 runtimeのサイズだけど、IntelMacにしてVPCが動かずWinが触れないので判らん。 winがらみの仕事がくればVMWareとか購入してこっちの遊びも再開出来るけど(w
121 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:05:01 ] >>119 >どうして日本だとwindowsな環境で広がらないんでしょうね。 Cocotron があるじゃん Java は ObjC というよりは OPENSTEP をやりたかったんだろうね
122 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:10:11 ] あ、日本じゃないか。 日本人は何故かみんな C++ が大好きだからねえ。
123 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:22:35 ] macがらみの仕事てのが想像できませんが、なんかスゴイ仕事してそうですねw >122は日本ではPC(ソフト)に興味ないし、もともとの発祥が英語圏で、MAC-OSでもMS-OS支配でも別にどうでもいいからじゃないですか? ハード(日立・富士通・NEC・ソニーとか)の方は支配にこだわっていて、そうでもないですけど。 macの仕事て例えばどういうのがあるんでしょうか?
124 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:28:28 ] みんながC++みたいな変態が好きなんじゃなくて、それしか選択肢がないからじゃないですか。 objcの情報も日本語では少ないし、紹介すらしてない。 説明や紹介が英文よりも日本文に目がいくようなら、そんな日本人の英語力なんてないに等しいし… objcはmacだけじゃもったいないような、なくないような… すくなくともwindows環境の人にはmac objc runtimeは使えないわけなんで。
125 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:02:16 ] 別にみんなC++好きの変態なんじゃなくて 「みんなが使ってるものと同じものを使ってれば安心」 ってことだと思うよ。要するに保守的。 # Microsoft Visual Objective-C とか出れば騙されて使うやつがいるかも?
126 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:07:58 ] C++なら日本語情報が多いし入りやすいよ ワンチップマイコンでも 日本では素直なAVRよりも変態といわれてるPICのユーザーが多いのは 日本語情報の多さ
127 名前:118 mailto:sage [2008/01/08(火) 20:42:28 ] c++はそんなにキライじゃないけどな。 templateとマクロを駆使して"俺C++"を作る楽しみがあるし、他人が作った"俺C++"をみてcoreDumpする 楽しみもある(w ObjCの変態実装系としてWebScriptと言うインタプリタが過去にあったそうだ。今だったらインタプリタ として受けそうだと思うが、おまえらどうよ。
128 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:49:30 ] 変態実装系はPOCで十分です。 あれまだあるんだっけ?
129 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:38:48 ] ttp://users.pandora.be/stes/compiler.html これ?
130 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:39:05 ] >>126 AVRはいいよねー。 PICみたいなドM用アーキテクチャが流行ってるのは、本が多いからかなー? まあAVRは比較的新しいからこれからじゃないすかね。 AVRが出たころにはもうPICに慣れ切ってる人が多かったわけですし。
131 名前:118 mailto:sage [2008/01/08(火) 23:18:26 ] POCと言えば、このURLのブロック構文がつかいたいよな。 ttp://users.pandora.be/stes/block98/index.html AppleもObjC2.0の時に一緒にしてくれれば良かったのにな。 for(i in array){}よりも汎用性がありそうなのに。
132 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:19:14 ] Objective-CだけでもC++だけでもなくて、Objective-C++サイコーなやつは居らんのですか。
133 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:01:49 ] >>132 ずいぶんコアなところにおりますなw
134 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 02:02:39 ] OpenCVとか組み込みてーけど、どうだろね
135 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:12:51 ] ipodの組み込みとかは当然mac objcで開発なのかな?
136 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 15:59:13 ] touchのことならObjCだよ。
137 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:46:55 ] Mac OS X 版の GLUT, SDL, Gtk+ は Objective-C の API を C でラッピングしてるのね。wxWidgets も Cocoa への移植が 進行中らしいけど、世の中変わったもんだねえ。
138 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 10:14:37 ] Cocotronの日本語対応させた人います? ソース見た限り、全キーストロークをストローク単位で 処理しているようで、キーダウンイベントの発生時に 日本語処理を割り込ませればとも思っているんですが Windows側のこともよく分かりませんし...
139 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 01:55:37 ] 最近魅力的なんですけど、RubyとD言語はやっぱりダメですか?
140 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:00:18 ] どの言語でも一つだけで済ませようとするのは良くない とりわけマイナー言語では、その言語がこけても困らない 様にしておく必要がある Ruby やるなら Perl や Python を横目に見ながら、D を やるなら Java や C++ を意識しながらやると良いよ
141 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:12:12 ] さもないとこんな風になっちゃうの? pc11.2ch.net/test/read.cgi/tech/1200070152/59
142 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:22:34 ] CとJava使っています。 コンパイルなしでスクリプトしたいんですけど、どっち使ってますか? 正規表現処理したいのにCやJavaはちょっと・・・
143 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:24:14 ] >>140 MSの.Netはいいの? JScript, C# w
144 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 14:11:22 ] .Net C# Javascript こいつらは論外
145 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 14:15:35 ] おやおや 可哀相に
146 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:24:18 ] 只今ECMAScriptのコーディングの真っ最中な俺が来ましたよ
147 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:49:31 ] Javascript はめちゃめちゃ dynamical だから、Cocoa との binding ぐらいすぐ出来そうな気がする ...
148 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:19:22 ] ajaxだったか最近聞かないなw rhinoみたいにブラウザとかに内蔵しないで、シェル上で独立に実行できる と爆発的に普及するんじゃないか。
149 名前:デフォルトの名無しさん [2008/01/14(月) 20:16:49 ] javascriptはOpenOfficeでVBAの代わりに使えればいいのに、と思うことはあるな べつにrubyとかでもいいし、shell自体がつかえてもいいけど>>VBAの代わり
150 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:30:18 ] OOoでPythonは使える
151 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:11:43 ] >>148 Jscriptならwindowsに統合されててwshとかでも使えるけど web以外で使われてるのあまり見ないな
152 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:09:09 ] jsは、今までアプリに組み込み式で、独立のインタプリタ(CUIなどシェルから起動式)がないからだろうな。 最近出てきたけど。 ruby, perl, dと見てみたけど、jsが一番良さそうだと直観した。 あまりうだうだ言うのめんどいけど、jsは規格委員会(ECMA)があるってのがそれぞれの違うってことを表している。 その他は所詮は宗教臭い。
153 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:13:05 ] それと、javaをよく使うけど、javax.scriptはjsと連携いいし javaライブラリとシームレス連携、htmlブラウザとシームレス。 文法もほとんどjava, c風で組み込みライブラリも少なく習得が早い。 オレが欲しい仕様を全て満たしてる。 スクリプトなんて使うときは手早くハックするときぐらいだしw
154 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:55:02 ] まあ言わんとしている事はわからないでもない 俺もタマリンが完成した暁には乗り換えようと思っている
155 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:41:34 ] ECMAScript と JavaScript と JScript と ActionScript の 違いを理解してから出直してきてください
156 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:44:47 ] >>155 そういうのは分かってるだろ。こだわってるのはおまえだけw >独立のインタプリタ(CUIなどシェルから起動式) ところで独立インタプリタ?てそんなのあるの? Javaの奴はjde入れないとダメでしょw
157 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:45:15 ] ここは一応 Obj-C スレなので、とりあえず Javascript 用の Cocoa bridge をつくってから出直してきて欲しい気がする
158 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:48:28 ] そんなに需要あるのかあ
159 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:04:14 ] というか WebKit の Javascript Core が公開されてるので、Cocoa bridge は簡単につくれるのでは?Leopard なら Scripting Bridge も提供されてるし。 いってみただけで技術力がたりないから僕には出来ないけど。スイマセン ...
160 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 05:35:33 ] >>155 出直してくるのはおまえのようだ
161 名前:118 mailto:sage [2008/01/16(水) 13:28:06 ] >>157 Joyと言うのがあったそうだ。 www.mactech.com/news/?p=1001039 javascriptのcocoa bridge で、今ではオープンソースで転がってそうな感じだけど、どうなったかだれかしらない?
162 名前:118 mailto:sage [2008/01/17(木) 17:07:23 ] こんなの見つけた。 Scripting with JavaScript in Cocoa will.thimbleby.net/script/ TurtleScript.zipがレパードだとうまく動かないけど以下の修正ですぐに動く。 ScriptControl.mのメソッド - (void)awakeFromNib に scriptObject = [webView windowScriptObject]; を追加。で、 - (void)webView:(WebView *)sender windowScriptObjectAvailable: (WebScriptObject *)windowScriptObject を要らないので削除
163 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:39:16 ] おもろいもんですな。 Cocoa というオブジェクトを javascript 側に publish して、 Cocoa.NSTextView とかいうメソッドを呼ぶと NSClassFromString とかでクラスオブジェクトを返すようにしておくと、 もはや Javascript から何でも出来る気がする。
164 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:00:53 ] まぁ面白いといえば面白いが… Cocoa bridge があったとしてもスレ違いだ…
165 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:55:05 ] Xcode part6 pc11.2ch.net/test/read.cgi/mac/1201693264
166 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 10:17:19 ] すごい寂れぶりだな…
167 名前:デフォルトの名無しさん mailto:hage [2008/03/15(土) 23:22:05 ] >166 さすがマイナー言語www ttp://www.moongift.jp/category/programming-language/object-c/ ttp://d.hatena.ne.jp/Psychs/20070703/1183415019
168 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:24:18 ] マカーでもない限り使わないし、 そのマカーでも使うとは限らないしな。
169 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:25:52 ] これからは iPhone/iPod touch の開発でひっぱりだこになると思われ。 すくなくとも日本以外、米欧では。
170 名前:デフォルトの名無しさん mailto:hage [2008/03/15(土) 23:32:25 ] 制約ありまくりのSDKが成功するとでも?
171 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:49:08 ] 乞食プログラマ乙
172 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:46:16 ] >>168 俺はObjective-CがやりたくてWinからMacに移行したけどな。まあ、完全にWinを離れる訳にもいかないんだが...
173 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:54:23 ] SDK の制約といっても普通のソフト書く分にはもんだいないでしょ。 IM とか VM とかいうけど、開発者のうち何人がそんなものを作るかと。 2ch ブラウザならいまの SDK で何の問題もなく作れるよね。 5分ごとに更新とかは出来ないわけだが。
174 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:12:52 ] >>173 今のiPhone SDKは「実機で動かせない」という致命的な制約が…
175 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:48:50 ] それには同意。
176 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:38:02 ] 日本はそんなに魅力的な市場じゃないんだろうな。
177 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 11:41:28 ] 日本の携帯は国内仕様てんこもりで鎖国状態だからな。 それを乗り越えてまで参入するメリットは「?」だよな。
178 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:29:58 ] 欧米仕様(OMAとかMIDPとか)すら無視してるんだから 日本仕様も乗り越えず素通りするだけだろ
179 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:22:42 ] 今、ObjCを勉強中ですが、autorelease以外で、boostのshared_ptrみたいなものはないのですか? retain, release, autorelease方式だと、メモリーリークしまくりそうです。
180 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:28:29 ] こういうの嫌すぎるし。 × NSArray* arr = [[NSArray alloc] initWithObjects: [[Card alloc] init], [[Player alloc] init], nil]; ○ NSArray* arr = [[NSArray alloc] initWithObjects: [[[Card alloc] init] autorelease], [[[Player alloc] init] autorelease], nil];
181 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:53:04 ] @implementation Card + (id)card { return [[[self alloc] init] autorelease]; } @end とすれば多少は。 [[NSArray alloc] initWithObjects: ... も [NSArray arrayWithObjects: ... で。
182 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 02:02:58 ] > retain, release, autorelease方式だと、メモリーリークしまくりそうです。 気のせいです。
183 名前:デフォルトの名無しさん [2008/03/20(木) 08:28:28 ] >>180 > こういうの嫌すぎるし。 > × NSArray* arr = [[NSArray alloc] initWithObjects: [[Card alloc] init], [[Player alloc] init], nil]; > ○ NSArray* arr = [[NSArray alloc] initWithObjects: [[[Card alloc] init] autorelease], [[[Player alloc] init] autorelease], nil]; > そこで LISP ですよ。[] なんて特に気にならなくなるよ、LISP をすると
184 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:55:32 ] ObjC2のmethod_setImplementation()って昔のポージングと同じで 対象のクラスが1度も使われる前に行わなきゃいけないの
185 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:56:22 ] ですか?
186 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:02:12 ] >method_setImplementation べつにいつでもいいと思いますが、呼び出し側がセレクタに対する IMP の結果をキャッシュしてたりするとおかしくなるのでは。
187 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:41:17 ] stringWithUTF8String に渡す文字列は、同一スコープに実体がないと いけないなどの制限があるのでしょうか? #include <string> #include <Foundation/Foundation.h> std::string foo() { return "foo"; } const char* bar() { return foo().c_str(); } int main() { NSString* str = [NSString stringWithUTF8String:bar()]; NSLog(@"bar()=%s", bar()); NSLog(@"str=%@", str); } ・実行結果 bar()=foo str= bar() の結果を std::string に保持して c_str() を渡せば成功します。 この挙動でどつぼにはまりました。
188 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:34:22 ] >>187 何がしたいのかわからないけど、こう書き換えれば動くと思う。 const char* bar() { static std::string temp = foo(); return temp.c_str(); } foo()が返した値がどこまで有効なのかを考えてみようよ。「bar()=foo」と 表示されたのは運がよかっただけ。
189 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:42:28 ] まず Cocoa つかうときは NSAutoreleasePool つくること。 次に、問題は NSString 側じゃなくて、C++ 側の std::string の テンポラリオブジェクトの削除のタイミングだと思うんだけど。 const char* bar() { return foo().c_str(); } っていう関数がダメだと思う。foo() でつくられた std::string は 関数抜ける時点で破壊されるのに、c_str() で取り出したポインタは 何をさしてるとおもうわけ? #include <string> #include <Foundation/Foundation.h> std::string foo() { return "foo"; } const char* bar() { return foo().c_str(); } int main() { NSAutoreleasePool *ap=[[NSAutoreleasePool alloc] init]; NSString* str = [NSString stringWithUTF8String:bar()]; NSString* rts = [NSString stringWithUTF8String:foo().c_str()]; NSLog(@"bar()=%s", bar()); NSLog(@"str=%@", str); NSLog(@"rts=%@", rts); [ap release]; } にしてみると rts のほうはちゃんと表示されるよね。
190 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:54:42 ] >>186 どうも。 元のメソッドが呼ばれる前にsetしないとキャッシュされちゃうのかな?
191 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 21:28:33 ] >>188-189 戻り値のスタックが安全じゃないことが良くわかったので、違う方法に 切り替えます。ありがとうございました。
192 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 21:36:49 ] >>191 いや、まだよくわかってないんじゃないかな ... 戻り値のスタック自体は安全なので、 [NSString stringFromUTF8string: foo().c_str()] は ok 。 191 さんがはまっていた const char* const bar() { return foo().c_str(); } の場合は、作られた foo() は、そもそも戻り値スタックに乗らないで、 戻り値スタックにのるのは foo() から c_str() で返ってきた char* ポインタだけでしょ。 で、その乗っている char * ポインタの値自体は安全なんだけど、 char * ポインタが差している文字列の実体、おそらく どこかで malloc されているもの、は bar() の関数から抜ける際に foo() で出来たテンポラリが破壊されるのでついでに free されるわけです。 もういちど C++ のテンポラリオブジェクトの寿命について 勉強したほうがいいと思います。
193 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:35:05 ] ObjC ってか C++ の話だよなぁ
194 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 02:11:32 ] いつまでたっても[[[[]]]]に慣れない・・・困ったもんだ
195 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:20:49 ] anObject.doSomething() を [anObject doSomething] に 展開するスクリプトを書いてコンパイルの前にかませば?
196 名前:デフォルトの名無しさん [2008/04/20(日) 00:04:52 ] オーバーロードについて質問です。 unsigned intを返すvalueという名のメソッドをあるオブジェクトにつけているの ですが、ワーニングで warning: multiple declarations for method `value' warning: using `-(NSString *)value' warning: also found `-(unsigned int)value' warning: comparison between pointer and integer ときます。 Objective-Cで多重定義の問題をクリアする方法はありますでしょうか? 荻原本でいうと、p69-70の話題です。
197 名前:デフォルトの名無しさん [2008/04/20(日) 01:13:24 ] 「Objective-C Mac OS Xプログラミング 荻原 剛志」 ↑これamazonとかで新品無いんだけど、絶版になったんですか?
198 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 03:43:30 ] //id instance = [[AnObject alloc] init]; AnObject *instance = [[AnObject alloc] init]; [instance value]; とか [(AnObject*)instance value]; とか、とりあえず明確に指定すればwarningは出なくなる…
199 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 11:55:47 ] >>198 C++ では静的型付けをつかってオーバーロードするところを、 Objective-C ではメソッドの名前を長くして、 メソッド名を読んだだけで何をやっているかわかるようにするのが Objective-C での作法です。 stringValue: とか intValue: とかいうふうに名前を付けて区別しましょう。 (NSControl とかはそうしてます。) string / int とか型名をつけるだけでなくて、 返ってくる string が会社の名前、 unsigned int が値段なら stringValue: のかわりに companyName: intValue; のかわりに price: とかしましょう。 value とかいう一般的すぎるメソッド名をつけると えてしてそのしたにコメントを書くことになりますが、 メソッド名自体をコメントにしてしまえということです。
200 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:11:37 ] >>198 id のままテストコード書いてました。なるほど。 ありがとうございます。 >>199 Objective-Cでの作法を教えていただきありがとうございます。 これから気をつけていきたいとおもいます。
201 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:28:39 ] じつは、コードを書くときは常に >メソッド名を読んだだけで何をやっているかわかるようにする 意識はもっているつもりだったのです。 valueもそれが一番適切な名前だと思ってつけたのですが、失敗でした。 Objective-Cは面白い言語だと思いますが、オーバーロード(演算子も含めて) が弱いのが(私にとって)玉に瑕です。 valueという同一メッセージに、いろいろなオブジェクトがそれぞれの流儀で 反応してくれるのを期待してしまうのです。 たとえば、整数なのか小数なのかコード中で区別せず、 valueとすればいいだけ、とか。
202 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:45:57 ] Obj-C でも、value という同一メッセージに いろいろなオブジェクトがそれぞれ自分流に応答するわけでしょう。 オーバーローディングの問題はむしろ、 ひとつのオブジェクトが、value という同じ名前のメッセージだけど、 引数や返す値に応じて違う応答をする、ということで、 それは Obj-C はできないですが、そのかわりに メソッド名を分かり易くあからさまに書くというのが作法なわけです。 あと、C++ でも返す値の型だけが違う際は overload できないよね。 また、演算子のオーバーロードをしたい場合は Objective-C++ を使ったらいいんじゃないかと思います。 演算子 overloading は、普通は具体的な値として使うクラス (行列、複素数等)に対して重要になってくるので、 そいつらは C++ のクラスにしてしまえばもんだいなくなるのでは。
203 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 15:20:20 ] >>201 HTMLではValueで統一されててわかりやすいけど、あれは全て文字だからね。 プログラム内部ではもうちょっと区別付けないといけないんでしょう。 >>202 >あと、C++ でも返す値の型だけが違う際は overload できないよね。 変換するだけだしね。
204 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:58:34 ] mac使った事ないんでお聞きしたいんですけど、 macでは\rが改行だそうですけど、 \nを送信するとコンソールの挙動はどうなるんですか?
205 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:36:47 ] >>204 スレ違いだから 新 Mac 板にでもいってください。 ただまあ答えておくと、 i) mac の改行が ¥r だった時代は5年以上前に終わりました。OS 9 以前はそうだったけど、OS X 以降は ¥n です ii) mac に限らず、OS の改行コードがなにかというのと、シリアルコンソール、ネットワークプロトコルの改行コードがなにかというのは別問題です。 たとえば、HTTP プロトコルでは改行は ¥r¥n であるべしとなっているので、正しく書かれた http ブラウザは OS に関係なく ¥r¥n を送信しているはずです。 ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89 あたり参照。
206 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 10:12:26 ] >>205 \rは古いんですか。昔は\nは未定義(何もしない)だったんですか。 コンソールでカーソルを行頭に戻すのどうやるってたんですか? 強引ですけど、 for (;;) printf("%s\r", data_or_time); とか。
207 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 10:55:59 ] Obj-C の話でないので、新 mac 板もしくは、旧 OS 9 の話がしたければ旧 mac 板に行ってください。僕はそちらにも出没しているので。
208 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:30:51 ] いや、別にどうでもいいしww
209 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 08:33:01 ] 現実 ttp://slashdot.jp/developers/article.pl?sid=08/04/06/2313251 プログラミング言語別求人件数(アメリカ) Java 16479件 C++ 8080件 C# 7780件 JavaScript 6749件 Perl 5710件 PHP 2641件 Python 1408件 COBOL 1207件 Ruby 769件 Objective-C 38件 ←←←←(・∀・)ニヤニヤ Lisp 33件
210 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 10:27:51 ] ObjCはJavaの0.2%の人的資源で済むほど効率がいいということですね、わかります
211 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 10:38:51 ] 「ある程度のスキルを持つC/C++のプログラマーなら簡単に習得できる」 ttp://www.atmarkit.co.jp/flinux/special/mac/macosxa.html つまりObjective-Cで求人を出すよりCやC++で人を採って、覚えさせれば良いだけ。
212 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 10:49:46 ] 単に求人の数が問題なのではなくて、需給のバランスが問題なのでは ... 仕事の数よりプログラマの数のほうがすくなければプログラマは有利だよね。 iPhone SDK ですごいことになりそうだし。
213 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 11:15:35 ] objcの文化があるわけで、C++やC#馴れしてる奴らは来なくていい。 一応、javaはobjcの亜流なんだけどね。見た目からは分かりにくいのかもしれないけど。
214 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 11:43:56 ] >>213 へんに文法に Smalltalk っぽさを残したところがあだになっているよね。 ObjC 2.0 のプロパティとかで、ちょっとずつ改善しようとしているけれど。
215 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:04:58 ] 個人的にはMS Windowsで動くobjcランタイムが欲しい。 gnuは商業利用無理だし、ここでアップルあたりのランタイムがx86にも来てくれれば・・・
216 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:11:36 ] 個人的にはMS Windowsで動くobjcランタイムが欲しい。→MinGW, Cygwin gnuは商業利用無理だし、→GPLと商業利用は矛盾しない ここでアップルあたりのランタイムがx86にも来てくれれば・・・→Intel Mac アップル製と互換性のあるランタイムが他に移植されればいいなあっていう大意は分かるが
217 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:06:58 ] そういうことじゃなくて、アップルが普通にms win対応のランタイムを作れば解決するんじゃないのか? 今さらMSと戦ってるのは、一部のアッポロ信者だけだろw 若干アップルの歴史を知ってるから言いにくいもんだけど、 アッポロはMSに資金提供してもらって危機を脱してきただし。 何かとms winプラットフォームがぶつかってるのは分かるけど、 アッポロは消費者も開発者も(クリエーターも)人少なすぎで全部MSに持ってからてるじゃんww
218 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:08:27 ] アッポロの奴らはMSとはまた違うお子ちゃまが多いし、そういう奴はらはないけど要らないから、objcだけ来てくれればいいよ 大学とか研究の奴らが頑張って実装してくれ。BSDは応援してるからけど、金になりそうなのはMSのところにもってックから。 それなら初めから、objcだけ来てくれればいいんだけどね・・
219 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:26:30 ] 日本語でOK 酒の飲み過ぎか?呂律が回ってないぞ。 OS X は開発者は海外になら一杯いるでよ。日本国内は数えるぐらいだけど ...
220 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:45:15 ] 実際は知らないんだけど ランタイムとNSObjectまわりはソース公開されてんじゃないの?
221 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 16:31:14 ] なんか面倒ならJavaでやるだろうよ。 面倒を強いるようならいつまでも人は集まんないよ。
222 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:35:47 ] 言語に対して普及とか考えるのはキモイ言語信者とスーツだけで十分だ。 Objective-Cを使いたいなら使えばいいし、思わなければ使わなければいいだけだろう… プログラマならくだらんこと書いてないでコードを書け。
223 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:42:36 ] >>222 なかなか仕事で出番を作るのは難しいけどね。 Obj-Cは嫌いじゃないけど、仕事でどうしてもって主張をするほどかっていうとそんな事無いし。
224 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:43:33 ] うむ プログラミング言語なんて基底となるライブラリと作るべきソフトウェアの 仕様の差を埋めるものに過ぎない
225 名前:デフォルトの名無しさん [2008/05/20(火) 21:24:53 ] MacRubyがネイティブにコンパイル出来るようにならんかなぁ。
226 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:39:44 BE:281469863-2BP(535)] >>217 何も知らないんなら黙ってりゃいいだけなんだが、 Windows用のObjective-CランタイムをAppleは過去に提供していたわけで。
227 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:06:01 ] YellowBox?もう忘れろ……
228 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:28:49 ] 昔 Windows NT で WebObjects の開発してた頃が懐しいな…
229 名前:デフォルトの名無しさん [2008/05/21(水) 07:51:11 ] WebObjects、obj-cに戻らないかな
230 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 08:04:11 ] MS C# MS C++はカオスだからな gunccとobjcはwinでは肩身が狭いし これ、オレの勘なんだけど、ライセンスがどうとかうるさくて、面倒ってことなんじゃないのかと思う。 gnuとか無料とか有用とか別にどうでもいいんだけど、ウザイじゃん。 金はらってもいいから、面倒ない、ウザクないほうがいいよ。 javaだとせいぜいclasspathの設定程度だけど、gnuccとかインストが超面倒だろ? お子様は使用禁止もいいんだけど、普及させる気あんのか・・ 主義主張が多いgnuの方が拝金現場を知らないクソガキに見えるんだが・・・
231 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 08:59:23 ] GCC って OS インストール直後からほぼノーコストで使えるもんだと思ってたけど OS 変えたら?
232 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:34:03 ] gcc入れるのめんどいのってWindowsだけだとおもうんだよね、うん
233 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:31:30 ] windowsはドライバが豊富だから結局windowsがホストOSで他のOSはゲストでしかないんだけどね。 macプラットフォームは、今はituneとか流行ってるけど、imacの一生を知ってるだろ。 つまりだな、macはカジュアルうーザーか、変に個性をもってる(学生)技術者しかいないんじゃないの?
234 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:32:30 ] WindowsであってもMinGWをインストールするのが面倒だとか言っている人間が まともなプログラミングができるとは思えない
235 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:34:28 ] でもBSDならまだいいけど、linuxとかiniファイルがカオスだし、他のPCに移行できないし 管理しても何十年前と同じで、今のソフト上のリソースの恩恵もなく教授も得られないでしょ。 osは別に何でもいいし、結局は面倒がないwindowsでいいわけ。 これが未だに理解できないのは、mac狂信者、つまりお子ちゃまってわけw お子ちゃま用にしては、objcは高度すぎるオモチャじゃないのか? objc使うって事は、そのランタイムと心中するってことだしな・・・
236 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:31:45 ] 文章の端々から無知無教養が滲み出してるな
237 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:48:09 ] もはや一行目と二行目のあいだの論理が破綻しているな いや、一つの文の中の読点と読点の間で矛盾しているといってもいい もしかしてマカ vs ドザのスレッドで教育させた人工無能とか?
238 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:00:12 ] >>234 その論法良くあるんだけどね、今の時代はどれだけユーザーがいるのか、その環境に人口は多いのかなのよw すくなくとも君より上だと思うんだけど、「インストールすること」が目的じゃないわけwwまあ、でなおしてこいよww
239 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:01:28 ] なんだよ「人工無能」てw おまえは2CHのやりすぎで頭おかしくなっちゃったようだんw気をつきたほうがwwいいよ
240 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:40:08 ] >>239 ja.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%84%A1%E8%84%B3
241 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:50:55 ] こんなへたくそな釣りに付き合ってやるなんて… みんないい奴だな…
242 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:24:23 ] >>230 お前がWindowsで開発しててそう思うならVisual Studio 2008で問題なかろう。 純正品でWin32API/MFC使うのがカオスか? で、そんな面倒の無い製品があるのになんでわざわざgcc使いたいんだ? お前のポリシーに合ってないだけでgnuを批判するのはすじ違い。
243 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:08:55 ] そういうこと言ってるとobjc使う開発者は集まらないんじゃないの?少なくともMSでやってる人は「面倒だし、なら別にいいや」でしかないしw
244 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:18:34 ] そのMSがobjc採用しますが何か?
245 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:45:54 ] 本当に?
246 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:14:01 ] 本当だったらとても嬉しい Objective-C++/CLIとか使ってみたい #importがもろにかぶってるけど……
247 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:14:18 ] >>244 まじかー! やめてくれー! また変てこ独自仕様でぐちゃぐちゃにする気だろ! Obj-Cは軽い仕様がいいのに。
248 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:31:08 ] する必要ないだろ。多分。 VCとVC++の拡張を使えば済むから。 血迷ってJ++みたいにCOMを呼び出すための拡張とかされたら涙目だが、 それはランタイムの拡張でするだろうし、言語仕様には触れないさ。 いや、そうあってほしい
249 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:30:58 ] >>243 >「面倒だし、なら別にいいや」 「こんな事すら面倒なんだ。なら君はいいや。」で終わりかと。
250 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:45:05 ] 多重継承 ,virtual 修飾子 デフォルト実装あり protocol 抽象クラス宣言子 あと付きそうなのは何かな?
251 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:08:58 ] new演算子 まさかの静的結合
252 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:47:59 ] で、ソースは?
253 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:49:34 ] 確かにc++は悪質だけど、見た感じでいえばobjcはc++より個性が強く独特なんだが…
254 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:52:13 ] C++の見た目が個性が無くて一般的だという感覚が信じられんよ…
255 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:01:28 ] 誰もそんなこと言ってないと思うが…。
256 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:11:13 ] >>253 C++0x は凄いよ、λ式の some_function ( [&](){} ) とかすごい。Obj-C の [ ... ] なんか目じゃないぐらいキモイ。 www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf
257 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:39:16 ] 文法がキモイのがC++の個性だからな
258 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 03:08:36 ] とりあえず #define lambda [&] を標準で用意して欲しいわ。
259 名前:デフォルトの名無しさん [2008/05/22(木) 06:21:32 ] エディタでメンバを補完してくれたらうれしいな>>MS-ObjC
260 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 07:18:39 ] >>256 それはまだ先の話だろ。Cなのにパッとみが全くCじゃないのは、objcが元祖だってこと
261 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 07:20:48 ] C++はもういらないし、C99でいいよ C++が必要な大規模開発は、javaとかobjc(gnu)とかあるし 最終的にランタイム・ライブラリ(自作も含む)と心中になるんだけどね
262 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:00:46 ] C99が使えるのがうれしいよな>ObjC
263 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:14:56 ] >>260 >Cなのにパッとみが全くCじゃないのは C++のネームスペースやテンプレートの方が違和感ありありだが、 どちらも些細な事だと思うけどなあ。見た目だけで拒絶反応して 先に進めないなんて色んな事を損してそうだな。
264 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:18:33 ] >>259 MS-Obj-C って何? XCode は普通にメンバ名もなんでも補完してくれるが ... GNUStep のエディタはしらね。
265 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:18:48 ] >>263 いろいろな言語をやったなくてCとobjc一筋だろ。おまえは。
266 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:20:11 ] C99というのは実質的にgccの事でしょ。趣味でintelコンパイラ使う人をはそうはいないだろうし
267 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:47:03 ] >>265 おかしな言いがかりは止めろよw 最近はC++の仕事ばかりでうんざりしてるのに…
268 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:30:34 ] オレとしてはCの正当の進化は突然変異したobjcよりC++にあると思うんだがどうだろうか? 仕方なしでもC++を受け入れたユーザーは多い。
269 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:33:52 ] Cの進化はC99でC++もobjcも普通に別言語だろ
270 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:42:12 ] objcってハイブリッド言語ていってた気がする。 Cの延長じゃなくて、Cも使えるオブジェクト指向言語的な感じで。
271 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:46:53 ] C with class だったよな。それにしてもCは99年から進化が止まったままだなあ
272 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:29:00 ] >>271 C with classes
273 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:09:14 ] >>269 ObjCはC互換でしょうが
274 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:29:25 ] >>273 Cの機能がすべて使えるということと別言語であるということは両立すると思うが…?
275 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:34:19 ] プリプロセサ通せばただのCになるんだから、 別言語ではないと言えなくもないかなと。
276 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:35:23 ] GCC互換のObjective-Cプリプロセッサがない件
277 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:46:54 ] >>275 その理屈だとEiffelもC言語だなw
278 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:54:19 ] 設計理念が違うってことだと思うが
279 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:15:17 ] Eiffelも楽しいけどね。
280 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:22:23 ] (1 == 1) == YES っていうのは保証されてませんよね?
281 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:41:51 ] >>280 Obj-C の YES は単に 1 のマクロなので、 C の問題だから、C スレにいったほうがいいと思います。 でも、僕のあやうい記憶だと、保証されてると思います。 というのは、C の if 文はゼロ以外は真、ゼロだと偽、なので、 if 文とかの中で if(ore_ha_hage()== YES) と比較するのは良くなくて、 直接 if(ore_ha_hage()) とするのが良い、とされてます。 が、論理演算子 = , <=, != 等が返す真偽値は 1, 0 だというのが 最近の C の規格では保証されてるので、 あなたが書いた (1==1)==YES は 1 になるはず。
282 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:04:29 ] YES が 1 と保証されてるか、がキモなんじゃないの?
283 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:57:38 ] 1じゃやなら、じゃ何がいいんだ?
284 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:20:11 ] 0じゃない
285 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:46:24 ] >>282 Apple のレファレンスには、YES は 1 ですと書いてあるけど。 Obj-C は公的な標準規格がないからなんとも ... まあ C 系言語において YES, NO と比較するのがバッドノウハウであるのは間違いない
286 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:14:09 ] VARIANT_TRUE は -1 で定義されてるんだよな
287 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:19:52 ] そんな Microsoft 系の話をされても困るし ... MS は大昔から false は 0 で、true はビットを全反転した -1 。 でも C の < , > 等の返す真偽値は整数としては 1 だから気をつけましょうね。 if 文の中で 更に YES/VARIANT_TRUE とかと比較しなければ全く問題ないのだが ...
288 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:10:57 ] 既知ですが、 ソフトバンク クリエイティブの本:詳解 Objective-C 2.0 www.sbcr.jp/books/products/detail.asp?sku=4797346800 Amazon.co.jp: 詳解 Objective-C 2.0: 荻原 剛志: 本 www.amazon.co.jp/gp/product/4797346809
289 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:47:45 ] >>287 BOOL の TRUE は 1 だけどね。 真が -1 っつーと BASIC なんかそうだな。
290 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:41:02 ] >>288 >詳解 Objective-C 2.0 mkinoさんが買うべきだと絶賛中 ttp://hmdt.jp/
291 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 09:02:30 ] Obj-Cをこれからも使い続ける/これから使い始めるなら読んどいても良いんじゃない。
292 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 18:27:27 ] 2.0本、表紙はどう見てもiPhoneホーム画面なのに、 帯以外でiPhoneという単語は一度も出てこない。 荻原教授は最初から触れるつもりなかったのに編集が独自に装丁考えたのか、 NDAを見てあわてて記述を残らず削ったのか。
293 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:35:47 ] ttp://www.flickr.com/photos/dirtae/1172691688/
294 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:30:37 ] >>292 もともとObjective-CとFoundationに重点を置いてある本だから、 iPhoneに触れる気はもともとなかったんじゃない?
295 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:32:57 ] 買った後に気づいた。×iPhoneの存在に。 正式版のSDKで2.0使えるんならいいんだけど。
296 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:59:16 ] ttp://www.nitenichiryu.org/archives/2008/06/06/1340.php ttp://www.metareal.org/2008/06/06/280slides-in-objective-j/
297 名前:デフォルトの名無しさん [2008/06/09(月) 08:47:38 ] >>296 Objective-CをJavascriptに変換して実行か。よくやるよね。 でも静的な型付けをもつ言語を動的な型付けをもつ言語に翻訳する のってなんかちょっともったいない気がする。Objective-Cは半分 くらい動的な型付けなんだけどさ。
298 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:02:45 ] theunixgeek.blogspot.com/2008/06/programming-salaries.html
299 名前:デフォルトの名無しさん [2008/06/15(日) 23:05:16 ] cocoa最安かww
300 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:47:04 ] >>298 これからHaskell勉強してくる >>299 その割にはObjective-Cが第3位ってのが不思議
301 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:44:06 ] なんでC言語準拠しておきながら、クラス関数の宣言の仕方は似ても似つかない変な記法なの?
302 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:07:42 ] >>301 「似たようなものは似たような表記にしたほうがわかりやすい」 という考え方もあるだろうが、 「意味的に異なるものを表すなら異なる表記にしたほうが区別しやすくわかりやすい」 という考え方もある。 構造体のへのポインタの先の関数ポインタ経由での関数呼び出しとメソッド呼び出し はまったく別のものだと考えれば別の表記になっていたほうがうれしいだろう? # 実際のところは単に設計者の趣味じゃね?
303 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:08:41 ] でも、そのあたりの記法の気持ち悪さが、普及の妨げになってるような気はするよな
304 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:34:48 ] この言語はほぼOS X専用言語と化してるし特に普及させる必要がないと思うのだが… # また普及厨?
305 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:55:15 ] 普及といえば、freebsdとかbsd方面は無理そうかな?
306 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:43:36 ] >>301 C と Smalltalk のハイブリッド言語だから。
307 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:55:13 ] C++ に慣れてるとコンストラクタはともかくデストラクタが欲しくてたまらない。
308 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:05:04 ] >>307 dealloc
309 名前:デフォルトの名無しさん [2008/06/17(火) 21:35:57 ] 勝ち組ケータイiPhoneの登場でObjective-Cの注目度が激しく上がったな
310 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:08:22 ] >>307 は自動変数の話をしてるんでは?
311 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:25:20 ] >>307 ,310 C++で自動変数(スタック)に作られたオブジェクトが スコープを抜けるときデストラクタが呼ばれるあれの ことかいな? そのことなら、そもそもObjecitve-Cのオブジェクト の実体はヒープにしか作ることができなくて、スコー プとオブジェクトのライフサイクルは無関係。
312 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:26:54 ] つまりそれが不便だ、と
313 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:59:51 ] Objective-C++で、Objective-Cのオブジェクトを扱う スマートポインタをC++で書くのはどうだ。C++のこと はすっかり忘れてるので変なこと書いてるかもしれんが { smart_object_id object = [[NSObject alloc] init]; ... } // ここでスマートポインタsmart_object_idによって // [object release] が呼ばれる あるいは class StackPool { id pool; public: Pool() { pool = [[NSAutoreleasePool alloc] init]; } ~Pool() { [pool release]; } } というのを作っといて { StackPool pool; id object = [[[NSObject alloc] init] autorelease]; ... } // ここでpoolがreleaseされ、objectもreleaseされる
314 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:01:09 ] まあ Objective-C++ を使う分にはそういったので問題ないね。
315 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:06:13 ] [&](){return i}; みたいな変態の C++0x に言われたくないです!
316 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:50:37 ] まあ純粋 C++ の話題はスレ違いだ
317 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:58:20 ] redditとかいう所で見つけた。 ttp://sleep.dashnine.org/ >easy to learn with Perl and Objective-C inspired syntax だって。
318 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:08:44 ] スクリプト言語が移植されたらAppStore通さないでも流通するんだよな。 そしたらObjective-Cのブーム終了だろ。 他言語ユーザに珍入されるのやだからそうなってほしい。
319 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:28:24 ] 任意のスクリプトコードのダウンロード・実行と、AppStore以外の配信システムを構築することは SDK Agreementで禁止されている。
320 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:47:53 ] そもそも携帯電話ごときでスクリプト言語が満足にうごくの?
321 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:24:09 ] S60でもPythonが動いてるってのにこいつはUnixマシンだよ? JB環境になるけどPython(PyObjC)やJavaScript(Jiggy)ならGUIアプリも書けるぜ。
322 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:32:28 ] 実際スクリプト言語で十分だけど、 そこであえてObjcでガリガリ書くのがスーパーハカー。
323 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:47:52 ] インラインでCを書ける"軽量"言語だから
324 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 09:54:51 ] >>323 ちょっと目から鱗
325 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:33:56 ] >>301 もともとObjective-CはSmalltalkの式をCコンパイラに通すための プリプロセッサとして生まれて、そこから始まったからだよ。 [ ] の中はSmalltalk。
326 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:38:29 ] あまりに違いすぎるから違和感というか抵抗が強い。 HTMLの中にJavaが入ってるのと似てる。(javascriptが入っててもソース見るとカオスだけど)。 Cのソースが6割がasm{}だったらやっぱりカオスでしょ? Cを拡張なんかしないでjavaみたく新言語の方が受け入れられてんじゃないかと思う。
327 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:57:50 ] Smalltalk 由来だって分かってるから、俺には違和感は全くないけど。 俺等は受け入れた。それで十分じゃないか。
328 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:13:12 ] 本当はCを埋め込んでんだろうけど、なんかobjcの方がCに埋め込まれてるみたいなんだよね。そんだけ
329 名前:デフォルトの名無しさん [2008/06/18(水) 12:17:43 ] >326 組込やってるからカオスとは思わないが
330 名前:デフォルトの名無しさん [2008/06/18(水) 12:22:00 ] 組み込みのように中の人が使う言語を、ウェブ・クリエータみたいなカジュアル層の人にまで使っていただこうとするのは、どこか間違ってると思いませんか?
331 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:42:42 ] 敬語?? ウェブ・クリエータみたいなカジュアル層の人が HTML中のjava入りでやってるんじゃないの? obj-cだけじゃないんだし rubyやらjavaとか好きなの使えばいいんじゃないかと思うが。 「こうあるべき」で固まりたくはないもんだ
332 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:56:50 ] もんだ?
333 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:01:10 ] いまどき web サイトで java applet をつかってるところなんてあるのか? javascript ならわかるが ...
334 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:15:50 ] オンライントレード系は?
335 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:52:32 ] applet ではHTMLの中に Java 書いたりしない。 JSP の話だろう。
336 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:32:00 ] ああなるほど、失礼しました。
337 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:41:03 ] Iフォーンみたいなカジュアルは来なくていい。objcがギンギラのコテコテのキモ言語になるからね 流行ちゃんは、VBよろしく、flash使っていてくれ。
338 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:36:51 ] /ヽ /ヽ / ヽ / ヽ ______ / ヽ__/ ヽ | ____ / :::::::::::::::\ | | // \ :::::::::::::::| | | | ● ● ::::::::::::::| ・・・ | | .| :::::::::::::| | | | (__人__丿 .....:::::::::::::::::::/ | |____ ヽ .....:::::::::::::::::::::::< └___/ ̄ ̄ :::::::::::::::::::::::::| |\ | :::::::::::::::::::::::| \ \ \___ ::::::::::::::::::::::::|
339 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:26:01 ] もんだw
340 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:33:43 ] interface builder3.0が糞な件について 研究室でObjective-Cを使ってプログラミングを書けって言われたんだけど、 何この糞みたいにめんどくさい開発ツールは。 なんでわざわざオブジェクトとコードのコネクションを手動で接続しなくちゃいけないわけ? Visul Studioをちょっとは学べよ。 あんなのダブルクリックで済むんだぞ。 あーむかつく。 なんでこんなん使ってやらなあかんねん。 ふざけんな。研究費削っとんちゃうぞ!!!!!!!!!
341 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:59:49 ] 使わなきゃいいじゃん
342 名前:デフォルトの名無しさん [2008/06/22(日) 22:00:25 ] そういう言語だからです。 あきらめましょう。 Windowsプラットフォーム向けが普及するとユーザーが増えるので風向きが変わるかもしれません。
343 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:26:39 ] あまりに糞だからVS使わせろとか言えないのか? わざわざマイナーなMacを使う意味がわからん
344 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:36:38 ] Macを使う理由は Linuxベースで金がかからないから。
345 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:27:08 ] Linuxベース?
346 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:43:04 ] linuxベースっていう言葉はおかしいね。 まぁ基本的にはlinuxと同様unixが大元になっているけど。 この人はmacのことを殆ど分かってないんだろうなー。
347 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:43:53 ] 最近、Cocoa始めたものとしては、最初の印象として>>340 は思った。 糞だとは思わなかったけど、なんでだろ?って感じで。 で、NSTableViewにdataSourceセットするのをやって、ちょっと分かった。 少なくともVS的コーディングでは、これは実現できないと思ったなぁ。 それがいいか悪いかは知らんけど。
348 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:58:50 ] >>340 まさにおなじはなしを dotnetaddict.dotnetdevelopersjournal.com/dcacs.htm のひとがしてるので、彼の分析を読んで見るとおもしろいかも。 このひとのブログは全般的におもろいです。 .Net addict だったはずなのに最近はすっかり Cocoa に毒されてる人です。
349 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:59:36 ] >>340 俺はコネクションが好きだったから、初めから別に苦ではなかったけど、Interface Builder使いこなしてくるとコネクションの良さがわかってくるよ。バインディグとかformatterとかウインドウ出したり。この辺はVSだとコーディングが必要になるところだと思う。
350 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:25:49 ] >>348 VSから移行する人はみんな思うのかもね。 俺もそうだった。 まぁVSと違ってクールなところもあるから。
351 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:37:23 ] >>340 俺も最近マック渡されてcocoa使ってる しかもそれとおんなじことを先生に言ったww。 確かにVS.netはお金がかかるからね。 でも今必死にcocoaをやってるけど、案外楽しい。
352 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:43:26 ] >>351 まぁ学生は今のうちに好きな環境を使え。 仕事にしたらそうはいかないけど。
353 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:24:22 ] 逆じゃね? 学生だからこそ、頭をやわらかくして、どんどんいろんな環境にチャレンジすべし。 一つの環境に馴れ親しむのも大事だけど、それだけじゃ二流だよ。
354 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:07:42 ] バインディング使えば?
355 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:07:31 ] >>351 >先生に言った いくつかの環境に慣れとけば生存能力も高くなる鴨
356 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:35:21 ] @interface ClassA : SuperClass { id hoge; } @property hoge; @end こんなClassAがあったとして、インスタンスメソッド内で self->hoge はインスタンス変数に直接アクセスし、 self.hoge はプロパティのアクセサを通してアクセスすると思うのですが、 単にhogeと書けばどっちになるのでしょうか?
357 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:08:08 ] >>356 単に hoge は self->hoge と同等。
358 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 08:07:57 ] ありがとうございます。 自分のプロパティへのアクセスにはself.が必須なんですね。
359 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 08:58:18 ] 単に hoge だけでプロパティにアクセスされては、 Obj-C 1.0 のコードを 2.0 でコンパイルするとひどいことになるよ。 Obj-C 1.0 では手で -(id) hage { return hage; } とか書いていたのと、 Obj-C 2.0 で obj.hage というのは、@property 定義がなくとも [obj hage] と等価 (ただしくは [obj objectForKey:@"hage"] だけど) だということをかんがえると、 もしインスタンスメソッド内で hage と書くのが self.hage という意味にしてしまうと、上記アクセッサで無限ループになります。
360 名前:デフォルトの名無しさん [2008/07/07(月) 11:15:42 ] ちなみに展開したのってどやってみるの?
361 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 13:16:46 ] 何を展開する話をしてるの ?
362 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 14:35:16 ] >>361 ObjCのコードじゃない? それなら objc の -C オプションを付ければ拡張子が .i のファイルに C のコードに展開された ObjC のコードが見られるよ。
363 名前:デフォルトの名無しさん [2008/07/07(月) 19:13:49 ] >>359 id a = obj.hage; って、 id a = [obj hage]; じゃなくて、 id a = [obj objectForKey:@"hage"]; になるの?
364 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:01:20 ] ごめん、objectForKey: じゃなくて、valueForKey: だった。 developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_4.html とか developer.apple.com/jp/Documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/SearchImplementation.html 参照。単に setHage:, hage: じゃなくて、KVC されます。 一般に、[obj valueForKey:@"aho"] とすると、 Objc-C ランタイムは aho: , getAho: isAho: というメソッドを探した後、 _aho, _isAho, aho, isAho というインスタンス変数を探します。 だから、obj.aho でも、それだけの候補が探されます。 毎回こんなことやってると遅くてかないませんが、裏でキャッシュしているらしいです。 基本的に、self.aho だとバインディングが動く、self->aho だと動かないということです。
365 名前:デフォルトの名無しさん [2008/07/07(月) 23:10:17 ] >>364 そういう話じゃなくて、、、 プロパティーって、Objective-C2.0が持ってる機能でしょ? なぜ、そこでvalueForKey:などの、Cocoaフレームワークのメソッドが出てくるのでしょう? gccなどのコンパイラが、Cocoaに依存したコードを出力するとは思えないのだが。 リンク先のページにも、そんな事書いてないし。
366 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:17:43 ] valueForKey:をCocoa特有のメソッドだという考えをまず捨てねば。 allocやinitだってCocoa特有でないのと一緒。 finalizeが良い例。
367 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:27:25 ] まあ実際はこうなんだけど Key-value coding and declared properties are orthogonal technologies. You can use KVC whether or not you use properties, and you can use properties whether or not you use KVC. Both, though, make use of a "dot syntax". In the case of KVC, the syntax is used to delimit elements in a key path. It is important to remember that when you directly access a property using the dot syntax, you invoke the receiver's standard accessor methods (as a corollary, to emphasize, the dot syntax does not result in invocation of KVC methods valueForKey: or setValue:forKey:).
368 名前:デフォルトの名無しさん [2008/07/07(月) 23:56:53 ] >>366 言っていることが、変だよ。 alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。 逆に、valueForKeyはObjective-Cの一部として定義されていません。 一緒にしてはいけません。 >>367 が書いてるとおり、id a = obj.hage; は、id a = [obj hage]; とコンパイルされるよ。 ちなみに英文の日本語訳は、これ↓ developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_5.html
369 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:00:35 ] >>368 > alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。 日本語でおk
370 名前:デフォルトの名無しさん [2008/07/08(火) 00:47:08 ] ↑おまえはまずは日本語を勉強した方がいいんじゃないか?
371 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 08:13:14 ] 364 ですが、嘘を言ってすいませんでした。 どこまでが Obj-C 2.0の機能かというのは、 Apple 版 GCC 以外に Obj-C 2.0 をまともにコンパイルできるのがないので考えても仕方がないのでは? NSFastEnumeration とかはどう思うの?
372 名前:デフォルトの名無しさん [2008/07/08(火) 08:45:22 ] 嘘つきはお断り
373 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 18:03:58 ] alloc init が Objective-C言語の一部として定義されてるメソッドと断定している理由は何?
374 名前:デフォルトの名無しさん [2008/07/08(火) 21:07:27 ] NSFastEnumerationは、それに関連して文法が拡張されてるぐらいだから、ObjC2.0の一部なんじゃない? あと、インスタンスを生成するときは、[[MyClass alloc] init]ってやるって、決まってるし。これは、Cocoaだからじゃなくて、ObjCだからそういう仕様になってるんです。これらのメソッドは、Objectクラスにも定義されてるし。 >Apple 版 GCC 以外に Obj-C 2.0 をまともにコンパイルできるのがないので考えても仕方がないのでは? そういう部分もあるけど、Foudationフレームワーク全体がObjCだっていう訳でもないと思うけど。
375 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:08:59 ] >>373 それ外したら言語機能の範囲内でオブジェクトが作れなくなってしまわないか。 ANSI-Cみたいな規格がなくて(ないの?)断定は出来んのかもしれんが、alloc init が言語の一部じゃないってのは考えにくいなぁ。それとも俺が無知なだけ で言語が定める正統なオブジェクトの作り方が他にあるのかな。
376 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:24:16 ] Mac OSXのオブジェクトは、フツーにC言語なCore Foundationで表現されてたかと。 ANSIとかどうでもいいが、規格ある言語をラップして表現する方向で統一してるね CF自体はwin/linux/fBSDにportingされてるし、Darwinコードにも各OSへのコントリビュータの名前が並んでたり Cocoaもまた、結構CFをまんまラップして表現してるんだよね Carbonとの基盤統一のためにやってる事なんだろうけど。 今のOSXではalloc/initは本質的にどっちで表現されてんだろな
377 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:44:33 ] OSObjectは?
378 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:52:08 ] >>374 そういう曖昧なものを定義としていいの? >>376 それは実装の話で、規格の話じゃないでしょ? >>375 だから、Obj-Cではそれすら実装依存なんでしょ?
379 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:03:30 ] >>378 >だから、Obj-Cではそれすら実装依存なんでしょ? どのプラットホーム上でも、オブジェクトの生成にはalloc - initを使う。これが言語仕様だから。 逆に、alloc - init以外でオブジェクトを生成する実装ってあるの?
380 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:13:12 ] >>379 それが言語仕様だってどこに書いてるの? ほかの実装がないから言語仕様なの?
381 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:39:51 ] なんだよ、おまえらココアで酔ったか?
382 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:42:10 ] そもそも言語仕様の規格とかないんだから現存する「特定の実装の言語仕様」しか 語ることができないような… 議論そのものがナンセンスじゃね?
383 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:58:59 ] しようがねえな
384 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:01:56 ] ところでこの議論の先には何があるんだ?
385 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:20:13 ] >>381 多分そうなんだと思う。 別に今更、Obj-CとApple独自の実装を分けて考えろとは思わないけどさ、 >alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。 >逆に、valueForKeyはObjective-Cの一部として定義されていません。 >一緒にしてはいけません。 とか言われるとちょっと意地悪してみたくなるじゃない? 君こそ一緒にしてるじゃん?て。 あまつさえ、 >NSFastEnumerationは、それに関連して文法が拡張されてるぐらいだから、ObjC2.0の一部なんじゃない? >あと、インスタンスを生成するときは、[[MyClass alloc] init]ってやるって、決まってるし。これは、Cocoaだからじゃなくて、ObjCだからそういう仕様になってるんです。これらのメソッドは、Objectクラスにも定義されてるし。 なんて意味不明な事言い出す始末だし。 普通は規約が改定されたからそれにあわせてAppleはNSFastEnumerationを実装して対応した。 って考えるでしょ。 なんで、一部になっちゃうかな? 分けて考えるなら、徹底して分けて考えろって思う訳よ。 書いてるうちに、先書かれちゃった。 問題はそこなんだけどねw >382 ANSIかISOで管理してるって話も聞くんだけど、全く見当たらないんだな、これが。 developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/ これだって、Apple実装を例にしたObjective-Cのお勉強資料だしね。 >>384 [self release]; // 自身の解放?
386 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 08:01:32 ] alloc, initで生成と初期化を行うのはただの慣習であってObjCの仕様じゃない。 逆にfinalizeやFast Enumeration系はランタイム側で定義された仕様。
387 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 08:21:00 ] ほんとつまんない事にこだわる奴らだな。 タクシーのエンジンの構造や燃料の効率について、なんも知らなくったって、 運転手さんに行き先を言えば望んだ場所に連れて行ってくれるというのに。
388 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 08:30:09 ] いや、一応ここ専門板だし。俺はもう寝るけど。
389 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 08:56:01 ] >>388 というか、ISO / ECMA 規格がないのにどこまでが言語でどこからがライブラリかという話をしても仕方がないのでは。
390 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 09:12:05 ] 多分それでFAだろね それ以上はAppleがどう認識してるか調べるくらいが関の山かと
391 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:01:36 ] コンパイラが認知する部分は言語仕様 ランタイムが認知する部分はランタイム仕様 コンパイラやランタイムを変えなくても変えられる部分は慣習・規約
392 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:31:57 ] じゃあ、コンパイラが @"hogehoge" でNSStringオブジェクト定数を生成してるわけだから、 NSStringは言語仕様に含まれてるんだ。 NSCFStringだと主張するならNSCFStringもまた言語使用に組み込まれている。 で、まだ続けるの? もう不可分で良いじゃん。
393 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:09:41 ] そうだよ。java.lang.StringがJava言語、System.StringがC#と結びついているのと同じ。特別扱い。
394 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:22:09 ] 「@"hogehoge"がNSStringだ」というのは言語仕様 NSStringの具体的な中身はライブラリの仕様
395 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:23:47 ] じゃあ、コンパイラの不可思議な動作も言語仕様のうちだ。 @"hoge" "fuga" @"hogera"; が正しく連結されたりね。
396 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:01:25 ] >>391 Obj-C のどこからどこまでが言語仕様かという話をするために、 >コンパイラが認知する部分は言語仕様 というわけだけど、 「コンパイラが認知する部分」は「言語仕様」という定義をしてるのは誰?
397 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:05:08 ] >>394 >@"hogehoge"がNSStringだ」というのは言語仕様 そうだったのかー。じゃあ GNU実装の gcc -fconstant-string-class オプションでの 文字列リテラルクラスの変更は言語仕様違反ですね… -fconstant-string-classのデフォルトは NXConstantString だから変更しなくてもやっぱり 言語仕様違反ですか…GNUの実装はひどいですねー # その言語仕様とやらがどこに存在してるのか知らんけどw
398 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:27:08 ] >>397 それは間違いでしょ? だって、「コンパイラが認知する部分は言語仕様」とされている訳だから、 Apple拡張されていないgccのコンパイラが認知するものだって言語仕様だよ。 つまりObj-Cの言語仕様はコンパイラの数だけあるってことでしょ。
399 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:30:23 ] ほんとは実装依存って言うんだろうけど 皮肉に皮肉で返しあってgdgd
400 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:32:58 ] /ヽ /ヽ / ヽ / ヽ ______ / ヽ__/ ヽ | ____ / :::::::::::::::\ | | // \ :::::::::::::::| | | | ● ● ::::::::::::::| ・・・ | | .| :::::::::::::| | | | (__人__丿 .....:::::::::::::::::::/ | |____ ヽ .....:::::::::::::::::::::::< └___/ ̄ ̄ :::::::::::::::::::::::::| |\ | :::::::::::::::::::::::| \ \ \___ ::::::::::::::::::::::::|
401 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:44:38 ] >>398 >コンパイラの数 Obj-CのコンパイラってAppleのgcc,GNUのgccとPOCぐらいだろ
402 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:47:38 ] >>401 それに何の問題が?
403 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:44:53 ] しょうもない話題をいつまでひっぱってんだ
404 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 18:45:14 ] alloc と init がObjective-C 言語仕様に規定されているという人がいるからしようがない。 もしくは、 Objective-Cの言語仕様はそのコンパイラが規定すると言い張る人がいるからどうしようもない。 Objective-Cには公開された言語仕様が存在しない。 ってことをどうして認めようとはしないの? それとも僕はとんでもない勘違いをしていて、 これこれは言語仕様と断言している人たちは、 非公開な言語仕様を閲覧できる立場の人たちなの?
405 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 19:08:29 ] 標準規格がない言語には言語仕様がないと?
406 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:30:53 ] さすがにもう飽きてきた。w >405 じゃあそれ、これこれは言語仕様です。これこれは違います。 って自信満々に言ってる人に言っといて。 標準がないのにそんな自信たっぷりに言われてもねぇ、って。
407 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 21:23:01 ] 皆さん熱弁を振るってますが、 「どこからが美人でどこまでがブスか。」 という議論に近い不毛なものを感じますた。 以上、通りすがりの私の感想でした。
408 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:37:47 ] だよな どこからAPIの機能でどこから言語の規格が議論して何か意味あるのかね。 C++でもAPIがなけりゃ文字列処理もでない屑言語だが
409 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:45:04 ] >>405 > 標準規格がない言語には言語仕様がないと? そりゃ標準規格がない言語には、どこまでが標準言語仕様でどこからが標準ライブラリでどこからが独自ライブラリかの違いなんてないだろうよ アホ?
410 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:14:55 ] 標準ライブラリも含めて言語仕様でしょ NSObjectがなければ何もできないんだから
411 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:23:09 ] 「仕様」を「規約」と解釈する人と「実装の裏にある本質」と解釈する人が争ってる感じ
412 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 08:59:06 ] この流れは…iPhoneのお陰かな。
413 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:03:29 ] >>410 NS〜は「de fact」標準ライブラリです。
414 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:11:29 ] >>413 de facto ですよ正しい綴りは。
415 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:15:43 ] >>414 どうも。
416 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:04:21 ] >>410 objc/Objectじゃだめですか><
417 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:17:44 ] >>411 仕様は仕様でしょ? それがあって始めてApple方言とかGNU方言とか言える訳で。 一番近いのは、 developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_951_section_1.html これ。文書全体じゃなくてこの章だけね。 >>412 おれは茶化してるだけのCocoaがなかったら死ぬタイプの人間ですw
418 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:33:50 ] developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_950_section_1.html こっちもそうだった。 こっちはコンパイラのディレクティブのところにNSStringと明記されてる。 これが要求仕様なのかどうかは不明。
419 名前:デフォルトの名無しさん [2008/07/10(木) 17:48:03 ] アップルは、Objective-CとCocoaを別々に開発している。 当然、仕様も別々に存在している。 特に、Objective-Cに関しては、Darwinプロジェクトの中で開発されているのだから、どこまでがObjective-Cなのかは明確になっているんじゃないのか? Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。
420 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:13:07 ] >>419 アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。OpenDarwinも終わっちゃったし。 >Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。 Objective-C文字列リテラル、メッセージの転送、例外処理、@synchronized、ObjC 2.0のプロパティ、高速列挙。Cocoaを前提とした機能はずいぶんと追加されてるよ。
421 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:27:38 ] >当然、仕様も別々に存在している。 その自信はどこから来るわけ? Apple 社員で社外秘の仕様をみられるというの? 社外秘の仕様があるばあいは社外の人には仕様はあることになるのないことになるの?
422 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:18:39 ] >>420 > アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。 困ると思うよ。 「分割して統治せよ」って言葉聞いた事あるよね? 大規模なシステムを設計する場合は、全体が一枚岩のようになると、とても保守が面倒になるので、複数のコンポーネントに分割して管理するものなんだよ。 Cocoaだって、あえてAppKitとFoundationに分かれているのもそういった理由があるからだと思うよ。 NSStringがFoundation側で定義されていて、-[NSString drawAtPoint:withAttributes:]があえてAppKit側にカテゴリーを使って定義してあるのも、そういった理由があるからでしょう。 Objective-Cも同じようにCocoaから分割されていると思う。
423 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:48:59 ] Appleの場合、仕様はJobs(笑)ってのもあるから。 最近、GPGPUに興味を持ってるみたいだから、「Snow Leopard」公開後は新しい言語 「OpenCL(open computing language)」を使用するように仕様が変更されるかもしれない。
424 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:08:20 ] Rubyの仕様がまつもとひろゆきみたいなもんだね
425 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 02:25:22 ] Jobs本人がOpenCLについてなんか言及してるん?
426 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 02:26:24 ] >>422 システム全部大雑把でいいなんて書いてない。あくまで言語仕様とライブラリの境目の話。拡大解釈しないでおくれ。 >Objective-Cも同じようにCocoaから分割されていると思う。 文字列リテラルとかプロパティとか高速列挙とか、いろいろ挙げたのは無視? Objective-Cの権利は全部アップルが持ってるし、自社OSのためにコンパイラもランタイムも開発してるんだから、Cocoa前提の機能を言語仕様に含めたほうがアップルにとって楽なこともあるでしょ。
427 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 07:42:15 ] 文字リテラルもプロパティも高速列挙もCocoaなしで使えるし
428 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 09:37:12 ] >>423 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語 >新しい言語
429 名前:デフォルトの名無しさん [2008/07/11(金) 12:05:41 ] まずは自分でコンパイラ程度を作れる技術をつけてからじゃないか? 言語仕様がどうとか言う奴は、どうせ素人だろw
430 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:57:08 ] コンパイラなんて、誰でも作れる基礎技術じゃん。 大学生が授業でやるくらいのはなし。
431 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:15:29 ] OpenCLってObjective-Cから簡単に呼び出せるなら問題ないんじゃね? FFI(Foreign Function Interface)とか経由するのかな?
432 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:22:24 ] 今議論している内容を小学生1年生でも分かるように 説明しなさい。
433 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:35:54 ] >>432 人にモノを頼むときにはそれなりのw
434 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 21:41:24 ] >>432 つくえの上にりんごが一つあります。 さて、このりんごはなぜここにあるのでしょう。 1.りんご農家のおじさんがりんごを育てたから 2.お母さんがかってきたから 3.まさしくんがつくえの上においたから 4.言語仕様 5.苺も食べずにりんごとか素人だろw
435 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:46:40 ] >>434 私という自我がリンゴを個体としてのリンゴをそこに存在すると認識したからそこにあるのです。
436 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:21:47 ] >>434 という他者が「そこにりんごが一つある」と主張 しているだけだから、正確には>>435 は信用した上で認識「することにした」段階かと
437 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:26:01 ] みなさんは変態さんですか?
438 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:43:08 ] 多態です。
439 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 23:30:11 ] >>431 ttp://www.apple.com/pr/library/2008/06/09snowleopard.html >OpenCL is based on the C programming language and has been proposed as an open standard. ttp://en.wikipedia.org/wiki/OpenCL >The initial OpenCL implementation is reportedly built on LLVM and Clang compiler technology.[citation needed] 参考になりそうなのは、これくらい。。。
440 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:38:19 ] OpenCLはCUDAらしい。CgではなくCUDAベースだから見かけほどC言語には似てない気がする。
441 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 17:09:50 ] Cocoaラッパ待ち
442 名前:デフォルトの名無しさん [2008/07/15(火) 18:42:43 ] >>440 >OpenCLはCUDAらしい らしいという話はよくでるんだが ソースって見たことがないんだよな。
443 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:13:14 ] プログラム初心者がobjective-Cから入るのってマズい?
444 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:29:51 ] >>443 マズくはないけど資料は少ないから初心者にとっては最初の学習曲線が急勾配になってしまう。 JavaやC++で基本的なアルゴリズムやデザパタを学んだ方が資料が豊富だから楽に勉強できると思う。 ダイナミックな部分を勉強するにはSmalltalk(Squeak)が適している。あとRubyやPythonも。 そういったことを承知の上でどれで始めるのが良いかを選べばいいんじゃないかな。 あとは好みの問題。
445 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:30:36 ] >>443 あんまりまともなプログラムを書いた事のない俺が思う程度だけど、 他言語をちょっと囓っている+英語の情報も読んでいけるのならアリだと思う。 ただ、全く分からない人がいきなりObjective-Cからだと ・最近は増えてきたものの日本語の情報(Web&書籍)が少なめ。 ・AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり。 この辺でちと大変かも。 基本的には意欲だと思う。逆に言えば意欲が弱いとJavaだろうがC言語だろうがPHPだろうが関係なくだめだと思う。 ベストな環境はリアルでもメールでも掲示板でもいいけど疑問に答えて教えてもらえるような人間がいると覚えは早いと思う。
446 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:40:36 ] >>444 サンクス 各言語の違いが全くわからないのでググって検討してみます C#よりC++の方がいいんですね >>445 サンクス 意欲・・・きっかけがそもそもiPhoneという厨な理由だからどこまでいけるか わかりませんが・・・ >AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり やっぱりC関連から入った方がいいのかもしれませんね
447 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:51:48 ] >>446 そういう動機であれば最初はRuby on RailsとかでWebアプリを作成してiPhoneから利用すれば簡単だと思う。 そういう資料はネット上に沢山転がってるからググって見るといいよ。 ある程度プログラミングに自信が付いてからObjective-Cに移行すればスムーズに学習できそう。 こういう順番でやれば、サーバーサイドとクライアントサイドの両方の知識が得られる。 両方の視点でプログラミングできればiPhoneに負荷をかけないプログラムを作成するノウハウも見つけられると思う。
448 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:22:14 ] >>447 ありがとう。なんて親切なんだ(つД`)・゚・ Ruby on Railsを調べてみます
449 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:46:27 ] ObjCの前にCはやっといた方が良いけど、C++は覚えなくてOK. (C++専用のライブラリを使いたいのでもなければ) C#はiPhoneでの開発には全く不要。 iPhone用プログラムならまずWebアプリから作ってみるというのには賛成。 PHPでベタ書きか、Python + DjangoかRurby + Railsあたりがおすすめ。
450 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:58:24 ] >>449 dクス。感涙で前が見えない。゚(゚´Д`゚)゜。 うーむ、C++でもC#でもなく初代Cがいいのか・・・ iPhone用ゲームの開発が主目的なんですが、やはりWebアプリから学んでいったほうが いいんですかね?
451 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:21:49 ] 明確にiPhone開発がしたいならObjCから始めるべきだと思う. モチベーションは全てに優先するよ.
452 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:32:08 ] うむ、iPhone Application Tutorialからど〜ぞ。
453 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:03:11 ] 皆さんありがとう 明日Amazonから萩原本が届くのでとりあえず読んでみます(`・ω・´)
454 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:33:13 ] まてまて、荻原本はプログラミング初学者には敷居が高いぞ。 他言語でokなので、何かしらの入門本を読んでからの方が良いと思われ。
455 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:43:01 ] 初めてで萩原本読むくらいなら、 英和辞書片手にヒレガス本第3版読んだ方が良さそうだな。 平易な文体だから高校生以上なら辞書なしでも 大体のフィーリングは掴めると思うし、スクリーンショットや挿し絵も多いしな。
456 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:46:52 ] >>454 >>455 Σ (゚Д゚;) そ、そうなのか・・・ では上で教えてもらったCとか、Ruby on Railsとかの入門書から挑戦してみます ヒレガス本第3版というのも見てみます(洋書は気おくれしそうですが・・・) ありがとう ってか皆さん滅茶苦茶お詳しいっすね・・・(;´Д`)
457 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:50:31 ] 個人的な趣味としてRubyと Railsを押すけど、webアプリを作って外部に公開する場合レンサバ借りるときにいろいろ困ることがあるよ。 英語が得意なら海外でRails向けのホスティングサービスがあるけどね。 iPhoneアプリを作りたい位だからLeopardユーザだと思うけど、 TextMateってテキストエディタをDLしてきて p "Hello World" って書いて拡張子を rb 保存して Command+Rをするだけで実行できて楽だと思う。 ってスレ違いになるからこのくらいにしておく。 その心意気はすばらしいけど、荻原本はまったくもってプログラミング初心者が読む本じゃないよ。
458 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:25:47 ] でもObjective-Cの仕様なんてCに毛が生えたようなもんだし、 Objective-Cの書籍として荻原本はベストな選択の一つなのは間違いない。 強いて言うなら、Cの入門書とCocoaフレームワークやInterface Builderに ついての本を一冊ずつ買っとくといいと思う。
459 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:16:38 ] >>457 >>458 アドバイスサンクス 道は一本じゃなさそうなのでいろいろ齧ってみます しかしプログラムの道は高く険しいなぁ・・・
460 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:21:38 ] >>459 あと、iPhone プログラムを突然はじめるより、いちど OS X 用の小さいプログラムを書いてから iPhone にいったほうがわかりやすいかもしれない。 大体構造いっしょだし、OS X 用プログラムの書き方のほうがネットに沢山ころがってます。
461 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:25:19 ] >うーむ、C++でもC#でもなく初代Cがいいのか・・・ Obj-C は C++ と同時期に(80年代) C から派生した言語なので、まあ並列だよ。 べつに C++ を勉強したから Obj-C がわかりやすいとかその逆ということではないです。 両方ともオブジェクト指向だけど、毛色が360度違います。 C# は Java のクローンだよね。Java 自体が C, Obj-C, C++ を参考に開発されたものだし。
462 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:49:02 ] C#、特にC# 3.0はJavaより強力な言語になってるよ。 ただ実質的に実行環境や開発環境がWindowsに限られるのが難。(Monoもあるけど) MS製の環境にどっぷり浸かるならば良いとは思う。VS.Netも強力だし。 ただiPhoneの開発には使えないし、応用できるテクもおそらく無いw
463 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:53:15 ] 勘違いさんいらっしゃーい >>462 はいさようなら。
464 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:55:19 ] >>460 >>461 >>462 俺みたいなクレクレ厨にここまで親切にアドバイスしてくれるなんて・・・ みんな優しいな。゚(゚´Д`゚)゜。 よその板なら「ググれやカス」で終わっても不思議じゃないのに・・・ ありがとう、このご恩は忘れませぬ ノシ Windowsのゲーム作りならC#がいい、って聞いたことあるので いつかC#も触ってみます
465 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:58:27 ] >>464 >このご恩は忘れませぬ 検討を祈る。成功したら後輩に優しくな!
466 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:59:10 ] 自作er乙
467 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:14:15 ] iPhoneアプリに関しては正式に配布できるような形のプログラムのTipsとかは現時点ではNDAがあるからないに等しい。 Appleのサンプルプログラムくらいしかソースも読めない。 Objective-Cをやるなら >>460 が言うようにMacアプリからやった方が現時点ではいいだろうね。
468 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:19:01 ] Mac用だけどObjective-Cの入門記事です。 journal.mycom.co.jp/column/objc/index.html
469 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:36:38 ] Objective-CってVisitor Patternが使えないの?
470 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:39:27 ] え?
471 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:03:20 ] そもそも visitor pattern なんて使わないだろ
472 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:03:52 ] Visitor Patternを使うのに、何か問題でも?
473 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:49:15 ] Visitor Patternといえば木構造の処理系作成に使ったことがある。 でも、Objective-Cはメソッドオーバーロード出来ないから特殊な方法でやった。 普通の意味でならVisitor Patternが使えないのは本当。
474 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:05:42 ] Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ? オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。 単純に複数の名前のメソッドを使い分けるだけでは?
475 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:08:31 ] >単純に複数の名前のメソッドを使い分けるだけでは? そんなメンテナンス性の悪いコーディングしてどうする
476 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:41:48 ] ようするに void action(A obj) void action(B obj) と定義されていたものが、 void actionWithA(id obj) void actionWithB(id obj) となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
477 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:55:39 ] 今帰宅 萩原本届いてた ちょっと読んでみた (´;ω;`) ・・・。 やっぱりCの入門書から読みます >>467 >>468 ありがとう 心折れかけたけど地道に頑張ります
478 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:13:32 ] >>477 まあプログラミングにも王道は無しだよ。あなたの今のように謙虚な気持ちを忘れなければきっとできるようになります。 あと、C のポインタのあたり、文字列操作の細かい話は あまり勉強しなくても大丈夫なので読み飛ばしてください。
479 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:23:20 ] おいおい、ポインタはいるだろ。 Cocoaだって最近のAPIはNSError **が大量にあるだろ。
480 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:26:42 ] ポインタってみんなどういうところでつまづくの? 「変数を入れてるメモリエリアのアドレスを渡す。」 それ以上になにか必要か?
481 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:32:40 ] 478 ですが、全然いらないというつもりはないんだけど。 >>480 さんの言ったことを言いたかったです。言葉が足りませんでした。 & と * はわかっておいたほうがいいけど、Objective-C ではそれで充分だよね。 malloc / free は要らないし、ポインタ演算 (足し算引き算) は要らないでしょ。 あと、配列は知らなくてもいいし、配列とポインタの等価性も要らないし、 文字列が char* 配列だということも知らなくてなんとかなるのでは。
482 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:56:38 ] >>476 >ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね? それで多重継承や多重ディスパッチを出来ると強弁するならご勝手にw
483 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:01:28 ] >>480 >配列とポインタの等価性 エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。>>481 はわかっていない。
484 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:13:51 ] >>482 Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ... visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 とわからない言葉をならべてみる
485 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:15:10 ] >エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。 いやまあ、Objective C スレとしては、そのへんでひっかかろうがひっかかるまいが Objective C では必要ないよというので充分なのでは。
486 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:19:14 ] こういうスレで嘘は良くないのではないかい?
487 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:34:22 ] 世の中には平気で嘘をつける人がいる。 嘘を指摘されるとそういうものは必要ないと言いだす。 そういう無反省な態度は無自覚に行われるから本人は嘘を良くないとは考えていない。
488 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:41:12 ] >>484 >visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 ほんと馬鹿。逝ってよし。
489 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:09:23 ] 481 ですが、嘘を付いてすいませんでした。 折角なので配列とポインタがどんなふうに違うかわかりやすく教えてください ...
490 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:18:07 ] www.cocoadev.com/index.pl?VisitorPattern でも同じような議論になってる
491 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:48:48 ] >>364 でも同じような議論になってる 嘘つきはお断り
492 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:52:06 ] >>489 C FAQ
493 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 03:46:16 ] >>489 ぐぐれカス
494 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 05:46:43 ] >>483 たしかにそうだ なんとなく分かってるつもりでも 間違って覚えてるケースが結構ある 正しい理解が必要
495 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 06:28:26 ] 嘘つき語録 >>474 Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ? オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。 単純に複数の名前のメソッドを使い分けるだけでは? >>476 ようするに void action(A obj) void action(B obj) と定義されていたものが、 void actionWithA(id obj) void actionWithB(id obj) となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね? >>478 @C のポインタのあたり、A文字列操作の細かい話はあまり勉強しなくても大丈夫なので読み飛ばしてください。 >>481 Bmalloc / free は要らないし、Cポインタ演算 (足し算引き算) は要らないでしょ。 あと、D配列は知らなくてもいいし、E配列とポインタの等価性も要らないし、 F文字列が char* 配列だということも知らなくてなんとかなるのでは。 >>484 Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ... visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 とわからない言葉をならべてみる
496 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 07:42:09 ] 他はしらんが、C における文字列操作の細かい話は勉強しなくてもいいのは本当では?strstr とか知っててもしかたないよね。NSString でいいんじゃね?
497 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:19:11 ] いろいろな言語の文字列操作関数の比較表 Ruby, Python, JavaScript, Perl, C++ 0xcc.net/blog/archives/000137.html Ruby, PHP, Objective-C d.hatena.ne.jp/hetima/20061025/1161773698 意外とObjective-Cも健闘してる希ガス。 実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。 テキストエディタの作成のところでもNSStringを使ってる。 第1回:iPod touchにアプリケーションがインストールできる不思議 www.thinkit.co.jp/free/article/0711/9/1/ 第2回:iPod touchの自作アプリケーションが作れる&動かせる! www.thinkit.co.jp/free/article/0711/9/2/ 第3回:iPod touchで動作するテキストエディタはこう作る! www.thinkit.co.jp/free/article/0711/9/3/ 第4回:夢のオフラインRSSリーダを作ろう! www.thinkit.co.jp/free/article/0711/9/4/
498 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:27:53 ] 実際のHello Worldプログラムを紹介する。(その1) // hello.m #import <UIKit/UIKit.h> #import "HelloApplication.h" int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; return UIApplicationMain(argc, argv, [HelloApplication class]); }
499 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:28:40 ] >>497 >実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。 >テキストエディタの作成のところでもNSStringを使ってる。 べつに NSString の使い方を示すのなら 「実際に」iPhone じゃなくて「実際に」Mac / GnuStep でいいのでは...
500 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:28:56 ] (その2) // HelloApplication.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import <UIKit/UIApplication.h> #import <UIKit/UIPushButton.h> #import <UIKit/UITableCell.h> #import <UIKit/UIImageAndTextTableCell.h> @interface HelloApplication : UIApplication { UIImageAndTextTableCell *pbCell; UITableCell *buttonCell; } @end
501 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:31:14 ] (その3) // HelloApplication.m #import <CoreFoundation/CoreFoundation.h> #import <Foundation/Foundation.h> #import <UIKit/CDStructures.h> #import <UIKit/UIPushButton.h> #import <UIKit/UIThreePartButton.h> #import <UIKit/UINavigationBar.h> #import <UIKit/UIWindow.h> #import <UIKit/UIView-Hierarchy.h> #import <UIKit/UIHardware.h> #import <UIKit/UITable.h> #import <UIKit/UITableCell.h> #import <UIKit/UITableColumn.h> #import "HelloApplication.h" @implementation HelloApplication - (int) numberOfRowsInTable: (UITable *)table { return 2; } - (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col { return row ? buttonCell : pbCell; }
502 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:33:15 ] (その4) - (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col reusing: (BOOL) reusing { return pbCell; } - (void) applicationDidFinishLaunching: (id) unused { UIWindow *window; BOOL i = TRUE; window = [[UIWindow alloc] initWithContentRect: [UIHardware fullScreenApplicationContentRect]]; pbCell = [[UIImageAndTextTableCell alloc] init]; [pbCell setTitle: [NSString stringWithFormat:@"Hello World!"]]; UIPushButton *button = [[UIThreePartButton alloc] initWithTitle: @"Touch Me"]; buttonCell = [[UITableCell alloc] init]; [buttonCell addSubview: button]; [button sizeToFit]; UITable *table = [[UITable alloc] initWithFrame: CGRectMake(0.0f, 48.0f, 320.0f, 480.0f - 16.0f - 32.0f)]; UITableColumn *col = [[UITableColumn alloc] initWithTitle: @"HelloApp" identifier: @"hello" width: 320.0f];
503 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:33:47 ] (その5) [window orderFront: self]; [window makeKey: self]; [window _setHidden: NO]; [table addTableColumn: col]; [table setDataSource: self]; [table setDelegate: self]; [table reloadData]; UINavigationBar *nav = [[UINavigationBar alloc] initWithFrame: CGRectMake( 0.0f, 0.0f, 320.0f, 48.0f)]; [nav showButtonsWithLeftTitle: @"Foo" rightTitle: @"Bar" leftBack: YES]; [nav setBarStyle: 0]; struct CGRect rect = [UIHardware fullScreenApplicationContentRect]; rect.origin.x = rect.origin.y = 0.0f; UIView *mainView; mainView = [[UIView alloc] initWithFrame: rect]; [mainView addSubview: nav]; [mainView addSubview: table]; [window setContentView: mainView]; } @end
504 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 10:10:59 ] 勘違いさんいらっしゃーい >>499 はいさようなら。
505 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:04:42 ] POCはMacじゃ使えないんですか?
506 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:23:12 ] めずらしく伸びてると思ったらもう夏休みなんだな… 小中学生ばっかりか
507 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:25:50 ] Objective-Cは、文字列を`char *'型にするか、NSStringオブジェクトにするか選択できるハイブリッド型であるということが特徴です。 これがObjective-CのほうがSmalltalkより高速な理由です。 別な観点から言えば、 Objective-Cプログラムのすべての要素がオブジェクトで表現されていたとしたら、おそらくSmalltalkと同程度の速度であり、 Smalltalkが行なえる基本クラスへの最適化がないことで苦戦するでしょう。 つまり、文字列操作の細かい話は勉強しなくてもいいと言っている人はObjective-Cのメリットを全く理解していないんです。
508 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:27:01 ] >>506 ボクが小学生だからってバカにするオマエがバカ!
509 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:33:53 ] >>505 PoweMacのみ。IntelMacでは動かない。EtoileはIntelMacでも動くよ。
510 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:47:16 ] >>507 ええと、一応聞いておくけど、本気でそう思っているのか ? おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
511 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:02:20 ] >おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ? 逆に質問しよう。なぜ、最適化という問題を持ち出したかと言えばオブジェクトのオーバーヘッドを理解しているからじゃないのか? 自分で最適化しないでも、問題を理解していれば、そういった処理を注意深く扱うようになる。それで速度的な問題を回避できるようになる。
512 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:12:05 ] 近頃の人ってsprintfとか使わんの?
513 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:48:32 ] 「文字列操作ルーチンを自分で書いて最適化できるのか ? 」って極端すぎるだろw よっぽど悔しかったのかw
514 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:11:34 ] >>512 sprintfなんて使ってるやつはばかです
515 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:25:30 ] >>514 理路整然とした理由も述べないで否定するだけなら小学生でもできる。 まさか小学生じゃないよな? sprintfとNSStringでの文字列操作の用例を挙げて比較したうえで なぜsprintfを使うのがばかなのか述べてくれないかなぁ。 これは非常に興味深いテーマだ、>>514 、君の意見が聞きたい。
516 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:37:03 ] sprintfのmanくらい読んでから質問してください
517 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:48:23 ] snprintfだろう常考
518 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:20:33 ] クズばっかだな
519 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:33:50 ] snprintf!! wwww 現場を知らない廚はコレだから困る。
520 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:37:21 ] >>514 の言い分けマダー?(゜∀゜)
521 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 16:30:50 ] わけけ?
522 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 16:52:33 ] >507 一行目は同感だけど、最終行は同意できない。 いまさら自力で文字列”操作”をする人はいないでしょ。 使うとしたら簡易パーサぐらいだろうけど、 それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。 それともこの程度のことも”操作”に入る? NSLogは改行されるし、妙な出力が追加されるんで、fprintfを使うことは多いよね。 >>516 +[NSString stringWithFormat:format, ...] がsprintf相当だね。
523 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:07:54 ] >一行目は同感だけど、最終行は同意できない。 結局、全く理解してないことを指摘されて図星だったのかw まともな反論も出来ないチンカスw
524 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:39:14 ] >いまさら自力で文字列”操作”をする人はいないでしょ。 >使うとしたら簡易パーサぐらいだろうけど、 >それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。 で、NSStringを使う利点まだぁ?チンチン その程度でC言語の文字列操作の細かい話は勉強しなくてもいい理由だって主張してるの?
525 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:56:20 ] 佐藤藍子 「NSStringさえあればもうNSStringC言語の文字列操作の細かい話は勉強しなくてもいいと思ってました」
526 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 18:27:42 ] ごめん。 人違いだわ、それ。 おれ、>522が初発言ね。 >NSStringを使う利点まだぁ? 楽だから。 べつにお勉強の為に文字列を操作するのは止めないけど、 お勉強以外であえて泥沼を選ぶ意図が俺には分からないね。
527 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 18:40:21 ] >>526 「>>514 じゃないけど」ぐらいことわってから書くぐらいしろよ。 間違われても仕方ないだろ。 まぎらわしいぞw
528 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:02:20 ] ごめん。 ID無いの忘れてたんだよ。
529 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:14:12 ] 外人さんがつくった Cocoa ソフトで日本語環境でつかうと おかしくなるのがあって、ソースみて原因追及してみたら 内部でアルファベットだけと仮定して char* で操作してるところのせい だったというのがあるので、char* のほうが速いかもしれませんが、 非日本人が使うかもしれないというのを考えて、 ShiftJIS / MacJapanese とかエンコーディングを仮定して char* を操作するプログラムを書くのではなくて、 NSString (か他の国際化文字列ライブラリ)をつかって書くようにして おいてくださると多分世界のどこかで誰かが助かります。
530 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:19:21 ] 文字を右から左に書く言語も考慮して作れということか?
531 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:31:05 ] NSString (とかほかの国際化文字ライブラリ) をつかっておくと、 自分で考えなくても自動的にある程度は考慮されたことになるというのが利点。 Mail.app にイスラエル人の知り合いからメールがきて、 名前欄がちゃんとヘブライ語になってたので感心しました。 まあきっと外人さんには名前欄に漢字が出る時点でびっくりなんだろうけど。 海外製のフリーウェアシェアウェアでも Cocoa なら大抵は 日本語問題なくつかえるのは一貫して NSString つかってあるからで、 (というと言い過ぎだと思いますが、) 昔の Carbon のころはそうではなかったです。 メニューバーとかよく化けてたでしょ。
532 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:39:10 ] >>529 君のまだ知らない世界にはユニコードっていうものがあってな
533 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:09:08 ] >>532 個人が作るソフトにはUTF-8なcharとかwchar_tを使わずに US-ASCIIかISO-8859-1前提でcharを使ってるのがままあるよ。 作者がUnicodeにする必要を感じてないから仕方ない。 Mac用のソフトだと素直にCocoaで作ればそんなことにはなりづらいけどね。
534 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:14:19 ] アホにわざわざ説明してやらんでも
535 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:16:53 ] >>522 >それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。 その辺に落ちてるのほとんどchar*になってるだろw NSString使わない方が良いみたいに読めてしまうw
536 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:18:38 ] UTF-8NとUTF-8はちと違うし、UTF-16にもUTF-16Nがあるんだよな。
537 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:27:05 ] >>535 >それともこの程度のことも”操作”に入る? も読んでね。 文字列を渡したり、もらったりも文字列操作に入れちゃうのか?
538 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 04:08:53 ] >>537 てかさぁ、ライブラリでパターンマッチングやバックトラッキング用のクラスを用意してその上に高級パーサとか正規表現ライブラリを構築してる例なんてあるの? なかったらどのみちchar*を使うんだから勉強せざるを得ないんじゃないのか?
539 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:30:58 ] char *は使うよ。 でも、文字列は操作しないよ。
540 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:39:33 ] 正規表現ならOgreKitがある
541 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 08:36:55 ] パーザをlex&yaccで作成するときにはまともなCの知識が必要だ。 上で言ってるObjective-Cの知識だけじゃどうにもならん場合はある。
542 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 09:02:36 ] そこまでする人間がまともなCの知識を持ってないというのも考えにくいような。 ちょっと凝ったことをするにはCで直に、あるいはObjCのラッパを書くことになるし Objective-Cだけで開発するには限界があるのは同意。
543 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:04:26 ] ここで正規表現とか持ち出す奴っていったい何なの? データベース使うJavaの人?BSDとかでスクリプト書いてる人? 文字列検索と文字列操作を美しく勘違いしてないかいw?
544 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:19:48 ] C言語の正規表現を使うにはregex.hをimportしてregcomp, regexec, regfree関数を利用する。 int regcomp(regex_t *preg, const char *regex, int cflags) 正規表現のコンパイルを行なう。コンパイル成功時には0を返す。 int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); 正規表現による検索を実行する。 void regfree(regex_t *preg) 正規表現パターンバッファを解放する。
545 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:28:06 ] >>544 通りすがりだが横から質問させて。 で?そのregcomp,regxec,regfree関数ってどういう時に使うの? sprintfとかscanfとか上の方で出てたNSStringの文字列操作と置き換えられるものなのかな? 教えてエロい人!
546 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:31:02 ] OgreKitとregex.h。OgreKit遅いやん。
547 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:35:06 ] >>546 ネーネーregex、OregKitとかいうのとsprintfは同じ機能のものなの? 文字列操作の話で来ているのになんで「正規表現」て出てきてegex、OregKitなの? ワカラナイ、ワカラナイ... 「お前が馬鹿だから」と言うの無しでちゃんと説明して!、初心者なので。
548 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:36:33 ] >>545 適当にググッた。嫁。サンプルコードだけ読めば簡単に分かる。 regex.h memo.majide.com/index.php?%A1%DAC%B8%C0%B8%EC%A1%DB%C0%B5%B5%AC%C9%BD%B8%BD sometime.minidns.net/~ccgi/posix_regex.html reglib.c ・・・ regcomp,regxec,regfree関数を使って、regsplit, regreplace, regrpall, regcnt関数を構築してる例 sometime.minidns.net/~ccgi/posix_reglib.html
549 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:41:36 ] 要するにプログラマは文字列操作をテーマとした意思の疎通も困難な程、コミュニケーション能力がないという事か。 sprintfに対してreglib使え?おいおい(w。 挙げ句は自分の言葉で説明できないからググッたコピペと来たよ。 これじゃプロジェクトが座礁してデスマーチにもなる罠。
550 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:42:11 ] >サンプルコードだけ読めば いや、走らしてみろ。即分かる。
551 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:43:09 ] >>549 はいはい、ワロスワロスw
552 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:47:24 ] prm1という変数があってユーザーが入力した値を入れ、メッセージに表示する為の文字列を作りたいと思います。 例:"prm1は不正な入力です。" sprintfではなくreglibで処理を行なうにはどのようにしたら良いでしょうか。 具体的なコードをここに書いてくださると助かります。
553 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:57:59 ] >>552 のこうげき 「かいしんのいちげき!」 >>551 の無能さが露呈した。
554 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:06:05 ] hoge.strings "hoge"="%sは不正な入力です。"; hoge.m ... id hoge = NSLocalizedStringFromTable(@"hoge", @"hoge", @"hoge"); hoge = [NSString stringWithFormat:hoge, prm1]; fprintf(strerr, "%s¥n", [hoge UTF8String]); ... てか、文字列操作の細かい部分をchar *でするかどうかの話でしょ? なんで話変わってんの?
555 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:06:47 ] >>549 >これじゃプロジェクトが座礁してデスマーチにもなる罠。 いやいや多分>>548 はプログラマですらないからwww iPhoneブームで注目度があがるの結構だけど、知ったかぶる廚も多くなるから嫌だね。
556 名前:522 mailto:sage [2008/07/20(日) 11:07:29 ] >>554 は俺ね。 また勘違いされる所だ(w
557 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:08:37 ] 上でlex&yaccの話が出てたと思うけど、文字列操作は字句解析と構文解析のふたつで出来てることが多い。 lexは字句解析のことで、文字列を1文字づつ読み込んでトークン、つまり単語に切り分ける仕事をする。 yaccは構文解析のことで、得られたトークンの意味を推測して構文木を作成する。 で、得られた構文木を元にして文字列の意味を翻訳する。 正規表現は、 テキストの文字列に対してパターンマッチを行う強力な道具です。 TEXTファイル中からある単語を置換/検索するのもパターンマッチです。 例えばyaccを使わないで簡易にキーワード(文法上重要なトークン)を探したいときのパターンマッチを正規表現でやるとか出来ます。 regex、OregKitは正規表現プログラムなのでそういったことが簡単に出来ます。 int sprintf(char *str, const char *format, ... ); sprintfは書式formatにしたがって、printf関数と同様の変換を行った出力を、文字列strに格納します。使えるようになると凄く便利。 char *str : 変換した出力を格納する文字列。 const char *format : 書式指定文字列。 ※ 要するに、正規表現は文字列のパターンマッチをするのに対して、sprintf関数は文字列を変換します。だから役割はちがう。
558 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:12:15 ] 煽らないと会話してもらえない可愛そうな香具師なのかな?
559 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:14:45 ] あ、あと出来上がった構文木はバックトラッキング(深さ優先探索)を使って各ノードをトラバース(順次訪れる)します。
560 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:15:58 ] 夏休みに入った途端に変な子が来たね
561 名前:547 mailto:sage [2008/07/20(日) 11:17:06 ] >>557 ありがとうございます! regex,OregKitはsprintfとは使い道が違うものなのですね。 困ったさんのおかげであやうく誤った知識を覚えてしまうところでした。
562 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:21:49 ] 例えば、Ruby on RailsみたいなWebアプリでやってるようなことをObjective-Cとかで実現したいとしよう。 プログラムには、字句解析と構文解析をする部分を作成してHTMLやXMLの中から必要な情報を抜き取る必要がある。 そういうときに、パターンマッチで必要な情報を見つける。そして、sprintf関数とかを使って適切な形に仕上げて表示させるという風に使用する。
563 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:28:39 ] XML なら素直に既存の XML parser 使うだろ、普通。
564 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:31:52 ] >>563 じゃ、解説して! もう疲れてきた。適切な例を考えるのめんどい。
565 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:35:32 ] すまんが>>514 が悪あがきしているようにしか見えない。>>564
566 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:37:47 ] >>514 じゃないからw むしろ>>553 だろ おれはちゃんと>>557 を書いて説明した。>>514 と言われるのは心外だ。
567 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:47:41 ] >>566 すまん。疑心暗鬼になってて。
568 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 12:00:36 ] lex&yacc⇔flex&bison
569 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 12:27:02 ] Obj-C 以外の話題で盛りあがるのはやめようよ ... 夏休みだから仕方がないのかな。
570 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:18:46 ] >>569 >夏休みだから仕方がないのかな。 >>495 にあるように、この流れは君の嘘が元凶だったんだから反省してくれ
571 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 14:40:24 ] 個人的にはOregKit意外にもCocoaOniguruma軽くて良い感じ。
572 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:32:36 ] >>495 にあげられてるのが全部同じ人だってのはどうしてわかったの? もしかしてスーパーハッカー?
573 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 12:24:43 ] 単に嘘ついてるのを並べ得たんじゃね 語録としてまとめるのは変だが
574 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:08:37 ] char* としての文字列の操作をしらなくても簡単な Cocoa プログラムは書けるというのは嘘ではないのでは ... Apple としては C で書くときでも char* じゃなくて CFString つかってくれということだよね。
575 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 05:24:39 ] >Apple としては C で書くときでも char* じゃなくて CFString つかってくれということだよね。 はぁ?ばかじゃねぇの?
576 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 08:44:13 ] >はぁ?ばかじゃねぇの? 煽り煽られたいだけじゃなくて、ほんとにそう思ってるなら、 BSD の API じゃなくて Apple 製の C API で、 char* を受け取るものがどういうのがあるか反省してみてください
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 特別な場合を除いて不要という形ですか、ありがとうございます。