Objective-C [ObjC part:3];
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/08/08(水) 12:18:31(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1106983092/
前々スレ
http://pc5.2ch.net/tech/kako/990/990574267.html
0002関連スレ
2007/08/08(水) 12:33:50【マック】Macintoshプログラミング質問箱
http://pc11.2ch.net/test/read.cgi/tech/1113058054/
Mac OS Xでの開発環境はどれがイイ?
http://pc11.2ch.net/test/read.cgi/tech/1163314891/
Macは難しすぎる
http://pc11.2ch.net/test/read.cgi/tech/1095818624/
*** 新・mac板 ***
Cocoaはさっぱり!!! version.8
http://pc11.2ch.net/test/read.cgi/mac/1179498292/
Macでプログラミング{6}
http://pc11.2ch.net/test/read.cgi/mac/1161656142/
Xcode part5
http://pc11.2ch.net/test/read.cgi/mac/1176452734/
【ADC】Apple Developer Connection
http://pc11.2ch.net/test/read.cgi/mac/1143011492/
0003デフォルトの名無しさん
2007/08/08(水) 12:35:16}
return self;
0004デフォルトの名無しさん
2007/08/08(水) 16:22:49}
でいいじゃん
0005デフォルトの名無しさん
2007/08/08(水) 21:39:10[obj release];
obj = nil;
とかするだろ?
0006デフォルトの名無しさん
2007/08/08(水) 23:09:460007デフォルトの名無しさん
2007/08/08(水) 23:17:540008デフォルトの名無しさん
2007/08/08(水) 23:24:23http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/index.html
Objective-C入門
http://wisdom.sakura.ne.jp/programming/objc/index.html
ダイナミックObjective-C
http://journal.mycom.co.jp/column/objc/
Objective-C FAQ Answers
http://wwwa.dcns.ne.jp/~nito/objective-c/answers.html
かんたんObjective-C
http://www.nslabs.jp/objc.rhtml
0009デフォルトの名無しさん
2007/08/08(水) 23:24:51ごめんなさい
0010デフォルトの名無しさん
2007/08/09(木) 09:36:370011デフォルトの名無しさん
2007/08/09(木) 10:55:41>ttp://www.etoile-project.org/
一応GNUstep系のデスクトップ環境ってことで。独自拡張も有りつつ、0.2リリースもLiveCDも合わせて公開されたし。
GNUstep
>ttp://www.gnustep.org/
Cocoa?何それ?って人はこちらに(w。
>ttp://www.gnustep.org/developers/documentation.html
このあたりは読むと少しは幸せになれると思われ。Cocoa使いでもソース読むといろいろと楽しい。
0012デフォルトの名無しさん
2007/08/09(木) 11:03:280013デフォルトの名無しさん
2007/08/12(日) 18:47:490014デフォルトの名無しさん
2007/08/13(月) 13:50:080015デフォルトの名無しさん
2007/08/13(月) 14:19:22- (id)init
{
self = [super init];
if(self) {
// hogehoge
if(failed) {
[self autorelease];
return nil;
}
return self;
}
return nil;
}
0016デフォルトの名無しさん
2007/08/13(月) 14:48:23ありがとう。autoreleaseしとくのか。
0017デフォルトの名無しさん
2007/08/13(月) 14:57:520018デフォルトの名無しさん
2007/08/13(月) 17:00:540019デフォルトの名無しさん
2007/08/13(月) 21:01:220020デフォルトの名無しさん
2007/08/13(月) 21:45:41[self release];のはず
0021デフォルトの名無しさん
2007/08/14(火) 01:30:49安全のために autorelease はやめた方がいい。
普通は大丈夫だからどうでもいいっちゃどうでもいいけど。
0022デフォルトの名無しさん
2007/08/14(火) 15:30:430023デフォルトの名無しさん
2007/08/14(火) 16:03:220024デフォルトの名無しさん
2007/08/14(火) 16:25:500025デフォルトの名無しさん
2007/08/14(火) 17:01:250026デフォルトの名無しさん
2007/08/15(水) 07:30:230027デフォルトの名無しさん
2007/08/16(木) 10:25:400028デフォルトの名無しさん
2007/08/16(木) 14:06:080029デフォルトの名無しさん
2007/08/16(木) 14:11:080030デフォルトの名無しさん
2007/08/16(木) 14:33:050031デフォルトの名無しさん
2007/08/16(木) 15:23:41簡単に動作するお。
0032デフォルトの名無しさん
2007/08/16(木) 15:40:26なんか変な返事ばっかだが gcc 附属の Object クラスを基底クラスにして Objective-C を
使うって意味なら書いたことある.
書きながら NSArray と NSDictionary と NSAutoreleasePool が恋しくなってきたが…
0033デフォルトの名無しさん
2007/08/16(木) 17:33:34俺様まさか古のSoftwareICなクラスを使ってる人探してる?(w
0034デフォルトの名無しさん
2007/08/16(木) 18:13:23おまいさん変態ですか?
0035デフォルトの名無しさん
2007/08/16(木) 20:42:220036デフォルトの名無しさん
2007/08/16(木) 22:33:37003732
2007/08/16(木) 23:27:32否定はしない.
Linux なんで Cocoa はなかったし,GNUStep は Base だけでもかなりでかいんで採用しなかった…
でも結局途中で自前でArray.mとDictionary.mを実装したりで面倒だったよ…
0038デフォルトの名無しさん
2007/08/16(木) 23:44:460039デフォルトの名無しさん
2007/08/17(金) 14:21:36GCCについてるList.hってどうよ?
ってかこれって他のObjC処理系(あるのかどうか知らんけど)にもついてんの?
004032
2007/08/17(金) 15:32:58最近のGCCにはそんなのが付いてくるんですか?
objc-list.h や hash.h とは別物なんですよね?
あれはCのAPIですし…
0041デフォルトの名無しさん
2007/08/17(金) 16:33:02コメント見る限り、「最近の」って感じではなさそうだけど。
/*
List.h
Copyright 1988-1996 NeXT Software, Inc.
DEFINED AS: A common class
HEADER FILES: objc/List.h
*/
004232
2007/08/17(金) 16:45:04gcc-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 だけじゃないかな?
004332
2007/08/17(金) 16:48:20>Copyright 1988-1996 NeXT Software, Inc.
なんだから OSX には入ってても素の gcc には入ってないのでしょうね…
0044デフォルトの名無しさん
2007/08/17(金) 16:56:55Object.hとか。
0045デフォルトの名無しさん
2007/08/20(月) 17:55:140046デフォルトの名無しさん
2007/08/20(月) 18:44:43設計方針をどうするかで纏まらないとかってオチ?(汗
0047デフォルトの名無しさん
2007/08/20(月) 18:48:25・C++版をコピーするも使われない
・C++に移植されて終焉
のどっちかしか未来が無いってオチ。
0048デフォルトの名無しさん
2007/08/20(月) 18:53:100049デフォルトの名無しさん
2007/08/20(月) 19:07:100050デフォルトの名無しさん
2007/08/20(月) 19:46:570051デフォルトの名無しさん
2007/08/20(月) 23:33:53C++ と Objective-C はメッセージ周りの概念がかなり違うから、
大規模なクラスライブラリはなかなか互いには移植できないと思う ...
0052デフォルトの名無しさん
2007/08/21(火) 01:55:0915年位前に某所でそれを提案したんだけど自然消滅
0053デフォルトの名無しさん
2007/08/21(火) 14:31:3215年前とはObjC人口が違うからな
0054デフォルトの名無しさん
2007/08/25(土) 13:58:52GTK++ のラッパー GTK-- みたいなのを作って欲しい
0055デフォルトの名無しさん
2007/08/25(土) 15:48:27obgtk や gnome-objc はどこに行ったのだろうか…
0056デフォルトの名無しさん
2007/08/25(土) 20:02:290057デフォルトの名無しさん
2007/08/25(土) 20:17:45kwsk
0058デフォルトの名無しさん
2007/08/26(日) 11:22:06gtk を Aqua で X11 無しに移植するのが先決だろうね
0059デフォルトの名無しさん
2007/08/26(日) 13:47:380060デフォルトの名無しさん
2007/08/26(日) 15:01:380061デフォルトの名無しさん
2007/08/27(月) 00:25:020062デフォルトの名無しさん
2007/08/27(月) 16:13:32それはもっともなのだがマックプログラマは無駄にCocoaで再実装する方を
選びたがるからちっとも完成度が上らないんだよな…
0063デフォルトの名無しさん
2007/08/27(月) 16:34:10それはプログラマじゃなくて、ユーザーから要望があるから。
マカーは細かい差異を異常に気にするんよ。
0064デフォルトの名無しさん
2007/08/27(月) 16:47:40さてはBSユーザか
0065デフォルトの名無しさん
2007/08/27(月) 17:22:50ちゃんと保守してほしかったなぁ…
http://ftp.gnome.org/pub/gnome/sources/gnome-objc/1.0/
1999年って…
0066デフォルトの名無しさん
2007/08/27(月) 22:55:31MacOSX でも Qt と wxWidgets は使える。Gtk+ は大したアプリ無いしイラネ。
>>65
ObjC は C を混ぜて書けるんだから、Gtk+ 部分だけ C で書いたら良いじゃない。
0067デフォルトの名無しさん
2007/08/28(火) 01:40:42まあ MVC がきちんと分離されてれば、
Cocoa のガワをかぶせるのはそんなに大変じゃないよね ...
#import <objc/Object.h>
int main(int argc, char *argv[])
{
id agemasuyo = [Object new];
fputs(stderr, "agemasuyo");
[agemasuyo release];
return 1;
}
0069デフォルトの名無しさん
2007/09/03(月) 23:45:160070デフォルトの名無しさん
2007/09/04(火) 00:46:18MacOSXならXCode & Interface Builder
GNUstepならProject Center & GORM
って、マジレスしていいのだろーか?
0071デフォルトの名無しさん
2007/09/04(火) 00:47:570072デフォルトの名無しさん
2007/09/04(火) 15:41:370073デフォルトの名無しさん
2007/09/04(火) 17:30:570074デフォルトの名無しさん
2007/09/04(火) 19:40:06cygwin で vi + make + gcc
0075デフォルトの名無しさん
2007/09/05(水) 01:17:15NSBezierPath *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
0076デフォルトの名無しさん
2007/09/05(水) 05:28:03そんな突然デバッガの、それも pathCollection の出力だけかかれてもわからんよ。
クラッシュレポーターにでるような
スタックトレースかいてくれたほうがましなんだけど。
そのまわりのソースコードをすこしぐらい書いて下さい。
0077デフォルトの名無しさん
2007/09/05(水) 11:34:24Exception: 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
つづく
0078デフォルトの名無しさん
2007/09/05(水) 11:35:1412 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
0079デフォルトの名無しさん
2007/09/05(水) 19:37:520080デフォルトの名無しさん
2007/09/05(水) 22:00:41ソースも書いてね。
というかデバッグってのは自分でいろいろみながら
どこがおかしいのかなぁ、と考えるわけでさ。
こういう応答しかできないってことはデバッグに
苦労してるだろうなぁというのはわかるけど ...
0081デフォルトの名無しさん
2007/09/15(土) 14:33:140082デフォルトの名無しさん
2007/09/15(土) 16:58:400083デフォルトの名無しさん
2007/09/30(日) 11:27:08objc_protocol_listをいじればいいのかな?
0084デフォルトの名無しさん
2007/09/30(日) 15:02:450085デフォルトの名無しさん
2007/09/30(日) 15:08:280086デフォルトの名無しさん
2007/09/30(日) 19:50:30Objective-C++ つかえ
0087デフォルトの名無しさん
2007/10/20(土) 21:12:09ttp://www.haloscan.com/comments/mkino/20071018/#424562
0088デフォルトの名無しさん
2007/10/22(月) 14:56:54いや、聞いてみただけ
0089デフォルトの名無しさん
2007/10/28(日) 10:20:25https://developer.apple.com/leopard/devcenter/docs/documentation/Cocoa/Conceptual/ObjectiveC/index.html
0090デフォルトの名無しさん
2007/10/30(火) 23:06:55ってム板なら知らないやつがいてもおかしくないか
0091デフォルトの名無しさん
2007/10/30(火) 23:19:460092デフォルトの名無しさん
2007/10/30(火) 23:29:30変態だ…変態すぎる…
0093デフォルトの名無しさん
2007/10/30(火) 23:32:420094デフォルトの名無しさん
2007/10/31(水) 12:34:21http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/index.html
いや、ぼくみたいにお金なくて Online 会員のひともいるかなとおもって、貼ってみたんだけど、だめですか ???
いまいち @synthesize と @dynamic の違いがわからないんですが
おしえてください
0095デフォルトの名無しさん
2007/10/31(水) 13:40:470096デフォルトの名無しさん
2007/10/31(水) 14:04:070097デフォルトの名無しさん
2007/10/31(水) 14:12:21―――――――――――――‐┬┘
|
____.____ |
| | | |
| | ∧_∧ | |
| |( ´∀`)つ ミ |
| |/ ⊃ ノ | |
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ミ Xcode(ObjC2.0)
0098デフォルトの名無しさん
2007/10/31(水) 14:26:29個人用のちっちゃな GUI ソフトを作るのは簡単で良いですよ
GC がついてさらに簡単になりました
0099デフォルトの名無しさん
2007/10/31(水) 14:34:120100デフォルトの名無しさん
2007/10/31(水) 14:46:54(perl でつくってた画像ダウンローダーの GUI ラッパーをつくっただけですが)
retain / (auto)release を書かなくて良いのでかなりタイプ数がへりますね
アクセッサをかくのもルーチンワークがうざいので @property は便利
あとは UI は binding をすれば、かなりなにもかかなくてもよい気がする
0101デフォルトの名無しさん
2007/10/31(水) 14:56:140102デフォルトの名無しさん
2007/10/31(水) 15:04:39id 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 の表示が自動的にかわる。
0103デフォルトの名無しさん
2007/10/31(水) 16:45:55見たことないぞ。
0104デフォルトの名無しさん
2007/11/01(木) 21:36:240105デフォルトの名無しさん
2007/11/04(日) 05:13:51ネイティブコード吐けるようになったらまたおいで
0106デフォルトの名無しさん
2007/11/04(日) 06:26:400107デフォルトの名無しさん
2007/11/04(日) 08:49:32正気の沙汰じゃない。
0108デフォルトの名無しさん
2007/11/04(日) 23:14:130109デフォルトの名無しさん
2007/11/04(日) 23:52:580110デフォルトの名無しさん
2007/11/05(月) 11:52:34RubyCocoaでWebページ表示
http://japan.zdnet.com/sp/feature/07leopard/story/0,3800081890,20359550,00.htm
0111デフォルトの名無しさん
2007/11/09(金) 18:16:170112デフォルトの名無しさん
2007/11/28(水) 10:17:28http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC
0113デフォルトの名無しさん
2007/12/10(月) 13:38:270114デフォルトの名無しさん
2007/12/21(金) 20:47:50「ルートクラスには NSObject 使えよゴラア」という意味でしょうか?
0115デフォルトの名無しさん
2008/01/04(金) 02:51:110116デフォルトの名無しさん
2008/01/06(日) 21:53:310117デフォルトの名無しさん
2008/01/06(日) 23:47:16gunstepがないPCには、ランタイムとかどうやって持ってけばいいのか…
0118デフォルトの名無しさん
2008/01/07(月) 17:42:24ttp://mediawiki.gnustep.org/index.php/Deployment_on_Windows
ttp://www.gnustep.org/resources/documentation/User/GNUstep/README.MinGW
まとめると
- exe本体と同じディレクトリ階層に関連するdllを全部集める。
- gnustepが使う各種パスをソレに応じて書き換える。
の2点で出来るらしい。
0119デフォルトの名無しさん
2008/01/07(月) 18:23:06shipping するときは他のPCの方にもmsys, mingw(gcc) がないとダメってことですか?
それとgunstep runtime の最小サイズが書いてませんでしたが、どれほど必要でしょうか。
objc はjava の源流なんで非常に興味あったんですけど、mac に取られてばっかりで
どうして日本だとwindows な環境で広がらないんでしょうね。
objc はまだ趣味の範囲ですけど。
0120118
2008/01/07(月) 23:44:08First 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
0121デフォルトの名無しさん
2008/01/08(火) 00:05:01>どうして日本だとwindowsな環境で広がらないんでしょうね。
Cocotron があるじゃん
Java は ObjC というよりは OPENSTEP をやりたかったんだろうね
0122デフォルトの名無しさん
2008/01/08(火) 00:10:11日本人は何故かみんな C++ が大好きだからねえ。
0123デフォルトの名無しさん
2008/01/08(火) 00:22:35>122は日本ではPC(ソフト)に興味ないし、もともとの発祥が英語圏で、MAC-OSでもMS-OS支配でも別にどうでもいいからじゃないですか?
ハード(日立・富士通・NEC・ソニーとか)の方は支配にこだわっていて、そうでもないですけど。
macの仕事て例えばどういうのがあるんでしょうか?
0124デフォルトの名無しさん
2008/01/08(火) 00:28:28objcの情報も日本語では少ないし、紹介すらしてない。
説明や紹介が英文よりも日本文に目がいくようなら、そんな日本人の英語力なんてないに等しいし…
objcはmacだけじゃもったいないような、なくないような…
すくなくともwindows環境の人にはmac objc runtimeは使えないわけなんで。
0125デフォルトの名無しさん
2008/01/08(火) 08:02:16「みんなが使ってるものと同じものを使ってれば安心」
ってことだと思うよ。要するに保守的。
# Microsoft Visual Objective-C とか出れば騙されて使うやつがいるかも?
0126デフォルトの名無しさん
2008/01/08(火) 08:07:58ワンチップマイコンでも
日本では素直なAVRよりも変態といわれてるPICのユーザーが多いのは
日本語情報の多さ
0127118
2008/01/08(火) 20:42:28templateとマクロを駆使して"俺C++"を作る楽しみがあるし、他人が作った"俺C++"をみてcoreDumpする
楽しみもある(w
ObjCの変態実装系としてWebScriptと言うインタプリタが過去にあったそうだ。今だったらインタプリタ
として受けそうだと思うが、おまえらどうよ。
0128デフォルトの名無しさん
2008/01/08(火) 21:49:30あれまだあるんだっけ?
0129デフォルトの名無しさん
2008/01/08(火) 22:38:48これ?
0130デフォルトの名無しさん
2008/01/08(火) 22:39:05AVRはいいよねー。
PICみたいなドM用アーキテクチャが流行ってるのは、本が多いからかなー?
まあAVRは比較的新しいからこれからじゃないすかね。
AVRが出たころにはもうPICに慣れ切ってる人が多かったわけですし。
0131118
2008/01/08(火) 23:18:26ttp://users.pandora.be/stes/block98/index.html
AppleもObjC2.0の時に一緒にしてくれれば良かったのにな。
for(i in array){}よりも汎用性がありそうなのに。
0132デフォルトの名無しさん
2008/01/08(火) 23:19:140133デフォルトの名無しさん
2008/01/09(水) 00:01:490134デフォルトの名無しさん
2008/01/09(水) 02:02:390135デフォルトの名無しさん
2008/01/09(水) 12:12:510136デフォルトの名無しさん
2008/01/09(水) 15:59:130137デフォルトの名無しさん
2008/01/09(水) 19:46:55C でラッピングしてるのね。wxWidgets も Cocoa への移植が
進行中らしいけど、世の中変わったもんだねえ。
0138デフォルトの名無しさん
2008/01/12(土) 10:14:37ソース見た限り、全キーストロークをストローク単位で
処理しているようで、キーダウンイベントの発生時に
日本語処理を割り込ませればとも思っているんですが
Windows側のこともよく分かりませんし...
0139デフォルトの名無しさん
2008/01/13(日) 01:55:370140デフォルトの名無しさん
2008/01/13(日) 02:00:18とりわけマイナー言語では、その言語がこけても困らない
様にしておく必要がある
Ruby やるなら Perl や Python を横目に見ながら、D を
やるなら Java や C++ を意識しながらやると良いよ
0141デフォルトの名無しさん
2008/01/13(日) 02:12:12http://pc11.2ch.net/test/read.cgi/tech/1200070152/59
0142デフォルトの名無しさん
2008/01/13(日) 02:22:34コンパイルなしでスクリプトしたいんですけど、どっち使ってますか?
正規表現処理したいのにCやJavaはちょっと・・・
0143デフォルトの名無しさん
2008/01/13(日) 02:24:14MSの.Netはいいの?
JScript, C#
w
0144デフォルトの名無しさん
2008/01/14(月) 14:11:22C#
Javascript
こいつらは論外
0145デフォルトの名無しさん
2008/01/14(月) 14:15:35可哀相に
0146デフォルトの名無しさん
2008/01/14(月) 15:24:180147デフォルトの名無しさん
2008/01/14(月) 15:49:310148デフォルトの名無しさん
2008/01/14(月) 19:19:22rhinoみたいにブラウザとかに内蔵しないで、シェル上で独立に実行できる
と爆発的に普及するんじゃないか。
0149デフォルトの名無しさん
2008/01/14(月) 20:16:49べつにrubyとかでもいいし、shell自体がつかえてもいいけど>>VBAの代わり
0150デフォルトの名無しさん
2008/01/14(月) 20:30:180151デフォルトの名無しさん
2008/01/15(火) 18:11:43Jscriptならwindowsに統合されててwshとかでも使えるけど
web以外で使われてるのあまり見ないな
0152デフォルトの名無しさん
2008/01/15(火) 22:09:09最近出てきたけど。
ruby, perl, dと見てみたけど、jsが一番良さそうだと直観した。
あまりうだうだ言うのめんどいけど、jsは規格委員会(ECMA)があるってのがそれぞれの違うってことを表している。
その他は所詮は宗教臭い。
0153デフォルトの名無しさん
2008/01/15(火) 22:13:05javaライブラリとシームレス連携、htmlブラウザとシームレス。
文法もほとんどjava, c風で組み込みライブラリも少なく習得が早い。
オレが欲しい仕様を全て満たしてる。
スクリプトなんて使うときは手早くハックするときぐらいだしw
0154デフォルトの名無しさん
2008/01/15(火) 22:55:02俺もタマリンが完成した暁には乗り換えようと思っている
0155デフォルトの名無しさん
2008/01/15(火) 23:41:34違いを理解してから出直してきてください
0156デフォルトの名無しさん
2008/01/15(火) 23:44:47そういうのは分かってるだろ。こだわってるのはおまえだけw
>独立のインタプリタ(CUIなどシェルから起動式)
ところで独立インタプリタ?てそんなのあるの?
Javaの奴はjde入れないとダメでしょw
0157デフォルトの名無しさん
2008/01/15(火) 23:45:150158デフォルトの名無しさん
2008/01/15(火) 23:48:280159デフォルトの名無しさん
2008/01/16(水) 00:04:14いってみただけで技術力がたりないから僕には出来ないけど。スイマセン ...
0160デフォルトの名無しさん
2008/01/16(水) 05:35:33出直してくるのはおまえのようだ
0161118
2008/01/16(水) 13:28:06Joyと言うのがあったそうだ。
http://www.mactech.com/news/?p=1001039
javascriptのcocoa bridge
で、今ではオープンソースで転がってそうな感じだけど、どうなったかだれかしらない?
0162118
2008/01/17(木) 17:07:23Scripting with JavaScript in Cocoa
http://will.thimbleby.net/script/
TurtleScript.zipがレパードだとうまく動かないけど以下の修正ですぐに動く。
ScriptControl.mのメソッド
- (void)awakeFromNib
に
scriptObject = [webView windowScriptObject];
を追加。で、
- (void)webView:(WebView *)sender windowScriptObjectAvailable: (WebScriptObject *)windowScriptObject
を要らないので削除
0163デフォルトの名無しさん
2008/01/18(金) 00:39:16Cocoa というオブジェクトを javascript 側に publish して、
Cocoa.NSTextView とかいうメソッドを呼ぶと
NSClassFromString とかでクラスオブジェクトを返すようにしておくと、
もはや Javascript から何でも出来る気がする。
0164デフォルトの名無しさん
2008/01/18(金) 15:00:53Cocoa bridge があったとしてもスレ違いだ…
0165デフォルトの名無しさん
2008/01/30(水) 20:55:05http://pc11.2ch.net/test/read.cgi/mac/1201693264
0166デフォルトの名無しさん
2008/03/15(土) 10:17:190167デフォルトの名無しさん
2008/03/15(土) 23:22:05さすがマイナー言語www
ttp://www.moongift.jp/category/programming-language/object-c/
ttp://d.hatena.ne.jp/Psychs/20070703/1183415019
0168デフォルトの名無しさん
2008/03/15(土) 23:24:18そのマカーでも使うとは限らないしな。
0169デフォルトの名無しさん
2008/03/15(土) 23:25:52すくなくとも日本以外、米欧では。
0170デフォルトの名無しさん
2008/03/15(土) 23:32:250171デフォルトの名無しさん
2008/03/15(土) 23:49:080172デフォルトの名無しさん
2008/03/16(日) 00:46:16俺はObjective-CがやりたくてWinからMacに移行したけどな。まあ、完全にWinを離れる訳にもいかないんだが...
0173デフォルトの名無しさん
2008/03/16(日) 07:54:23IM とか VM とかいうけど、開発者のうち何人がそんなものを作るかと。
2ch ブラウザならいまの SDK で何の問題もなく作れるよね。
5分ごとに更新とかは出来ないわけだが。
0174デフォルトの名無しさん
2008/03/16(日) 13:12:52今のiPhone SDKは「実機で動かせない」という致命的な制約が…
0175デフォルトの名無しさん
2008/03/16(日) 21:48:500176デフォルトの名無しさん
2008/03/17(月) 20:38:020177デフォルトの名無しさん
2008/03/18(火) 11:41:28それを乗り越えてまで参入するメリットは「?」だよな。
0178デフォルトの名無しさん
2008/03/18(火) 12:29:58日本仕様も乗り越えず素通りするだけだろ
0179デフォルトの名無しさん
2008/03/19(水) 16:22:42retain, release, autorelease方式だと、メモリーリークしまくりそうです。
0180デフォルトの名無しさん
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];
0181デフォルトの名無しさん
2008/03/19(水) 16:53:04+ (id)card
{
return [[[self alloc] init] autorelease];
}
@end
とすれば多少は。
[[NSArray alloc] initWithObjects: ...
も
[NSArray arrayWithObjects: ...
で。
0182デフォルトの名無しさん
2008/03/20(木) 02:02:58気のせいです。
0183デフォルトの名無しさん
2008/03/20(木) 08:28:28> こういうの嫌すぎるし。
> × 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 をすると
0184デフォルトの名無しさん
2008/04/09(水) 21:55:32対象のクラスが1度も使われる前に行わなきゃいけないの
0185デフォルトの名無しさん
2008/04/09(水) 21:56:220186デフォルトの名無しさん
2008/04/10(木) 21:02:12べつにいつでもいいと思いますが、呼び出し側がセレクタに対する IMP の結果をキャッシュしてたりするとおかしくなるのでは。
0187デフォルトの名無しさん
2008/04/11(金) 00:41:17いけないなどの制限があるのでしょうか?
#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() を渡せば成功します。
この挙動でどつぼにはまりました。
0188デフォルトの名無しさん
2008/04/11(金) 12:34:22何がしたいのかわからないけど、こう書き換えれば動くと思う。
const char* bar() { static std::string temp = foo(); return temp.c_str(); }
foo()が返した値がどこまで有効なのかを考えてみようよ。「bar()=foo」と
表示されたのは運がよかっただけ。
0189デフォルトの名無しさん
2008/04/11(金) 12:42:28次に、問題は 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 のほうはちゃんと表示されるよね。
0190デフォルトの名無しさん
2008/04/11(金) 20:54:42どうも。
元のメソッドが呼ばれる前にsetしないとキャッシュされちゃうのかな?
0191デフォルトの名無しさん
2008/04/11(金) 21:28:33戻り値のスタックが安全じゃないことが良くわかったので、違う方法に
切り替えます。ありがとうございました。
0192デフォルトの名無しさん
2008/04/11(金) 21:36:49いや、まだよくわかってないんじゃないかな ...
戻り値のスタック自体は安全なので、
[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++ のテンポラリオブジェクトの寿命について
勉強したほうがいいと思います。
0193デフォルトの名無しさん
2008/04/11(金) 22:35:050194デフォルトの名無しさん
2008/04/13(日) 02:11:320195デフォルトの名無しさん
2008/04/13(日) 03:20:49展開するスクリプトを書いてコンパイルの前にかませば?
0196デフォルトの名無しさん
2008/04/20(日) 00:04:52unsigned 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の話題です。
0197デフォルトの名無しさん
2008/04/20(日) 01:13:24↑これamazonとかで新品無いんだけど、絶版になったんですか?
0198デフォルトの名無しさん
2008/04/20(日) 03:43:30AnObject *instance = [[AnObject alloc] init];
[instance value];
とか
[(AnObject*)instance value];
とか、とりあえず明確に指定すればwarningは出なくなる…
0199デフォルトの名無しさん
2008/04/20(日) 11:55:47C++ では静的型付けをつかってオーバーロードするところを、
Objective-C ではメソッドの名前を長くして、
メソッド名を読んだだけで何をやっているかわかるようにするのが
Objective-C での作法です。
stringValue: とか intValue: とかいうふうに名前を付けて区別しましょう。
(NSControl とかはそうしてます。)
string / int とか型名をつけるだけでなくて、
返ってくる string が会社の名前、 unsigned int が値段なら
stringValue: のかわりに companyName:
intValue; のかわりに price:
とかしましょう。
value とかいう一般的すぎるメソッド名をつけると
えてしてそのしたにコメントを書くことになりますが、
メソッド名自体をコメントにしてしまえということです。
0200デフォルトの名無しさん
2008/04/20(日) 13:11:37id のままテストコード書いてました。なるほど。
ありがとうございます。
>>199
Objective-Cでの作法を教えていただきありがとうございます。
これから気をつけていきたいとおもいます。
0201デフォルトの名無しさん
2008/04/20(日) 13:28:39>メソッド名を読んだだけで何をやっているかわかるようにする
意識はもっているつもりだったのです。
valueもそれが一番適切な名前だと思ってつけたのですが、失敗でした。
Objective-Cは面白い言語だと思いますが、オーバーロード(演算子も含めて)
が弱いのが(私にとって)玉に瑕です。
valueという同一メッセージに、いろいろなオブジェクトがそれぞれの流儀で
反応してくれるのを期待してしまうのです。
たとえば、整数なのか小数なのかコード中で区別せず、
valueとすればいいだけ、とか。
0202デフォルトの名無しさん
2008/04/20(日) 13:45:57いろいろなオブジェクトがそれぞれ自分流に応答するわけでしょう。
オーバーローディングの問題はむしろ、
ひとつのオブジェクトが、value という同じ名前のメッセージだけど、
引数や返す値に応じて違う応答をする、ということで、
それは Obj-C はできないですが、そのかわりに
メソッド名を分かり易くあからさまに書くというのが作法なわけです。
あと、C++ でも返す値の型だけが違う際は overload できないよね。
また、演算子のオーバーロードをしたい場合は
Objective-C++ を使ったらいいんじゃないかと思います。
演算子 overloading は、普通は具体的な値として使うクラス
(行列、複素数等)に対して重要になってくるので、
そいつらは C++ のクラスにしてしまえばもんだいなくなるのでは。
0203デフォルトの名無しさん
2008/04/20(日) 15:20:20HTMLではValueで統一されててわかりやすいけど、あれは全て文字だからね。
プログラム内部ではもうちょっと区別付けないといけないんでしょう。
>>202
>あと、C++ でも返す値の型だけが違う際は overload できないよね。
変換するだけだしね。
0204デフォルトの名無しさん
2008/04/29(火) 07:58:34macでは\rが改行だそうですけど、
\nを送信するとコンソールの挙動はどうなるんですか?
0205デフォルトの名無しさん
2008/04/29(火) 09:36:47スレ違いだから 新 Mac 板にでもいってください。
ただまあ答えておくと、
i) mac の改行が ¥r だった時代は5年以上前に終わりました。OS 9 以前はそうだったけど、OS X 以降は ¥n です
ii) mac に限らず、OS の改行コードがなにかというのと、シリアルコンソール、ネットワークプロトコルの改行コードがなにかというのは別問題です。
たとえば、HTTP プロトコルでは改行は ¥r¥n であるべしとなっているので、正しく書かれた http ブラウザは OS に関係なく ¥r¥n を送信しているはずです。
http://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89
あたり参照。
0206デフォルトの名無しさん
2008/04/29(火) 10:12:26\rは古いんですか。昔は\nは未定義(何もしない)だったんですか。
コンソールでカーソルを行頭に戻すのどうやるってたんですか?
強引ですけど、
for (;;) printf("%s\r", data_or_time);
とか。
0207デフォルトの名無しさん
2008/04/29(火) 10:55:590208デフォルトの名無しさん
2008/04/29(火) 11:30:510209デフォルトの名無しさん
2008/05/20(火) 08:33:01ttp://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件
0210デフォルトの名無しさん
2008/05/20(火) 10:27:510211デフォルトの名無しさん
2008/05/20(火) 10:38:51ttp://www.atmarkit.co.jp/flinux/special/mac/macosxa.html
つまりObjective-Cで求人を出すよりCやC++で人を採って、覚えさせれば良いだけ。
0212デフォルトの名無しさん
2008/05/20(火) 10:49:46仕事の数よりプログラマの数のほうがすくなければプログラマは有利だよね。
iPhone SDK ですごいことになりそうだし。
0213デフォルトの名無しさん
2008/05/20(火) 11:15:35一応、javaはobjcの亜流なんだけどね。見た目からは分かりにくいのかもしれないけど。
0214デフォルトの名無しさん
2008/05/20(火) 11:43:56へんに文法に Smalltalk っぽさを残したところがあだになっているよね。
ObjC 2.0 のプロパティとかで、ちょっとずつ改善しようとしているけれど。
0215デフォルトの名無しさん
2008/05/20(火) 13:04:58gnuは商業利用無理だし、ここでアップルあたりのランタイムがx86にも来てくれれば・・・
0216デフォルトの名無しさん
2008/05/20(火) 13:11:36gnuは商業利用無理だし、→GPLと商業利用は矛盾しない
ここでアップルあたりのランタイムがx86にも来てくれれば・・・→Intel Mac
アップル製と互換性のあるランタイムが他に移植されればいいなあっていう大意は分かるが
0217デフォルトの名無しさん
2008/05/20(火) 15:06:58今さらMSと戦ってるのは、一部のアッポロ信者だけだろw
若干アップルの歴史を知ってるから言いにくいもんだけど、
アッポロはMSに資金提供してもらって危機を脱してきただし。
何かとms winプラットフォームがぶつかってるのは分かるけど、
アッポロは消費者も開発者も(クリエーターも)人少なすぎで全部MSに持ってからてるじゃんww
0218デフォルトの名無しさん
2008/05/20(火) 15:08:27大学とか研究の奴らが頑張って実装してくれ。BSDは応援してるからけど、金になりそうなのはMSのところにもってックから。
それなら初めから、objcだけ来てくれればいいんだけどね・・
0219デフォルトの名無しさん
2008/05/20(火) 15:26:30酒の飲み過ぎか?呂律が回ってないぞ。
OS X は開発者は海外になら一杯いるでよ。日本国内は数えるぐらいだけど ...
0220デフォルトの名無しさん
2008/05/20(火) 15:45:15ランタイムとNSObjectまわりはソース公開されてんじゃないの?
0221デフォルトの名無しさん
2008/05/20(火) 16:31:14面倒を強いるようならいつまでも人は集まんないよ。
0222デフォルトの名無しさん
2008/05/20(火) 18:35:47Objective-Cを使いたいなら使えばいいし、思わなければ使わなければいいだけだろう…
プログラマならくだらんこと書いてないでコードを書け。
0223デフォルトの名無しさん
2008/05/20(火) 18:42:36なかなか仕事で出番を作るのは難しいけどね。
Obj-Cは嫌いじゃないけど、仕事でどうしてもって主張をするほどかっていうとそんな事無いし。
0224デフォルトの名無しさん
2008/05/20(火) 18:43:33プログラミング言語なんて基底となるライブラリと作るべきソフトウェアの
仕様の差を埋めるものに過ぎない
0225デフォルトの名無しさん
2008/05/20(火) 21:24:53何も知らないんなら黙ってりゃいいだけなんだが、
Windows用のObjective-CランタイムをAppleは過去に提供していたわけで。
0227デフォルトの名無しさん
2008/05/21(水) 00:06:010228デフォルトの名無しさん
2008/05/21(水) 00:28:490229デフォルトの名無しさん
2008/05/21(水) 07:51:110230デフォルトの名無しさん
2008/05/21(水) 08:04:11gunccとobjcはwinでは肩身が狭いし
これ、オレの勘なんだけど、ライセンスがどうとかうるさくて、面倒ってことなんじゃないのかと思う。
gnuとか無料とか有用とか別にどうでもいいんだけど、ウザイじゃん。
金はらってもいいから、面倒ない、ウザクないほうがいいよ。
javaだとせいぜいclasspathの設定程度だけど、gnuccとかインストが超面倒だろ?
お子様は使用禁止もいいんだけど、普及させる気あんのか・・
主義主張が多いgnuの方が拝金現場を知らないクソガキに見えるんだが・・・
0231デフォルトの名無しさん
2008/05/21(水) 08:59:23OS 変えたら?
0232デフォルトの名無しさん
2008/05/21(水) 09:34:030233デフォルトの名無しさん
2008/05/21(水) 10:31:30macプラットフォームは、今はituneとか流行ってるけど、imacの一生を知ってるだろ。
つまりだな、macはカジュアルうーザーか、変に個性をもってる(学生)技術者しかいないんじゃないの?
0234デフォルトの名無しさん
2008/05/21(水) 10:32:30まともなプログラミングができるとは思えない
0235デフォルトの名無しさん
2008/05/21(水) 10:34:28管理しても何十年前と同じで、今のソフト上のリソースの恩恵もなく教授も得られないでしょ。
osは別に何でもいいし、結局は面倒がないwindowsでいいわけ。
これが未だに理解できないのは、mac狂信者、つまりお子ちゃまってわけw
お子ちゃま用にしては、objcは高度すぎるオモチャじゃないのか?
objc使うって事は、そのランタイムと心中するってことだしな・・・
0236デフォルトの名無しさん
2008/05/21(水) 11:31:450237デフォルトの名無しさん
2008/05/21(水) 11:48:09いや、一つの文の中の読点と読点の間で矛盾しているといってもいい
もしかしてマカ vs ドザのスレッドで教育させた人工無能とか?
0238デフォルトの名無しさん
2008/05/21(水) 13:00:12その論法良くあるんだけどね、今の時代はどれだけユーザーがいるのか、その環境に人口は多いのかなのよw
すくなくとも君より上だと思うんだけど、「インストールすること」が目的じゃないわけwwまあ、でなおしてこいよww
0239デフォルトの名無しさん
2008/05/21(水) 13:01:28おまえは2CHのやりすぎで頭おかしくなっちゃったようだんw気をつきたほうがwwいいよ
0240デフォルトの名無しさん
2008/05/21(水) 13:40:08http://ja.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%84%A1%E8%84%B3
0241デフォルトの名無しさん
2008/05/21(水) 14:50:55みんないい奴だな…
0242デフォルトの名無しさん
2008/05/21(水) 15:24:23お前がWindowsで開発しててそう思うならVisual Studio 2008で問題なかろう。
純正品でWin32API/MFC使うのがカオスか?
で、そんな面倒の無い製品があるのになんでわざわざgcc使いたいんだ?
お前のポリシーに合ってないだけでgnuを批判するのはすじ違い。
0243デフォルトの名無しさん
2008/05/21(水) 17:08:550244デフォルトの名無しさん
2008/05/21(水) 17:18:340245デフォルトの名無しさん
2008/05/21(水) 17:45:540246デフォルトの名無しさん
2008/05/21(水) 18:14:01Objective-C++/CLIとか使ってみたい
#importがもろにかぶってるけど……
0247デフォルトの名無しさん
2008/05/21(水) 18:14:18まじかー!
やめてくれー!
また変てこ独自仕様でぐちゃぐちゃにする気だろ!
Obj-Cは軽い仕様がいいのに。
0248デフォルトの名無しさん
2008/05/21(水) 18:31:08VCとVC++の拡張を使えば済むから。
血迷ってJ++みたいにCOMを呼び出すための拡張とかされたら涙目だが、
それはランタイムの拡張でするだろうし、言語仕様には触れないさ。
いや、そうあってほしい
0249デフォルトの名無しさん
2008/05/21(水) 20:30:58>「面倒だし、なら別にいいや」
「こんな事すら面倒なんだ。なら君はいいや。」で終わりかと。
0250デフォルトの名無しさん
2008/05/21(水) 21:45:05デフォルト実装あり protocol
抽象クラス宣言子
あと付きそうなのは何かな?
0251デフォルトの名無しさん
2008/05/21(水) 22:08:58まさかの静的結合
0252デフォルトの名無しさん
2008/05/21(水) 23:47:590253デフォルトの名無しさん
2008/05/21(水) 23:49:340254デフォルトの名無しさん
2008/05/21(水) 23:52:130255デフォルトの名無しさん
2008/05/22(木) 00:01:280256デフォルトの名無しさん
2008/05/22(木) 00:11:13C++0x は凄いよ、λ式の
some_function ( [&](){} )
とかすごい。Obj-C の [ ... ] なんか目じゃないぐらいキモイ。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf
0257デフォルトの名無しさん
2008/05/22(木) 00:39:160258デフォルトの名無しさん
2008/05/22(木) 03:08:360259デフォルトの名無しさん
2008/05/22(木) 06:21:320260デフォルトの名無しさん
2008/05/22(木) 07:18:39それはまだ先の話だろ。Cなのにパッとみが全くCじゃないのは、objcが元祖だってこと
0261デフォルトの名無しさん
2008/05/22(木) 07:20:48C++が必要な大規模開発は、javaとかobjc(gnu)とかあるし
最終的にランタイム・ライブラリ(自作も含む)と心中になるんだけどね
0262デフォルトの名無しさん
2008/05/22(木) 08:00:460263デフォルトの名無しさん
2008/05/22(木) 08:14:56>Cなのにパッとみが全くCじゃないのは
C++のネームスペースやテンプレートの方が違和感ありありだが、
どちらも些細な事だと思うけどなあ。見た目だけで拒絶反応して
先に進めないなんて色んな事を損してそうだな。
0264デフォルトの名無しさん
2008/05/22(木) 08:18:33MS-Obj-C って何? XCode は普通にメンバ名もなんでも補完してくれるが ...
GNUStep のエディタはしらね。
0265デフォルトの名無しさん
2008/05/22(木) 09:18:48いろいろな言語をやったなくてCとobjc一筋だろ。おまえは。
0266デフォルトの名無しさん
2008/05/22(木) 09:20:110267デフォルトの名無しさん
2008/05/22(木) 09:47:03おかしな言いがかりは止めろよw
最近はC++の仕事ばかりでうんざりしてるのに…
0268デフォルトの名無しさん
2008/05/22(木) 10:30:34仕方なしでもC++を受け入れたユーザーは多い。
0269デフォルトの名無しさん
2008/05/22(木) 15:33:520270デフォルトの名無しさん
2008/05/22(木) 15:42:12Cの延長じゃなくて、Cも使えるオブジェクト指向言語的な感じで。
0271デフォルトの名無しさん
2008/05/22(木) 15:46:530272デフォルトの名無しさん
2008/05/22(木) 16:29:00C with classes
0273デフォルトの名無しさん
2008/05/22(木) 20:09:14ObjCはC互換でしょうが
0274デフォルトの名無しさん
2008/05/22(木) 21:29:25Cの機能がすべて使えるということと別言語であるということは両立すると思うが…?
0275デフォルトの名無しさん
2008/05/22(木) 21:34:19別言語ではないと言えなくもないかなと。
0276デフォルトの名無しさん
2008/05/22(木) 21:35:230277デフォルトの名無しさん
2008/05/22(木) 22:46:54その理屈だとEiffelもC言語だなw
0278デフォルトの名無しさん
2008/05/22(木) 22:54:190279デフォルトの名無しさん
2008/05/23(金) 00:15:170280デフォルトの名無しさん
2008/05/24(土) 19:22:23っていうのは保証されてませんよね?
0281デフォルトの名無しさん
2008/05/25(日) 00:41:51Obj-C の YES は単に 1 のマクロなので、 C の問題だから、C スレにいったほうがいいと思います。
でも、僕のあやうい記憶だと、保証されてると思います。
というのは、C の if 文はゼロ以外は真、ゼロだと偽、なので、
if 文とかの中で if(ore_ha_hage()== YES) と比較するのは良くなくて、
直接 if(ore_ha_hage()) とするのが良い、とされてます。
が、論理演算子 = , <=, != 等が返す真偽値は 1, 0 だというのが
最近の C の規格では保証されてるので、
あなたが書いた (1==1)==YES は 1 になるはず。
0282デフォルトの名無しさん
2008/05/26(月) 19:04:290283デフォルトの名無しさん
2008/05/26(月) 21:57:380284デフォルトの名無しさん
2008/05/26(月) 22:20:110285デフォルトの名無しさん
2008/05/26(月) 23:46:24Apple のレファレンスには、YES は 1 ですと書いてあるけど。
Obj-C は公的な標準規格がないからなんとも ...
まあ C 系言語において
YES, NO と比較するのがバッドノウハウであるのは間違いない
0286デフォルトの名無しさん
2008/05/27(火) 00:14:090287デフォルトの名無しさん
2008/05/27(火) 01:19:52MS は大昔から false は 0 で、true はビットを全反転した -1 。
でも C の < , > 等の返す真偽値は整数としては 1 だから気をつけましょうね。
if 文の中で 更に YES/VARIANT_TRUE とかと比較しなければ全く問題ないのだが ...
0288デフォルトの名無しさん
2008/05/27(火) 13:10:57ソフトバンク クリエイティブの本:詳解 Objective-C 2.0
http://www.sbcr.jp/books/products/detail.asp?sku=4797346800
Amazon.co.jp: 詳解 Objective-C 2.0: 荻原 剛志: 本
http://www.amazon.co.jp/gp/product/4797346809
0289デフォルトの名無しさん
2008/05/27(火) 21:47:45BOOL の TRUE は 1 だけどね。
真が -1 っつーと BASIC なんかそうだな。
0290デフォルトの名無しさん
2008/05/28(水) 21:41:02>詳解 Objective-C 2.0
mkinoさんが買うべきだと絶賛中
ttp://hmdt.jp/
0291デフォルトの名無しさん
2008/05/29(木) 09:02:300292デフォルトの名無しさん
2008/06/01(日) 18:27:27帯以外でiPhoneという単語は一度も出てこない。
荻原教授は最初から触れるつもりなかったのに編集が独自に装丁考えたのか、
NDAを見てあわてて記述を残らず削ったのか。
0293デフォルトの名無しさん
2008/06/02(月) 00:35:470294デフォルトの名無しさん
2008/06/02(月) 19:30:37もともとObjective-CとFoundationに重点を置いてある本だから、
iPhoneに触れる気はもともとなかったんじゃない?
0295デフォルトの名無しさん
2008/06/02(月) 22:32:57正式版のSDKで2.0使えるんならいいんだけど。
0296デフォルトの名無しさん
2008/06/07(土) 22:59:16ttp://www.metareal.org/2008/06/06/280slides-in-objective-j/
0297デフォルトの名無しさん
2008/06/09(月) 08:47:38Objective-CをJavascriptに変換して実行か。よくやるよね。
でも静的な型付けをもつ言語を動的な型付けをもつ言語に翻訳する
のってなんかちょっともったいない気がする。Objective-Cは半分
くらい動的な型付けなんだけどさ。
0298デフォルトの名無しさん
2008/06/15(日) 17:02:450299デフォルトの名無しさん
2008/06/15(日) 23:05:160300デフォルトの名無しさん
2008/06/15(日) 23:47:04これからHaskell勉強してくる
>>299
その割にはObjective-Cが第3位ってのが不思議
0301デフォルトの名無しさん
2008/06/17(火) 14:44:060302デフォルトの名無しさん
2008/06/17(火) 15:07:42「似たようなものは似たような表記にしたほうがわかりやすい」
という考え方もあるだろうが、
「意味的に異なるものを表すなら異なる表記にしたほうが区別しやすくわかりやすい」
という考え方もある。
構造体のへのポインタの先の関数ポインタ経由での関数呼び出しとメソッド呼び出し
はまったく別のものだと考えれば別の表記になっていたほうがうれしいだろう?
# 実際のところは単に設計者の趣味じゃね?
0303デフォルトの名無しさん
2008/06/17(火) 17:08:410304デフォルトの名無しさん
2008/06/17(火) 18:34:48# また普及厨?
0305デフォルトの名無しさん
2008/06/17(火) 18:55:150306デフォルトの名無しさん
2008/06/17(火) 19:43:36C と Smalltalk のハイブリッド言語だから。
0307デフォルトの名無しさん
2008/06/17(火) 19:55:130308デフォルトの名無しさん
2008/06/17(火) 20:05:04dealloc
0309デフォルトの名無しさん
2008/06/17(火) 21:35:570310デフォルトの名無しさん
2008/06/17(火) 23:08:220311デフォルトの名無しさん
2008/06/17(火) 23:25:20C++で自動変数(スタック)に作られたオブジェクトが
スコープを抜けるときデストラクタが呼ばれるあれの
ことかいな?
そのことなら、そもそもObjecitve-Cのオブジェクト
の実体はヒープにしか作ることができなくて、スコー
プとオブジェクトのライフサイクルは無関係。
0312デフォルトの名無しさん
2008/06/17(火) 23:26:540313デフォルトの名無しさん
2008/06/17(火) 23:59:51スマートポインタを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される
0314デフォルトの名無しさん
2008/06/18(水) 00:01:090315デフォルトの名無しさん
2008/06/18(水) 00:06:130316デフォルトの名無しさん
2008/06/18(水) 00:50:370317デフォルトの名無しさん
2008/06/18(水) 00:58:20ttp://sleep.dashnine.org/
>easy to learn with Perl and Objective-C inspired syntax
だって。
0318デフォルトの名無しさん
2008/06/18(水) 02:08:44そしたらObjective-Cのブーム終了だろ。
他言語ユーザに珍入されるのやだからそうなってほしい。
0319デフォルトの名無しさん
2008/06/18(水) 02:28:24SDK Agreementで禁止されている。
0320デフォルトの名無しさん
2008/06/18(水) 02:47:530321デフォルトの名無しさん
2008/06/18(水) 03:24:09JB環境になるけどPython(PyObjC)やJavaScript(Jiggy)ならGUIアプリも書けるぜ。
0322デフォルトの名無しさん
2008/06/18(水) 07:32:28そこであえてObjcでガリガリ書くのがスーパーハカー。
0323デフォルトの名無しさん
2008/06/18(水) 08:47:520324デフォルトの名無しさん
2008/06/18(水) 09:54:51ちょっと目から鱗
0325デフォルトの名無しさん
2008/06/18(水) 10:33:56もともとObjective-CはSmalltalkの式をCコンパイラに通すための
プリプロセッサとして生まれて、そこから始まったからだよ。
[ ] の中はSmalltalk。
0326デフォルトの名無しさん
2008/06/18(水) 10:38:29HTMLの中にJavaが入ってるのと似てる。(javascriptが入っててもソース見るとカオスだけど)。
Cのソースが6割がasm{}だったらやっぱりカオスでしょ?
Cを拡張なんかしないでjavaみたく新言語の方が受け入れられてんじゃないかと思う。
0327デフォルトの名無しさん
2008/06/18(水) 10:57:50俺等は受け入れた。それで十分じゃないか。
0328デフォルトの名無しさん
2008/06/18(水) 11:13:120329デフォルトの名無しさん
2008/06/18(水) 12:17:43組込やってるからカオスとは思わないが
0330デフォルトの名無しさん
2008/06/18(水) 12:22:000331デフォルトの名無しさん
2008/06/18(水) 13:42:42ウェブ・クリエータみたいなカジュアル層の人が
HTML中のjava入りでやってるんじゃないの?
obj-cだけじゃないんだし
rubyやらjavaとか好きなの使えばいいんじゃないかと思うが。
「こうあるべき」で固まりたくはないもんだ
0332デフォルトの名無しさん
2008/06/18(水) 13:56:500333デフォルトの名無しさん
2008/06/18(水) 14:01:10javascript ならわかるが ...
0334デフォルトの名無しさん
2008/06/18(水) 14:15:500335デフォルトの名無しさん
2008/06/18(水) 14:52:320336デフォルトの名無しさん
2008/06/18(水) 15:32:000337デフォルトの名無しさん
2008/06/18(水) 15:41:03流行ちゃんは、VBよろしく、flash使っていてくれ。
0338デフォルトの名無しさん
2008/06/18(水) 17:36:51/ ヽ / ヽ
______ / ヽ__/ ヽ
| ____ / :::::::::::::::\
| | // \ :::::::::::::::|
| | | ● ● ::::::::::::::| ・・・
| | .| :::::::::::::|
| | | (__人__丿 .....:::::::::::::::::::/
| |____ ヽ .....:::::::::::::::::::::::<
└___/ ̄ ̄ :::::::::::::::::::::::::|
|\ | :::::::::::::::::::::::|
\ \ \___ ::::::::::::::::::::::::|
0339デフォルトの名無しさん
2008/06/18(水) 23:26:010340デフォルトの名無しさん
2008/06/22(日) 21:33:43研究室でObjective-Cを使ってプログラミングを書けって言われたんだけど、
何この糞みたいにめんどくさい開発ツールは。
なんでわざわざオブジェクトとコードのコネクションを手動で接続しなくちゃいけないわけ?
Visul Studioをちょっとは学べよ。
あんなのダブルクリックで済むんだぞ。
あーむかつく。
なんでこんなん使ってやらなあかんねん。
ふざけんな。研究費削っとんちゃうぞ!!!!!!!!!
0341デフォルトの名無しさん
2008/06/22(日) 21:59:490342デフォルトの名無しさん
2008/06/22(日) 22:00:25あきらめましょう。
Windowsプラットフォーム向けが普及するとユーザーが増えるので風向きが変わるかもしれません。
0343デフォルトの名無しさん
2008/06/22(日) 22:26:39わざわざマイナーなMacを使う意味がわからん
0344デフォルトの名無しさん
2008/06/22(日) 22:36:38Linuxベースで金がかからないから。
0345デフォルトの名無しさん
2008/06/22(日) 23:27:080346デフォルトの名無しさん
2008/06/22(日) 23:43:04まぁ基本的にはlinuxと同様unixが大元になっているけど。
この人はmacのことを殆ど分かってないんだろうなー。
0347デフォルトの名無しさん
2008/06/22(日) 23:43:53糞だとは思わなかったけど、なんでだろ?って感じで。
で、NSTableViewにdataSourceセットするのをやって、ちょっと分かった。
少なくともVS的コーディングでは、これは実現できないと思ったなぁ。
それがいいか悪いかは知らんけど。
0348デフォルトの名無しさん
2008/06/22(日) 23:58:50まさにおなじはなしを
http://dotnetaddict.dotnetdevelopersjournal.com/dcacs.htm
のひとがしてるので、彼の分析を読んで見るとおもしろいかも。
このひとのブログは全般的におもろいです。
.Net addict だったはずなのに最近はすっかり Cocoa に毒されてる人です。
0349デフォルトの名無しさん
2008/06/22(日) 23:59:36俺はコネクションが好きだったから、初めから別に苦ではなかったけど、Interface Builder使いこなしてくるとコネクションの良さがわかってくるよ。バインディグとかformatterとかウインドウ出したり。この辺はVSだとコーディングが必要になるところだと思う。
0350デフォルトの名無しさん
2008/06/23(月) 00:25:49VSから移行する人はみんな思うのかもね。
俺もそうだった。
まぁVSと違ってクールなところもあるから。
0351デフォルトの名無しさん
2008/06/25(水) 00:37:23俺も最近マック渡されてcocoa使ってる
しかもそれとおんなじことを先生に言ったww。
確かにVS.netはお金がかかるからね。
でも今必死にcocoaをやってるけど、案外楽しい。
0352デフォルトの名無しさん
2008/06/25(水) 02:43:26まぁ学生は今のうちに好きな環境を使え。
仕事にしたらそうはいかないけど。
0353デフォルトの名無しさん
2008/06/25(水) 07:24:22学生だからこそ、頭をやわらかくして、どんどんいろんな環境にチャレンジすべし。
一つの環境に馴れ親しむのも大事だけど、それだけじゃ二流だよ。
0354デフォルトの名無しさん
2008/06/25(水) 21:07:420355デフォルトの名無しさん
2008/06/26(木) 22:07:31>先生に言った
いくつかの環境に慣れとけば生存能力も高くなる鴨
0356デフォルトの名無しさん
2008/07/06(日) 22:35:21{
id hoge;
}
@property hoge;
@end
こんなClassAがあったとして、インスタンスメソッド内で
self->hoge はインスタンス変数に直接アクセスし、
self.hoge はプロパティのアクセサを通してアクセスすると思うのですが、
単にhogeと書けばどっちになるのでしょうか?
0357デフォルトの名無しさん
2008/07/07(月) 00:08:08単に hoge は self->hoge と同等。
0358デフォルトの名無しさん
2008/07/07(月) 08:07:57自分のプロパティへのアクセスにはself.が必須なんですね。
0359デフォルトの名無しさん
2008/07/07(月) 08:58:18Obj-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 という意味にしてしまうと、上記アクセッサで無限ループになります。
0360デフォルトの名無しさん
2008/07/07(月) 11:15:420361デフォルトの名無しさん
2008/07/07(月) 13:16:460362デフォルトの名無しさん
2008/07/07(月) 14:35:16ObjCのコードじゃない?
それなら objc の -C オプションを付ければ拡張子が .i のファイルに
C のコードに展開された ObjC のコードが見られるよ。
0363デフォルトの名無しさん
2008/07/07(月) 19:13:49id a = obj.hage;
って、
id a = [obj hage];
じゃなくて、
id a = [obj objectForKey:@"hage"];
になるの?
0364デフォルトの名無しさん
2008/07/07(月) 23:01:20http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_4.html
とか
http://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 だと動かないということです。
0365デフォルトの名無しさん
2008/07/07(月) 23:10:17そういう話じゃなくて、、、
プロパティーって、Objective-C2.0が持ってる機能でしょ?
なぜ、そこでvalueForKey:などの、Cocoaフレームワークのメソッドが出てくるのでしょう?
gccなどのコンパイラが、Cocoaに依存したコードを出力するとは思えないのだが。
リンク先のページにも、そんな事書いてないし。
0366デフォルトの名無しさん
2008/07/07(月) 23:17:43allocやinitだってCocoa特有でないのと一緒。
finalizeが良い例。
0367デフォルトの名無しさん
2008/07/07(月) 23:27:25Key-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:).
0368デフォルトの名無しさん
2008/07/07(月) 23:56:53言っていることが、変だよ。
alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。
逆に、valueForKeyはObjective-Cの一部として定義されていません。
一緒にしてはいけません。
>>367が書いてるとおり、id a = obj.hage; は、id a = [obj hage]; とコンパイルされるよ。
ちなみに英文の日本語訳は、これ↓
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_5.html
0369デフォルトの名無しさん
2008/07/08(火) 00:00:35> alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。
日本語でおk
0370デフォルトの名無しさん
2008/07/08(火) 00:47:080371デフォルトの名無しさん
2008/07/08(火) 08:13:14どこまでが Obj-C 2.0の機能かというのは、
Apple 版 GCC 以外に Obj-C 2.0 をまともにコンパイルできるのがないので考えても仕方がないのでは?
NSFastEnumeration とかはどう思うの?
0372デフォルトの名無しさん
2008/07/08(火) 08:45:220373デフォルトの名無しさん
2008/07/08(火) 18:03:580374デフォルトの名無しさん
2008/07/08(火) 21:07:27あと、インスタンスを生成するときは、[[MyClass alloc] init]ってやるって、決まってるし。これは、Cocoaだからじゃなくて、ObjCだからそういう仕様になってるんです。これらのメソッドは、Objectクラスにも定義されてるし。
>Apple 版 GCC 以外に Obj-C 2.0 をまともにコンパイルできるのがないので考えても仕方がないのでは?
そういう部分もあるけど、Foudationフレームワーク全体がObjCだっていう訳でもないと思うけど。
0375デフォルトの名無しさん
2008/07/08(火) 22:08:59それ外したら言語機能の範囲内でオブジェクトが作れなくなってしまわないか。
ANSI-Cみたいな規格がなくて(ないの?)断定は出来んのかもしれんが、alloc
init が言語の一部じゃないってのは考えにくいなぁ。それとも俺が無知なだけ
で言語が定める正統なオブジェクトの作り方が他にあるのかな。
0376デフォルトの名無しさん
2008/07/08(火) 22:24:16ANSIとかどうでもいいが、規格ある言語をラップして表現する方向で統一してるね
CF自体はwin/linux/fBSDにportingされてるし、Darwinコードにも各OSへのコントリビュータの名前が並んでたり
Cocoaもまた、結構CFをまんまラップして表現してるんだよね
Carbonとの基盤統一のためにやってる事なんだろうけど。
今のOSXではalloc/initは本質的にどっちで表現されてんだろな
0377デフォルトの名無しさん
2008/07/08(火) 22:44:330378デフォルトの名無しさん
2008/07/08(火) 22:52:08そういう曖昧なものを定義としていいの?
>>376
それは実装の話で、規格の話じゃないでしょ?
>>375
だから、Obj-Cではそれすら実装依存なんでしょ?
0379デフォルトの名無しさん
2008/07/08(火) 23:03:30>だから、Obj-Cではそれすら実装依存なんでしょ?
どのプラットホーム上でも、オブジェクトの生成にはalloc - initを使う。これが言語仕様だから。
逆に、alloc - init以外でオブジェクトを生成する実装ってあるの?
0380デフォルトの名無しさん
2008/07/08(火) 23:13:12それが言語仕様だってどこに書いてるの?
ほかの実装がないから言語仕様なの?
0381デフォルトの名無しさん
2008/07/08(火) 23:39:510382デフォルトの名無しさん
2008/07/08(火) 23:42:10語ることができないような… 議論そのものがナンセンスじゃね?
0383デフォルトの名無しさん
2008/07/08(火) 23:58:590384デフォルトの名無しさん
2008/07/09(水) 00:01:560385デフォルトの名無しさん
2008/07/09(水) 00:20:13多分そうなんだと思う。
別に今更、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で管理してるって話も聞くんだけど、全く見当たらないんだな、これが。
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/
これだって、Apple実装を例にしたObjective-Cのお勉強資料だしね。
>>384
[self release]; // 自身の解放?
0386デフォルトの名無しさん
2008/07/09(水) 08:01:32逆にfinalizeやFast Enumeration系はランタイム側で定義された仕様。
0387デフォルトの名無しさん
2008/07/09(水) 08:21:00タクシーのエンジンの構造や燃料の効率について、なんも知らなくったって、
運転手さんに行き先を言えば望んだ場所に連れて行ってくれるというのに。
0388デフォルトの名無しさん
2008/07/09(水) 08:30:090389デフォルトの名無しさん
2008/07/09(水) 08:56:01というか、ISO / ECMA 規格がないのにどこまでが言語でどこからがライブラリかという話をしても仕方がないのでは。
0390デフォルトの名無しさん
2008/07/09(水) 09:12:05それ以上はAppleがどう認識してるか調べるくらいが関の山かと
0391デフォルトの名無しさん
2008/07/09(水) 13:01:36ランタイムが認知する部分はランタイム仕様
コンパイラやランタイムを変えなくても変えられる部分は慣習・規約
0392デフォルトの名無しさん
2008/07/09(水) 13:31:57@"hogehoge"
でNSStringオブジェクト定数を生成してるわけだから、
NSStringは言語仕様に含まれてるんだ。
NSCFStringだと主張するならNSCFStringもまた言語使用に組み込まれている。
で、まだ続けるの?
もう不可分で良いじゃん。
0393デフォルトの名無しさん
2008/07/09(水) 14:09:410394デフォルトの名無しさん
2008/07/09(水) 14:22:09NSStringの具体的な中身はライブラリの仕様
0395デフォルトの名無しさん
2008/07/09(水) 14:23:47@"hoge" "fuga" @"hogera";
が正しく連結されたりね。
0396デフォルトの名無しさん
2008/07/09(水) 15:01:25Obj-C のどこからどこまでが言語仕様かという話をするために、
>コンパイラが認知する部分は言語仕様
というわけだけど、
「コンパイラが認知する部分」は「言語仕様」という定義をしてるのは誰?
0397デフォルトの名無しさん
2008/07/09(水) 15:05:08>@"hogehoge"がNSStringだ」というのは言語仕様
そうだったのかー。じゃあ GNU実装の gcc -fconstant-string-class オプションでの
文字列リテラルクラスの変更は言語仕様違反ですね…
-fconstant-string-classのデフォルトは NXConstantString だから変更しなくてもやっぱり
言語仕様違反ですか…GNUの実装はひどいですねー
# その言語仕様とやらがどこに存在してるのか知らんけどw
0398デフォルトの名無しさん
2008/07/09(水) 15:27:08それは間違いでしょ?
だって、「コンパイラが認知する部分は言語仕様」とされている訳だから、
Apple拡張されていないgccのコンパイラが認知するものだって言語仕様だよ。
つまりObj-Cの言語仕様はコンパイラの数だけあるってことでしょ。
0399デフォルトの名無しさん
2008/07/09(水) 15:30:23皮肉に皮肉で返しあってgdgd
0400デフォルトの名無しさん
2008/07/09(水) 15:32:58/ ヽ / ヽ
______ / ヽ__/ ヽ
| ____ / :::::::::::::::\
| | // \ :::::::::::::::|
| | | ● ● ::::::::::::::| ・・・
| | .| :::::::::::::|
| | | (__人__丿 .....:::::::::::::::::::/
| |____ ヽ .....:::::::::::::::::::::::<
└___/ ̄ ̄ :::::::::::::::::::::::::|
|\ | :::::::::::::::::::::::|
\ \ \___ ::::::::::::::::::::::::|
0401デフォルトの名無しさん
2008/07/09(水) 15:44:38>コンパイラの数
Obj-CのコンパイラってAppleのgcc,GNUのgccとPOCぐらいだろ
0402デフォルトの名無しさん
2008/07/09(水) 15:47:38それに何の問題が?
0403デフォルトの名無しさん
2008/07/09(水) 16:44:530404デフォルトの名無しさん
2008/07/09(水) 18:45:14もしくは、
Objective-Cの言語仕様はそのコンパイラが規定すると言い張る人がいるからどうしようもない。
Objective-Cには公開された言語仕様が存在しない。
ってことをどうして認めようとはしないの?
それとも僕はとんでもない勘違いをしていて、
これこれは言語仕様と断言している人たちは、
非公開な言語仕様を閲覧できる立場の人たちなの?
0405デフォルトの名無しさん
2008/07/09(水) 19:08:290406デフォルトの名無しさん
2008/07/09(水) 20:30:53>405
じゃあそれ、これこれは言語仕様です。これこれは違います。
って自信満々に言ってる人に言っといて。
標準がないのにそんな自信たっぷりに言われてもねぇ、って。
0407デフォルトの名無しさん
2008/07/09(水) 21:23:01「どこからが美人でどこまでがブスか。」
という議論に近い不毛なものを感じますた。
以上、通りすがりの私の感想でした。
0408デフォルトの名無しさん
2008/07/09(水) 22:37:47どこからAPIの機能でどこから言語の規格が議論して何か意味あるのかね。
C++でもAPIがなけりゃ文字列処理もでない屑言語だが
0409デフォルトの名無しさん
2008/07/09(水) 23:45:04> 標準規格がない言語には言語仕様がないと?
そりゃ標準規格がない言語には、どこまでが標準言語仕様でどこからが標準ライブラリでどこからが独自ライブラリかの違いなんてないだろうよ
アホ?
0410デフォルトの名無しさん
2008/07/10(木) 00:14:55NSObjectがなければ何もできないんだから
0411デフォルトの名無しさん
2008/07/10(木) 00:23:090412デフォルトの名無しさん
2008/07/10(木) 08:59:060413デフォルトの名無しさん
2008/07/10(木) 09:03:29NS〜は「de fact」標準ライブラリです。
0414デフォルトの名無しさん
2008/07/10(木) 09:11:29de facto ですよ正しい綴りは。
0415デフォルトの名無しさん
2008/07/10(木) 09:15:43どうも。
0416デフォルトの名無しさん
2008/07/10(木) 16:04:21objc/Objectじゃだめですか><
0417デフォルトの名無しさん
2008/07/10(木) 17:17:44仕様は仕様でしょ?
それがあって始めてApple方言とかGNU方言とか言える訳で。
一番近いのは、
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_951_section_1.html
これ。文書全体じゃなくてこの章だけね。
>>412
おれは茶化してるだけのCocoaがなかったら死ぬタイプの人間ですw
0418デフォルトの名無しさん
2008/07/10(木) 17:33:50こっちもそうだった。
こっちはコンパイラのディレクティブのところにNSStringと明記されてる。
これが要求仕様なのかどうかは不明。
0419デフォルトの名無しさん
2008/07/10(木) 17:48:03当然、仕様も別々に存在している。
特に、Objective-Cに関しては、Darwinプロジェクトの中で開発されているのだから、どこまでがObjective-Cなのかは明確になっているんじゃないのか?
Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。
0420デフォルトの名無しさん
2008/07/10(木) 23:13:07アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。OpenDarwinも終わっちゃったし。
>Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。
Objective-C文字列リテラル、メッセージの転送、例外処理、@synchronized、ObjC 2.0のプロパティ、高速列挙。Cocoaを前提とした機能はずいぶんと追加されてるよ。
0421デフォルトの名無しさん
2008/07/10(木) 23:27:38その自信はどこから来るわけ?
Apple 社員で社外秘の仕様をみられるというの?
社外秘の仕様があるばあいは社外の人には仕様はあることになるのないことになるの?
0422デフォルトの名無しさん
2008/07/11(金) 00:18:39> アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。
困ると思うよ。
「分割して統治せよ」って言葉聞いた事あるよね?
大規模なシステムを設計する場合は、全体が一枚岩のようになると、とても保守が面倒になるので、複数のコンポーネントに分割して管理するものなんだよ。
Cocoaだって、あえてAppKitとFoundationに分かれているのもそういった理由があるからだと思うよ。
NSStringがFoundation側で定義されていて、-[NSString drawAtPoint:withAttributes:]があえてAppKit側にカテゴリーを使って定義してあるのも、そういった理由があるからでしょう。
Objective-Cも同じようにCocoaから分割されていると思う。
0423デフォルトの名無しさん
2008/07/11(金) 00:48:59最近、GPGPUに興味を持ってるみたいだから、「Snow Leopard」公開後は新しい言語
「OpenCL(open computing language)」を使用するように仕様が変更されるかもしれない。
0424デフォルトの名無しさん
2008/07/11(金) 01:08:200425デフォルトの名無しさん
2008/07/11(金) 02:25:220426デフォルトの名無しさん
2008/07/11(金) 02:26:24システム全部大雑把でいいなんて書いてない。あくまで言語仕様とライブラリの境目の話。拡大解釈しないでおくれ。
>Objective-Cも同じようにCocoaから分割されていると思う。
文字列リテラルとかプロパティとか高速列挙とか、いろいろ挙げたのは無視?
Objective-Cの権利は全部アップルが持ってるし、自社OSのためにコンパイラもランタイムも開発してるんだから、Cocoa前提の機能を言語仕様に含めたほうがアップルにとって楽なこともあるでしょ。
0427デフォルトの名無しさん
2008/07/11(金) 07:42:150428デフォルトの名無しさん
2008/07/11(金) 09:37:12>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
0429デフォルトの名無しさん
2008/07/11(金) 12:05:41言語仕様がどうとか言う奴は、どうせ素人だろw
0430デフォルトの名無しさん
2008/07/11(金) 12:57:08大学生が授業でやるくらいのはなし。
0431デフォルトの名無しさん
2008/07/11(金) 16:15:29FFI(Foreign Function Interface)とか経由するのかな?
0432デフォルトの名無しさん
2008/07/11(金) 16:22:24説明しなさい。
0433デフォルトの名無しさん
2008/07/11(金) 16:35:54人にモノを頼むときにはそれなりのw
0434デフォルトの名無しさん
2008/07/11(金) 21:41:24つくえの上にりんごが一つあります。
さて、このりんごはなぜここにあるのでしょう。
1.りんご農家のおじさんがりんごを育てたから
2.お母さんがかってきたから
3.まさしくんがつくえの上においたから
4.言語仕様
5.苺も食べずにりんごとか素人だろw
0435デフォルトの名無しさん
2008/07/12(土) 00:46:40私という自我がリンゴを個体としてのリンゴをそこに存在すると認識したからそこにあるのです。
0436デフォルトの名無しさん
2008/07/12(土) 01:21:47しているだけだから、正確には>>435は信用した上で認識「することにした」段階かと
0437デフォルトの名無しさん
2008/07/12(土) 16:26:010438デフォルトの名無しさん
2008/07/12(土) 18:43:080439デフォルトの名無しさん
2008/07/12(土) 23:30:11ttp://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]
参考になりそうなのは、これくらい。。。
0440デフォルトの名無しさん
2008/07/13(日) 04:38:190441デフォルトの名無しさん
2008/07/13(日) 17:09:500442デフォルトの名無しさん
2008/07/15(火) 18:42:43>OpenCLはCUDAらしい
らしいという話はよくでるんだが
ソースって見たことがないんだよな。
0443デフォルトの名無しさん
2008/07/17(木) 17:13:140444デフォルトの名無しさん
2008/07/17(木) 17:29:51マズくはないけど資料は少ないから初心者にとっては最初の学習曲線が急勾配になってしまう。
JavaやC++で基本的なアルゴリズムやデザパタを学んだ方が資料が豊富だから楽に勉強できると思う。
ダイナミックな部分を勉強するにはSmalltalk(Squeak)が適している。あとRubyやPythonも。
そういったことを承知の上でどれで始めるのが良いかを選べばいいんじゃないかな。
あとは好みの問題。
0445デフォルトの名無しさん
2008/07/17(木) 17:30:36あんまりまともなプログラムを書いた事のない俺が思う程度だけど、
他言語をちょっと囓っている+英語の情報も読んでいけるのならアリだと思う。
ただ、全く分からない人がいきなりObjective-Cからだと
・最近は増えてきたものの日本語の情報(Web&書籍)が少なめ。
・AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり。
この辺でちと大変かも。
基本的には意欲だと思う。逆に言えば意欲が弱いとJavaだろうがC言語だろうがPHPだろうが関係なくだめだと思う。
ベストな環境はリアルでもメールでも掲示板でもいいけど疑問に答えて教えてもらえるような人間がいると覚えは早いと思う。
0446デフォルトの名無しさん
2008/07/17(木) 17:40:36サンクス
各言語の違いが全くわからないのでググって検討してみます
C#よりC++の方がいいんですね
>>445
サンクス
意欲・・・きっかけがそもそもiPhoneという厨な理由だからどこまでいけるか
わかりませんが・・・
>AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり
やっぱりC関連から入った方がいいのかもしれませんね
0447デフォルトの名無しさん
2008/07/17(木) 17:51:48そういう動機であれば最初はRuby on RailsとかでWebアプリを作成してiPhoneから利用すれば簡単だと思う。
そういう資料はネット上に沢山転がってるからググって見るといいよ。
ある程度プログラミングに自信が付いてからObjective-Cに移行すればスムーズに学習できそう。
こういう順番でやれば、サーバーサイドとクライアントサイドの両方の知識が得られる。
両方の視点でプログラミングできればiPhoneに負荷をかけないプログラムを作成するノウハウも見つけられると思う。
0448デフォルトの名無しさん
2008/07/17(木) 18:22:14ありがとう。なんて親切なんだ(つД`)・゚・
Ruby on Railsを調べてみます
0449デフォルトの名無しさん
2008/07/17(木) 18:46:27(C++専用のライブラリを使いたいのでもなければ)
C#はiPhoneでの開発には全く不要。
iPhone用プログラムならまずWebアプリから作ってみるというのには賛成。
PHPでベタ書きか、Python + DjangoかRurby + Railsあたりがおすすめ。
0450デフォルトの名無しさん
2008/07/17(木) 18:58:24�dクス。感涙で前が見えない。゚(゚´Д`゚)゜。
うーむ、C++でもC#でもなく初代Cがいいのか・・・
iPhone用ゲームの開発が主目的なんですが、やはりWebアプリから学んでいったほうが
いいんですかね?
0451デフォルトの名無しさん
2008/07/17(木) 19:21:49モチベーションは全てに優先するよ.
0452デフォルトの名無しさん
2008/07/17(木) 19:32:080453デフォルトの名無しさん
2008/07/17(木) 20:03:11明日Amazonから萩原本が届くのでとりあえず読んでみます(`・ω・´)
0454デフォルトの名無しさん
2008/07/17(木) 20:33:13他言語でokなので、何かしらの入門本を読んでからの方が良いと思われ。
0455デフォルトの名無しさん
2008/07/17(木) 20:43:01英和辞書片手にヒレガス本第3版読んだ方が良さそうだな。
平易な文体だから高校生以上なら辞書なしでも
大体のフィーリングは掴めると思うし、スクリーンショットや挿し絵も多いしな。
0456デフォルトの名無しさん
2008/07/17(木) 20:46:52Σ (゚Д゚;)
そ、そうなのか・・・
では上で教えてもらったCとか、Ruby on Railsとかの入門書から挑戦してみます
ヒレガス本第3版というのも見てみます(洋書は気おくれしそうですが・・・)
ありがとう
ってか皆さん滅茶苦茶お詳しいっすね・・・(;´Д`)
0457デフォルトの名無しさん
2008/07/17(木) 20:50:31英語が得意なら海外でRails向けのホスティングサービスがあるけどね。
iPhoneアプリを作りたい位だからLeopardユーザだと思うけど、
TextMateってテキストエディタをDLしてきて
p "Hello World"
って書いて拡張子を rb 保存して Command+Rをするだけで実行できて楽だと思う。
ってスレ違いになるからこのくらいにしておく。
その心意気はすばらしいけど、荻原本はまったくもってプログラミング初心者が読む本じゃないよ。
0458デフォルトの名無しさん
2008/07/17(木) 21:25:47Objective-Cの書籍として荻原本はベストな選択の一つなのは間違いない。
強いて言うなら、Cの入門書とCocoaフレームワークやInterface Builderに
ついての本を一冊ずつ買っとくといいと思う。
0459デフォルトの名無しさん
2008/07/17(木) 22:16:38>>458
アドバイスサンクス
道は一本じゃなさそうなのでいろいろ齧ってみます
しかしプログラムの道は高く険しいなぁ・・・
0460デフォルトの名無しさん
2008/07/17(木) 23:21:38あと、iPhone プログラムを突然はじめるより、いちど OS X 用の小さいプログラムを書いてから iPhone にいったほうがわかりやすいかもしれない。
大体構造いっしょだし、OS X 用プログラムの書き方のほうがネットに沢山ころがってます。
0461デフォルトの名無しさん
2008/07/17(木) 23:25:19Obj-C は C++ と同時期に(80年代) C から派生した言語なので、まあ並列だよ。
べつに C++ を勉強したから Obj-C がわかりやすいとかその逆ということではないです。
両方ともオブジェクト指向だけど、毛色が360度違います。
C# は Java のクローンだよね。Java 自体が C, Obj-C, C++ を参考に開発されたものだし。
0462デフォルトの名無しさん
2008/07/17(木) 23:49:02ただ実質的に実行環境や開発環境がWindowsに限られるのが難。(Monoもあるけど)
MS製の環境にどっぷり浸かるならば良いとは思う。VS.Netも強力だし。
ただiPhoneの開発には使えないし、応用できるテクもおそらく無いw
0463デフォルトの名無しさん
2008/07/17(木) 23:53:15はいさようなら。
0464デフォルトの名無しさん
2008/07/17(木) 23:55:19>>461
>>462
俺みたいなクレクレ厨にここまで親切にアドバイスしてくれるなんて・・・
みんな優しいな。゚(゚´Д`゚)゜。
よその板なら「ググれやカス」で終わっても不思議じゃないのに・・・
ありがとう、このご恩は忘れませぬ ノシ
Windowsのゲーム作りならC#がいい、って聞いたことあるので
いつかC#も触ってみます
0465デフォルトの名無しさん
2008/07/17(木) 23:58:27>このご恩は忘れませぬ
検討を祈る。成功したら後輩に優しくな!
0466デフォルトの名無しさん
2008/07/17(木) 23:59:100467デフォルトの名無しさん
2008/07/18(金) 00:14:15Appleのサンプルプログラムくらいしかソースも読めない。
Objective-Cをやるなら
>>460が言うようにMacアプリからやった方が現時点ではいいだろうね。
0468デフォルトの名無しさん
2008/07/18(金) 13:19:01http://journal.mycom.co.jp/column/objc/index.html
0469デフォルトの名無しさん
2008/07/18(金) 13:36:380470デフォルトの名無しさん
2008/07/18(金) 18:39:270471デフォルトの名無しさん
2008/07/18(金) 19:03:200472デフォルトの名無しさん
2008/07/18(金) 19:03:520473デフォルトの名無しさん
2008/07/18(金) 20:49:15でも、Objective-Cはメソッドオーバーロード出来ないから特殊な方法でやった。
普通の意味でならVisitor Patternが使えないのは本当。
0474デフォルトの名無しさん
2008/07/18(金) 21:05:42オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。
単純に複数の名前のメソッドを使い分けるだけでは?
0475デフォルトの名無しさん
2008/07/18(金) 22:08:31そんなメンテナンス性の悪いコーディングしてどうする
0476デフォルトの名無しさん
2008/07/18(金) 22:41:48void action(A obj)
void action(B obj)
と定義されていたものが、
void actionWithA(id obj)
void actionWithB(id obj)
となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
0477デフォルトの名無しさん
2008/07/18(金) 22:55:39萩原本届いてた
ちょっと読んでみた
(´;ω;`) ・・・。
やっぱりCの入門書から読みます
>>467>>468
ありがとう
心折れかけたけど地道に頑張ります
0478デフォルトの名無しさん
2008/07/18(金) 23:13:32まあプログラミングにも王道は無しだよ。あなたの今のように謙虚な気持ちを忘れなければきっとできるようになります。
あと、C のポインタのあたり、文字列操作の細かい話は
あまり勉強しなくても大丈夫なので読み飛ばしてください。
0479デフォルトの名無しさん
2008/07/18(金) 23:23:20Cocoaだって最近のAPIはNSError **が大量にあるだろ。
0480デフォルトの名無しさん
2008/07/18(金) 23:26:42「変数を入れてるメモリエリアのアドレスを渡す。」
それ以上になにか必要か?
0481デフォルトの名無しさん
2008/07/18(金) 23:32:40>>480
さんの言ったことを言いたかったです。言葉が足りませんでした。
& と * はわかっておいたほうがいいけど、Objective-C ではそれで充分だよね。
malloc / free は要らないし、ポインタ演算 (足し算引き算) は要らないでしょ。
あと、配列は知らなくてもいいし、配列とポインタの等価性も要らないし、
文字列が char* 配列だということも知らなくてなんとかなるのでは。
0482デフォルトの名無しさん
2008/07/18(金) 23:56:38>ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
それで多重継承や多重ディスパッチを出来ると強弁するならご勝手にw
0483デフォルトの名無しさん
2008/07/19(土) 00:01:28>配列とポインタの等価性
エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。>>481はわかっていない。
0484デフォルトの名無しさん
2008/07/19(土) 00:13:51Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ...
visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。
とわからない言葉をならべてみる
0485デフォルトの名無しさん
2008/07/19(土) 00:15:10いやまあ、Objective C スレとしては、そのへんでひっかかろうがひっかかるまいが
Objective C では必要ないよというので充分なのでは。
0486デフォルトの名無しさん
2008/07/19(土) 00:19:140487デフォルトの名無しさん
2008/07/19(土) 00:34:22嘘を指摘されるとそういうものは必要ないと言いだす。
そういう無反省な態度は無自覚に行われるから本人は嘘を良くないとは考えていない。
0488デフォルトの名無しさん
2008/07/19(土) 00:41:12>visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。
ほんと馬鹿。逝ってよし。
0489デフォルトの名無しさん
2008/07/19(土) 01:09:23折角なので配列とポインタがどんなふうに違うかわかりやすく教えてください ...
0490デフォルトの名無しさん
2008/07/19(土) 01:18:07でも同じような議論になってる
0491デフォルトの名無しさん
2008/07/19(土) 01:48:48嘘つきはお断り
0492デフォルトの名無しさん
2008/07/19(土) 01:52:06C FAQ
0493デフォルトの名無しさん
2008/07/19(土) 03:46:16ぐぐれカス
0494デフォルトの名無しさん
2008/07/19(土) 05:46:43たしかにそうだ
なんとなく分かってるつもりでも
間違って覚えてるケースが結構ある
正しい理解が必要
0495デフォルトの名無しさん
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 止まりの静的型付け言語用の気がします。
とわからない言葉をならべてみる
0496デフォルトの名無しさん
2008/07/19(土) 07:42:090497デフォルトの名無しさん
2008/07/19(土) 09:19:11Ruby, Python, JavaScript, Perl, C++
http://0xcc.net/blog/archives/000137.html
Ruby, PHP, Objective-C
http://d.hatena.ne.jp/hetima/20061025/1161773698
意外とObjective-Cも健闘してる希ガス。
実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。
テキストエディタの作成のところでもNSStringを使ってる。
第1回:iPod touchにアプリケーションがインストールできる不思議
http://www.thinkit.co.jp/free/article/0711/9/1/
第2回:iPod touchの自作アプリケーションが作れる&動かせる!
http://www.thinkit.co.jp/free/article/0711/9/2/
第3回:iPod touchで動作するテキストエディタはこう作る!
http://www.thinkit.co.jp/free/article/0711/9/3/
第4回:夢のオフラインRSSリーダを作ろう!
http://www.thinkit.co.jp/free/article/0711/9/4/
0498デフォルトの名無しさん
2008/07/19(土) 09:27:53// 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]);
}
0499デフォルトの名無しさん
2008/07/19(土) 09:28:40>実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。
>テキストエディタの作成のところでもNSStringを使ってる。
べつに NSString の使い方を示すのなら
「実際に」iPhone じゃなくて「実際に」Mac / GnuStep でいいのでは...
0500デフォルトの名無しさん
2008/07/19(土) 09:28:56// 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
0501デフォルトの名無しさん
2008/07/19(土) 09:31:14// 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;
}
0502デフォルトの名無しさん
2008/07/19(土) 09:33:15- (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];
0503デフォルトの名無しさん
2008/07/19(土) 09:33:47[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
0504デフォルトの名無しさん
2008/07/19(土) 10:10:59はいさようなら。
0505デフォルトの名無しさん
2008/07/19(土) 12:04:420506デフォルトの名無しさん
2008/07/19(土) 12:23:12小中学生ばっかりか
0507デフォルトの名無しさん
2008/07/19(土) 12:25:50これがObjective-CのほうがSmalltalkより高速な理由です。
別な観点から言えば、 Objective-Cプログラムのすべての要素がオブジェクトで表現されていたとしたら、おそらくSmalltalkと同程度の速度であり、
Smalltalkが行なえる基本クラスへの最適化がないことで苦戦するでしょう。
つまり、文字列操作の細かい話は勉強しなくてもいいと言っている人はObjective-Cのメリットを全く理解していないんです。
0508デフォルトの名無しさん
2008/07/19(土) 12:27:01ボクが小学生だからってバカにするオマエがバカ!
0509デフォルトの名無しさん
2008/07/19(土) 12:33:53PoweMacのみ。IntelMacでは動かない。EtoileはIntelMacでも動くよ。
0510デフォルトの名無しさん
2008/07/19(土) 12:47:16ええと、一応聞いておくけど、本気でそう思っているのか ?
おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
0511デフォルトの名無しさん
2008/07/19(土) 13:02:20逆に質問しよう。なぜ、最適化という問題を持ち出したかと言えばオブジェクトのオーバーヘッドを理解しているからじゃないのか?
自分で最適化しないでも、問題を理解していれば、そういった処理を注意深く扱うようになる。それで速度的な問題を回避できるようになる。
0512デフォルトの名無しさん
2008/07/19(土) 13:12:050513デフォルトの名無しさん
2008/07/19(土) 13:48:32よっぽど悔しかったのかw
0514デフォルトの名無しさん
2008/07/19(土) 14:11:34sprintfなんて使ってるやつはばかです
0515デフォルトの名無しさん
2008/07/19(土) 14:25:30理路整然とした理由も述べないで否定するだけなら小学生でもできる。
まさか小学生じゃないよな?
sprintfとNSStringでの文字列操作の用例を挙げて比較したうえで
なぜsprintfを使うのがばかなのか述べてくれないかなぁ。
これは非常に興味深いテーマだ、>>514、君の意見が聞きたい。
0516デフォルトの名無しさん
2008/07/19(土) 14:37:030517デフォルトの名無しさん
2008/07/19(土) 14:48:230518デフォルトの名無しさん
2008/07/19(土) 15:20:330519デフォルトの名無しさん
2008/07/19(土) 15:33:50wwww
現場を知らない廚はコレだから困る。
0520デフォルトの名無しさん
2008/07/19(土) 15:37:210521デフォルトの名無しさん
2008/07/19(土) 16:30:500522デフォルトの名無しさん
2008/07/19(土) 16:52:33一行目は同感だけど、最終行は同意できない。
いまさら自力で文字列”操作”をする人はいないでしょ。
使うとしたら簡易パーサぐらいだろうけど、
それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。
それともこの程度のことも”操作”に入る?
NSLogは改行されるし、妙な出力が追加されるんで、fprintfを使うことは多いよね。
>>516
+[NSString stringWithFormat:format, ...] がsprintf相当だね。
0523デフォルトの名無しさん
2008/07/19(土) 17:07:54結局、全く理解してないことを指摘されて図星だったのかw
まともな反論も出来ないチンカスw
0524デフォルトの名無しさん
2008/07/19(土) 17:39:14>使うとしたら簡易パーサぐらいだろうけど、
>それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。
で、NSStringを使う利点まだぁ?チンチン
その程度でC言語の文字列操作の細かい話は勉強しなくてもいい理由だって主張してるの?
0525デフォルトの名無しさん
2008/07/19(土) 17:56:200526デフォルトの名無しさん
2008/07/19(土) 18:27:42人違いだわ、それ。
おれ、>522が初発言ね。
>NSStringを使う利点まだぁ?
楽だから。
べつにお勉強の為に文字列を操作するのは止めないけど、
お勉強以外であえて泥沼を選ぶ意図が俺には分からないね。
0527デフォルトの名無しさん
2008/07/19(土) 18:40:21「>>514じゃないけど」ぐらいことわってから書くぐらいしろよ。
間違われても仕方ないだろ。
まぎらわしいぞw
0528デフォルトの名無しさん
2008/07/19(土) 19:02:20ID無いの忘れてたんだよ。
0529デフォルトの名無しさん
2008/07/20(日) 01:14:12おかしくなるのがあって、ソースみて原因追及してみたら
内部でアルファベットだけと仮定して char* で操作してるところのせい
だったというのがあるので、char* のほうが速いかもしれませんが、
非日本人が使うかもしれないというのを考えて、
ShiftJIS / MacJapanese とかエンコーディングを仮定して
char* を操作するプログラムを書くのではなくて、
NSString (か他の国際化文字列ライブラリ)をつかって書くようにして
おいてくださると多分世界のどこかで誰かが助かります。
0530デフォルトの名無しさん
2008/07/20(日) 01:19:210531デフォルトの名無しさん
2008/07/20(日) 01:31:05自分で考えなくても自動的にある程度は考慮されたことになるというのが利点。
Mail.app にイスラエル人の知り合いからメールがきて、
名前欄がちゃんとヘブライ語になってたので感心しました。
まあきっと外人さんには名前欄に漢字が出る時点でびっくりなんだろうけど。
海外製のフリーウェアシェアウェアでも Cocoa なら大抵は
日本語問題なくつかえるのは一貫して NSString つかってあるからで、
(というと言い過ぎだと思いますが、)
昔の Carbon のころはそうではなかったです。
メニューバーとかよく化けてたでしょ。
0532デフォルトの名無しさん
2008/07/20(日) 01:39:10君のまだ知らない世界にはユニコードっていうものがあってな
0533デフォルトの名無しさん
2008/07/20(日) 02:09:08個人が作るソフトにはUTF-8なcharとかwchar_tを使わずに
US-ASCIIかISO-8859-1前提でcharを使ってるのがままあるよ。
作者がUnicodeにする必要を感じてないから仕方ない。
Mac用のソフトだと素直にCocoaで作ればそんなことにはなりづらいけどね。
0534デフォルトの名無しさん
2008/07/20(日) 02:14:190535デフォルトの名無しさん
2008/07/20(日) 02:16:53>それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。
その辺に落ちてるのほとんどchar*になってるだろw
NSString使わない方が良いみたいに読めてしまうw
0536デフォルトの名無しさん
2008/07/20(日) 02:18:380537デフォルトの名無しさん
2008/07/20(日) 02:27:05>それともこの程度のことも”操作”に入る?
も読んでね。
文字列を渡したり、もらったりも文字列操作に入れちゃうのか?
0538デフォルトの名無しさん
2008/07/20(日) 04:08:53てかさぁ、ライブラリでパターンマッチングやバックトラッキング用のクラスを用意してその上に高級パーサとか正規表現ライブラリを構築してる例なんてあるの?
なかったらどのみちchar*を使うんだから勉強せざるを得ないんじゃないのか?
0539デフォルトの名無しさん
2008/07/20(日) 05:30:58でも、文字列は操作しないよ。
0540デフォルトの名無しさん
2008/07/20(日) 05:39:330541デフォルトの名無しさん
2008/07/20(日) 08:36:55上で言ってるObjective-Cの知識だけじゃどうにもならん場合はある。
0542デフォルトの名無しさん
2008/07/20(日) 09:02:36ちょっと凝ったことをするにはCで直に、あるいはObjCのラッパを書くことになるし
Objective-Cだけで開発するには限界があるのは同意。
0543デフォルトの名無しさん
2008/07/20(日) 10:04:26データベース使うJavaの人?BSDとかでスクリプト書いてる人?
文字列検索と文字列操作を美しく勘違いしてないかいw?
0544デフォルトの名無しさん
2008/07/20(日) 10:19:48int 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)
正規表現パターンバッファを解放する。
0545デフォルトの名無しさん
2008/07/20(日) 10:28:06通りすがりだが横から質問させて。
で?そのregcomp,regxec,regfree関数ってどういう時に使うの?
sprintfとかscanfとか上の方で出てたNSStringの文字列操作と置き換えられるものなのかな?
教えてエロい人!
0546デフォルトの名無しさん
2008/07/20(日) 10:31:020547デフォルトの名無しさん
2008/07/20(日) 10:35:06ネーネーregex、OregKitとかいうのとsprintfは同じ機能のものなの?
文字列操作の話で来ているのになんで「正規表現」て出てきてegex、OregKitなの?
ワカラナイ、ワカラナイ...
「お前が馬鹿だから」と言うの無しでちゃんと説明して!、初心者なので。
0548デフォルトの名無しさん
2008/07/20(日) 10:36:33適当にググッた。嫁。サンプルコードだけ読めば簡単に分かる。
regex.h
http://memo.majide.com/index.php?%A1%DAC%B8%C0%B8%EC%A1%DB%C0%B5%B5%AC%C9%BD%B8%BD
http://sometime.minidns.net/~ccgi/posix_regex.html
reglib.c ・・・ regcomp,regxec,regfree関数を使って、regsplit, regreplace, regrpall, regcnt関数を構築してる例
http://sometime.minidns.net/~ccgi/posix_reglib.html
0549デフォルトの名無しさん
2008/07/20(日) 10:41:36sprintfに対してreglib使え?おいおい(w。
挙げ句は自分の言葉で説明できないからググッたコピペと来たよ。
これじゃプロジェクトが座礁してデスマーチにもなる罠。
0550デフォルトの名無しさん
2008/07/20(日) 10:42:11いや、走らしてみろ。即分かる。
0551デフォルトの名無しさん
2008/07/20(日) 10:43:09はいはい、ワロスワロスw
0552デフォルトの名無しさん
2008/07/20(日) 10:47:24例:"prm1は不正な入力です。"
sprintfではなくreglibで処理を行なうにはどのようにしたら良いでしょうか。
具体的なコードをここに書いてくださると助かります。
0553デフォルトの名無しさん
2008/07/20(日) 10:57:59「かいしんのいちげき!」
>>551の無能さが露呈した。
0554デフォルトの名無しさん
2008/07/20(日) 11:06:05"hoge"="%sは不正な入力です。";
hoge.m
...
id hoge = NSLocalizedStringFromTable(@"hoge", @"hoge", @"hoge");
hoge = [NSString stringWithFormat:hoge, prm1];
fprintf(strerr, "%s¥n", [hoge UTF8String]);
...
てか、文字列操作の細かい部分をchar *でするかどうかの話でしょ?
なんで話変わってんの?
0555デフォルトの名無しさん
2008/07/20(日) 11:06:47>これじゃプロジェクトが座礁してデスマーチにもなる罠。
いやいや多分>>548はプログラマですらないからwww
iPhoneブームで注目度があがるの結構だけど、知ったかぶる廚も多くなるから嫌だね。
0557デフォルトの名無しさん
2008/07/20(日) 11:08:37lexは字句解析のことで、文字列を1文字づつ読み込んでトークン、つまり単語に切り分ける仕事をする。
yaccは構文解析のことで、得られたトークンの意味を推測して構文木を作成する。
で、得られた構文木を元にして文字列の意味を翻訳する。
正規表現は、 テキストの文字列に対してパターンマッチを行う強力な道具です。
TEXTファイル中からある単語を置換/検索するのもパターンマッチです。
例えばyaccを使わないで簡易にキーワード(文法上重要なトークン)を探したいときのパターンマッチを正規表現でやるとか出来ます。
regex、OregKitは正規表現プログラムなのでそういったことが簡単に出来ます。
int sprintf(char *str, const char *format, ... );
sprintfは書式formatにしたがって、printf関数と同様の変換を行った出力を、文字列strに格納します。使えるようになると凄く便利。
char *str : 変換した出力を格納する文字列。
const char *format : 書式指定文字列。
※ 要するに、正規表現は文字列のパターンマッチをするのに対して、sprintf関数は文字列を変換します。だから役割はちがう。
0558デフォルトの名無しさん
2008/07/20(日) 11:12:150559デフォルトの名無しさん
2008/07/20(日) 11:14:450560デフォルトの名無しさん
2008/07/20(日) 11:15:580561547
2008/07/20(日) 11:17:06ありがとうございます!
regex,OregKitはsprintfとは使い道が違うものなのですね。
困ったさんのおかげであやうく誤った知識を覚えてしまうところでした。
0562デフォルトの名無しさん
2008/07/20(日) 11:21:49プログラムには、字句解析と構文解析をする部分を作成してHTMLやXMLの中から必要な情報を抜き取る必要がある。
そういうときに、パターンマッチで必要な情報を見つける。そして、sprintf関数とかを使って適切な形に仕上げて表示させるという風に使用する。
0563デフォルトの名無しさん
2008/07/20(日) 11:28:390564デフォルトの名無しさん
2008/07/20(日) 11:31:52じゃ、解説して!
もう疲れてきた。適切な例を考えるのめんどい。
0565デフォルトの名無しさん
2008/07/20(日) 11:35:320566デフォルトの名無しさん
2008/07/20(日) 11:37:47むしろ>>553だろ
おれはちゃんと>>557を書いて説明した。>>514と言われるのは心外だ。
0567デフォルトの名無しさん
2008/07/20(日) 11:47:41すまん。疑心暗鬼になってて。
0568デフォルトの名無しさん
2008/07/20(日) 12:00:360569デフォルトの名無しさん
2008/07/20(日) 12:27:02夏休みだから仕方がないのかな。
0570デフォルトの名無しさん
2008/07/20(日) 13:18:46>夏休みだから仕方がないのかな。
>>495にあるように、この流れは君の嘘が元凶だったんだから反省してくれ
0571デフォルトの名無しさん
2008/07/20(日) 14:40:240572デフォルトの名無しさん
2008/07/21(月) 00:32:36もしかしてスーパーハッカー?
0573デフォルトの名無しさん
2008/07/23(水) 12:24:43語録としてまとめるのは変だが
0574デフォルトの名無しさん
2008/07/23(水) 23:08:37Apple としては C で書くときでも char* じゃなくて CFString つかってくれということだよね。
0575デフォルトの名無しさん
2008/07/24(木) 05:24:39はぁ?ばかじゃねぇの?
0576デフォルトの名無しさん
2008/07/24(木) 08:44:13煽り煽られたいだけじゃなくて、ほんとにそう思ってるなら、
BSD の API じゃなくて Apple 製の C API で、
char* を受け取るものがどういうのがあるか反省してみてください
0577デフォルトの名無しさん
2008/07/24(木) 09:28:050578デフォルトの名無しさん
2008/07/24(木) 09:47:18それを使うと"default encoding"が変わったときに
文字化けして死亡するので、使わないでね。というか deprecated in 10.4.
stringWithCString:encoding:
か
stringWithUTF8String:
を使ってください。お願いだから。
これだけのせいで動かない海外製のフリーウェアに何度も出会っているので ...
0579デフォルトの名無しさん
2008/07/24(木) 09:54:16こいつは円記号とバックスラッシュを区別するので、
海外製の Cocoa でつくったシェルスクリプトのラッパで
不用意に -stringWIthCString: と -cString で行ったり来たりすると
シェルスクリプト内に ASCII code でのバックスラッシュ(0x5c)が
あるべきところにMacJapanese の バックスラッシュ (0x80) が入って
スクリプトが動かなくなったりします ...
0580デフォルトの名無しさん
2008/07/24(木) 19:55:33オマエの妄想をAppleが言ってるように言うな、この詐欺師が
0581デフォルトの名無しさん
2008/07/24(木) 21:01:180582デフォルトの名無しさん
2008/07/24(木) 21:24:17char* としての文字列の操作すら知らなかったら、ほんとに簡単なプログラムしか書けない、というのは嘘ではないよ。
0583デフォルトの名無しさん
2008/07/24(木) 23:09:04まあそれはそうですね。
NSString のメソッドって一杯あるけどなんか微妙に足りないことがしばしば。
Perl/Ruby/Python みたいに
正規表現が標準でつかえればそんな問題もなくなるんだけど。
0584デフォルトの名無しさん
2008/07/24(木) 23:29:01それともわざとか?
釣られた俺?
0585デフォルトの名無しさん
2008/07/24(木) 23:30:01>Perl/Ruby/Python みたいに
>正規表現が標準でつかえればそんな問題もなくなるんだけど。
この人、また来てるのね。正規表現廚。
0586デフォルトの名無しさん
2008/07/24(木) 23:46:52char*を入力したり出力したりするAPIが存在しなければ、char*を使う必要がない。と言いたいんじゃないの?
0587デフォルトの名無しさん
2008/07/25(金) 06:28:520588デフォルトの名無しさん
2008/07/25(金) 09:00:500589デフォルトの名無しさん
2008/07/25(金) 09:12:030591デフォルトの名無しさん
2008/07/25(金) 17:08:20NSAutoString
NSCString
NSIString
NSMutableString
NSAttributedString
・・・
0592デフォルトの名無しさん
2008/07/25(金) 20:07:490593デフォルトの名無しさん
2008/07/26(土) 07:19:51NetSTEP
NeXTSTEP
NeXTscape
・・・
0594デフォルトの名無しさん
2008/07/26(土) 08:21:400595デフォルトの名無しさん
2008/07/26(土) 09:41:26┝ - - - - ┿━━━┿━━━┥
∩___∩ /)
| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ / 今はここら辺クマーー!!
彡、 |∪| ,/
/ ヽノ /
0596デフォルトの名無しさん
2008/07/26(土) 20:44:470597デフォルトの名無しさん
2008/07/27(日) 12:45:31┝ - - - - ┿━━━┿━━━┥
∩___∩ /)
| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ / 今はここら辺クマーー!!
彡、 |∪| ,/
/ ヽノ /
0598デフォルトの名無しさん
2008/07/27(日) 17:39:050599デフォルトの名無しさん
2008/07/27(日) 21:48:06┝ - - - - ┿━━━━┿━━━━━┥
∩___∩ /)
0600デフォルトの名無しさん
2008/07/29(火) 19:06:090601sage
2008/08/20(水) 10:31:330602デフォルトの名無しさん
2008/08/21(木) 05:21:02a = [foo bar_A:[s get] B:[s get]];
というステートメントがありまして、いろいろ実験してみますと、
どうもB:[s get]がA:[s get]より先に実行されてるっぽいです。
どうしてなのか知りたいのですが。
0603デフォルトの名無しさん
2008/08/21(木) 06:02:59というか普通は保証されないから理由なんてないと思うよ
0605デフォルトの名無しさん
2008/08/22(金) 17:35:38呼ばれた側で先頭から配列のようにアクセスできて楽だから。
0606デフォルトの名無しさん
2008/08/22(金) 23:33:22それでいくと、IntelとPowerPCで動作が変わるのかな?
0607デフォルトの名無しさん
2008/08/23(土) 00:28:290608デフォルトの名無しさん
2008/08/23(土) 03:40:36その前に、gccは実行効率優先でコードを生成するだろうから、引数のセットアップ順序もケースバイケースになりそうな気がする。
push命令使ってるわけでもないし
0609デフォルトの名無しさん
2008/08/23(土) 05:04:57恥ずかし過ぎて、俺なら明日会社休んじゃう
0610デフォルトの名無しさん
2008/08/23(土) 05:30:37土曜は休みだろ?
0611デフォルトの名無しさん
2008/08/23(土) 05:38:190612デフォルトの名無しさん
2008/08/24(日) 15:23:240613デフォルトの名無しさん
2008/08/28(木) 02:10:010614デフォルトの名無しさん
2008/08/28(木) 02:28:210615デフォルトの名無しさん
2008/08/28(木) 03:11:51Pascal式は前から積んで呼ばれた先でポップだった。
0616デフォルトの名無しさん
2008/08/30(土) 13:55:06よくわからん
0617デフォルトの名無しさん
2008/09/08(月) 15:59:010618デフォルトの名無しさん
2008/09/08(月) 19:07:19nil じゃね?
0619デフォルトの名無しさん
2008/09/08(月) 19:19:350620デフォルトの名無しさん
2008/09/09(火) 15:47:58ににる にる にる ににるに〜
0621デフォルトの名無しさん
2008/09/09(火) 21:15:370622デフォルトの名無しさん
2008/09/09(火) 22:32:50ローコストモデルでは通信できない可能性が高いからプログラマとしては魅力ないのかな?
もっともNDAがあるから職業プログラマは話せないと思うけど
0623デフォルトの名無しさん
2008/09/09(火) 22:52:44NSDataオブジェクト作ってwriteToFileすりゃいいってのはなんとなくわかるんだけど…。
0624デフォルトの名無しさん
2008/09/15(月) 02:39:39以前は GPL だった気がするけど、勘違いかな...
0625デフォルトの名無しさん
2008/09/15(月) 20:58:090626デフォルトの名無しさん
2008/09/26(金) 15:07:40\u3042\u3044\u3046
とエスケープされた文字を
あいう
と変換する方法をご教示ください。
0627デフォルトの名無しさん
2008/09/27(土) 22:21:26cocoaはmvcによって
アプリを開発していくことはよく分かりました。
ただIBで作成したNSViewに直接modelで作成したクラスを割り当てると
この場合controllerを解しているわけではないですよね?
そういう解釈で良いんですか?
0628627
2008/09/27(土) 22:23:12というよりxcodeで記述したクラスといったほうがいいのかな?
0629デフォルトの名無しさん
2008/09/27(土) 23:12:46通常、1クラスしか使わない場合、
ないのはモデルということになる。
0630デフォルトの名無しさん
2008/10/02(木) 00:50:56¥u3042¥u3044¥u3046
とエスケープされた文字を
あいう
と変換する方法をご教示ください。
0631デフォルトの名無しさん
2008/10/02(木) 00:53:180632デフォルトの名無しさん
2008/10/02(木) 04:47:43ちょっと上でみたよね
0633デフォルトの名無しさん
2008/10/02(木) 05:09:33NSLog(@"¥u3042"); // u の前は半角の¥(円マーク)
これだとそのまんまコンソール出力されたけど
NSLog(@"¥u3042"); // u の前は半角の\(バックスラッシュ)
だと、普通に”あ”って出力されたよ。
Unicodeエスケープとかでググれば何か出るんじゃない?
英語で検索した情報多いかもね。
0634デフォルトの名無しさん
2008/10/04(土) 22:14:05スーパークラスもサブクラスも
関係ない
id型ひとつあればよい
0635デフォルトの名無しさん
2008/10/04(土) 23:26:29Obj-CがあればC++要らんっていうのも分かる。
0636デフォルトの名無しさん
2008/10/05(日) 08:31:310637デフォルトの名無しさん
2008/10/05(日) 09:06:13UNIX magazine の10月号かな
0638デフォルトの名無しさん
2008/10/05(日) 10:20:260639デフォルトの名無しさん
2008/10/05(日) 10:31:37MacからiPhoneまでを網羅するアップルの開発言語Objective-C入——前編
http://www.ascii.co.jp/books/magazines/unix.shtml
0640デフォルトの名無しさん
2008/10/05(日) 19:11:30Object C
0641デフォルトの名無しさん
2008/10/05(日) 19:53:270642デフォルトの名無しさん
2008/10/05(日) 19:55:080643デフォルトの名無しさん
2008/10/05(日) 20:59:230644デフォルトの名無しさん
2008/10/06(月) 15:28:24冷静に考えると、2冊分の金で
専門誌買えばよかったかもしれない。
0645デフォルトの名無しさん
2008/10/06(月) 16:54:44読む価値ある?
0646デフォルトの名無しさん
2008/10/06(月) 16:58:320647デフォルトの名無しさん
2008/10/06(月) 18:16:030648デフォルトの名無しさん
2008/10/06(月) 19:32:01言おうと思ったけど黙っていたのに気づいてしまったか
0649デフォルトの名無しさん
2008/10/06(月) 19:47:030650デフォルトの名無しさん
2008/10/06(月) 20:40:160651デフォルトの名無しさん
2008/10/09(木) 23:25:39あれはなんで?
コード見ても描写を担う関数が仮引数とか受け取ってるみたいだけど・・・・・・・。
一体この仮引数はなんなの?
0652デフォルトの名無しさん
2008/10/09(木) 23:52:57何を引き受けているのかってことかな?
確かにNSViewって不思議。
他のオブジェクトだったらIBとXcodeはアウトレット、アクションとコントラーを介して
つながっているけど、NSViewってクラスでそのままリンクさせることができるもんね。
0653デフォルトの名無しさん
2008/10/10(金) 00:29:12確かにcocoaで良くわからないところだった。
NSTextViewでもコントローラーをソースとして登録しておくって考え方も
.net出身者としては腑に落ちなかった。
0654デフォルトの名無しさん
2008/10/10(金) 09:03:01何が疑問なのか曖昧すぎてわからないので、もうちょっと詳しく書いてくれませんか?
>>651 さんとかどの関数の話をしてるの?
>>652 はなにがいいたい?クラスでそのままリンクって?
>>653 はどういうこと?コントローラをソースとして?ソースって何?
0655651-652
2008/10/10(金) 14:21:46ドモ、ありがとうございます。超初心者です。
このサイトにあるGraphic関数です
http://homepage.mac.com/mkino2/cocoaProg/AppKit/GraphicFunctions/GraphicFunctions.html#overview
疑問1
このサイトで四角形を描写させるためのサンプル全ての関数において
NSFrame型のframeRectっていう仮引数をうけとっているよね。
でも関数の中身をみるとそんな仮引数を利用している形跡がない。
別に宣言する必要が無いのでは?というのが最初の疑問。
疑問2
サンプルコードをダウンロードしたプログラムにはコントローラー(青色の立体箱)がなかったんですよね。
僕はIBで作成したインターフェイス部分とX-codeで記述したコード部分を繋ぐためには
コントローラーでアクションとアウトレットで接続する必要があるって理解していたから
コントローラーがなくてなんでX-codeで記述した関数がインターフェイスに反映されるのか全く分かりませんでした。
そしたらこのサンプルではIBのNSViewのクラス名部分がX-codeで作成したクラスに
なっていたんです。
これはコントローラーが介在していないってことですよね。?
0656デフォルトの名無しさん
2008/10/10(金) 15:18:45NSViewのサブクラスは -drawRect:(NSRect)frame;をオーバーライドして描画をやります。
で frameにはview自身の大きさが入ってきます。
ので、それに習っただけでしょう。
DLしてないけど、多分NSViewのサブクラスがwindowに貼り付けてませんでしたか?
最後の段からすると多分そうなってるんだと思うけど、
そうしておくと、nibロード時にサブクラスを作ってそこに貼り付けてくれます。
(実際には違いますがイメージはそんな感じです)
で、NSViewのサブクラスの
-drawRect:(NSRect)frame;
で描画処理が行われているはずです。
0657デフォルトの名無しさん
2008/10/10(金) 15:20:240658デフォルトの名無しさん
2008/10/10(金) 15:53:59答え1
- (void)drawRect: (NSRect)frameRect は nib (xib) が読み込まれて初期化する
時や絵を書き直す過程で呼ばれる。frameRect は描画する場所を限定する為のもの。
描画効率upの為に customView の一部に限定する事もできる。初期化の時は多分、
customView.bounds で view の全体を描画させているんだと思うな。
答え2
コントローラは介在していない。ていうか、MVC の View を直接いじっていて、
Model、Controller が無い状態。
と、書いているうちに >656 さんが書いてくれましたね。customView が直接 window に
貼付けられていました。
0659デフォルトの名無しさん
2008/10/10(金) 20:40:38> .net出身者としては腑に落ちなかった。
そこがCocoa(MVCパターン)と.NET(n層パターン)のアーキテクチャの違いというやつだ。
MVCのViewは、主に描画だけを行いデータの保持や管理をしない。Model内でデータを更新すると、それに連動してるViewが勝手に再描画される感じ。
n層パターンだと、ビジネス層で処理したデータをプレゼン層に送りこんで、プレゼン層側でデータを保持したり処理したりする。
0660デフォルトの名無しさん
2008/10/11(土) 01:07:34書いてるのはシロタンですぞw
retain count方式の説明に微妙に誤解を招きそうな表現があった気がした。
0661デフォルトの名無しさん
2008/10/11(土) 11:50:01イメージとしては理解できました。
本当にありがとうございます。
0662デフォルトの名無しさん
2008/10/19(日) 23:32:590663デフォルトの名無しさん
2008/10/21(火) 22:59:05やりかた知ってますか?
一応必死に探したんだけど見つかりませんでした。
0664デフォルトの名無しさん
2008/10/22(水) 00:07:560665デフォルトの名無しさん
2008/10/22(水) 02:22:42>>664の場所にあるよ。
フォントサイズのみの指定って感じのインターフェイスじゃないからわかりにくいっちゃあわかりにくい。
フォント名をダブルクリックしてフォントパネルの中で指定。
0666663
2008/10/22(水) 20:35:04ありがとう!
フォントサイズをこんなにも決め細やかに設定できるなんてすばらしすぎる。
背景もモダンにして高級感たっぷり。
ありがとう!
0667デフォルトの名無しさん
2008/10/27(月) 21:51:10なるほど。
だから
.NETではインターフェイスに入力したデータがコードにも受け継がれるけど、
cocoaの場合はインターフェイスに入力したデータはコードでは受け継がれずに
関数で取りに行く必要があるのか。
めんどくさいよね。これ。
0668デフォルトの名無しさん
2008/10/27(月) 22:53:40つまり
textBoxの値をlabelに反映するだけのアプリケーションで説明すると
.netの場合
labe.text = textBox.text;
で終了。
cocoaの場合
labeField = [NSTextview setStringValue : textField];
さらにIBでlabelField,textFieldをアウトレットでコネクトする必要あり。
面毒せー!
でも高度なテクニックはcocoaのほうが分かりやすいんだよなー
0669デフォルトの名無しさん
2008/10/27(月) 22:56:19.netはcocoaを見習いようがないけど、cocoaは.netを見習えるような気がする。
0670デフォルトの名無しさん
2008/10/27(月) 23:36:300671デフォルトの名無しさん
2008/10/27(月) 23:53:430672デフォルトの名無しさん
2008/10/28(火) 00:02:210673デフォルトの名無しさん
2008/10/28(火) 00:52:53>cocoaの場合
>labeField = [NSTextview setStringValue : textField];
>さらにIBでlabelField,textFieldをアウトレットでコネクトする必要あり。
何年前の話をしてるんだ?
10.3 のときから、そんなのはコードを一行も書かなくても
Interface Builder でバインディングをすればできるわけだが ...
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaBindings/
とかみろ。もっと新しい英語版はこちら:
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/CocoaBindings.html
0674デフォルトの名無しさん
2008/10/28(火) 01:02:43ありがとー
実は入門書しか読んでねー。
0675デフォルトの名無しさん
2008/10/29(水) 23:21:44そこでバインディングについて簡単に説明して。
一体どんなすごいことが出来るの?
0676デフォルトの名無しさん
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
に引用されてる先を読んでください。
0677デフォルトの名無しさん
2008/10/30(木) 00:02:41.net でも WPF だったか XAML だったかで同様のことができるんじゃなかったっけ。
0678デフォルトの名無しさん
2008/10/30(木) 01:52:230679デフォルトの名無しさん
2008/10/30(木) 02:11:38outletを用意しなくても済むため、コード量を劇的に減らすことができるって、HMDTさんが言ってた。
http://developer.apple.com/jp/documentation/Cocoa/Seminar/Cocoa3/1.CocoaBinding.mov
0680デフォルトの名無しさん
2008/10/31(金) 23:06:49>labe.text = textBox.text;
>cocoaの場合
>[labeField setStringValue : [textField stringValue]];
いちおう、cocoaでも
labeField.stringValue = textField.stringValue;
と書ける。objc2.0なら
0681デフォルトの名無しさん
2008/10/31(金) 23:37:41Apple 的には推奨してるんだっけ?
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_2_section_3.html
anObject.retain はするなとかいてあるが
.stringValue はいいのかな。
0682デフォルトの名無しさん
2008/11/02(日) 16:53:15その文書を読む限り推奨も否定もしてないようですね。
ただ、書いてる内容を総合的に見れば、ドット構文を一般的なメソッド呼び出しの代替えとして使うな、ということのようだから、ちゃんとしたアクセッサメソッドならドット構文を使ってもいいんじゃないかな。
とりあえず、コンパイルエラーとかも出ないし。
0683デフォルトの名無しさん
2008/11/03(月) 01:31:54なんて書けば良いんでしょうか・・。超低レベル質問なのは分かってるんですけども
0684デフォルトの名無しさん
2008/11/03(月) 02:34:21AppleのドキュメントとかAPIリファレンスとかでそれっぽいとこ探せばいいのでは?
そこで分かったそれらしいクラス名なりメソッド名とかを使ってググるとか。
APIリファレンスとかにはそのメソッドとかを使ったAppleのサンプルへのリンクがあったりするからそれを見てみるとか。
ClashLandingってAppleのサンプルにそれっぽいのがあるらしい。
[オーディオ] - iPhoneアプリケーション開発
http://d.hatena.ne.jp/iphone_dev/searchdiary?word=%2a%5b%a5%aa%a1%bc%a5%c7%a5%a3%a5%aa%5d
試してみるとか?
俺も再生の仕方とかわからない・すまない。
他に詳しい方おしえてあげてください。
0685デフォルトの名無しさん
2008/11/03(月) 03:39:08質問するスレはCocoa はさっぱり
http://pc11.2ch.net/test/read.cgi/mac/1224960170/
のほうが適当だとおもいますよ。
あと、質問するときはどのていどまで Cocoa を知ってるのか書いてください。
Interface Builder つかってボタンを表示する方法はしってるのかとか。
ではあちらのスレで会いましょう。
0686デフォルトの名無しさん
2008/11/03(月) 15:01:44ありがとうございますとりあえず音は出せるようになりました!
半日かかりましたけどw
>>685
見落としてました。そのスレが自分向きですね
教えて君にならないよう頑張ってみます
0687デフォルトの名無しさん
2008/11/03(月) 17:01:520688デフォルトの名無しさん
2008/11/07(金) 02:19:43関数を使って一定間隔ごとにある関数を呼び出すタイマークラスを作成したいのですが、
上手くいきません。
targetに問題があるのかなと考えているのですが、
メイン関数でタイマークラスを作成し上記の関数をよび出す場合、
targetはselfでいいのでしょうか?
0689デフォルトの名無しさん
2008/11/07(金) 09:11:25main 関数ってほんとに C の main() ?
それだと NSTimer うごかないよ。Runloop 回さないと。
あと、この質問は Objective-C プロパーというより
たぶん Cocoa の話なので、>>685 にもあるように
新マック板の Cocoa スレに行ってください。
0690デフォルトの名無しさん
2008/11/07(金) 09:25:56おそらく NSTimer はちゃんと出来ているけど、NSRunLoop に渡してないだけな気が
しますが…… NSRunLoop の addTimer:forMode: を参照
0691名無しさん@お腹いっぱい。
2008/11/17(月) 04:06:06Javaみたいに、関係あるクラスの中で定義して、AClass.CONST_A_VALみたいに使いたいんだが。
0692デフォルトの名無しさん
2008/11/17(月) 04:42:09Global namespace に大量に定数を定義するのが Obj-C 流。
(あまりいいことではないとおもうけど、そういうものなんだからしかたがない。)
そのかわり定数の名前がかなり(めちゃくちゃ)長くして衝突をさけます。
NSUTF8StringEncoding
とか
NSApplicationDidUnhideNotification
とか。
Java なら NSApplication.DidUnhideNofitication とかするところを
点を一個抜く感じだと思います。
0693名無しさん@お腹いっぱい。
2008/11/17(月) 05:02:17うう、そうですか。
それがObjective-C流ならしかたない(泣。
defineとconstではどっちの方がいいんでしょう?
0694デフォルトの名無しさん
2008/11/17(月) 05:38:41.m で実際の値を定義するんじゃないですかね?
少なくとも Cocoa の標準ヘッダではそうなってますし僕もそうします。
Obj-C というか C だと const の中身までヘッダにかくと
リンク時に衝突するとおもいます。ご存知なら失礼。
0695名無しさん@お腹いっぱい。
2008/11/17(月) 10:45:31いや、とても参考になりました。
ありがとうございます。
0696デフォルトの名無しさん
2008/11/17(月) 17:46:29JavaScript書いてそれをObj-Cから実行って感じですか?
0697デフォルトの名無しさん
2008/11/18(火) 00:32:39Mac 上でやるんなら JavaScript だけじゃなくて AppleScript もつかえるでしょう。
Obj-C から AppleScript なら呼び出し放題だけど。
http://developer.apple.com/documentation/Cocoa/Conceptual/ScriptingBridgeConcepts/
0698696
2008/11/18(火) 16:10:37ありがとー
0699デフォルトの名無しさん
2008/11/19(水) 11:49:45http://etoileos.com/news/archive/2008/11/16/2300/
なんだか独自の方向に突っ走ってる気がするが...
0700デフォルトの名無しさん
2008/12/02(火) 22:43:50(´・ω・`)ショボーン
http://imepita.jp/20081110/801860
http://imepita.jp/20081130/027170
0701デフォルトの名無しさん
2008/12/04(木) 03:22:21上のほうで一度話題になりかけてるんだけど、
なんか急激に煽り煽られになっててよくわからん。
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];
}
でいい気がするんですが、もっといい方法ありますか?
0702デフォルトの名無しさん
2008/12/19(金) 19:10:070703デフォルトの名無しさん
2008/12/19(金) 19:21:550704デフォルトの名無しさん
2008/12/20(土) 06:36:47void 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];
}
0705デフォルトの名無しさん
2008/12/20(土) 06:55:08このインスタンスメソッド自体にエラーが生じるの?
よければそのエラーの内容も書いてほしいんだけど・・・・・・・
それともただ単に仮引数V2に渡した引数にコピーされていないだけなの?
0706デフォルトの名無しさん
2008/12/20(土) 07:23:41本の配列には全く関係ないと思うんだよね。
v2のアクセッサメソッドを定義する方法もあるだろうけれど、
クラスメソッドにしてみてもだめ?
0707デフォルトの名無しさん
2008/12/20(土) 07:24:44a[1][0]=a[1][1]=a[1][2]=1.0;
copyVector:a[1] To:a[0];
とすると、copyVector のところに、error: syntax error before 'To' と出てしまいます。
0708デフォルトの名無しさん
2008/12/20(土) 07:27:31インスタンスメソッドだよね?
ちゃんとオブジェクトに送ってるの?
0709デフォルトの名無しさん
2008/12/20(土) 07:30:28v2[0] = v1[0];
v2[1] = v1[1];
v2[2] = v1[2];
}
ということでしょうか? 結果は同じ様です。
0710デフォルトの名無しさん
2008/12/20(土) 07:34:28[self copyVector:a[1] To a[0]];
でどう?
0711デフォルトの名無しさん
2008/12/20(土) 07:35:17てかクラスでもインスタンスメソッドでも
オブジェクトにメッセージをおくらないと・・・・・
0712デフォルトの名無しさん
2008/12/20(土) 07:40:35・・・・・・・・・・そりゃToの前にエラーが出るわな。
0713デフォルトの名無しさん
2008/12/20(土) 07:43:140714デフォルトの名無しさん
2008/12/20(土) 07:46:150715デフォルトの名無しさん
2008/12/20(土) 07:47:15すみません。
突っ込んどいて解説なしはダメですよね。
0716デフォルトの名無しさん
2008/12/20(土) 08:18:480717デフォルトの名無しさん
2008/12/20(土) 08:46:200718デフォルトの名無しさん
2008/12/20(土) 10:18:410719デフォルトの名無しさん
2008/12/20(土) 15:41:560720デフォルトの名無しさん
2008/12/20(土) 15:46:57グローバルスタティックメソッドライブラリークラス
じゃないの?
0721デフォルトの名無しさん
2008/12/20(土) 18:46:28空を飛べないサイヤ人みたいだ。
0722デフォルトの名無しさん
2008/12/21(日) 01:42:160723デフォルトの名無しさん
2008/12/21(日) 02:38:06selfは自分自身だよ。
0724デフォルトの名無しさん
2008/12/21(日) 02:56:140725デフォルトの名無しさん
2008/12/21(日) 11:24:40せめて教科書くらいは読んだ方がいいと思うんだよね
0726デフォルトの名無しさん
2008/12/22(月) 12:15:250727デフォルトの名無しさん
2008/12/22(月) 15:44:28そんなには13インチのMacBookプレゼントしてやれ。
0728デフォルトの名無しさん
2008/12/22(月) 22:58:460729デフォルトの名無しさん
2008/12/23(火) 18:45:13「やさしいC」みたいなのがいいっす
0730デフォルトの名無しさん
2008/12/23(火) 18:51:31対応するメソッドはありますか?
拡張子を取るなら NSString#pathExtension で出来ますが、それ以外の部分が欲しいのです。
0731デフォルトの名無しさん
2008/12/23(火) 19:14:02この手の話・質問はここよりも、新Mac板 Cocoaはさっぱり!!! の方がレスポンス良いよ。
http://pc11.2ch.net/test/read.cgi/mac/1224960170/
>>729
「やさしいC」は読んでないけど、入門書は
木下誠「たのしいCocoa」、アーロン・ヒレガス「MacOSX Cocoa プログラミング」
>>730
-(NSString *)stringByDeletingPathExtension
0732デフォルトの名無しさん
2008/12/23(火) 19:22:05ありがとうございます
「たのしいCocoa」にします
0733デフォルトの名無しさん
2008/12/28(日) 13:29:54荻原 剛志「詳解 Objective-C 2.0」
Stephen G. Kochan "Programming in Objective-C"
この2冊が該当する。Kochanの本を和訳して欲しいと思っている。
0735デフォルトの名無しさん
2008/12/30(火) 12:30:53この言語の構文は学部生の卒論レベルだぞ
まったく整理されてない
企業でやるならもう少し良く考えて作ってほしい
0736デフォルトの名無しさん
2008/12/30(火) 12:37:51言語というよりは動的な環境を提供するライブラリ+呼び出し用マクロって感じだよ。
昔からあるじゃんESQL/Cとか。ああいう系統。
0737デフォルトの名無しさん
2008/12/30(火) 12:48:11まぁ、C言語を拡張した言語ってのはろくなもんじゃないってことで
0738デフォルトの名無しさん
2008/12/30(火) 12:53:080739デフォルトの名無しさん
2008/12/30(火) 12:56:28まあ、僕も中括弧族の言語は好きくないけど
>>735 綺麗だと思う言語教えて
0740デフォルトの名無しさん
2008/12/30(火) 13:18:30そもそもSmalltalkの構文が(思想は別にして)美しく感じられない。
0741デフォルトの名無しさん
2008/12/30(火) 13:27:410742デフォルトの名無しさん
2008/12/30(火) 13:43:08画期的な新言語を発表して、あっという間に世界中に広まるよ
0743デフォルトの名無しさん
2008/12/30(火) 13:44:58何が1番きれいかといえば scheme シンプルだしな。
2番目は haskell モナドで一貫性あるプログラミングができる。
3番目は smalltalk でもプログラミング環境や動作環境は最悪最低。遊び専用言語。
0744デフォルトの名無しさん
2008/12/30(火) 13:45:44別にそんな最高の頭脳が集まってるわけじゃないと思うぞw
俺だって一応オックスフォード出身だし。
0745デフォルトの名無しさん
2008/12/30(火) 14:24:14美しさばかり追い求めていてはいかんよ。まだまだ若いな。
0746デフォルトの名無しさん
2008/12/31(水) 02:17:46残念ながら、言語が広まるかどうかはマーケティングに大きく依存するんだよ。
0747デフォルトの名無しさん
2008/12/31(水) 05:30:07単に中途半端だから普及しないんでしょ。
言語の洗練度ではJavaやらに劣り、速度ではC++に劣り、ここ数年のトレンドのWEB系ではPHPやperlに劣る。
0748デフォルトの名無しさん
2008/12/31(水) 06:02:26どうせ英語のリファレンスが読めなくて、使いたくても使えないからヒガンでるだけでしょ。
0749デフォルトの名無しさん
2008/12/31(水) 06:31:10日本語の解説もでてるっつーの。アップルのサイトとか見ろ。
つーか、そもそも他の言語は英語だけでも普及したけどな。
0750デフォルトの名無しさん
2008/12/31(水) 10:18:050751デフォルトの名無しさん
2008/12/31(水) 10:36:580752デフォルトの名無しさん
2008/12/31(水) 11:33:32だったら何でハードもOSもシェアがあんなに少ないんだ?
0753デフォルトの名無しさん
2008/12/31(水) 11:35:00Objective-Cが使えるか使えないかなんて低レベルな話はしてないんだよw
あんなものチュートリアル読んだら30分で使えるだろ
0754デフォルトの名無しさん
2008/12/31(水) 12:12:590755デフォルトの名無しさん
2008/12/31(水) 12:40:42ObjectiveCのクラス内で、C++クラスを宣言したいんですが、include文でエラーが出ます。
どうやらC++クラスファイル内のclass宣言などで構文エラーが出ているようなんですが、
ObjectiveC内でC++クラスを宣言する際にコンパイルオプション等の設定は必要なんでしょうか?
どなたかご教授していただけるとありがたいです。
0756デフォルトの名無しさん
2008/12/31(水) 12:44:34Objective-CはC言語に変換されるんだからC++より早いか同等のはずだぞw
0757デフォルトの名無しさん
2008/12/31(水) 12:51:370758デフォルトの名無しさん
2008/12/31(水) 14:19:13拡張子をmからmmにする
外してたらスマン
0759デフォルトの名無しさん
2009/01/01(木) 10:41:46そんなのはObj-Cじゃないけど。
0760デフォルトの名無しさん
2009/01/01(木) 11:59:59Erlangのように部品が本当にプロセス(OSのプロセスとは別物)で動いているような言語がオブジェクト指向の進化系だと思うね。
0761デフォルトの名無しさん
2009/01/01(木) 12:36:320762デフォルトの名無しさん
2009/01/01(木) 12:55:420763デフォルトの名無しさん
2009/01/01(木) 13:09:030764デフォルトの名無しさん
2009/01/01(木) 15:16:090765デフォルトの名無しさん
2009/01/01(木) 22:03:33それはマーケティングの効果
あるいはすでに普及している言語から移行のしやすさの効果
0766デフォルトの名無しさん
2009/01/01(木) 22:04:040767デフォルトの名無しさん
2009/01/01(木) 22:20:390768デフォルトの名無しさん
2009/01/01(木) 23:29:03たしかにC++でどんなプログラムだって書けるから、多少便利になる程度では移行するインセンティブは生まれない。
だからほかの言語に移行するのがめんどくさい。
RubyOnRailsみたいに、使わないと不便になる、という状況が生まれない限り言語の以降はないだろうね。
0769デフォルトの名無しさん
2009/01/02(金) 20:07:060770デフォルトの名無しさん
2009/01/02(金) 20:17:30広まることはappleとObjCプログラマの双方に有益だと思うね。
ObjCが広まればObjCプログラマはObjC製だらけのMacOSXを使いたくなるかもしれないし、
ObjCプログラマはMacOSXで培った技術をほかのOSでも活用しやすくなる。
0771デフォルトの名無しさん
2009/01/02(金) 22:23:25Appleにはそんな事期待できんし、CocoaフレームワークのないObjective-Cなんぞ誰が使うのよ?
0772デフォルトの名無しさん
2009/01/02(金) 22:49:02http://www.cocotron.org/
0773デフォルトの名無しさん
2009/01/03(土) 04:34:06適していますか?
それともJAVAとかMFCの方がいい?
0774デフォルトの名無しさん
2009/01/03(土) 04:38:33今更 Java するよりは .NET の方が良い。
Objective-C & Cocoa と .NET のどっちがいいかは OS 次第だろう。
0775755
2009/01/03(土) 19:12:38ありがとうございます。mmに変更しいろいろやってみましたが、駄目です。
怪しいところはないと思うんだけど、なんでだろう。。。
どうもコンパイラがC++ではなく、Cのみでコンパイルしているっぽいのですが。
エラー文です。
-----
error: syntax error before 'ClassName'
error: syntax error before '{' token
error: syntax error before '=' token
error: syntax error before '=' token
もうC++のクラスを使用するのは、あきらめた方がいいんでしょうか。
0776デフォルトの名無しさん
2009/01/03(土) 19:56:56;を忘れてるとかそういうのじゃないの? アップルの構文解析は糞だから、エラーはあてにならない。
0777デフォルトの名無しさん
2009/01/03(土) 20:40:04僕らだってエスパーじゃないんだから、ソースコードをアプロダに貼るとか、最低限の行数まで削ってここに貼るなりしてください。
うちでは以下
#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
でコンパイルできるよ?
0778デフォルトの名無しさん
2009/01/05(月) 21:36:17しったかはみっともないぞ。
0779デフォルトの名無しさん
2009/01/05(月) 21:51:350780デフォルトの名無しさん
2009/01/07(水) 23:05:01C 自体の初心者なんですが、dealloc とかしなきゃいけないと思って
いたら、そういう事をしていないサンプルばかりで困っています。
一般的な流れとして、どういう感じに alloc して dealloc するのか
知りたいのですが…。
0781デフォルトの名無しさん
2009/01/07(水) 23:13:59あるいは autorelease するか。
0782デフォルトの名無しさん
2009/01/07(水) 23:14:37自己レスですが、ここは一応読みました。
でももっとフローが分かりやすい実際のサンプルが見たいんです…。
0783デフォルトの名無しさん
2009/01/07(水) 23:24:22ttp://www.amazon.co.jp/dp/4797346809/
0784デフォルトの名無しさん
2009/01/08(木) 00:14:17>dealloc とかしなきゃいけないと思って
>いたら、そういう事をしていないサンプルばかり
どこにそんなのあるの?
0785デフォルトの名無しさん
2009/01/08(木) 01:08:29例えばこのサンプルの中では dealloc という文字は出てこないです。
まぁ必要がないだけかもしれませんが…。
でも IBOutlet 系のクラス変数は dealloc しなくていいのでしょうか?
少なくともヘッダを見ると4つのクラス変数がある様ですが…。
ttp://developer.apple.com/samplecode/InstallerPluginSample/listing3.html
0786デフォルトの名無しさん
2009/01/08(木) 01:39:51元のオブジェクトが破棄されちゃうからしない、って事でしょうか?
0787デフォルトの名無しさん
2009/01/08(木) 01:47:13「dealloc は直接呼び出してはなりません」って書いてあるだろうが。
0788デフォルトの名無しさん
2009/01/08(木) 01:54:33何でダメなんでしょうか?
では、dealloc はオーバーライドするためだけにあると考えていいでしょうか?
0789デフォルトの名無しさん
2009/01/08(木) 07:12:40なぜだと思う?
調べればすぐ分かることは自分で調べろ。
0790デフォルトの名無しさん
2009/01/08(木) 08:20:180791デフォルトの名無しさん
2009/01/08(木) 10:04:57言っているかもしれません。
直接 dealloc しないのはどこかで retain している可能性があるからって
事でしょうかね。
なんとなく分かって来た気がします。にしても release しているサンプルが
あんまりないのが気になりますが…。
dealloc 時に自動的にインスタンス変数も解放してくれないのは仕様ミス
の様な気がするんですけどねぇ…。オブジェクトは解放したのにその
インスタンス変数だけ確保しておきたい事なんてあるんでしょうか。
0792デフォルトの名無しさん
2009/01/08(木) 10:11:45こっちへ移動してください。
http://pc11.2ch.net/test/read.cgi/mac/1224960170/
0793デフォルトの名無しさん
2009/01/08(木) 13:09:06Obj-C関連の ドキュメント を読め。
それともあれか、ソースがドキュメントとかの
ドキュメントレスの世界で生きてきたのか?
ついでにオーナーシップの仕組みも理解してない内から、
仕様云々ってのは単なる理解の放棄でしかない。
0794デフォルトの名無しさん
2009/01/08(木) 21:28:260795デフォルトの名無しさん
2009/01/08(木) 21:33:39引き続きご歓談ください。
0796デフォルトの名無しさん
2009/01/09(金) 00:28:43smalltalkが一番向いていると思う。
0797755
2009/01/09(金) 00:30:43>>775
亀レスで申し訳ないですが、事故解決しました。
どうやらheaderファイルを使用してそちらにC++クラス宣言を書いていたのが原因のようです。
C++クラスだけ.mmファイル内で宣言するようにしたらコンパイルできました。
ありがとうございました。
0798デフォルトの名無しさん
2009/01/13(火) 18:05:290799デフォルトの名無しさん
2009/01/17(土) 20:50:450800デフォルトの名無しさん
2009/01/17(土) 20:51:190801デフォルトの名無しさん
2009/01/17(土) 21:47:520802デフォルトの名無しさん
2009/01/23(金) 17:22:07MyObject というクラスを作って + initialize を埋めました。そしたら、子クラスが無いに
も関わらず、initialize が2回呼ばれました。変だなと思い、中で NSLog(@"%@", self) を
やると、”MyObject" と"NSKVONotifiying_MyObject" が出てきたんです。MyObject は
KVO を使っているので、勝手に作られた子クラスと思われますが、これって何ですかね?
0803デフォルトの名無しさん
2009/01/23(金) 23:34:23KVO は実装するために、Cocoa の runtime が Objective-C の runtime を駆使して別個のクラスを動的につくって入れ替えて... とやってます。
"isa swizzling" とか呼ばれます。ググって勉強してみてください。
0804デフォルトの名無しさん
2009/01/24(土) 08:29:17http://www.mikeash.com/?page=pyblog/friday-qa-2009-01-23.html
0805デフォルトの名無しさん
2009/01/24(土) 17:14:500806デフォルトの名無しさん
2009/01/25(日) 22:33:33vlc-4-iphoneとかで使われてるcore_surfaceクラスとか使いたいがヘッダとか見当たらんのだけど,DSOとかで使えるようになったりするもん?
0807デフォルトの名無しさん
2009/01/26(月) 20:45:58特定のTextFieldにフォーカスが移った時に、
半角英数入力に強制的に替えるにはどうすればいいですか?
0808デフォルトの名無しさん
2009/01/26(月) 21:54:49http://pc11.2ch.net/test/read.cgi/mac/1231853172/
こっちで再度質問して。
0809jP
2009/02/01(日) 20:02:11javaとかCと違って、インタフェースとコードが分かれてるから感覚がつかめないんだよね。
だれか、C/javaからobjective-C始めた人っている?
その辺を話したいんだけどなぁ。(ここに書くようなことじゃなかっから、ごめんちゃい)
0810デフォルトの名無しさん
2009/02/01(日) 20:13:070811デフォルトの名無しさん
2009/02/01(日) 20:20:370812デフォルトの名無しさん
2009/02/01(日) 20:24:240813デフォルトの名無しさん
2009/02/01(日) 20:37:45つかJava分かるならObjective-Cなんかすぐ分かると思うんだがなぁ。
勉強しなきゃいけない分量で言ったらJavaの1/3くらいじゃなかろうか。
0814デフォルトの名無しさん
2009/02/01(日) 21:40:440815デフォルトの名無しさん
2009/02/01(日) 22:41:34MSのダブルクリック&コードとn層データ構造に慣れてたから
CocoaのMVCには結構馴染みにくかったな。
あ、あとVSのIntelisenceに慣れてたからXcodeも面倒くさかった。
まぁ慣れだな。
0816デフォルトの名無しさん
2009/02/01(日) 22:46:42既にプログラミングやったことあるなら、ADCのObjective-Cプログラミング言語とかCocoa基礎ガイドとか読めばいいと思うよ。
0817デフォルトの名無しさん
2009/02/01(日) 23:53:31メソッドの実装を直接呼び出してくれるの?
0818デフォルトの名無しさん
2009/02/02(月) 03:10:32cocoaプログラミングの本は読みました。
例えば、Cの関数を覚えるとか、何かあったら教えてください。
0819デフォルトの名無しさん
2009/02/02(月) 03:25:06釣れますか?
0820デフォルトの名無しさん
2009/02/02(月) 07:44:55ダブルクリック&コードにかんしては
http://dotnetaddict.dotnetdevelopersjournal.com/dcacs.htm
のひとが面白い分析をしてるなとおもった。
まあこのひとは .Net から Obj-C に半分ぐらい転向したひとなので、
無理に弁護してる感もなきにしもあらずなのだが...
0821デフォルトの名無しさん
2009/02/02(月) 07:50:37>gccの-fobjc-direct-dispatchってもしかして
>メソッドの実装を直接呼び出してくれるの?
そんなことしたら Obj-C の良さが台無しだろう。
それは objc_msgSend を呼び出すのが速くなる最適化です。
メソッドの実装が欲しければ Obj-C のランタイムつかってとってこれます。
五年前の msgSend の実装 を解析したのが
http://www.mulle-kybernetik.com/artikel/Optimization/opti-9.html
にあります。最近はもっと最適化進んでるんでしょうが。
0822デフォルトの名無しさん
2009/02/02(月) 23:45:10Cocoaアプリ開発って極端な話XCodeで新規プロジェクトを選んだ時点で
完成してるんだよね。だからコード書かなくても動く。
サブクラスで必要な部分だけどんどん拡張していける。
CarbonやWin32って1から全部書かないといけないんだよね。
Cocoaアプリ開発=Cocoaフレームワークの拡張かな。
0823デフォルトの名無しさん
2009/02/03(火) 00:14:27レジスタをいじらなくても動くなんてよく判らん、とか、
自分で vram を叩かなくても文字が表示される、どうなってるんだ、
とかだったはずで、単に慣れの問題だとおもう。
徐々にシステム側が沢山の部分をやってくれるわけでさ。
0824デフォルトの名無しさん
2009/02/03(火) 00:27:52レスどうも。リンク先面白かったです。
ObjCのメソッド呼び出しが遅いとかなんとか
読んだ記憶がありましたので、もしかしたらと。
にしても、ObjC動的すぎて素敵。
いや、むしろ変態。
0825デフォルトの名無しさん
2009/02/03(火) 01:26:04特に68系の場合はアセンブラもわりと高級言語っぽかったから、
コンパイルしたらどういうコードになるか容易に想像ついた。
0826デフォルトの名無しさん
2009/02/03(火) 06:20:08> 気味の悪い文法が障害
smalltalk一回経験してるとそうでもないんだけどね
c++に慣れてると目が点になるかもしれん
0827デフォルトの名無しさん
2009/02/03(火) 08:14:200828デフォルトの名無しさん
2009/02/04(水) 08:06:400829デフォルトの名無しさん
2009/02/06(金) 03:31:49気味の悪い文法が障害
CやJavaやPHPやってるんだが、始めて2日でむしろ気持ち良くなってきたんだが。
0830デフォルトの名無しさん
2009/02/06(金) 08:33:34自分でつくるクラスのメソッド名もならって読んで意味のわかる英語になるようにしてる。
これだけで数ヶ月後にコードを見直したときの理解度が全然違うベ。
0831デフォルトの名無しさん
2009/02/06(金) 12:30:15俺も大分気持ち良くなって来ました。
0832デフォルトの名無しさん
2009/02/09(月) 16:13:300833デフォルトの名無しさん
2009/02/10(火) 18:09:21どんだけ池沼なんだよw
0834デフォルトの名無しさん
2009/02/10(火) 18:14:22>WindowsがF#に移行しつつある
まあ一般化はあと5年は先だろうな。
0835デフォルトの名無しさん
2009/02/10(火) 18:44:28もうすぐ出るね。
http://www.amazon.co.jp/dp/4797352418/
0836デフォルトの名無しさん
2009/02/10(火) 20:56:13Windows、F#に移行しつつあんの?
最新版VSで辛うじてサポート程度としかしらんかったわ。
0837デフォルトの名無しさん
2009/02/11(水) 12:43:58J# <= Java
F# <= Fortran??
0838デフォルトの名無しさん
2009/02/11(水) 22:37:060839デフォルトの名無しさん
2009/02/12(木) 15:42:45研究とか趣味の人向けの選択肢であって、大多数のプログラマには無縁の存在だから。
0840デフォルトの名無しさん
2009/02/18(水) 14:21:32これを用いて、Windows APIをコールして、簡単なGUIアプリを作成できますか?
0841デフォルトの名無しさん
2009/02/18(水) 14:25:000842デフォルトの名無しさん
2009/02/19(木) 00:33:30Windows で Cocoa で開発したければ Cocotron
http://www.cocotron.org/
とか GNUStep
http://www.gnu.org/software/gnustep/experience/Windows.html
とかあるよ。
0843デフォルトの名無しさん
2009/02/19(木) 03:43:53http://www.amazon.co.jp/gp/offer-listing/4861863007/
なんて本がこっそり出てるんだけど、1ナノセカンドも
話題になってない気がする。
0844デフォルトの名無しさん
2009/02/19(木) 04:18:22そういえばFileMagnetのWindowsクライアントはCocotronで作られたんじゃなかったっけ?
0845デフォルトの名無しさん
2009/02/19(木) 08:33:44直接APIをコールすればいいんでねいの?
0846デフォルトの名無しさん
2009/02/19(木) 21:12:59なか見検索できないんだが、なかはどうなの?
0847デフォルトの名無しさん
2009/02/19(木) 21:37:400848デフォルトの名無しさん
2009/02/20(金) 00:54:58>完成してるんだよね。だからコード書かなくても動く。
おまえプログラム組んだ事ほぼ皆無だろw
Interface Builderでコントロールをドラッグ&ドロップしてアプリが完成したつもりになってる輩とみたw
そんな作業、アプリ制作の1%程度の作業なんだが。
0849デフォルトの名無しさん
2009/02/20(金) 02:14:380850デフォルトの名無しさん
2009/02/20(金) 12:35:06まあほぼ同意だが、Interface Builder は何かほかの GUI デザイナとちがって
作業時間が長いようなきがするな...
バインディングとかターゲット、outlet とかも一杯で。
ソースコードになってない情報が多すぎてわかりにくいときも。
0851デフォルトの名無しさん
2009/02/23(月) 09:30:44呼びだされたメソッド名を逐一NSLogで出力したいんだが、
元のperformSelectorを呼びだす方法ってあるかな?
おもしろそうなのに全然使いこなせてない気がする>カテゴリ
0852デフォルトの名無しさん
2009/02/23(月) 13:46:53http://journal.mycom.co.jp/column/objc/029/index.html
にやりかたがのってますが、Leopard になってすこし runtime がかわったので
10.5 でコンパイルする場合は 10.4 用にインスペクタで設定しないと
そのままではコンパイルエラーがでるでしょう。
何にせよその連載は勉強になります。
また、メソッドの呼び出しの際に performSelector: がいつでも呼ばれるか
というとそうではないので...
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_13_section_1.html
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/
http://developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef1/
のあたり参照。
0853デフォルトの名無しさん
2009/02/24(火) 16:03:34> 呼びだされたメソッド名を逐一NSLogで出力したい
それはずばりアスペクト指向の典型的な活用例なんで、素のObjC/Cocoaでは難しい。
http://journal.mycom.co.jp/column/objc/044/index.html
0854デフォルトの名無しさん
2009/02/25(水) 03:05:200855デフォルトの名無しさん
2009/02/25(水) 03:57:43DTraceはカーネルの呼び出しだけでしょう? ユーザー空間内での
やり取りは無感知。
0856デフォルトの名無しさん
2009/02/25(水) 09:34:51そうでもないよ。objc????:: という provider があります。
http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html
とか参照。
0857デフォルトの名無しさん
2009/02/25(水) 11:37:13そんな事無いですよ。DTrace 自体はプローブポイントさえあれば、カーネルか
ユーザープロセスかは無感知。
0858デフォルトの名無しさん
2009/03/01(日) 12:49:31<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上で動かそうと思っています
0859デフォルトの名無しさん
2009/03/01(日) 13:14:10標準の NSScanner つかって頑張ってもいいけど、
個人的には RegEx Kit Lite がおぬぬめ。
http://regexkit.sourceforge.net/RegexKitLite/
0860デフォルトの名無しさん
2009/03/01(日) 13:29:01おおおまさにこれです!
ありがとうございました
0861デフォルトの名無しさん
2009/03/03(火) 01:59:36カテゴリを利用して、(ある1つのクラスの)ソースファイル
の分割を行うとします。
クラスAの実装ファイルを、
ファイル1とファイル2に分割、といった具合です。
そのとき、ファイル1で定義、実装されているプライベートメソッドを、
ファイル2で使おうとすると、ビルドのときに警告がでますが、これを
なんとかできないものでしょうか。
解決策として、そもそも、同一のプライベートメソッドを利用する
メソッド群を分割するな、という考えもあるかと思います。
また、コンパイラの警告レベルの調節でも、できるのかもしれません。
ですが、ほかにいい方法をご存知の方がいればご教示下さると助かります。
もしも、こういうこと(プライベートメソッドの他ファイルでの利用)
がプログラミングのマナー違反であれば、ご指摘下さい。
0862デフォルトの名無しさん
2009/03/03(火) 06:12:25ClassAPrivate.h に
@interface ClassA (Private)
-(id)hoge:(id) ...
@end
とかしておいて、それを実装ファイルで #import すればいいとおもいます。
Obj-C では@interface ClassA (CategoryX) で宣言したやつの
実装を @implementation ClassA (CategoryX) の中でしないといけないという
ルールもないので、自由自在です。
0863デフォルトの名無しさん
2009/03/03(火) 12:43:26なる気がして試してみませんでした。
0864デフォルトの名無しさん
2009/03/03(火) 17:17:10分からないので聞くのですが、他から参照したいならなんでプライベートにするのでしょうか?
0865デフォルトの名無しさん
2009/03/03(火) 23:31:080866デフォルトの名無しさん
2009/03/04(水) 22:26:48なるほど。
どうも私の頭がJAVA脳だったようです。
0867デフォルトの名無しさん
2009/03/07(土) 18:35:46#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をつけるという考え方で良いのでしょうか。
どなたか詳しくご存知のかたよろしくお願いします。
0868デフォルトの名無しさん
2009/03/07(土) 19:01:04詳しくはないが、自分ならこう考える
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;
として不完全型を定義すればそのポインタを次の行からは使えるようになる
だからエラーにならない
どう?
0869デフォルトの名無しさん
2009/03/07(土) 19:10:43だから、@classを付ける基準は
相互に依存するクラスを定義しなければならない時、またこのときは@classを書かざるを得ない
だけ
それ以外は冗長で無駄
0870デフォルトの名無しさん
2009/03/07(土) 19:18:21ありがとうございます。今までずっと悩んでたのですが、すっきりしました。
>>869
特別な場合を除いて不要という形ですか、ありがとうございます。
0871デフォルトの名無しさん
2009/03/13(金) 01:31:08/System/Library/Frameworks/Foundation.framework内を調べてたんですが、
ヘッダーファイルしかありませんでした。。
どこにあるかわかりますか??
ちなみに環境はMacOSX10.5.6 Xcode:3.1.2 です。
0872デフォルトの名無しさん
2009/03/13(金) 04:16:06フレームワークに入っているのはコンパイル済みオブジェクトだけで、ソースコードは無いかも。
GNUSTEPのCVS漁るのは一つの手かな。微妙に実装違うだろうが…
http://www.gnu.org/software/gnustep/
0873デフォルトの名無しさん
2009/03/13(金) 09:44:40ttp://www.koders.com/c/fid39AE071FDC4C990EA35773A29AF0EE2C5F79DF03.aspx
0874デフォルトの名無しさん
2009/03/13(金) 09:48:180875デフォルトの名無しさん
2009/03/13(金) 13:50:27ありがとうございます!
>>873
ありがとうございます!早速調べてみたら
- (id)init
{
return selft;
}
でした。それにしてもこの検索エンジンすごいですね。
0876デフォルトの名無しさん
2009/03/14(土) 11:31:420877デフォルトの名無しさん
2009/03/14(土) 12:58:080878デフォルトの名無しさん
2009/03/14(土) 13:00:180879デフォルトの名無しさん
2009/03/14(土) 14:03:250880デフォルトの名無しさん
2009/03/14(土) 17:25:22ttp://google-styleguide.googlecode.com/svn/trunk/objcguide.xml
なぜ、googleがマイナーなObjective-C のドキュメントなんかつくってるんだ?
0881デフォルトの名無しさん
2009/03/14(土) 17:35:17GoogleがObjective-Cで開発するからだろ。
0882デフォルトの名無しさん
2009/03/14(土) 22:36:550883デフォルトの名無しさん
2009/03/15(日) 17:38:04今は違うの?
0884デフォルトの名無しさん
2009/03/15(日) 20:36:41同じ
http://developer.apple.com/jp/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_9_section_2.html#//apple_ref/doc/uid/TP30001163-CH14-SW2
0885デフォルトの名無しさん
2009/03/15(日) 22:22:460886デフォルトの名無しさん
2009/03/16(月) 00:53:450887デフォルトの名無しさん
2009/03/16(月) 13:44:140888デフォルトの名無しさん
2009/03/16(月) 21:02:03Google自身も普通にMac用アプリ作ってるから、なんも不思議に感じないけども。
一体なにが引っかかったんだ?
0889デフォルトの名無しさん
2009/03/16(月) 23:47:05あの娘の良さを認めているのは僕だけの筈だったのに、どうしてグーグルまで...
とかそういう感じなんではないでしょうか。
0890デフォルトの名無しさん
2009/03/17(火) 00:05:100891デフォルトの名無しさん
2009/03/17(火) 02:52:04Cの資産があるからしょうがあるめぇよ
最初からC++なら例外処理を使う規定ができたとおもうぞ
0892デフォルトの名無しさん
2009/03/18(水) 19:38:49Objective-Cを解説してるのを見ると、C++ではこう書くのを
Objective-Cではこう書く、みたいなのばっか
0893デフォルトの名無しさん
2009/03/18(水) 19:44:300894デフォルトの名無しさん
2009/03/18(水) 20:04:01C++の知識があるとストレスがたまるから、Cだけ勉強しとけばOK。
0895デフォルトの名無しさん
2009/03/18(水) 21:49:47>C++を勉強する必要なし?
なし。同じオブジェクト指向言語といえども C++ とは殆ど関連性無いから。
C++ の混沌ワールドはむしろ知らない方が良い。もしどうしても他の言語を
参考にしたいなら Smalltalk(か Java)をお薦めする。もちろん C は必須。
0896デフォルトの名無しさん
2009/03/18(水) 22:29:15>Objective-Cを解説してるのを見ると、C++ではこう書くのを
>Objective-Cではこう書く、みたいなのばっか
そりゃオブジェクトなんたらってばC++プログラマが多いからだろ
もしC知ってんなら、ご本家眺めてみたら
ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/
0897デフォルトの名無しさん
2009/03/19(木) 00:45:17「クラスメソッド内からはインスタンス変数を参照する事ができない。(インスタンスオブジェクトは複数存在する場合がある)
同様にインスタンスメソッドを呼び出す事もできません。」
という記述があるんですが、サンプルプログラム内のあるクラスの実装で
//指定イニシャライザ
- (id)initWithA {
・・・
}
//副次的イニシャライザ
+ (id)subWithA {
id f = [[self alloc] initWithA];
return [f autorelease];
}
のように呼び出してる記述があるんですが。。
これってクラスメソッド内からインスタンスメソッド呼び出してますよね?
0898デフォルトの名無しさん
2009/03/19(木) 01:17:43クラスオブジェクトってのはクラス自身を表す特殊(?)なオブジェクトで、
id f = [[self alloc] initWithA];はクラスオブジェクトに対してクラスメソッドallocを呼び、それをinitWithAで初期化して得られたインスタンスをfに代入していることになる。
0899897
2009/03/19(木) 02:42:14直接インスタンスメソッドを呼び出しているわけじゃなく、
allocによって生成されたインスタンスオブジェクトのメソッドを操作している。という事でしょうか?
0900デフォルトの名無しさん
2009/03/19(木) 02:45:04initWithAとかautoreleaseのことを言っているなら、その通り。
allocの戻り値や、fに対して呼び出してるでしょ。
0901デフォルトの名無しさん
2009/03/19(木) 18:45:030902デフォルトの名無しさん
2009/03/21(土) 10:48:550903デフォルトの名無しさん
2009/03/21(土) 13:13:460904デフォルトの名無しさん
2009/03/23(月) 10:42:36数研出版は学校向けの情報処理系の教科書も作ってるから、普通の内容になると思う。
0905デフォルトの名無しさん
2009/03/23(月) 15:17:56だまされた><
0906デフォルトの名無しさん
2009/03/24(火) 00:45:22まずそのためには
センター試験の数学Bの選択科目にObjective-Cが採用される必要性があるな
そしてMac OS Xの開発者激増→開発本増加→ウマーな展開だなw
0907デフォルトの名無しさん
2009/03/24(火) 01:58:11オブジェクト指向はそこまで体系化された概念じゃないから。
0908デフォルトの名無しさん
2009/03/24(火) 02:00:010909デフォルトの名無しさん
2009/03/24(火) 02:11:000910デフォルトの名無しさん
2009/03/24(火) 02:46:22その理由がオブジェクト指向だからというのが風変わりだね。
0911デフォルトの名無しさん
2009/03/24(火) 19:34:32冗談で書いたものにマジレスされてもw
0912デフォルトの名無しさん
2009/03/26(木) 21:33:45iphoneSDKいじってるところなんだけど、touchesBegan等のタッチハンドラを子ビューで実装してしまうと、親ビューのtouchesBeganは一切呼ばれなくなると思うんだけど、
たとえば子ビューのtouchesBeganの中で判定処理を書いて、かつ親ビューのtouchesBeganもよびたい場合てどうすればいいんでしょう。
子ビューのtouchesBeganの中で親クラス(UIView)のtouchesBeganをよぼうとしてもprivateでよべないみたいだし。
教えてくんでごめそだがよろしくです。
0913デフォルトの名無しさん
2009/03/26(木) 21:52:05http://pc11.2ch.net/test/read.cgi/mac/1234555020/
0914デフォルトの名無しさん
2009/03/27(金) 01:24:52インスタンスからクラスメソッドって呼べないのかな?
0915デフォルトの名無しさん
2009/03/27(金) 01:33:490916デフォルトの名無しさん
2009/03/27(金) 01:34:41[[インスタンス class] クラスメソッド];
0917デフォルトの名無しさん
2009/03/27(金) 16:59:160918デフォルトの名無しさん
2009/03/27(金) 18:13:11では「呼んでいる」の定義を教えてください
0919デフォルトの名無しさん
2009/03/27(金) 22:30:100920デフォルトの名無しさん
2009/03/28(土) 10:58:400921デフォルトの名無しさん
2009/03/29(日) 10:45:02cocotronでググれ。
0922デフォルトの名無しさん
2009/03/29(日) 14:04:13UIResponder
0923デフォルトの名無しさん
2009/03/29(日) 15:40:12それはそれで怖いものがある
0924デフォルトの名無しさん
2009/03/29(日) 15:45:12D言語くらい?
0925デフォルトの名無しさん
2009/03/29(日) 17:01:270926デフォルトの名無しさん
2009/03/29(日) 17:31:02C++ の置き換えを狙ってああ成った感じが強い。
オブジェクトシステムやクラスライブラリはむしろ
Smalltalk や OPENSTEP の影響が大きそうだし。
あんまり C++ って感じはしないね。
0927デフォルトの名無しさん
2009/03/29(日) 18:18:270928デフォルトの名無しさん
2009/03/29(日) 18:20:510929デフォルトの名無しさん
2009/03/29(日) 21:28:11C#の事か。
0930デフォルトの名無しさん
2009/03/29(日) 21:53:51>流行って、C++みたく影響を受けた言語が続々出ていたら
リスペクト的な意味合いでフォロワーが生まれたと
言いたいのかと思ったら違うのね。
0931デフォルトの名無しさん
2009/04/04(土) 00:21:00Object Pascal
0932デフォルトの名無しさん
2009/04/04(土) 00:40:46>Object Pascal
ウィキペで済まんがSmalltalkに影響受けたって書いてあるね
http://ja.wikipedia.org/wiki/Object_Pascal
http://en.wikipedia.org/wiki/Object_Pascal
0933デフォルトの名無しさん
2009/04/04(土) 18:01:57Object PascalはC++より前じゃね?
0934デフォルトの名無しさん
2009/04/04(土) 22:09:14C++コンパイラが出回るよりも前。
0935デフォルトの名無しさん
2009/04/05(日) 03:08:21C++化されたMacAppを更にAdobeがいじったバージョンが最近まで使われてたんじゃなかったっけ?
0936デフォルトの名無しさん
2009/04/05(日) 09:17:580937デフォルトの名無しさん
2009/04/05(日) 11:57:18昔はcopyrightの中にappleの名前もあったらしいが・・・
0938デフォルトの名無しさん
2009/04/05(日) 12:51:370939デフォルトの名無しさん
2009/04/05(日) 14:08:430940デフォルトの名無しさん
2009/04/05(日) 14:40:32Class cls;
cls = [NSString class];
// クラス名を、printfで表示する
printf("class name %s\n", ((struct objc_class*)cls)->name);
クラス名を表示させたいのですがコンパイルエラーで
main.c:184: error: dereferencing pointer to incomplete type
となってしまいます。。
これはなぜでしょう??
0941デフォルトの名無しさん
2009/04/05(日) 14:47:05Leopard になってランタイムが変わったので
objc_class のメンバはアクセス出来なくなりました。
gcc を10.4 モードにしてつかうか、
Obj-C 2.0 のランタイムの関数 class_getName をつかってください。
http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html
http://developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef1/Reference/reference.html
を参照。
0943デフォルトの名無しさん
2009/04/05(日) 15:11:24いえいえ。きっとネットで検索だけしてたんだと思いますが、
objc_class を XCode のドキュメントで調べると
Obj-C 1 Runtime Reference がひらいてなんか変だなと判ると思いますし、
あとはインクルードされてるヘッダを辿っていくと
最終的に /usr/include/objc/runtime.h に至って
それを読めば Obj-C 2 なら objc_class が使えない事も書いてますから、
今後は手元のドキュメント、ヘッダファイルも
いろいろ読むようにしてみてください。
0944デフォルトの名無しさん
2009/04/05(日) 16:38:130945デフォルトの名無しさん
2009/04/07(火) 11:46:400946デフォルトの名無しさん
2009/04/07(火) 12:35:07それほど多くは入ってなさそう。
0947デフォルトの名無しさん
2009/04/07(火) 14:59:05>>940
NSStringFromClassは駄目なの?
0948デフォルトの名無しさん
2009/04/10(金) 01:54:146日でObjC2.0を理解するためには
どの書籍を読めば大丈夫でしょうか?
洋書でもかまいません
0949デフォルトの名無しさん
2009/04/10(金) 08:33:11アップル本家の
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html
を読めばしまいです。
ただ、NeXTStep のころの Obj-C って、NSString じゃなくて NXほげほげ
だった時代ですか?autorelease を知らない世代だと、
class library がかなり変わってて大変だと思います。
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/Introduction.html
と
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/CocoaBindings.html
のあたり読んでおくと最近の Cocoa についていけると思いますが。
まあ6日もあれば大丈夫です
0950デフォルトの名無しさん
2009/04/13(月) 11:45:40一番目の引数はキーワードいらないのに、二番目以降はキーワード使って特定させなきゃいけないという仕様が気持ち悪いです
0951デフォルトの名無しさん
2009/04/13(月) 13:12:38名前付き引数のようなものをイメージするから不自然に感じるんだと思うけど
キーワードとか言ってる部分もメソッド名の一部でしかないのを理解すれば自然だと思う
0952デフォルトの名無しさん
2009/04/13(月) 14:36:54一番目の引数もキーワードいるんじゃないの ??
[NSString stringByReplacingOccurrencesOfString:a withString:b];
とか。たんに "キーワード:引数" ていう塊が繰り返してるだけだよ。
あと、>>951 さんも書いてるけど、名前付き引数じゃないから、
順番かえたら動かなくなるよ。
[NSString stringByReplacingOccurrencesOfString:a withString:b options:option range:range];
で、 withString:b と、options:option と、range:range の順番変えちゃだめだから。
内部的には、単に stringByReplacingOccurrencesOfString:withString:
という全体が(順序込みで)セレクタというものです。
全部の引数にキーワードがついてて、英語が読めれば
自然に文章として読めるようにたいていなってるので、
コメント書かなくても半分自動的にコメントになっているというのが利点です。
0953デフォルトの名無しさん
2009/04/13(月) 15:39:22二番目以降がラベルとかいう大ウソをぶっこいていたが、あーいうのはやめて欲しいな。
0954デフォルトの名無しさん
2009/04/13(月) 22:23:38mkinoさんが正しい
0955デフォルトの名無しさん
2009/04/13(月) 23:11:20明らかな勘違いだろ?
0956デフォルトの名無しさん
2009/04/13(月) 23:44:38mkino さんがそんなことをいうとは信じられなかったが、
http://hmdt-web.net/Cocoa/CocoaPrimary.pdf
の 55 page にそうかいてあった... ショック。
0957デフォルトの名無しさん
2009/04/14(火) 00:00:59これの意味がまったく解らん
なんで(NSString , a NSString b)じゃないの?意味不明だろこれで理解しろというのが
アホなんだよ
0958デフォルトの名無しさん
2009/04/14(火) 00:30:49直訳すると、文字列aの発生を、文字列bで置換することによる文字列。
aをbで置換するってことだよね。意味不明ってことは無いと思うよ。
正直replaceAll:withStingでいいんじゃないのって思うけど....
0959デフォルトの名無しさん
2009/04/14(火) 00:50:27引数がどれで関数がどれかわからない
どうゆう文法なの?
0960デフォルトの名無しさん
2009/04/14(火) 00:54:22replaceAll... だと破壊的なメソッドに見えるので stringByReplacing... でおk。
毒食わば皿までということで冗長なOccurencesOf... にしたってことじゃね?
どうせIDE使うしね。ところでこのメソッドLeopardからなのね。
>>959
Objective-Cのメッセージ構文についてはテンプレ>>8や
http://ja.wikipedia.org/wiki/Objective-Cでもどうぞ。
0961デフォルトの名無しさん
2009/04/14(火) 01:00:07[オブジェクト メソッド名第一:引数第一 メソッド名第二:引数第二 ... ]
の繰り返しなだけです。C++ になおすと
オブジェクト->メソッド名第一メソッド名第二... (引数第一,引数第二,...)
ということ。
各引数ごとになんであるか名前がついているだけで、
英語が読めればメソッド呼び出し全体が文章になります。
0962デフォルトの名無しさん
2009/04/14(火) 01:04:07C++でそんなのないのだが...?
オブジェクト->メソッド名第一メソッド名第二...
obj->func(arg1, arg2)だろ?
obj->funcfun2なんてエラーだろ
0963デフォルトの名無しさん
2009/04/14(火) 01:13:12Obj-C で[a func:b arg:c]というメソッドコールが、C++でa->func_arg_(b, c) と書いたときと同じように呼び出されているということでそ。
javascriptに対するffiでは本当にこうやって対応がつけられている。
0964デフォルトの名無しさん
2009/04/14(火) 01:15:08説明のしかたがわるくてすいません、
Obj-C で
[obj sel1:arg1 sel2:arg2 sel3:arg3]
はC++ で
obj->sel1_sel2_sel3_(arg1,arg2,arg3)
に対応すると思ってください。
「sel1_sel2_sel3_」全体がメソッド名なだけで、
[ ... ] のひとくくりが一回のメソッド呼び出しに対応します。
実際 Python, Ruby, Javascript 等の Cocoa バインディングでは
たいていこういう方法が使われてます。
0965デフォルトの名無しさん
2009/04/14(火) 01:21:44ではC++でConvertToMD5というメソッドがあり
引数として3つとる場合
[obj Convert:arg1 To:arg2 MD5:arg3]
となるのですか?
では、ConvertToMD5を仕様変更して2変数にすると
Obj-Cではつかえないってことですよね?
0966960=963
2009/04/14(火) 01:28:15C++のオブジェクトシステムをObj-Cのオブジェクトシステムに変換する仕組みはない。
二つの言語を同一ソース内に共存させられる仕組みはある(Objective-C++)けど、
C++のオブジェクトにはC++のメンバ関数呼び出しをすることになる。
上で説明されてるのはあくまでObj-Cのライブラリをほかの言語からたたく際のFFIをどうするか、という話。
0967デフォルトの名無しさん
2009/04/14(火) 01:31:37その辺が良くわからんのだが
C++のクラスをObj-Cに置き換えることはそもそも無理ってことなの?
.netみたいに呼び出す云々じゃなくて
型とか継承クラス違ってもいいけど名前や引数はC++と同じにすることが
できないってことだよね?
0968960
2009/04/14(火) 01:37:15扱うことができるか、っていう問いなら答えはNO.
C++のライブラリに対してそんなことができる言語はそもそもないはず。
「型とか継承・・」の方は日本語でおk。なにをききたいのかわかりまぺん
0969デフォルトの名無しさん
2009/04/14(火) 01:44:04>英語が読めればメソッド呼び出し全体が文章になります。
ところが Objective-C では Smalltalk と違って、いちいち型名を入れる妙な慣習があるから、
素直には読み下しにくいし、無駄にセレクタが長くなる傾向にある罠。
0970デフォルトの名無しさん
2009/04/14(火) 01:49:29二つ目以降のキーワードを使わずに [obj ConvertToMD5:arg1 :arg2 :arg3] とすればおk。
0971960
2009/04/14(火) 01:52:500972デフォルトの名無しさん
2009/04/14(火) 09:42:23Objective-C++ というのがあって、
Objective-C と C++ を共存させられますが、
Objective-C のクラス体系と C++ のクラス体系は全く別個になります。
べつに既に C++ のクラスライブラリを持っていて使いたかったら
単にそのまま使うだけです。
Boost に Objective-C のポインタ突っ込むことも問題なく可能です。
0973デフォルトの名無しさん
2009/04/14(火) 15:41:27「複数の自動解放プールが存在する時には、最も最近に作成されたものが有効な自動解放プールとして機能します。」
と書かれているんですが、これがよくわかりません。
複数ある自動解放プールの古い方だろうが新しい方だろうが、
登録されたインスタンスを解放するという風に考えるなら、古いとか新しいとか気にする必要はないんじゃないんですか?
0974デフォルトの名無しさん
2009/04/14(火) 15:45:510975973
2009/04/14(火) 15:46:45autorelease使ったときにどのプールに登録するとか指定できる仕組みになってないから、最近のものに登録されるということですね。
普通にサンプルコード見ればわかることでした。すいません
0976973
2009/04/14(火) 15:49:410977デフォルトの名無しさん
2009/04/14(火) 16:05:33局所的に使うと効率良く管理できるけど、普通に大局的にも使うよ。
あとコンビニエンスコンストラクタ([NSString stringWithString:] など)を使えば、
あまり使わずに済むし。その辺は memory management guide も参照。
0978デフォルトの名無しさん
2009/04/14(火) 16:20:54この場合の大局的ってのはアプリケーションの起動・終了時に生成・解放される自動解放プールになるんですよね?
中途半端に数フレームだけ存在する自動解放プールとかがあると、
アプリケーションの終了時に解放して欲しいのにそれより早く解放されてしまうとか、そういうミスが起ると思うんですが。
だから複数使うにしても数フレームにまたがるようなプールは大元の一つだけしか存在しちゃいけないんじゃないかと
0979デフォルトの名無しさん
2009/04/14(火) 16:31:56alloc→init の方が良いよってどっかで聞いたような気がした。
俺の勘違いの可能性は大きい。
0980デフォルトの名無しさん
2009/04/14(火) 16:48:38うーん、新Mac板Cocoaスレの方が良いかもしれんが・・・
>アプリケーションの終了時に解放して欲しいのにそれより早く解放されてしまう
オーナーシップをきちんとしておけば問題無し。例えば、途中で作ったインスタンスを
AppCtrl ってクラスのインスタンス変数に持たせてオーナーにしておけば、AppCtrl が
dealloc/finalize されるまで保持される事は保証される。
>>979
それも、オーナーシップの問題。自前の autoreleasePool が保持するかどうか。
runtime が適切に開放してくれるので、本当に一時的なインスタンスなんかはコンビニ
コンストラクタを使え、とガイドに書いてあるよ。うまく使えば、retain/release は
ほとんどやらずに済む、とも。たとえば、NSArray/Dictionary等に登録するような
インスタンスはarray/dictionaryにretainされる。retainされるものをallocしてretain count増やし、余計なreleaseをやるのは意味が無いでしょ。
0981974
2009/04/14(火) 16:50:16解放がアプリケーションの終了時「のみ」のプールなんてないだろ?
NSRunLoopが一回回るごとにautorelease登録されたオブジェクトにreleaseが送られるので、
アプリケーション終了時まで生きていてほしいオブジェクトにautoreleaseを送ったりはしません。
そんなことしなくても終了時には強制的にすべて解放されるわな。
>>979
[NSString stringWithString:...] = [[[NSString alloc] initWithString:...] autorelease]
だと思ってたけど。
0982デフォルトの名無しさん
2009/04/15(水) 00:13:12ttp://pc12.2ch.net/test/read.cgi/tech/1239721860/
0983デフォルトの名無しさん
2009/04/15(水) 00:14:200984デフォルトの名無しさん
2009/04/15(水) 06:22:47self = nil;
0985デフォルトの名無しさん
2009/04/15(水) 08:13:240986デフォルトの名無しさん
2009/04/15(水) 13:22:000987デフォルトの名無しさん
2009/04/15(水) 13:38:18教本にはならない。マイコミ連載とほぼ一緒。
ttp://journal.mycom.co.jp/column/objc/index.html
0988デフォルトの名無しさん
2009/04/15(水) 14:22:58ありがとう
そのページの解説で十分だと思った
0989デフォルトの名無しさん
2009/04/15(水) 14:24:44Dynamic Objetive-C は言語の下のランタイムまでもぐって
理解を深めましょうという話なのでちょっと性格が違う。
あと、ランタイムの解説が Obj-C 1 のまま、という噂。
まあこの本をよむぐらい Obj-C の経験を積んでる人ならそのあたりは
対処出来るだろうという期待なんでは。
mkino さんが面倒くさがっただけかもしらんけど。
0990デフォルトの名無しさん
2009/04/15(水) 23:37:20>期待なんでは
ま良く言やそうだね
0991デフォルトの名無しさん
2009/04/16(木) 21:15:420992デフォルトの名無しさん
2009/04/16(木) 21:59:250993デフォルトの名無しさん
2009/04/16(木) 22:00:23そもそもこの本必要無くね?
0994デフォルトの名無しさん
2009/04/16(木) 23:09:500995デフォルトの名無しさん
2009/04/16(木) 23:15:110996デフォルトの名無しさん
2009/04/16(木) 23:38:230997デフォルトの名無しさん
2009/04/16(木) 23:45:020998デフォルトの名無しさん
2009/04/16(木) 23:49:490999デフォルトの名無しさん
2009/04/16(木) 23:56:081000デフォルトの名無しさん
2009/04/16(木) 23:57:4010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。