1 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:00:29 ID: E3j+cAXf0 BE:77766236- Be:
初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。

前スレ
Cocoaはさっぱり!!! version.5
http://pc7.2ch.net/test/read.cgi/mac/1124986925/
2 Name: 名称未設定 [] Date: 2006/04/30(日) 19:02:25 ID: E3j+cAXf0 Be:
2ゲット!!!!!


Sさん乙
3 Name: 名称未設定 [] Date: 2006/04/30(日) 19:04:50 ID: E3j+cAXf0 Be:
>>2氏ね
4 Name: 名称未設定 [3] Date: 2006/04/30(日) 19:26:52 ID: E3j+cAXf0 Be:
>>2
ごめんなさいなんでもないです
5 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:31:43 ID: fv7hAa8Q0 Be:
スレの初っ端から穏やかじゃないな。
で、皆さんCocoaで例外処理
積極的に使ってらっしゃいます?
6 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:32:51 ID: WtZBQNtU0 Be:
Cocoa Wiki
http://aerial.s184.xrea.com/dev/cocoa/wiki/
7 Name: 名称未設定 [3] Date: 2006/04/30(日) 19:40:31 ID: E3j+cAXf0 Be:
>>5
例外は使ってません。 Appkit がまともに対応したら対応します。
例外が投げられたら落ちます(w
8 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:46:52 ID: Br/KseF10 Be:
Cocoaはメモリ管理と例外処理がいまいちなので、
後々に出る不具合が多いような気がする。
例外はJavaみたいにcatchしないとコンパイルも通らないように
すれば品質もあがりそう
9 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:46:56 ID: z5KfJ164O Be:
自作自演乙
っていうか氏ね
10 Name: 名称未設定 [] Date: 2006/04/30(日) 19:51:01 ID: E3j+cAXf0 Be:
Java信者逝ってよし
11 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:51:01 ID: ORqGhA4C0 Be:
1 名前: 名称未設定 Mail: sage 投稿日: 2006/04/30(日) 19:00:29 ID: E3j+cAXf0 ?
初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。

前スレ
Cocoaはさっぱり!!! version.5
http://pc7.2ch.net/test/read.cgi/mac/1124986925/

2 名前: 名称未設定 Mail: 投稿日: 2006/04/30(日) 19:02:25 ID: E3j+cAXf0
2ゲット!!!!!


Sさん乙
3 名前: 名称未設定 Mail: 投稿日: 2006/04/30(日) 19:04:50 ID: E3j+cAXf0
>>2氏ね
4 名前: 名称未設定 Mail: 3 投稿日: 2006/04/30(日) 19:26:52 ID: E3j+cAXf0
>>2
ごめんなさいなんでもないです
7 名前: 名称未設定 Mail: 3 投稿日: 2006/04/30(日) 19:40:31 ID: E3j+cAXf0
>>5
例外は使ってません。 Appkit がまともに対応したら対応します。
例外が投げられたら落ちます(w
12 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:57:13 ID: 5XR7ExW/0 Be:
@catch
>>1-4まですべて Edj+cAXf0 ですね。例外は発生していない模様。
13 Name: 名称未設定 [sage] Date: 2006/04/30(日) 19:57:50 ID: Br/KseF10 Be:
なんか意味不明な流れですねw
それはそうと、catchしていない場合はコンパイラが教えてくれれば
うれしいと思わない?
14 Name: 名称未設定 [] Date: 2006/04/30(日) 19:58:19 ID: E3j+cAXf0 Be:
狭い世界で>>2>>3>>4>>7乙です。
皆さんばんばりましょしょう。
俺らに仕事が無いのでみんな中ななか厳しいいと思いますので
15 Name: 名称未設定 [sage] Date: 2006/04/30(日) 20:07:35 ID: Br/KseF10 Be:
>>14
Macのアマチュア開発者?
アピールすればお声は掛かると思うよ。
16 Name: 名称未設定 [sage] Date: 2006/04/30(日) 20:10:58 ID: E3j+cAXf0 Be:
なんか今ここにいろいろの分野の人がいるんだけど
Mac関連のアプリとなるとむすかしいよねえええええ・・・・
17 Name: 名称未設定 [sage] Date: 2006/04/30(日) 20:31:29 ID: 9lPP/DY60 Be:
何が?
18 Name: 名称未設定 [sage] Date: 2006/04/30(日) 21:41:02 ID: 9xNjLh8M0 Be:
荻原本に例外処理載ってるな…
19 Name: 名称未設定 [sage] Date: 2006/04/30(日) 21:51:40 ID: uO4xE2Py0 Be:
シリアルポート使って組み込み機器と通信できる?
Cocoaで無理ならOfficeForMacでもいいんだけどできるの?
20 Name: 名称未設定 [sage] Date: 2006/04/30(日) 22:19:08 ID: G/U39GaX0 Be:
自分で組めば何の問題も無い
21 Name: 名称未設定 [sage] Date: 2006/04/30(日) 22:38:07 ID: BY6iYUVu0 Be:
なんだオフィスて
22 Name: 19 [sage] Date: 2006/04/30(日) 23:33:13 ID: uO4xE2Py0 Be:
OfficeってExcelVBA使えないの?>>OfficeForMac
MSCommをつかえば簡単にシリアル通信が出来るから(Win環境)、OfficeForMacでも出来ると思って・・・

Office用コントロールってXcodeで作れないの?
23 Name: 名称未設定 [sage] Date: 2006/05/01(月) 00:59:04 ID: lN4X+aUF0 Be:
Office用こんとロールの仕様が判らんので俺はXcodeでは作れない。
昔はCWでActiveXのコードが作れたが今はどうだか知らない。

OfficeForMacを使う事を考えるよりもIOKitのExampleを見て作れそうか
判断した方がいいと思う。


>>15
アピールしたらしたで、今度は大杉で首が回らなくなりそう(T_T)
24 Name: 名称未設定 [] Date: 2006/05/01(月) 01:03:47 ID: 3lpFj0DX0 Be:
>>22
MSCOMMってVBでも6までしか(そのままでは)使えないしな…
VB.Netになってデフォでは使えなくなって、ようやく2005で同等の機能が別の形で復活したくらいだからね…
MacのOfficeにそれを求めるのは流石に無謀かと
VBA自体は使えるけどWinと完全に共通しているかは知らない、多分一部削られてるんじゃないかと思う

つかMSCOMMでのシリアル通信って232Cの話?そうだとするとさらに困難かと。物理的にポートが
無いし、頼みの綱の市販USB-232CコンバータもOSX用にはドライバが殆ど存在しないのでまず使えないと思う

つーわけでおいらは機器制御の232C通信はWin実機でやってるよ、その方が情報が多くて楽だし
25 Name: 名称未設定 [sage] Date: 2006/05/01(月) 08:59:06 ID: /jg/Fok+0 Be:
>>5
俺は積極的に使ってるよ。@try{}の中でreturnしても必ず@finally{}は通るので
ファイルのクローズ、メモリの解放、オブジェクトの後始末などをfinally{}で
やってる。destructorのテクニックが使えないObjective-Cではfinally{}を
うまく使わんと。
26 Name: 名称未設定 [] Date: 2006/05/01(月) 15:12:23 ID: ddhq5HXu0 Be:
Core Data で attribute のいくつかを構造体として使いたいときは、
(1) 構造体にしたいデータをまとめて non-standard attribute にする
(2) 構造体にしたいデータを entity として独立させて関連を付ける
のどっちがいいでしょうか。

(1) は今のところやり方がよくわからなくて (2) にしかけてますが、
元の entity と独立させた構造体の entity の両方を、1つのボタンで
add する方法がわかりません。orz
27 Name: 名称未設定 [sage] Date: 2006/05/01(月) 21:43:16 ID: UPQjFtoj0 Be:
>>26
こんなでどないすか?
1.元のentityをカスタムクラス(NSManagedObjectのサブクラス)にする。
2.そのクラスにメソッドawakeFromInsertを定義
3.awakeFromInsertで構造体のentityのインスタンスを生成して、[self setValue:forKey:]で追加

non-standard attributeにすると、どこかで変換する処理を書かないと
いけないから、構造体の要素が数とか文字列なんかだけなら(2)のほうが
らくちんだと思うよ。
28 Name: 名称未設定 [] Date: 2006/05/02(火) 00:18:24 ID: 6U56Kp2d0 Be:
GNU step(Windows版)のFoundationやApp kitは
どこまで日本語を扱えますか?
29 Name: 名称未設定 [sage] Date: 2006/05/02(火) 12:03:32 ID: 9/x+AOS30 Be:
>>28
win版の日本語対応はまだまだです。AppKitは日本語の入力も表示も出来ません。
Foundationは出来るかもしれないけど試してない。
30 Name: 26 [sage] Date: 2006/05/02(火) 18:04:39 ID: P9Oj+XDk0 Be:
>>27
ありがとうございます!こういう手もあるんですね。
構造体そのものはシンプルなので、(2) とどっちにするか考えてみます。
31 Name: 名称未設定 [] Date: 2006/05/03(水) 02:32:51 ID: vzp1KIv80 Be:
Cocoaではエイリアスが扱えないってホント?
ユニバーサルバイナリは全滅ってこと?
32 Name: 名称未設定 [sage] Date: 2006/05/03(水) 03:39:28 ID: oPBOZ86w0 Be:
意味が分からん
Carbon APIを呼べば済む事
33 Name: 名称未設定 [sage] Date: 2006/05/03(水) 10:43:19 ID: 9su2r5880 Be:
ファイルってFSRefで管理するの?Path?
34 Name: 名称未設定 [sage] Date: 2006/05/03(水) 11:08:30 ID: NxVjm20U0 Be:
CarbonならFSRefだが、FSRef自体がPath持ってるからね。
CocoaならPathになっちゃうわな。Aliasを使う場合はまだFSSpecを
使わなきゃならなかったっけ?
35 Name: 名称未設定 [sage] Date: 2006/05/03(水) 16:46:29 ID: WvU52rHK0 Be:
×FSRef自体がPath持ってるからね。
持ってない。
×Aliasを使う場合はまだFSSpecを使わなきゃならなかったっけ?
OS9でAPIが追加されてる。
36 Name: 名称未設定 [sage] Date: 2006/05/03(水) 18:57:56 ID: Q+PMnWq10 Be:
行った人の感想きぼぬ
ttp://developer.apple.com/jp/briefing/cocoa1/
37 Name: 名称未設定 [sage] Date: 2006/05/03(水) 23:33:39 ID: xfk/Frg40 Be:
FSRefは以前調べたけれど、いまいちよくわからない。Carbonわかんね。

MacOS Xではどういう順序でパスを処理するのがのぞましいのかな?
きっとこういう風なのかなとか想像しているけれど・・・
だれか詳しい人教えてください。

a.ファイルパス文字列を受け取ったら、まずエンコードを確認
 7bit化されていたら元に戻すとかはここでやるのかな?
b.次に、classicalなパスか、Posixパスかを確認
c.パスからFSRefを得る
d.FSRefがエイリアスであるかどうか解決を試みる
 このときシンボリックリンク/ハードリンクであった場合の挙動が???
e.最終的に得られたFSRefを保持してアプリのなかで使用。
f.保存するときはFSRefのままシリアルかしてplistへ。

日本語OKなサンプルコードきぼん。
38 Name: 名称未設定 [sage] Date: 2006/05/03(水) 23:48:55 ID: rP6buJe90 Be:
とりあえず、

>f.保存するときはFSRefのままシリアルかしてplistへ。

FSRefはテンポラリなデータなので
パスに戻してから保存した方がいいよ。
39 Name: 名称未設定 [sage] Date: 2006/05/04(木) 00:42:13 ID: mAb1Zx2j0 Be:
>>38
パスで雁字搦めのクソアプリを作りたいならそれでどうぞ
これは基本テクニック
Storing file references in CFPreferences
http://developer.apple.com/qa/qa2004/qa1350.html
40 Name: 名称未設定 [sage] Date: 2006/05/04(木) 02:27:04 ID: jpoAIAH00 Be:
>>37
>f.保存するときはFSRefのままシリアルかしてplistへ。

既出だけど、FSRefは一時的にしか使えない
他のアプリに渡すこともできないはず

>>38氏はpathで保存を勧めているけど、
これは移動したりファイル名変えると使えなくなるんで
永続的なファイル追跡はAliasRecordを使うのを勧める
41 Name: 名称未設定 [sage] Date: 2006/05/04(木) 02:40:19 ID: zFfX0BgV0 Be:
>>39
パスでがんじがらめのクソアプリでもCocoaってだけで多くのユーザに称賛されてたからなぁ…。
42 Name: 37 [sage] Date: 2006/05/04(木) 08:45:27 ID: TJG2KCCp0 Be:
うーんよくわからん。
「Cocoaで」お行儀のよいアプリを作るつもりなら、
FileやFolderを指すFSRefラッパなオブジェクトを
作って、パスを保持する変わりにそれを使え、って
ことなのかなぁ。

TN2078を見つけた。
:ファイルのパスを取得するもう 1 つの方法は、CFURLRef を作成し、
:これを使ってファイルのパスを取得することです
:CFURLRef url = CFURLCreateFromFSRef( kCFAllocatorDefault, &fsRef );
:CFStringRef cfString = NULL;
:if ( url != NULL )
:{
: cfString = CFURLCopyFileSystemPath( url, inPathStyle );
: CFRelease( url );
:}
こういうのがお行儀のよい方法なんだろうか?
43 Name: 28 [] Date: 2006/05/04(木) 13:49:31 ID: 6krq8Tjn0 Be:
>>29
ありがとうございます。
44 Name: 名称未設定 [sage] Date: 2006/05/05(金) 06:06:32 ID: d5A4HZmY0 Be:
確かにAliasHandleなら、ファイルが移動・名称変更されても追跡できるけど、
アプリが起動中に保持してるファイル参照は、大半の場合はNSStringのPOSIXパスで
別にいいんじゃないかなー、と個人的には思うけどね。

FSRefはファイル保存による参照の永続性は保証されてない。パスか、または
AliasHandleを(NSDataにするとかして)保存しておくと移動・名称変更に対応できると。

ちなみにこんなのも
http://developer.apple.com/jp/technotes/tn2078.html
45 Name: 名称未設定 [sage] Date: 2006/05/05(金) 06:42:43 ID: Ui65Lrx+0 Be:
ではiTunesはAliasHandleなのかな?
今実験してみたら起動中にファイル名変更しても変更後の曲名に自動的に変更された
iTunesを動かしてないときにファイル名を変更しても変更についてきた>>iTunes

多分、iTunesなんかでやってる方法がApple的には正しいんだろうな、ありがと
46 Name: 45 [sage] Date: 2006/05/05(金) 08:01:50 ID: Ui65Lrx+0 Be:
おんなじ事をWinでしてみるとファイルが見当たらない状態になるなぁ
47 Name: 名称未設定 [sage] Date: 2006/05/05(金) 10:45:10 ID: xEwHA9TM0 Be:
AliasHandle(NSData)←→FSRef←→NSURL←→NSString
それぞれ変換する関数を自分で用意しておけばいいのでは。
48 Name: 名称未設定 [sage] Date: 2006/05/05(金) 12:22:11 ID: jm8WCFvx0 Be:
ていうかそれぐらい SDK に用意して欲しい気がする
やっぱまだ Apple 内部で Cocoa派と Carbon 派の対立があるのかな。
49 Name: 45 [sage] Date: 2006/05/05(金) 12:56:28 ID: Ui65Lrx+0 Be:
FSSpec
| FSMakeFSSpec
FSRef
| FSRefMakePath,FSPathMakeRef
Path表示のUInt8

FSRef
↓ FSNewAlias,FSNewAliasMinimal
AliasHandle

typedef unsigned char UInt8

UInt8
| [NSString stringWithCString:],[stringWithUTF8String:]
NSString

[NSSavePanel filename]の戻り値はNSString

こんなところかな?正直フレームワーク側で面倒見て欲しい
50 Name: 45 [sage] Date: 2006/05/05(金) 13:26:08 ID: Ui65Lrx+0 Be:
AliasHandle
↓FSCopyAliasInfo
CFStringRef

Interchangeable Data Types
ttp://developer.apple.com/documentation/Cocoa/Conceptual/CarbonCocoaDoc/Articles/DataTypes.html#//apple_ref/doc/uid/20002401
(CFStringRef) myNSString
(NSString *) myCFString

toll-free bridgedってなんだ?
51 Name: 名称未設定 [sage] Date: 2006/05/05(金) 14:49:12 ID: rADOU+FM0 Be:
>>50

キャストでCoreFoundationとFoundationのオブジェクトの相互変換が出来る。
上のキャストがまさにそう。全部のクラスではないけど、CFxxxとNSxxxで
xxxが同じものならtoll-free bridgeが使えると思っていい。
52 Name: 名称未設定 [sage] Date: 2006/05/05(金) 14:51:02 ID: I651LApa0 Be:
よくわからんけどBDAliasとかNDAliasではダメ?
53 Name: 名称未設定 [sage] Date: 2006/05/05(金) 15:47:25 ID: xMAkZ2JL0 Be:
>>52
BDAliasとかNDAliasでも alias record が使えますね。
私は、インスタンスを作るのが面倒なので、ファイル関係の、NSString の
カテゴリーを作っています。

alias record の他にも、finder label の操作をするメソッドをまとめています。
ファイル操作用のクラスを作るのが、本筋でしょうが、自分の用途にはカテゴリーで十分です。
54 Name: 名称未設定 [sage] Date: 2006/05/05(金) 17:37:53 ID: aY4B9S4zO Be:
通行料無料
55 Name: 名称未設定 [sage] Date: 2006/05/05(金) 22:01:44 ID: jm8WCFvx0 Be:
>>45
もしよろしければ CocoaDev にでも公開しておいてください
56 Name: 名称未設定 [sage] Date: 2006/05/05(金) 23:44:55 ID: Oa2SzjBI0 Be:
Toll-free bridge の実現方法
http://homepage.mac.com/mkino2/core/base/bridge.html
57 Name: 名称未設定 [sage] Date: 2006/05/06(土) 09:41:18 ID: YEpgzU7h0 Be:
ツールバーのアイコンとか、Apple純正のものを使(パク)ってもいいの?
プリンタやインスペクタなんて、同じ形状じゃないとユーザも混乱するので
あえて別なものを作る必要もなさそうなんだけど。
というか、フリーウェアでもよく使っているのを見かけるけど・・・。
58 Name: 名称未設定 [sage] Date: 2006/05/06(土) 10:58:44 ID: vakS1QyW0 Be:
旧OSの時代からパックってるは奴いたけどApple黙認状態じゃん。
趣味でやってる限り、そんなに気にする事も無いんじゃねぇの?

キャー、叩かないでぇ。
59 Name: 名称未設定 [sage] Date: 2006/05/06(土) 11:04:35 ID: asWTmD+j0 Be:
逆にAppleには奨励してほしいくらいだ
60 Name: 名称未設定 [sage] Date: 2006/05/06(土) 11:47:04 ID: 3CVVNjde0 Be:
>>58
poof.pngをパクってたY'z Dockは?
61 Name: 名称未設定 [sage] Date: 2006/05/06(土) 12:09:41 ID: 91sdT/pJ0 Be:
>>60
あれは全体的な意匠がDockに似ているということでクレームが付いたのです。
62 Name: 名称未設定 [sage] Date: 2006/05/06(土) 14:47:24 ID: 9pIXICMg0 Be:
アイコンには著作権はないのかねぇ?大抵のペイントソフトってMacPaintの
ツールアイコンを継承してるし。アイコンは記号とみなしてる?
63 Name: 名称未設定 [sage] Date: 2006/05/06(土) 14:49:23 ID: O3pzsRUc0 Be:
著作権はあるでしょ
そんな些細な事でMacの開発者の芽を潰すのは得策でないと
黙認してるだけだと思うけど
64 Name: 名称未設定 [sage] Date: 2006/05/06(土) 14:55:32 ID: 0Df6qY4x0 Be:
プリンタアイコンとかはフレームワークが用意するでしょ
65 Name: 名称未設定 [sage] Date: 2006/05/07(日) 00:53:19 ID: CbkAXu1b0 Be:
Macユーザって見た目とかL&F、お作法とかにかなりうるさいイメージがある。
チラ裏でスマソ。
66 Name: 名称未設定 [sage] Date: 2006/05/07(日) 01:40:50 ID: KGACRyy50 Be:
そうでもないつもりなんだが、REALbasic製のパーツの違和感はもちろん気になる。

使用頻度の高いOSの機能に絡むようなアイコンは、
IBに用意されてあって簡単にドラッグとかできると良いのにねぇ。
67 Name: 名称未設定 [sage] Date: 2006/05/07(日) 22:16:45 ID: P7G3KLkv0 Be:
PDFKitのPDFOutlineをNSTreeControllerを使ってNSOutlineViewに表示しようとしたら、
PDFOutlineに子要素を取得するメソッドがないために実現できなかった。

ほかPDFKitにはドキュメントそのものを編集する機能が足りていなかったりして、
アポーのMLに書かれたようにAcrobatを潰さないように機能限定をしてるのかなーと思った。
ttp://lists.apple.com/archives/cocoa-dev/2005/Jul/msg00033.html
68 Name: 名称未設定 [sage] Date: 2006/05/08(月) 23:17:08 ID: cOBuDj0m0 Be:
>>67
numberOfChildrenとchildAtIndex:はあるんだから
カテゴリでメソッド追加して、そいつをchildrenに指定すればできるんじゃない?

制限してるっつーか、追加で開発しなけりゃ編集系の機能はないってだけだと思うよ。
今のバージョンのOSで持ってるPDFの機能はフルセットである必要はないわけだし。
69 Name: 名称未設定 [] Date: 2006/05/08(月) 23:42:47 ID: 3NVZ1OJy0 Be:
>>68
>numberOfChildrenとchildAtIndex:はあるんだから
>カテゴリでメソッド追加して、そいつをchildrenに指定すればできるんじゃない?

あ、そうか、そうやればいいのかorz
70 Name: 名称未設定 [sage] Date: 2006/05/10(水) 06:12:34 ID: NXT/af1N0 Be:
文字をスターウォーズのオープニング風にスクロールさせたいのですが、
手軽な方法はありますか?
71 Name: 名称未設定 [sage] Date: 2006/05/10(水) 09:13:16 ID: CMIazl2l0 Be:
スターウォーズのオープニング知らねえ
72 Name: 名称未設定 [sage] Date: 2006/05/10(水) 09:26:02 ID: cQCSVf680 Be:
NSViewって台形変形できたかなぁ
73 Name: 名称未設定 [sage] Date: 2006/05/10(水) 09:32:10 ID: WyPZtKzR0 Be:
3Dにすればいいんじゃね? 知らんけど・・・
74 Name: 名称未設定 [sage] Date: 2006/05/10(水) 10:34:09 ID: BZeLlPbN0 Be:
QuarzComposerとか?
75 Name: 名称未設定 [sage] Date: 2006/05/10(水) 13:33:19 ID: 8trPHxz50 Be:
QuickTimeでなかったけとか適当な事言ってみる
76 Name: 名称未設定 [sage] Date: 2006/05/10(水) 16:16:52 ID: pphzkmk30 Be:
Quartz Composerなら楽。
77 Name: 70 [sage] Date: 2006/05/10(水) 18:40:35 ID: NXT/af1N0 Be:
Quartz Composer調べてみます。
ありがとうございました。
78 Name: 名称未設定 [sage] Date: 2006/05/10(水) 22:14:59 ID: Nzl2wq7x0 Be:
NSGLViewじゃだめけ?
79 Name: 名称未設定 [sage] Date: 2006/05/11(木) 00:51:29 ID: QxGVoLmH0 Be:
EditableなNSTextFieldのペースト処理に割り込む方法を調べるのに1日費やしてしまった...
このフィールドエディタって仕組みは効率はいいのかもしれんがカスタマイズするのが面倒いな
80 Name: 名称未設定 [] Date: 2006/05/11(木) 05:50:44 ID: qrgb9c1s0 Be:
NSResponderのサブクラス(コントロールなど)で
コマンド キー + キャラクタキー押下 を扱えるようにするには
どうしたらいいのでしょうか。
-(void)keyDown: には、コマンドキーで修飾しているときには
イベントがディスパッチされてこないようです。
81 Name: 名称未設定 [sage] Date: 2006/05/11(木) 11:01:57 ID: qh+bv+vb0 Be:
諸兄に質問です。

NSOutlineViewにチェックボックスを乗せて動作させようとしているんですが、
On,Offを切り替えようと連続してクリックしてもチェックボックスの状態が
切り替わりません。ダブルクリックの抑制が勝手にされている感じで、、、。

ソースでは
- (void)outlineView : (NSOutlineView*)outlineView
setObjectValue : (id)object
forTableColumn : (NSTableColumn*)tableColumn
byItem : (id)item
にてチェックボックスの値を変更しています。
当方OS10.4.6, Xcode2.2.1使用。

うまく伝わるかどうかわかりませんが、

やりたいこと:
iTunesの曲名の左にあるチェックボックスのような動作(連続してクリック
するとOn,Offがさくさく切り替わる)

現在(NG):
Xcodeのターゲット対象を選択するチェックボックス(メニューの
[Window]-[Target "プロジェクト名" Info]を実行すると表示されるウィンドウの
中から、Buildタブを選択するとチェックボックス付きのリストが表示される)
みたいな動作。
チェックボックスの状態をクリックして変更すると、同じチェックボックスの
値はしばらく待ってからでないと変更できない。




82 Name: 名称未設定 [sage] Date: 2006/05/11(木) 11:07:11 ID: ObvEqxDk0 Be:
ソースをどっかにアップしてくれるとわかりやすいのだが
83 Name: 名称未設定 [sage] Date: 2006/05/11(木) 11:20:59 ID: GDauEYVP0 Be:
- (void)mouseDown:(NSEvent *)theEvent
でボタンの上でクリックされたかどうか確認して、
ボタン上でクリックされたらon/off切り替えるとか?
84 Name: 名称未設定 [sage] Date: 2006/05/11(木) 11:45:10 ID: 8AJ+9a8p0 Be:
reloadData 呼ぶ。
85 Name: 名称未設定 [sage] Date: 2006/05/11(木) 13:55:56 ID: l/N0G2L50 Be:
>>81
確かにあれってデフォルトのクリック/ダブルクリックの判定が少しアホだよね
(それがCocoaアプリはもっさり、のイメージ向上にもつながってるような気が)

記憶がかなり曖昧なんだけど、他の同じようなタイミングで呼ばれるdelegate/datasourceメソッドと
組み合わせて対応したような記憶がある(shouldEditTableColumn かな...?)
最後にクリックされたitemを覚えておいて、今回と同じだったら云々とか、かな?
ColumnがEditableかどうかでメソッドの呼ばれ方も変わってくるから、その辺も変えたかもしれん。
86 Name: 名称未設定 [sage] Date: 2006/05/11(木) 14:48:18 ID: GDauEYVP0 Be:
チェックボックスがあるコラムは編集不可にしておいて、
MyOutlineViewで↓を追加したら希望どおりの動きになったよ
- (void)mouseDown:(NSEvent *)theEvent
{
NSPoint mouseLoc = [[self window] mouseLocationOutsideOfEventStream];
mouseLoc = [self convertPoint:mouseLoc fromView:[[self window] contentView]];
NSRange range;
int columnIndex;
int rowIndex;

range = [self columnsInRect:NSMakeRect(mouseLoc.x, mouseLoc.y, 1,1)];
if( range.length == 0 ) columnIndex = -1;
elsecolumnIndex = range.location;

range = [self rowsInRect:NSMakeRect(mouseLoc.x, mouseLoc.y, 1,1)];
if( range.length == 0 ) rowIndex = -1;
elserowIndex = range.location;


つづく
87 Name: 名称未設定 [sage] Date: 2006/05/11(木) 14:50:25 ID: GDauEYVP0 Be:
if( columnIndex == [self columnWithIdentifier:@"CheckboxColumn"] && rowIndex != -1 )
{
// 以下は適当にかえて
id item = [self itemAtRow:rowIndex ];
BOOL flag;

if( [[item objectForKey:@"CheckboxData"] isEqualToString:@"YES"] ) flag = NO;
else flag = YES;

[[self delegate] outlineView:self setObjectValue:[NSNumber numberWithBool:flag]
forTableColumn:[self tableColumnWithIdentifier:@"CheckboxColumn"]
byItem:item];
}else
{
[super mouseDown:theEvent];

}
}

タブが消えちゃったから適当に修正して下さい
88 Name: 81 [sage] Date: 2006/05/11(木) 16:48:44 ID: 74huxGk50 Be:
>83
それだ!と思ってプログラムをしこしこ書いていたら...

>86
おお!ありがとう!早速試してみたら動きました。
うちではこんなんにしました。

- (void)mouseDown:(NSEvent*)theEvent
{
// クリックされた場所を調べる
NSPointmouseLoc = [ [ self window ] mouseLocationOutsideOfEventStream ];
mouseLoc = [ selfconvertPoint: mouseLoc
fromView: [ [ self window ] contentView ] ];

// クリックされたのは何列目かを取得する
int columnIndex = [ self columnAtPoint : mouseLoc ];

// クリックされたのは何行目かを取得する
int rowIndex = [ self rowAtPoint : mouseLoc ];

// クリックされた列の情報を取得する
NSArray* tableColumns = [ self tableColumns ];
NSTableColumn* column = [ tableColumns objectAtIndex : columnIndex ];

続く
89 Name: 81 [sage] Date: 2006/05/11(木) 16:57:55 ID: 74huxGk50 Be:
// チェックボックスのある列がクリックされたか?
if( [ [ column identifier ] isEqualToString : @"check" ] && -1 != rowIndex )
{
// クリックされた行のアイテムを取得する
id item = [ self itemAtRow : rowIndex ];

// アイテムの値(チェックボックスの状態)を取得する
NSNumber* itemValue = [ [self delegate] outlineView : self
objectValueForTableColumn : column
byItem : item ];

// 変更後の値を計算する
int value;
if( NSOnState == [ itemValue intValue ] )
{
// クリックする前がOnだったのでOffにする
value = NSOffState;
}
else
{
// クリックする前がOffだったのでOffにする
value = NSOnState;
}

さらに続く
90 Name: 81 [sage] Date: 2006/05/11(木) 17:00:58 ID: w4bcOese0 Be:
// チェックボックスの値を更新する
[ [ self delegate ] outlineView : self
setObjectValue : [ NSNumber numberWithInt : value ]
forTableColumn : column
byItem : item ];

// テーブルの再描画
[ self reloadData ];
}
else
{
// チェックボックス以外がクリックされた場合は、通常の処理を行う
[ super mouseDown : theEvent ];
}
}

「// 以下は適当に変えて」とあった場所以降は、適当に変えてます。それ以外に
変更したところと言えば、
・クリックされた行を取得するのにcolumnAtPointとrowAtPointを使用した
ってところです。

後はチェックボックスそのものではなくて、チェックボックスがおいてある列を
クリックするとOn/Offが切り替わってしまうという問題がありますが、それは
チェックボックスの大きさを求めてやれば解決できるんでは?と思ってます。

というわけでThx諸兄! |・∀・| ノシ
91 Name: 名称未設定 [age] Date: 2006/05/12(金) 11:11:02 ID: 52iLh3qu0 Be:
パスワードを入力するテキストフィールドを作成しています。
つまり、キーボードから文字を入力すると
文字が「・」になって表示されるようなテキストフィールドです。

現在はNSTextFieldのサブクラスを作って試しているんですが
キーボードから入力された文字を「・」に変換するタイミングが
うまく取れなくて困っています。

- (void)keyUp:(NSEvent *)theEvent で今は処理を行おうとしていますが
良くないのでしょうか??
92 Name: 名称未設定 [sage] Date: 2006/05/12(金) 11:14:18 ID: EN+baOqH0 Be:
NSSecureTextField じゃダメなのか。
93 Name: 91 [age] Date: 2006/05/12(金) 12:07:56 ID: 52iLh3qu0 Be:
>>92

あ~~~~~!!!
そんな便利なクラスがあったんですね。
昨日丸一日やっていた作業が、このクラスで一発で出来てしまうとは……。
私の昨日の作業はなんだったんでしょうか…orz

ありがとうございました!
94 Name: 名称未設定 [sage] Date: 2006/05/12(金) 12:34:23 ID: nUgUnAED0 Be:
>>80 自己解決しました。
cmdキーで修飾されたキーイベントは、NSWIndowには配布されず
NSMenuに流れるのですね。
95 Name: 名称未設定 [age] Date: 2006/05/12(金) 13:14:20 ID: FLHQI2HL0 Be:
NSToolbarItemについて質問です。
ツールバーのボタンを長押ししたときに
コンテクストメニューが表示されるような
ツールバーボタンを作ろうとしています。

Xcodeのツールバーの「ビルド」ボタンのような
ものです。

しかしながら、NSToolbarやNSToolbarItemには
mouseDownを処理する関数がないため、
マウスボタンの長押しの判定を実装するのに困っています。

NSWindowのサブクラスでsendEvent関数をオーバーライドして
そこでマウスの長押しの判定処理するしかないんでしょうか?
96 Name: 名称未設定 [sage] Date: 2006/05/12(金) 14:01:10 ID: gt1SKJcT0 Be:
viewをtoolbaritemに指定してそこで好きなようにいじるのが一番簡単かと
97 Name: 名称未設定 [sage] Date: 2006/05/14(日) 01:11:09 ID: m1DF90Kj0 Be:
ウインドウのタイトルバー部分にアクセスする事は出来ますか?
タイトルバーのViewを取得・セットするとか。
98 Name: 名称未設定 [] Date: 2006/05/15(月) 19:20:33 ID: 2F/yZVx40 Be:
タイトルバーってNSView使ってるの?
NSWindowのみでやってると思ってたんだけど。
99 Name: 名称未設定 [sage] Date: 2006/05/15(月) 19:47:49 ID: S2fURzmp0 Be:
ここら辺参考にならんか?
http://www.andymatuschak.org/articles/2006/01/11/making-the-hud-item-1-a-frame-themed-party

タイトルバーはNSView使ってないと思う。
[[[window contentView] superview] rotateByAngle:90.0];
ってやったら変になった。
100 Name: 名称未設定 [sage] Date: 2006/05/15(月) 20:05:21 ID: S2fURzmp0 Be:
ついでに
NSLog(@"%@", [[[window contentView] superview] subviews]);

<CFArray 0x301a20 [0xa01c00e0]>{type = mutable-small, count = 4, values = (
0 : <_NSThemeCloseWidget: 0x336a60> <= クローズボタン
1 : <_NSThemeWidget: 0x337080> <= 最大化ボタン
2 : <_NSThemeWidget: 0x337690> <= 最少化ボタン
3 : <NSView: 0x32d220> <= 多分ContentView
)}

というわけで、タイトルバーはNSViewつかって無いんじゃないかと
思った次第でございます。
101 Name: 名称未設定 [sage] Date: 2006/05/15(月) 20:07:38 ID: S2fURzmp0 Be:
環境書き忘れた。
10.3.9です。
連投スマソ。
102 Name: 名称未設定 [] Date: 2006/05/16(火) 12:46:44 ID: P0CJ9wZ70 Be:
Stackを表現するオブジェクトは提供されていますか?
javaの java.util.Stackみたいに。
103 Name: 名称未設定 [] Date: 2006/05/16(火) 12:57:01 ID: iGe3reE50 Be:
提供されない。
NSArrayにカテゴリで、pushとpopでも付けたまえ。
104 Name: 名称未設定 [sage] Date: 2006/05/16(火) 13:17:06 ID: by7Zl1Li0 Be:
スタックくらい自分で作れるだろ。難易度も低いし。
105 Name: 名称未設定 [sage] Date: 2006/05/16(火) 13:30:40 ID: P0CJ9wZ70 Be:
>>103-104 了解です。
106 Name: 名称未設定 [sage] Date: 2006/05/16(火) 23:56:21 ID: 6EZsMV0m0 Be:
Smalltaklでもそんなこという人いるけど
追加されない理由は、追加する理由がないからなんだよん
107 Name: 名称未設定 [sage] Date: 2006/05/17(水) 21:59:52 ID: zYS/GfmO0 Be:
どうしても分からないので教えてください。QTKitとretainCountの話です。
//
pool = [[NSAutoreleasePool alloc] init];
theSrcQTMovie = [QTMovie movieWithAttributes: // Open Source Movie
[NSDictionary dictionaryWithObjectsAndKeys:
inputPath, QTMovieFileNameAttribute,
[NSNumber numberWithBool:FALSE], QTMovieOpenAsyncOKAttribute,
nil]
error:nil];
NSLog(@"theSrcQTMovie(%d)",[theSrcQTMovie retainCount]); // 3

theBOOL = [theSrcQTMovie writeToFile:tempPath withAttributes:nil]; // Save Reference Movie
NSLog(@"theSrcQTMovie(%d)",[theSrcQTMovie retainCount]); // 7

[pool release]; pool = nil;
NSLog(@"theSrcQTMovie(%d)",[theSrcQTMovie retainCount]); // 1
theSrcQTMovie = nil;
//
この流れでいくと、最後にPoolをリリースしたらQTMovieは一緒にリリースされて
retainCountは0になるべきだと思うのですけれども、なぜか1。。。すぐにはリリースされないの?

何を勘違いしているのかが、分かりません。助言をいただけませんでしょうか。
108 Name: 名称未設定 [sage] Date: 2006/05/17(水) 22:18:27 ID: riCKSE7u0 Be:
プログラマの関知しない別のところで retain されてるんだろう。
"自分で alloc したオブジェクトは自分で解放する" という原則に従っていれば、
retainCount が幾つなのかは特に気にしなくていいんじゃないか。
109 Name: 名称未設定 [sage] Date: 2006/05/17(水) 22:23:19 ID: jAJSJWmc0 Be:
>>107
>>108の言う通り気にする必要は無いと思うけど、
どうしても気になるならObjectAllocを使えばいつ誰がretainしたか調べる事ができるよ。
あるいはQTMovieのサブクラスを作ってdeallocにブレークポイントを置いてみるとか
110 Name: 名称未設定 [] Date: 2006/05/17(水) 22:35:39 ID: OcxRFKJQ0 Be:
OpenGL(っていうかGLUT)を使ったプログラムで、ZeroLinkを
外してコンパイルしようとすると、リンクでこけてしまいます。
ZeroLinkをせずにビルドするには、どのような設定が必要なの
でしょうか?開発環境はXCode1.5です。
111 Name: 名称未設定 [] Date: 2006/05/17(水) 23:15:29 ID: Lnd/rQMO0 Be:
>110
フレームワークの追加した?
112 Name: 名称未設定 [sage] Date: 2006/05/18(木) 13:01:45 ID: FOb3Gi7H0 Be:
IBOutlet id myControls[5];
と配列にしてもIBで反映できなくて面倒だと気づいたんですが、
何か代わる方法があるんでしょうか?
113 Name: 名称未設定 [sage] Date: 2006/05/18(木) 15:36:19 ID: oENKH0310 Be:
>>112
コントロールしないでActionだけ使う
114 Name: 名称未設定 [sage] Date: 2006/05/18(木) 17:08:27 ID: OnRvaQEv0 Be:
>>112
CustomViewの上に全部のせて、awakeFromNibでsubviewsを取り出して
配列に代入するとか
115 Name: 110 [] Date: 2006/05/18(木) 21:03:28 ID: Rtyx+UkT0 Be:
>>111
レス、ありがとうございます。

>フレームワークの追加した?
ええ、勿論追加しました。
116 Name: 112 [sage] Date: 2006/05/18(木) 21:34:12 ID: EAzea5ar0 Be:
>>114
ああ、それいいですね。
indexと同じ順でtagを付けてviewWithTagで取得するとかもできますね。
ありがとうございました。
117 Name: 名称未設定 [] Date: 2006/05/19(金) 13:31:49 ID: 11F4sGW90 Be:
>115
OpenGL.frameworkとGLUT.frameworkを両方とも?
どっちか忘れてない?
118 Name: 名称未設定 [sage] Date: 2006/05/23(火) 03:23:59 ID: nAlY+wVs0 Be:
>>97
ttp://journal.mycom.co.jp/column/objc/031/
こんなのがありました
NSCell でタイトルバーを取り出せるのかもしれません
119 Name: 110 [] Date: 2006/05/24(水) 19:50:31 ID: Q7tCtJzR0 Be:
>>117
レスありがとうございます。
(せっかく教えて頂いているのに、返答が遅れてすみません)
OpenGL.frameworkを追加しておりませんでした。。。
で、今試したのですが、次のようなメッセージでリンクに
失敗しています。(因にZeroリンクでコンパイルするとコンパイル
が成功して、実行も出来ますが。。。)


/usr/lib/crt1.o illegal reference to symbol:__objcInit defined in
indirectly referenced dynamic library /usr/lib/libobjc.A.dylib
120 Name: 名称未設定 [] Date: 2006/05/24(水) 22:06:01 ID: C1tm5YPg0 Be:
>119
standard C toolのプロジェクトから始めたのにObjective-Cを使っていたりしない?
どんなヘッダをinclude又はimportしてるの?
121 Name: 110 [] Date: 2006/05/24(水) 22:34:04 ID: Q7tCtJzR0 Be:
>>120
C++のstandard toolのプロジェクト+GLUTを
使っております。
言語はC++を使い、math.hやらstdlib.hなどCのライブラリ
をincludeしています。
自分では、Objective-Cのを使ってはいません(と思います)
ただ、デバックしていると、どうもGLUTのメインループから、
NSApplicationなどなど呼ばれているようです。
ン?すると、Cocoaフレームワークを追加すれば・・・と
言うわけで、試しました。結果、見事リンクも通りました。

結論・・・OpenGL(GLUT)は、たとえ自分がObjective-Cを
使わなくても、Cocoa.frameworkのリンクを必要とする。
(裏で使われているから)
ということで良いでしょうか?

なにはともあれ、111、117、120さん
有益で貴重なレス、ありがとうございました。
122 Name: 111,117,120 [] Date: 2006/05/24(水) 22:40:06 ID: C1tm5YPg0 Be:
解決してよかったね
123 Name: 名称未設定 [sage] Date: 2006/05/25(木) 02:39:40 ID: ZfQDSndy0 Be:
>>99
マウスイベントと描画がちゃんとしていれば実用的なんだけどなぁ
ttp://amb.sakura.ne.jp/hanyou/img-box/img20060525023010.jpg

ボタンとテキストフィールドが、70度ぐらい回転したところで消える。
124 Name: 名称未設定 [sage] Date: 2006/06/03(土) 23:34:57 ID: yZcGb4F40 Be:
MOSAのテキストシステムに関するドキュメントなどを読んだりすると、
NSTextStorageがテキストシステムに用いられるオブジェクトの所有関係のトップに立つようですが、
ではNSTextStorageはダレがretainしているんですか?

件の記述は、次のPDFファイルの25ページあたりです。
ttp://www.mosa.gr.jp/htmdocs/article/document/TextSystemOverview.pdf
125 Name: 名称未設定 [sage] Date: 2006/06/04(日) 00:19:16 ID: PIjcKyr40 Be:
ユーザであるあなたじゃなくて?
ドキュメント読んでないからテキトーですが・・・。
126 Name: 名称未設定 [sage] Date: 2006/06/04(日) 00:35:52 ID: ul4j0Dp80 Be:
>>125
NSTextViewを表示するだけのアプリを作ってもテキストは保持されているので、
誰かがretainしているんじゃないかなぁと。
127 Name: 名称未設定 [sage] Date: 2006/06/04(日) 02:26:46 ID: ZdxhQis00 Be:
CoreDataわかんねー。relationshipをコード上で繋げたりできないのかな?
HMDT 3rdを読めば説明がある?
128 Name: 名称未設定 [] Date: 2006/06/04(日) 04:10:29 ID: xihtAoI00 Be:
修飾キーを表す記号(メニューのショートカットに使われるやつ。
コマンド、シフト、コントロールなど)を文字として使う
ことはできますか。というか、テキストフィールドなどに
表示してみたいのですが、どうしたら表せますか? 
129 Name: 名称未設定 [sage] Date: 2006/06/04(日) 05:44:28 ID: uY3A+xj90 Be:
>>124
NSTextView が 
NSTextContainer をRetainしていて、これがさらに
NSLayoutManager をRetainしていて、これがさらに
NSTextStorage をRetainしている

んじゃまいか
130 Name: 名称未設定 [sage] Date: 2006/06/04(日) 10:24:13 ID: 067JzHzp0 Be:
>>128
ことえりなら「きごう」で変換すればコマンドキーの文字は表示されますよ。
もっと効率的なのがあると思いますが。

>>129
原文を読んでみてもその逆ですよ。
>When you release the NSTextStorage object, it releases its NSLayoutManagers,
>which release their NSTextContainers, which in turn release their NSTextViews.
とありますし。

でも、どうなっているんだろう。
131 Name: 名称未設定 [sage] Date: 2006/06/04(日) 10:46:37 ID: FPqPs0tO0 Be:
>>128
HIToolbox/Events.h
/* useful Unicode code points */参照
132 Name: 名称未設定 [sage] Date: 2006/06/04(日) 11:00:28 ID: qhelX7AC0 Be:
普通は、NSTextViewをinitWithFrame:で作ると、LayoutManagerとかTextStorageとかは勝手に作られる
この場合NSTextViewがユーザによってReleaseされるとNSTextStorageなどの付属品もReleaseされる

上のドキュメントは、NSTextStorageから作り始めて手動で接続する方法について書かれているため、
textStorage = [[NSTextStorage alloc] init]; の時点でユーザにRetainされている。
つまりNSTextStorageをRetainしているのはユーザ。

かな?
133 Name: 128 [sage] Date: 2006/06/04(日) 14:21:46 ID: xihtAoI00 Be:
>>130-131
やっぱりあるんですね。そしてそれを知っている人がいる。
ありがとうございます。
134 Name: 名称未設定 [sage] Date: 2006/06/04(日) 18:58:47 ID: iR3AdedM0 Be:
>>132
ユーザがretainしてるってことは、つまりNSTextViewがNSTextStorageをretainしてるってことですかね。
135 Name: 名称未設定 [sage] Date: 2006/06/04(日) 21:25:41 ID: Io2siVvy0 Be:
というか、retain <-> release がペアで行われていれば何重になっても良いというのが肝なので、使う側からすれば関係ないのでは?
自分で retain or init....: したものはちゃんと (auto)release するだけ。
136 Name: 名称未設定 [sage] Date: 2006/06/04(日) 22:54:54 ID: iR3AdedM0 Be:
使うだけならOKなんですが、TextViewの自作を試みてるので気になったんですよ。
とりあえずTextViewにretainさせておきます。
137 Name: 名称未設定 [sage] Date: 2006/06/05(月) 00:09:06 ID: Qv0nGPct0 Be:
確かにクラスの関係が複雑だと循環 retain になりそうで怖いですが、
自分(自作中のTextViewクラス)で直接
NSTextStorage いじらないんなら autorelease しちゃって、
自分で直接つかう機会があるなら retain して持っておくというので
いいんじゃなかったでしたっけ。

NSTextStorage を渡された側が必要なら retain して保持するはずだから、
そこまで気にする必要ないと思うんですけど。
138 Name: 名称未設定 [sage] Date: 2006/06/05(月) 08:05:37 ID: 8GS0snAv0 Be:
まだまだCocoa初心者です。

ダイアログを作るときに、コントローラもIB上でインスタンス化して、
OKやらCANCELやらUIのactionをつないでいるのですが、これは
もう少し賢い方法がないものでしょうか?

ダイアログが3枚になったら、コントローラも3個IB上でインスタンス化
することになるのですが、にたような部分も多く、無駄な気もします。

IBに作ってしまった場合、alloc-init-releaseでダイアログを生成/破棄
することができないわけで、無駄なメモリを使っているように思うのです。

コントローラをalloc-initでインスタンス化して、nibを読み込んで、
IBActionの代わりにあれこれ連結、っていう方法がよいのでしょうか?
139 Name: 名称未設定 [sage] Date: 2006/06/05(月) 08:20:39 ID: a8Vbbca80 Be:
コントローラは1個でもいいです。
名称やタグの番号でボタンなどの部品を区別すれば。
140 Name: 名称未設定 [sage] Date: 2006/06/05(月) 10:24:21 ID: DwlNWVFF0 Be:
標準のアラートやオープンダイアログじゃだめだってぇのかい
141 Name: 名称未設定 [sage] Date: 2006/06/05(月) 12:57:37 ID: B0Nes9PY0 Be:
>>137
なるほど、autoreleaseがあったか。
循環retainが怖いのでそうします。

>>138
標準のアラートはNSRunAlertPanel()が便利。
ttp://homepage.mac.com/mkino2/cocoaProg/AppKit/NSApplication/NSApplication.html#simpleWay

ボタンやフィールドが増えてきたら、対応するIBOutletな変数やIBActionなメソッドを増やしていけばOK。
142 Name: 名称未設定 [sage] Date: 2006/06/05(月) 16:08:32 ID: pSBcu/Ui0 Be:
Moriarity 以外に unix command を呼び出すサンプルってありますか?
143 Name: 138 [sage] Date: 2006/06/05(月) 21:05:00 ID: XAuYAjLa0 Be:
>>139,140,141
コメントさんくすです

ダイアログといっても設定ウィンドウみたいなものなんです...
ポップアップボタン二つとOKとキャンセルっていうダイアログを
作ったのですが、NSRunAlertPanelだとnibを指定してダイアログを
つくるということは出来ないようで...
設定画面なのでモーダル?にする必要はあるのですが、ウィンドウが
ないときにも使えるようにrunModalForWindowにnilを渡しています

賢くない気が激しくするのですが...
144 Name: 名称未設定 [sage] Date: 2006/06/05(月) 21:17:25 ID: xoyFASsp0 Be:
ダイアログごとに別個のコントローラを設けるのは別に変な設計とは思わんな。
>>139
>名称やタグの番号でボタンなどの部品を区別すれば。
という設計だと、コードが汚くなるし、将来の拡張の際に面倒が生じる。
145 Name: 名称未設定 [sage] Date: 2006/06/05(月) 22:43:30 ID: SZpQN3iE0 Be:
>>142
「Cocoaはやっぱり!」は読みました?
http://www.big.or.jp/~crane/cocoa/0900_general/perl.html

僕ももっと沢山サンプルが欲しいです。
146 Name: 138 [sage] Date: 2006/06/06(火) 21:43:28 ID: 1sArkyRK0 Be:
>>144
なるほど。そういう考え方でいいのですね。

HMDT赤本を買って気がついたのですが、IB上でインスタンス化
したカスタムコントローラ(NSObjectのサブクラス)って、普通
にinitメソッド上書きして使えるんですね...(p.30のコードとか)

awakeFromNibかApplicationDidFinishLaunchingでしか初期化
できないと思ってました...
147 Name: 名称未設定 [sage] Date: 2006/06/07(水) 13:46:29 ID: 9LNDxP720 Be:
>>143
Cocoa の設定画面は non-modal にして、
OKボタン押さなくても設定が即座に反映されるというのが
推奨されてるはず。
Safari はそうでしょ。 iTunes は modal だけど。
まああれは Carbon 部隊が開発しているからではないかと思われる
148 Name: 名称未設定 [sage] Date: 2006/06/07(水) 15:57:33 ID: 4Fmwy7vC0 Be:
Xcode...
149 Name: 名称未設定 [sage] Date: 2006/06/07(水) 19:21:24 ID: vZv2kJHL0 Be:
>>145
thx!!
最後の方のコードは見てなかった。
150 Name: 名称未設定 [] Date: 2006/06/08(木) 08:14:32 ID: Hoj3GhJ20 Be:
アプリにドラッグ&ドロップして扱えるファイルを設定するのにはどうすればいいんでしたっけ?
以前に作ったソフトでフォルダをドロップで受け付けられなくなってるのを見つけたのですが
何年もcocoaから離れてたので基本的な事でもすっかり忘れてしまったもので。
宜しくお願いします。
151 Name: 名称未設定 [sage] Date: 2006/06/08(木) 10:23:48 ID: Hoj3GhJ20 Be:
すいません、自己解決しました。
お騒がせしました
152 Name: 名称未設定 [] Date: 2006/06/09(金) 02:23:26 ID: jmz8PWmg0 Be:
どう自己解決したか書いとけよ
153 Name: 名称未設定 [sage] Date: 2006/06/09(金) 13:53:18 ID: XkHmhaHp0 Be:
白黒2階調のピクチャ(NSBitmapImageRep)があり、
それらを階調を保持したまま回転させたりトリミングしたいのですが、
一体どう扱うのがいいのかわかりません。新たにNSImageを作って、その上に既存の
画像を合成させる際にトリミングや回転させようとすると、
フルカラーになってしまってサイズが大きくなってしまいます。
getPixel:atX:y: setPixel:atX:y:で1ピクセルずつ操作すると、えらい時間がかかってしまいます。
bitmapDataを使ってビットマップデータを直接アクセスする場合、
1バイトの中に横8ドットデータが入っているので回転させるのがえらい大変です。
どのようにしたらよいでしょう
154 Name: 名称未設定 [sage] Date: 2006/06/09(金) 16:46:29 ID: C/rYG2jC0 Be:
>1バイトの中に横8ドットデータが入っているので回転させるのがえらい大変です。
えらい大変かもしれないが、書けばすむこと。
良い方法が見つかるまで、とりあえず書いとけ。
155 Name: 138 [sage] Date: 2006/06/09(金) 20:43:19 ID: 2mJlMNsn0 Be:
全く適当だが
・Copybitsを最初に思いついた。Deprecatedだけど。
・QuickTimeにやらせる。
・QT7ならQTKitでやる。
・TigerならCoreImageでやるってのは不可?
156 Name: 名称未設定 [sage] Date: 2006/06/09(金) 22:24:24 ID: EMRHPt3T0 Be:
1バイト1ピクセルに変換して、回転して、その後1バイト8ピクセルに戻す。
157 Name: 名称未設定 [sage] Date: 2006/06/10(土) 01:45:27 ID: O1V6Reue0 Be:
ディスプレイを今すぐスリープさせるAPIある?
パワーマネージャみたいな関数でもある?
158 Name: 名称未設定 [sage] Date: 2006/06/10(土) 10:41:23 ID: VGBddNJH0 Be:
サウンドの入力レベルを知りたいんだけど
IntelMacだと常に1しか返ってきません。
同じコードでもPPCだと0~255で返るんだけど。
SPBGetRecordingStatusは使えない?
159 Name: 名称未設定 [sage] Date: 2006/06/10(土) 15:33:32 ID: TSdLvEAL0 Be:
Core Data 初心者ですが、Core Data で、条件に応じて Managed Object の
初期化の方法を変えたいんですが、やりかたがよくわかりません。

NSManagedObject の subclass を作って awakeFromInsert の中で条件分岐かなと
思いましたが、条件となる引数を渡す方法がわからず頓挫しました。

やりたいことは、例えば add1 ボタンを押した場合は、ある Entity が初期化ルーチン1で
初期化されて add され、add2 ボタンを押した場合は、その Entity は初期化ルーチン2で
初期化されて add される、というようなことです。

何かいい方法はありますでしょうか。
160 Name: 名称未設定 [sage] Date: 2006/06/10(土) 20:19:49 ID: Mt8huKrR0 Be:
>>159
ボタン押したところのアクションで、
initWithEntity:insertIntoManagedObjectContext:
で手で MO を作って、その後即座にボタンによって
異なる初期化ルーチンを呼べばいいんでは。
161 Name: 153 [sage] Date: 2006/06/11(日) 11:40:49 ID: Q+PzwmkR0 Be:
>>156の方法でやってみました。これが一番他の知識が不要で手っ取り早くできそうだったので。
でも少し計算に時間がかかりますね。素人プログラムなためそれほどの速度は必要でなく、
許容範囲ではあるのですが。GraphicConverterなど高速なものは大変な苦労で作ってるんでしょうね。
162 Name: 名称未設定 [sage] Date: 2006/06/11(日) 15:48:23 ID: EH0KKaDU0 Be:
>>161
Tiger でいいなら、
[[NSBitmapImageRep alloc] initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:] で書き込む先の白黒2階調の BitmapImageRep をつくって、
[NSGraphicsContext graphicsContextWithBitmapImageRep:]でそこから
context をつくって、そこに普通に描画すればいいはずだと思う。
書き終わったら BitmapImageRep から結果を取り出す。

じぶんでやってないので嘘だったらごめんなさい。
163 Name: 名称未設定 [sage] Date: 2006/06/13(火) 16:35:00 ID: BG7AT41f0 Be:
アピアランスが、ブルーかグラファイトかをCocoaで判別するにはどうすればいいのでしょう?

Carbonのアピアランスマネージャーでも判別できると思いますが、
アピアランスが変更されたタイミングは NSSystemColorsDidChangeNotification で分かるので、
判別の方法もCocoaにありそうですが見つかりません。
164 Name: 名称未設定 [sage] Date: 2006/06/13(火) 16:41:30 ID: 9huRMF150 Be:
>>163
NSColor か NSControl に何か手がかりが!

あったと思う。
165 Name: 163 [sage] Date: 2006/06/13(火) 17:08:48 ID: BG7AT41f0 Be:
ありました。 [NSColor currentControlTint] のようです。
でも10.3以降なんで作ってる物では使えません。
アピアランスマネージャーから探す事にします。ありがとうございました。
166 Name: 163,165 [sage] Date: 2006/06/13(火) 18:02:06 ID: BG7AT41f0 Be:
一応追記

Appearance ManagerだとCopyThemeIdentifier関数で判別できるようです。
しかし、NSSystemColorsDidChangeNotificationのObserverに登録したメソッド内で
CopyThemeIdentifierを呼ぶとまだ変更が反映されておらず、NSTimer(Intervalは0秒)で
一度間を置いてからでないと変更後の値が取れませんでした。
167 Name: 名称未設定 [] Date: 2006/06/17(土) 02:57:05 ID: TgDcg/jK0 Be:
NS_HOSHU
168 Name: 名称未設定 [sage] Date: 2006/06/17(土) 04:19:42 ID: YIbmYyq30 Be:
if ([[self replyAtIndex:167] content] == NS_HOSHU)
[self hoshu];
169 Name: 名称未設定 [sage] Date: 2006/06/17(土) 04:28:56 ID: H98fY3FU0 Be:
if (hoge)
hogehoge;
と2行に書くスタイルは、なんか好きじゃない。
if (hoge) hogehoge;
とか
if (hoge) {
hogehoge;
}
と書くスタイルの方が好き。
170 Name: 名称未設定 [sage] Date: 2006/06/17(土) 06:27:12 ID: JKzqNnkT0 Be:
>>166
Appearance Managerベースで処理するならtheme変更はEvent Class:kAppearanceEventClass
Event ID:kAEAppearanceChangedのAppleEventで告知されるから、そこで対応するのが自然
171 Name: 名称未設定 [sage] Date: 2006/06/17(土) 19:19:16 ID: sSWp8ozX0 Be:
CarbonEventマンドクサ
172 Name: 名称未設定 [sage] Date: 2006/06/17(土) 21:47:30 ID: JSrjBgyV0 Be:
質問です。
Cocoaを勉強中の者で、かんたんな電卓を作れるぐらいの
レベルです。

ソースコードを公開しているソフトのプロジェクトを見て
勉強しているのですが、ほとんどのソフトは、プロジェクト
にいくつかのnibファイルが入っています。

私が自分で開発するときは、GUIもクラスも、
全て一つのnibファイルで構成しているのですが、
どのような場合に複数のnibに分けるのでしょうか。

また、複数のnibにした場合nib間のデータの受け渡しなどは
どのように行うのでしょうか。
173 Name: 名称未設定 [sage] Date: 2006/06/17(土) 22:31:27 ID: 7Oie2B5X0 Be:
>>172
複数のnibが必要になるときは、「あれ?このままじゃできねーじゃん」ということに気づくはず
なのであまり気にしなくても。

たとえば、Xcodeのプロジェクトテンプレートのなかでは、ドキュメントベースのアプリは
nibが2つありますね。これは、メインメニューのnibはアプリ実行時に1つだけ実体化されれば
よいですが、ドキュメントのnibは開いたドキュメントの数だけ実体化する必要があります。
こういったときにはnibを分割しなければ目的どおりのアプリをつくることはできません。

また、環境設定パネルを別のnibにする人もいますが、これは好みかと。自分はMainMenu派。

nib間のデータの受け渡しは、コントローラのクラス(たいていはnibのowner)を経由して
やるケースが多いんじゃないかと思います。
174 Name: 名称未設定 [sage] Date: 2006/06/18(日) 08:49:26 ID: XwudOt7u0 Be:
>>171
>>170に対して? CarbonEventとAppleEventは全く違う物だよ。
setenv EventDebug 1
して動かすとCocoaアプリもCarbonEventで動いているのがよく判る。
175 Name: 172 [sage] Date: 2006/06/18(日) 12:42:37 ID: elyTTmmQ0 Be:
>>173
必要になったときでいいんですね。分かりました。
早速レスありがとうございました。
176 Name: 名称未設定 [sage] Date: 2006/06/18(日) 17:46:20 ID: FI5i1zcr0 Be:
>CocoaアプリもCarbonEventで動いているのがよく判る。

互換性の為に Eventはいてんでは?
177 Name: 名称未設定 [sage] Date: 2006/06/19(月) 09:38:45 ID: rhfJiJdK0 Be:
AppleEventマンドクサ
178 Name: doop [age] Date: 2006/06/21(水) 15:57:56 ID: bgKNgs5o0 Be:
NSAttributedStringでアンダーライン属性(NSUnderlineStyleAttributeName)を
つけた場合、指定したフォント属性(NSFontAttributeName)によって
アンダーラインの太さが変わってしまいます。

たとえば、ヒラギノ角ゴシックW3とヒラギノ明朝W3では
角ゴシックの方が太いアンダーラインになります。

アンダーラインを指定した太さで設定する方法って
あるんでしょうか?
179 Name: 名称未設定 [sage] Date: 2006/06/21(水) 16:04:58 ID: m3fpbG/W0 Be:
Cocoaもイベント関連はCarbonだと思うよ
180 Name: 名称未設定 [sage] Date: 2006/06/21(水) 16:27:31 ID: WlDTo8fo0 Be:
>>178
テキストエディットの機能でやったみたけど、違うね。角ゴシックの方が太い。

やったこと無いから分からないけど、
NSUnderlineStyleAttributeName でセットする値はアンダーラインの太さとは違う?
181 Name: doop [age] Date: 2006/06/21(水) 18:12:08 ID: bgKNgs5o0 Be:
>>180

NSUnderlineStyleAttributeNameでセットする値は、確かにアンダーラインの
太さなんですが、たとえば太さ2で共通の値をセットしても
フォントが異なると、太さが違っちゃうんですよね。
182 Name: 名称未設定 [sage] Date: 2006/06/21(水) 19:02:13 ID: 9zizw9R50 Be:
NSLayoutManagerのサブクラスを作って、自前で下線を引くとか?
183 Name: 名称未設定 [sage] Date: 2006/06/21(水) 20:09:59 ID: 5euUhkDV0 Be:
質問です。基本的な事だと思うのですが・・


//---------------------A.h
#import "B.h"
@interface A
{
B* _b;
}
@end


//---------------------B.h
#import "A.h"
@interface B
{
A* _a;
}
@end


とした場合、「parse error before "A"」などとコンパイルエラーになります。
・importの代わりに「@class A;」と書く
・「A*」でなくidにする
これら以外で解決方法はありますでしょうか?できればimportできるようにしたいのですが。
184 Name: 名称未設定 [] Date: 2006/06/21(水) 20:18:31 ID: blg9utrJ0 Be:
>>183
俺は継承でもない限りA.hに#import "B.h"とはやらないで、
A.hに@class B;としてA.mに#import "B.h"としてる。

だってA.hにはBというクラスの情報として、「Bというクラスの存在」以上のものは必要ないでしょ。
A.mでBのメソッドを呼び出すなりするからこそB.hで定義されてるメソッドの情報が必要なわけで。

もしAがBを継承しているなら、A.hはB.hの情報を必要とするから、A.hでB.hを#importする。
185 Name: 名称未設定 [sage] Date: 2006/06/21(水) 20:20:18 ID: zXPirQWv0 Be:
>>183
#importと@classはひとつのヘッダに併記できるけど、そういう話じゃなくて?

#import "B.h"
@class B;
@interface A
{
 B* b;
}
@end

/* ------------------------------------- */

#import "A.h"
@class A;
@interface B
{
 A* a;
}
@end
186 Name: 名称未設定 [sage] Date: 2006/06/21(水) 20:48:30 ID: 5euUhkDV0 Be:
レスありがとうございます
自分で色々なクラスを作って、設計上の分類として同一レイヤーのクラス郡を
1つのヘッダにまとめようとかしているうちに迷いだしたのですが、

>>184
確かにおっしゃる通りですね。混乱してた頭がまとまってきました。
>>185
知りませんでした(というか気付きませんでした)。なるほどそれでもいいですね。
ただ、importと@class両方書かなくても済むようにできないかな、と考え、
邪道かも知れませんが、以下のようにしてみたらエラーが出なくなりました。

//---------------------A.h
@class A
#import "B.h"
@interface A : NSObject // >>183は親クラス書き忘れてた
{
B* _b;
}
@end


//---------------------B.h
@class B
#import "A.h"
@interface B : NSObject
{
A* _a;
}
@end
187 Name: 名称未設定 [sage] Date: 2006/06/21(水) 20:57:59 ID: 5euUhkDV0 Be:
追記。話はやや別件ですが:

@class Bだけだと、B.hでtypedefした型などがあった場合、A.h内で使えず、
importしないとダメ、という場合もありますね。
188 Name: 名称未設定 [sage] Date: 2006/06/22(木) 11:09:40 ID: sJkBj+Sh0 Be:
typedefした型は別のヘッダにすればいいじゃん。
189 Name: 名称未設定 [sage] Date: 2006/06/23(金) 16:56:08 ID: gd6cmyK20 Be:
_Aとかバインディングで引っかかる
190 Name: 名称未設定 [sage] Date: 2006/06/25(日) 14:04:23 ID: FU8vpFwK0 Be:
質問です。
現在使用しているモニタプロファイル名を表示するにはどうすればいいんでしょうか?
191 Name: 名称未設定 [sage] Date: 2006/06/25(日) 16:58:01 ID: jCM3y0dK0 Be:
あなたの環境で:システム環境設定>ディスプレイ>カラー
プログラム中で取得:NSColorSpaceでググる
192 Name: 名称未設定 [sage] Date: 2006/06/25(日) 20:54:55 ID: bC87h+5K0 Be:
質問があります。
つくったインスタンスメソッドで、メッセージとして渡された
引数を実装側でどうやってとりだすのでしょうか?
193 Name: 名称未設定 [] Date: 2006/06/25(日) 21:05:05 ID: LLt26K+a0 Be:
寝ぼけてんのか?文法読んで来い。
194 Name: 名称未設定 [sage] Date: 2006/06/25(日) 21:13:42 ID: bC87h+5K0 Be:
すいません。文法書の見落としがありました。解決しました。
195 Name: 名称未設定 [sage] Date: 2006/06/25(日) 21:44:05 ID: z7dg3MP00 Be:
USBジョイスティックの入力ってどうやって読むの?
NSjoystockとかないよ。
196 Name: 138 [sage] Date: 2006/06/25(日) 22:24:24 ID: sXn+7+YE0 Be:
>>195
>USBジョイスティックの入力

HID Class Device Interface Guideとか?。
197 Name: 名称未設定 [sage] Date: 2006/06/26(月) 16:58:44 ID: 1jTGHt/j0 Be:
Xcode2.x で作った Cocoa は 10.4 以降対応になる?
あと Xcode2.x で作成しているプロジェクトを Xcode1.x で扱う事はできる?
198 Name: 名称未設定 [] Date: 2006/06/26(月) 18:02:52 ID: gRWoCX+A0 Be:
>>197
ターゲットSDKを切り替えれば10.1以降とか10.2以降とかのも作れる。
プロジェクトファイルは基本的に下位のバージョンでは使えない。
199 Name: 名称未設定 [sage] Date: 2006/06/26(月) 18:12:31 ID: POQHPWxO0 Be:
これか。
HID Class Device Interface Guide
ttp://developer.apple.com/documentation/DeviceDrivers/Conceptual/HID/index.html
もうちょっと実際例の説明が有ったほうが分かりやすいな。
200 Name: 197 [sage] Date: 2006/06/26(月) 20:38:35 ID: PkTPdafN0 Be:
>>198
助かった。
どうやら自分以外のメンバは Xcode1 を使ってみるみたい orz (2じゃないやつは報告しろと言ったのに)
201 Name: 名称未設定 [sage] Date: 2006/06/29(木) 17:35:37 ID: TczJMdDc0 Be:
KeroInMenuってUB化しないのかなぁ。
グランサーも天気予報も要らないから時計とCPUとアイコンだけの作ってくれないかなぁ。
202 Name: 名称未設定 [sage] Date: 2006/06/29(木) 22:40:53 ID: 12Kpz+uh0 Be:
いつもお世話になっています。

質問ですが、NSMatrixの中にNSCellをいれる方法ってありませんか?
画像ビューアもどきでNSMatrixの中に画像を表示しているんですが、
その下に画像を選択するチェックボックスを表示したいんです。
IBでそのまま突っ込んでも画像のセルごとに表示されなくて困ってます。
203 Name: 名称未設定 [sage] Date: 2006/06/29(木) 23:07:28 ID: r7H4o3Hy0 Be:
drawRectでcellのdrawWithFrameを呼べばいいんじゃないの?
あと、TableViewならボタンセルをIBで設定できるけど。
204 Name: 名称未設定 [sage] Date: 2006/06/29(木) 23:32:26 ID: 12Kpz+uh0 Be:
>>203
ごめんなさい。NSCellではなくNSButtonCellでした・・・orz
Matrix内でCellのdrawRectを使って描画しているんですが、そのセルの中に
チェックボックスをつけたいんです。もうちょっと頑張ってみます・・・
もし何かご存知でしたらご教示願います。
205 Name: 名称未設定 [sage] Date: 2006/06/30(金) 10:12:38 ID: ptAMmyTp0 Be:
AppleのCocoaセミナー初級編、既に定員?
http://developer.apple.com/jp/briefing/cocoa1/
206 Name: 名称未設定 [sage] Date: 2006/06/30(金) 17:34:10 ID: yFsFJ11h0 Be:
>>205
みたいだね、ちょっと興味あったけど早いね。
207 Name: 202 [] Date: 2006/06/30(金) 23:02:15 ID: gw0ZK+uC0 Be:
だめだ・・・NSCellに画像とNSButtonCell貼り付けたいだけなのに
どうしてもできない・・・orz
もう寝よう・・・
208 Name: 名称未設定 [sage] Date: 2006/06/30(金) 23:08:46 ID: kHxg6Rob0 Be:
これは読んだ?
file://localhost/Developer/ADC%20Reference%20Library/documentation/Cocoa/Conceptual/ControlCell/index.html
209 Name: 名称未設定 [sage] Date: 2006/06/30(金) 23:18:59 ID: k3gpyYzJ0 Be:
>>208
file://localho まで読んだ。
210 Name: 名称未設定 [sage] Date: 2006/06/30(金) 23:21:50 ID: kHxg6Rob0 Be:
>>209 テメーw
211 Name: 202 [] Date: 2006/06/30(金) 23:23:58 ID: gw0ZK+uC0 Be:
>>208
ありがとうございます。今夜読んでみて
明日にでも再度挑戦してみます。
212 Name: 名称未設定 [sage] Date: 2006/07/01(土) 14:34:16 ID: wsXqSJ3H0 Be:
Cocoa セミナー
前回参加者の感想きぼん
213 Name: 名称未設定 [sage] Date: 2006/07/02(日) 10:08:43 ID: V1GzUz970 Be:
64bitCocoaはまだですか?
214 Name: 名称未設定 [sage] Date: 2006/07/02(日) 11:46:09 ID: p5Ufu1La0 Be:
基本的なところを聞いていいですか?

とあるオブジェクトのインスタンス変数として例えばNSNumberを
持たせたとします。で、KVCを使って操作します。
@interface foo:NSObject
{ NSString* bar; }
@end

こう書いた時点で、必ずbarを破棄するためにdeallocメソッドも書か
ないといけない、と「決まってしまう」と考えてよいのでしょうか。
@implementation foo
- (void)dealloc
{ [bar release]; }
@end

また、Cocoaの実装ではインスタンス変数のオブジェクトはNULLで
いつも初期化されているみたいなのですが、それを前提にinitでnilを
入れるコードを書かないというのはやはり間違いなのでしょうか。
215 Name: 名称未設定 [sage] Date: 2006/07/02(日) 11:46:48 ID: p5Ufu1La0 Be:
あぁ、NSStringですorz。
216 Name: 名称未設定 [sage] Date: 2006/07/02(日) 12:32:42 ID: VDiULCJZ0 Be:
>>213
WWDCで発表される




















といいな
217 Name: 名称未設定 [sage] Date: 2006/07/02(日) 12:50:51 ID: juYwe93t0 Be:
そんなことより皆さん、聞いてください。
内緒で妻のパソコンでインターネットして
ヌードとかHな写真を見まくっていたのですが、なんと
なにかの表紙に見ていたエロ画像がパソコンの後ろに
表示されたままになって元に戻せません!
前はプーさんの画像だったのに、今はアソコにバイブを挿した蒼井そらの画像です・・ ・。
再起動しても表示されたままなんです。
早く直さないと妻が帰ってきてしまいます!
至急です、皆さん助けてください!!!
OSはマックOSX10.4です。
よろしくお願いします。

218 Name: 名称未設定 [sage] Date: 2006/07/02(日) 12:57:50 ID: XrS1dTKR0 Be:
>>217
そのまま帰ってくるのを待って、「やらないか?」って言え。
219 Name: 名称未設定 [sage] Date: 2006/07/02(日) 13:15:34 ID: hb0oMFgB0 Be:
>>214
単なるポインタだから実体化させなきゃreleaseする必要は無い。
220 Name: 名称未設定 [sage] Date: 2006/07/02(日) 14:26:35 ID: M3zfbYyf0 Be:
横レスだけど、barの使い始めの全く最初にいきなり [bar release] としてもエラーにならないのは何で?
221 Name: 名称未設定 [sage] Date: 2006/07/02(日) 14:35:16 ID: hb0oMFgB0 Be:
>>220
Objective-Cではnilに対するメッセージ送信は無視される。
222 Name: 名称未設定 [sage] Date: 2006/07/02(日) 15:32:18 ID: M3zfbYyf0 Be:
あ~そうなの。じゃあ
[bar autorelease];
.
.
.
[bar release];
bar = nil;

ってのはエラーにならないのね。
223 Name: 名称未設定 [sage] Date: 2006/07/02(日) 19:04:12 ID: EJ+e2b4Y0 Be:
なるだろ?
224 Name: 214 [sage] Date: 2006/07/02(日) 20:38:10 ID: ic35Z8wI0 Be:
>>219
KVCでsetValue:forKey:でセットした場合、親オブジェクトがRetain
した形になるはずです。
オブジェクトの保持するオブジェクトは自動でリリースはされない
ですよね?

>単なるポインタだから実体化させなきゃreleaseする必要は無い。

それはそうなんですが、deallocを書かない場合、ObjectへReleaseを
送る前にsetNilValueForKey:を必ず送るべきではないか;そうしないと、
リリースされず、メモリリークになるのではないかと考えているのです。

なんか考え方間違っているのかなぁ。
225 Name: 名称未設定 [sage] Date: 2006/07/02(日) 22:11:27 ID: Q3OjaVQq0 Be:
>>222
deallocされたオブジェクトはnilではありません。
226 Name: 名称未設定 [sage] Date: 2006/07/02(日) 22:18:51 ID: Q3OjaVQq0 Be:
>>224
前半はその理解で正しいと思います。
219が言っているのはsetValue:forKey:されなければ、releaseしなくていいってこと
じゃないでしょうか。「こう書いた時点で」の解釈の違いで。

後半に関しては、おそらく理解しているとは思うのですがreleaseとdeallocはちがうので、
release時にsetNilValueForKey:をされると、そのオブジェクトを利用している他の
オブジェクトが困ることになると思います。deallocで行うべき処理です。
あと、214で[super dealloc]が抜けていると思います。
227 Name: 名称未設定 [sage] Date: 2006/07/02(日) 22:48:16 ID: WfXfJeR/0 Be:
……通りすがりだけどさ。
そのロジックがメモリリークしてるかどうかなんてこと、
件のオブジェクトの作成と解放を100,000回ぐらい呼び出して、
ターミナル開いて top で見てればわかるんじゃないの?
まったく、ぼんくらどもが。

と思い、作りかけてみたんですが、
Objective-C歴4ヶ月の私には命題をうまく理解することさえできませんでした。
どなた様か続きをよろしく。

ttp://read.kir.jp/file/read50843.zip
228 Name: 214 [sage] Date: 2006/07/02(日) 22:56:47 ID: kQxAmKOZ0 Be:
>>226
>deallocで行うべき処理です。
・・・ん。ようやく、腑に落ちました。
やはりdeallocを書くべき、ということですね。

>あと、214で[super dealloc]が抜けていると思います。
あぅ。確かに。失礼しました。
229 Name: 名称未設定 [sage] Date: 2006/07/03(月) 01:46:51 ID: emK4Ct5N0 Be:
>>213
俺のMBで使えないからイラネ
230 Name: 名称未設定 [sage] Date: 2006/07/03(月) 10:03:14 ID: m5PLoxv+0 Be:
>>221
PowerPCではそうだが、Intelでは例外が発生しなかったっけ?
231 Name: 名称未設定 [] Date: 2006/07/03(月) 10:38:29 ID: z8fiLpaE0 Be:
>>230
ほれ
http://developer.apple.com/jp/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_22.html#//apple_ref/doc/uid/TP40002217-CH239-CJBJABFC
232 Name: 名称未設定 [sage] Date: 2006/07/03(月) 10:45:46 ID: sGdD8YCc0 Be:
>>230
それは大丈夫。

-(float)[HOGE hoge];

HOGE *foo = nil;
float bar = [foo hoge];
のとき、 bar に何が入るかは全く保証されない。
PPCの場合は、0 になるとされていた。

現在 0 が保証されるのは、
char, short int, int , long int , ポインタ(アドレス)
ぐらいだと思っていればいいです。
233 Name: 名称未設定 [sage] Date: 2006/07/03(月) 11:02:29 ID: sGdD8YCc0 Be:
>>231
えええ!!!!
話が逆になってるぞ!
原文もだ!

前のが間違いだったのか!?
234 Name: 231 [] Date: 2006/07/03(月) 11:22:07 ID: z8fiLpaE0 Be:
>>233
いや俺も確かに以前は逆の情報をここで読んだ気がするんだが・・・
235 Name: 名称未設定 [sage] Date: 2006/07/03(月) 11:52:05 ID: j6F1dWhI0 Be:
CocoaDev 見ても逆の情報しかないなあ。

いずれにせよ、ランタイムとしてではなく、言語仕様としては、
オブジェクトを返す場合に nil が返ることが保証されているだけで、
他の型を返す場合に何が返ってくるかは未定義のはず。

file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_4_section_3.html#//apple_ref/doc/uid/TP30001163-CH7-85945

では以下のような記述がある。

In general, however, it is considered bad style to rely on this
behavior for return types other than an object.
236 Name: 名称未設定 [sage] Date: 2006/07/03(月) 12:10:47 ID: sGdD8YCc0 Be:
原文の"The Objective-C Programming Language" には

引用開始
nil にメッセ-ジを送信した場合、
(俺様追加:アーキテクチャに関係なく)返値の型が オブジェクト、ポインタ、
sizeof(void*)と同じかあるいは小さい大きさを持つ整数値である場合は、
nil を返す。それ以外は未定義。
引用終わり

となってるな。
日本語訳のほうはなぜか、「nil に送信されたメッセージがオブジェクト以外のものを返す場合、戻り値は未定義です。」
となってる。

むちゃくちゃだな。
237 Name: 名称未設定 [sage] Date: 2006/07/03(月) 13:24:18 ID: c8VZVKn90 Be:
>>236

よろしこ。
http://bugreport.apple.com
238 Name: 名称未設定 [sage] Date: 2006/07/03(月) 13:46:21 ID: sGdD8YCc0 Be:
>>237
一応原文の方の「Did this document help you?」から送ってみた。
米国人に読めるかどうか定かではない。
239 Name: 202 [] Date: 2006/07/03(月) 22:17:26 ID: 0POPeGrk0 Be:
やっぱりできませんでした…orz
NSCellのサブクラスで


NSButtonCell *cell = [[NSButtonCell alloc] init];
NSRect rect = NSMakeRect(0, 0, 30, 30);
NSButton *button = [[NSButton alloc] initWithFrame:rect];

[button setButtonType:NSSwitchButton];

[button setCell:cell];
[cell setControlSize:NSRegularControlSize];

rect = [cll drawingRectForBounds:NSMakeRect(0, 0, 30, 30)];
[cell drawWithFrame:rect inView:[self controlView]];

とすると表示はできたんですがボタンがチェックボックスになってくれません。
しかも表示もなんだかおかしいし。
どなたかやり方後存知でしたら教えてください・・・
240 Name: 名称未設定 [sage] Date: 2006/07/03(月) 22:53:59 ID: 1GGgkFvn0 Be:
>>239
>>202文中の「その下に画像を選択するチェックボックス」
というのがよくわからないんですが、こういう感じのインタフェースのこと?
http://amb.sakura.ne.jp/hanyou/img-box/img20060703225311.jpg

それで、画像ビューア的なものを作ろうとしているためにMatrixの個数が
ころころ変わるから、カスタムクラスで対応しようとしている、と?
241 Name: 202 [] Date: 2006/07/03(月) 23:36:22 ID: 0POPeGrk0 Be:
>>240
まさしくそんな感じです。
画像の右下につけたいんですが、どうしてもうまいこと行きません。
どうやったらそんな感じになるんでしょう?
242 Name: 名称未設定 [sage] Date: 2006/07/03(月) 23:51:12 ID: HXCXI1up0 Be:
>>241
こんな感じになった。

キャプ
ttp://amb.sakura.ne.jp/hanyou/img-box/img20060703234818.png
ソース
ttp://www.vipper.org/vip284697.zip.html
243 Name: 202 [] Date: 2006/07/03(月) 23:55:42 ID: 0POPeGrk0 Be:
>>242
わわわわーーーー!まさしくこういうやつです! すげーーーー!
ありがとうございます! 早速試してみます!
244 Name: 名称未設定 [sage] Date: 2006/07/04(火) 17:26:21 ID: EtnP0KDm0 Be:
Online会員もOKになってるよ。

Cocoaセミナー中級編開催
7月11日(火)、8月1日(火)
http://developer.apple.com/jp/
・書類とアプリケーションの間の関係の解説
・テキストファイルの読み込みとその表示
・Cocoaのデザインパターン
・XMLのパース
・配列、辞書といった、Cocoaのコレクションクラス
・テーブルビュー、アウトラインビューの使用方法
245 Name: 名称未設定 [sage] Date: 2006/07/04(火) 17:44:37 ID: QLnbobTK0 Be:
メニューバーが消えているかどうか、チェックする方法はあるでしょうか
[NSMenu menuBarVisible]
だと、そのアプリ内でメニューバーを消したかどうかしか分からないのです
246 Name: 名称未設定 [] Date: 2006/07/04(火) 21:59:25 ID: x1QlKZnm0 Be:
>244
見てるんなら
>>230-238
あたりを説明してから帰れ。>kaneko atmark apple.com

# 僕は君より井上しゃんの方が好き。
247 Name: 名称未設定 [sage] Date: 2006/07/04(火) 22:02:36 ID: 6/3Pw8EW0 Be:
>246

井上しゃんてcocoa-devでよくマルチリンガルなネタだのローカライゼーションなネタに答えてるaki inoueしゃんのこと?

だったら漏れもラヴかもしれん(w
248 Name: 名称未設定 [sage] Date: 2006/07/05(水) 05:22:13 ID: lMS8hksu0 Be:
>>246
日本語訳は2003/9だね。英文は2005/10の更新でこの記述が追加されてる。
2005-10-04 Clarified effect of sending messages to nil.
249 Name: 名称未設定 [sage] Date: 2006/07/07(金) 19:42:49 ID: UqbzZzbV0 Be:
すみません、cocoaにc++等のcソースをそのまま使用できると聞いたんですが…
もしわかる方おられたらご教授ください
250 Name: 名称未設定 [] Date: 2006/07/07(金) 20:03:30 ID: SrD3uR9g0 Be:
251 Name: 名称未設定 [] Date: 2006/07/07(金) 20:05:44 ID: vTj1RGbF0 Be:
>>249
http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/index.html
252 Name: 名称未設定 [sage] Date: 2006/07/08(土) 18:33:33 ID: Yqwy5XoZ0 Be:
Cocoa基礎ガイド
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/index.html
253 Name: 214 [sage] Date: 2006/07/08(土) 21:19:10 ID: hTkZrJZq0 Be:
InterfaceBuilderのBindingで質問です。

ウィンドウにチェックボックスが二つあって、それぞれParentとChildと
します。ParentがOnになると、ChildがEnableになるというのを
IBのBindingでやりたいのですが、どうすればよいのでしょうか。

File's Ownerに対してBindingすればよいと思うのですが・・・KeyPathに
Window.Parent.stateなどとしてみたのですが反応しませんでした。
254 Name: 名称未設定 [sage] Date: 2006/07/09(日) 11:17:05 ID: H2YJeMnN0 Be:
File's owner のクラスが何か知らないけど、
そこに instance variable を何かひとつ用意しておいて、
両方ともそこに bind したら ok。

keypath でも出来ると思うけど、その場合は
各クラスのメソッド名をちゃんとしらべないとだめでしょう。
特に単に IB で window を設計しただけだと、
window 内のメソッドで parent とか取り出せないと思う。
255 Name: 名称未設定 [sage] Date: 2006/07/09(日) 11:19:08 ID: H2YJeMnN0 Be:
ところで、214さんの前の書き込みを読むまで
Binding が retain/release を自動的にやってくれるのをしらずに
いちいち - setXXX を書いてました。教えてくれてどうも。

そこまで自動でやってくれるんだったら NSObject の dealloc で
instance var. に全部 release を送ってくれても良いのにね、
短いプログラム書いて確かめてみたら、してくれないようです。
256 Name: 214 [sage] Date: 2006/07/09(日) 12:59:11 ID: HrXmC/KL0 Be:
>>254
>特に単に IB で window を設計しただけだと、
>window 内のメソッドで parent とか取り出せないと思う。

ああ、やっぱり、IB単体でenabledをバインドとかはできないのですか
IB上のtest interfaceではどうにも動かせなくて。
コーディングがなくてもEnableくらい処理できるかな、と思ったので
すけど...
結局、最低限
・NSApplicationのDelegateを自作のControllerにつなぐ
その上で、
・ControllerのInstance変数にParentのStateをBindingさせて
・それにChild.enabledをBinding
するか、
・ControllerのIBOutlet ParentにParentチェックボックスをつないで
・ChildチェックボックスをKeyPath:Parent.StateでBinding
するとかでしょうか。

今までの自分のやり方なら前者になるのかな。
やっぱり、KeyPath(Key.Key.Key...)の使いどころがよくわからん...
257 Name: 名称未設定 [sage] Date: 2006/07/09(日) 15:36:58 ID: H2YJeMnN0 Be:
>>256

>するとかでしょうか。
だと思いますが、
>・ChildチェックボックスをKeyPath:Parent.StateでBinding
では駄目だと思いますよ。Parent.state では?
binding って大文字小文字気にしたような気がします...
いまやってみるとやっぱり気にしましたよ。

すくなくとも、Cocoa では何単語かに渡る名前を
ひとつの識別子にするときは valueForKey のように、
二つ目以降の単語の語頭のみ大文字にするのが慣習なので、
それに従っておいたほうが間違い減ると思います。
まあ、言語やら流派によって
ValueForKey だったり、value_for_key としたり
いろいろなんですけど、Cocoa はそうなので。
郷には入れば郷に従えということだと思います。

あと、var というメンバに対してのアクセッサは - var,
セッタは - setVar にするのが慣習だと思います。
258 Name: 名称未設定 [sage] Date: 2006/07/09(日) 15:38:16 ID: H2YJeMnN0 Be:
追加すると、
> やっぱり、KeyPath(Key.Key.Key...)の使いどころがよくわからん...
KeyPath は keyPath, Key.Key.Key は key.key.key ね。

まあ僕も keyPath の使い方はわかってませんが。

259 Name: 名称未設定 [sage] Date: 2006/07/09(日) 21:07:40 ID: zyDgX85Y0 Be:
>>256

Model-View-Controller デザインパターン にしたがってプログラムするのが良いと
思います。

http://developer.apple.com/jp/documentation/cocoa/Conceptual/CocoaBindings/index.html

の「Cocoa バインディングとは」の項目を熟読することをお勧めします。

260 Name: 名称未設定 [sage] Date: 2006/07/10(月) 01:46:21 ID: BTIU67C00 Be:
>>256
コードなしでもNSObjectController使えばできるよ
1. Interface Builder上でNSObjectControllerをインスタンス化(パネルからInstancesにドロップ)
2. コントローラのAttributesの"Automatically prepares content"をチェック
3. parentのvalueをコントローラにバインディング(たとえばparentStateというキーに)
4. childのenabledをコントローラのparentStateにバインディング

254がいうように、Bind to:対象のオブジェクトをどうやって得るかってのが問題なので
parentを参照する方法があればコントローラは不要になりますね。
261 Name: 名称未設定 [sage] Date: 2006/07/10(月) 16:44:39 ID: NVNosukD0 Be:
Blender で関節を作って、それを cocoa のスクロールバーを動かしたら関節が動く

という風にできる?
262 Name: 214, 253, 256 [sage] Date: 2006/07/10(月) 23:44:34 ID: a0lkS1as0 Be:
>>260
>コードなしでもNSObjectController使えばできるよ
おお!そうかNSObjectControllerってそういう風につかえる
ものだったのか!

これなら確かにコーディングせずにControllerが使えますね・・・
目から鱗です。

実際使い道が思い浮かばなかったんですよね。あのレベルなら
融通が聞かないので自分でController書いてしまえ、と。

//

とはいえ、結局Bindingを使うためにはControllerが必要である
ことが確認できただけでも良かったです。
(Model obj to Model objでのBindingが出来るわけではない)
263 Name: 名称未設定 [sage] Date: 2006/07/11(火) 00:29:39 ID: atwnS7810 Be:
勉強になります
264 Name: 214, 253, 256 [sage] Date: 2006/07/11(火) 07:10:55 ID: 8rUzoo0D0 Be:
>>262
>Model obj to Model obj
View to Viewの間違いですたorz
265 Name: 名称未設定 [] Date: 2006/07/11(火) 08:37:09 ID: aVD27bN60 Be:
>>262
何か根本的に理解を誤っていたんじゃないかな。
MVCがあり、MVCに則ったCocoaフレームワークの再利用可能なViewがあり、
その上で再利用可能なControllerとしてNSObjectController以下のCocoa Bindingが出てきた。
それを実現してるのがKVCとKVO。
この流れはTigerのCore Dataで再利用可能なModelまで行くと、そういう感じ。

ちなみにKVCとKVOは理解しておかないと、NSObjectControllerが何をやってるか分かんないよ。
(→あのレベルなら融通が聞かないので自分でController書いてしまえ、なんて勘違いする羽目になる)
266 Name: 214, 253, 256 [sage] Date: 2006/07/11(火) 21:08:19 ID: TCQ/W/bP0 Be:
>>265
うーん。そういわれると確かに分かっていません。

KVC、KVO、BindingはいずれもNSObjectで提供されていると
思っていました。
ですので、別にIB上で完結するView-to-ViewのBindingが
あっても良いと思っていたのです。
(実際ViewからViewへ直接Messageを送ることがIB上では
actionとしてサポートされているので、同じように思っていました)

これとは異なり、MVCはあくまでオブジェクトモデリングの概念
を3種のオブジェクトに分けて役割を割り当てたもので、KVC/
KVOとは別の概念ですよね。・・・

あぁ、何がいいたいのか自分で分からなくなってきたorz。
267 Name: 260 [sage] Date: 2006/07/12(水) 00:49:52 ID: cCNV0N560 Be:
バインディングでつなぐのは、どのオブジェクト間でもできます。コードさえ書けば。
詳しくはこのへん
ttp://developer.apple.com/jp/documentation/cocoa/Conceptual/CocoaBindings/Concepts/HowDoBindingsWork.html#//apple_ref/doc/uid/20002373/194182

>KVC、KVO、BindingはいずれもNSObjectで提供されている
というのは正しくて、Interface Builder上ではBind toに指定できる
オブジェクトが限定されているってことです。たんにAppleがさぼっているのか、
正しい?MVCを身につけられるようにとの教育的配慮なのかはわかりませんが。
268 Name: 260 [sage] Date: 2006/07/12(水) 01:06:50 ID: cCNV0N560 Be:
あれ?両側でバインディングしたらだめかも。
コード書くのって片方向のときばかりなので。実際に確認してからまた書きます。
269 Name: 名称未設定 [] Date: 2006/07/12(水) 11:35:21 ID: uWLciWqb0 Be:
>>266
Bindingって言葉のイメージで、例えばAとBをBindしたら、双方向に変更が反映されると思うかもしれないけど
実際は違って、KVOで監視されるのはModelだけ。

そもそもCocoa Bindingって元々はController Layerとかそんな名前で記事が公開されてたはず。
あくまでModelとViewを繋ぐコードを出来るだけ書かないで済ませられる、再利用可能なControllerの導入。
270 Name: 名称未設定 [sage] Date: 2006/07/12(水) 17:13:34 ID: 7HB45Tst0 Be:
KVCの条件
http://developer.apple.com/jp/documentation/cocoa/Conceptual/KeyValueCoding/Concepts/Compliant.html#//apple_ref/doc/uid/20002172

KVOの条件
http://developer.apple.com/jp/documentation/cocoa/Conceptual/KeyValueObserving/Concepts/KVOCompliance.html#//apple_ref/doc/uid/20002178/BAJEAIEE
271 Name: 名称未設定 [sage] Date: 2006/07/12(水) 17:32:25 ID: Y+OZKsDY0 Be:
>>267
適当な自作controllerでもKVCにさえ対応させればinterfaceBuilderからbindできるお。
nib上のNSDictionaryですらbind先に出てくる。
272 Name: 名称未設定 [sage] Date: 2006/07/12(水) 22:09:16 ID: d5Z4yb6a0 Be:
Obj-Cプログラム中に、
Cの標準ライブラリ関数の機能
sin(x)とか使いたいとき、#include <math.h>すればそのままつかえるの?
273 Name: 名称未設定 [sage] Date: 2006/07/12(水) 22:15:25 ID: PapfZQSJ0 Be:
試せよ
274 Name: 名称未設定 [sage] Date: 2006/07/12(水) 22:21:30 ID: TsaPZEym0 Be:
やだな~、コンパイルエラーが起こると鼻から悪魔が出てくるんじゃないかって
おびえてるんじゃないですか
275 Name: 名称未設定 [sage] Date: 2006/07/12(水) 22:23:06 ID: xdii1JAr0 Be:
デモン君は良い悪魔だから、出て来ても安心だよ
276 Name: 名称未設定 [sage] Date: 2006/07/12(水) 22:56:18 ID: 0seFQ/fJ0 Be:
毛穴から皮脂が出てきます
277 Name: 名称未設定 [sage] Date: 2006/07/13(木) 06:28:07 ID: tY6w695H0 Be:
メールアドレス間違えて送ると悪魔から返信メールが来るしな。
278 Name: 名称未設定 [sage] Date: 2006/07/13(木) 20:47:32 ID: nGSwsYOi0 Be:
-lmとかはどこで指定すんの?と聞いてるんじゃまいか?
279 Name: 名称未設定 [sage] Date: 2006/07/15(土) 17:32:11 ID: euMhXwyg0 Be:
libm って libSystem に入ってたんじゃなかったっけ?
すくなくとも

#import <Foundation/Foundation.h>
#include <math.h>

int main(){
NSLog(@"%f",sin(1));
}

なら -framework Foundation だけでokだったお
280 Name: 名称未設定 [sage] Date: 2006/07/16(日) 17:23:19 ID: eHiiYoyB0 Be:
/usr/lib/libm.dylib -> libSystem.dylib*
281 Name: 名称未設定 [sage] Date: 2006/07/16(日) 19:51:22 ID: qfTPdeAS0 Be:
htmlファイルをプレーンテキストとしてNSStringに読み込みたいんですけど
どういう方法がありますでしょうか?
282 Name: 名称未設定 [sage] Date: 2006/07/16(日) 19:57:36 ID: Hu2y6npc0 Be:
NSString stringWithContentsOfFile:encoding:error:
283 Name: 名称未設定 [sage] Date: 2006/07/16(日) 20:23:07 ID: hPyPzk1j0 Be:
NSAttributedString を initWithHTML:documentAttributes: でつくる。
そこからstring メソッドでNSString取り出す。
284 Name: 名称未設定 [sage] Date: 2006/07/18(火) 23:13:22 ID: wfVjlvfR0 Be:
NSImageCell の trackMouse:::: ってちゃんと動いてます?
NSImageCell のサブクラスを作って、コントロールビューの mouseDown: から trackMouse:::: を送っても YES が返ってこない。

試しに NSCell のサブクラスにしたらちゃんと返ってくる。
自分の実装の仕方が悪かったのか、バグなのか、よく分からないまま、
trackMouse:::: を以下のようにオーバーライドしたらちゃんと動くようになりました。
{
NSCell *cell = [[[NSCell alloc] initTextCell:@""] autorelease];
return [cell trackMouse:theEvent inRect:cellFrame ofVIew:controlView untilMouseUp:untilMouseUp];
}

なんだかあまりスマートじゃない気がするんですが。。
285 Name: 名称未設定 [sage] Date: 2006/07/19(水) 08:45:44 ID: PkPCKHrD0 Be:
昔のプロジェクトをUniversalBinaryで書き出したら
warning -prebind ignored because MACOSX_DEPLOYMENT_TARGET environment variable greater or equal to 10.4
というエラーが出ました。特に動作に問題が無いので無視してもOKですかね?
286 Name: 名称未設定 [sage] Date: 2006/07/19(水) 09:09:33 ID: PjB2NKC70 Be:
プレバインドの機能は無くなったからOKじゃまいか。
気になるようならビルドの設定でプレバインドを切ればいい。
287 Name: 名称未設定 [sage] Date: 2006/07/19(水) 10:21:32 ID: JcfHZvd20 Be:
>>286
Thanks
288 Name: 名称未設定 [sage] Date: 2006/07/19(水) 21:25:33 ID: oe1vcLSH0 Be:
prebindは無くなってはいない。OSX10.3.4でローダのバグ修正したらprebindなんて殆ど
効果は無く、却って遅くなる場合もあることが露呈したので非推奨になった。
289 Name: 名称未設定 [sage] Date: 2006/07/20(木) 19:00:08 ID: cEz867X40 Be:
質問です、特定のキーを押した状態でクリックで動作を変更するにはどうしたらいいんでしょうか?
(例:Shift+クリック)
お知恵をお貸しください。
290 Name: 名称未設定 [] Date: 2006/07/20(木) 19:17:10 ID: GlBbpkVo0 Be:
NSEventのmodifierFlagsをチェックする。
291 Name: 名称未設定 [sage] Date: 2006/07/20(木) 21:57:05 ID: ZR2L3hwm0 Be:
>>289
ttp://www.big.or.jp/~crane/cocoa/cocoaNote/cocoaNote.html
292 Name: 名称未設定 [sage] Date: 2006/07/22(土) 03:36:08 ID: VoS7IWa40 Be:
手元に確認できる環境がないんだけどprebindオフにしても10.1とか10.2で動作はするんですか?
293 Name: 名称未設定 [sage] Date: 2006/07/22(土) 14:05:25 ID: Y9gi3qVn0 Be:
Cocoa初級編セミナー、1時間経過...
294 Name: 名称未設定 [] Date: 2006/07/23(日) 12:25:19 ID: ujI04OoY0 Be:
さて、cocoaってやつを使ってみるか。
とりあえずテキストでなんかかけばいいのかな?
295 Name: 名称未設定 [sage] Date: 2006/07/26(水) 16:07:53 ID: Hrpw8/980 Be:
http://developer.apple.com/jp/documentation/japanese.html
Cocoaセミナー 初級編
資料(テキスト・プレゼン・サンプルコード、8MB)
ムービー
Cocoaとは(32分、14MB)
簡単なアプリケーション(42分、58MB))
複雑なアプリケーション(40分、59MB))
アプリケーションらしく(40分、54MB))
296 Name: 名称未設定 [sage] Date: 2006/07/26(水) 16:22:36 ID: 3NfsoGJe0 Be:
中級編のプレゼン資料読んでみたが。
これに書いてある内容を知らない人は助かっただろうな。
知らない人が自分で調べて理解するには、
それぞれの項目について1日は費やすだろう。
297 Name: 名称未設定 [sage] Date: 2006/07/26(水) 17:59:31 ID: 5Veyi6lo0 Be:
>>295
これすばらしいですね
もともと無料のセミナとはいえ
まさかPDFだけじゃなくて動画ごと公開してくれるとはうれしいうれしい
298 Name: 名称未設定 [sage] Date: 2006/07/26(水) 18:24:41 ID: 0sl45lAQ0 Be:
ADCJ、いつからこんなに気前よくなったんだよw
299 Name: 名称未設定 [sage] Date: 2006/07/26(水) 18:41:13 ID: 5Veyi6lo0 Be:
ですよね
この調子でいろいろ出しまくってほしいです
300 Name: 名称未設定 [sage] Date: 2006/07/26(水) 19:32:34 ID: LJBT+w0Q0 Be:
全リファレンスの日本語化を
301 Name: 名称未設定 [] Date: 2006/07/26(水) 19:36:37 ID: uWz0474y0 Be:
いまいち日本語だと分かりにくいドキュメントもあるんだよな。翻訳の問題か慣れか。
キー値コーディング、ってどうよ。
302 Name: 名称未設定 [sage] Date: 2006/07/26(水) 20:50:16 ID: uuw/lEcq0 Be:
ブラボー。よくやった。
303 Name: 名称未設定 [sage] Date: 2006/07/26(水) 21:23:33 ID: Hrpw8/980 Be:
木下先生、様々。
304 Name: 名称未設定 [sage] Date: 2006/07/26(水) 21:29:35 ID: TN+Dv84e0 Be:
でも中級っていうよりは「初級2」って内容だな
305 Name: 名称未設定 [sage] Date: 2006/07/26(水) 22:14:18 ID: jLjAwmgY0 Be:
こういうの嬉しいなぁ

で、なんでこれをPodcastで配信しないのかと小一時間
306 Name: 名称未設定 [sage] Date: 2006/07/27(木) 09:23:30 ID: wf3X4ZCY0 Be:
日本語に出来ない単語は英語表記の方がええわな。

キー値バインディング、キー値コーディング、キー値監視、リレーションシップの
濃度、何だ?意味わかんね。特に最後の濃度。
307 Name: 名称未設定 [sage] Date: 2006/07/27(木) 10:07:35 ID: NyKix3Vm0 Be:
iPodで再生出来る?
308 Name: 名称未設定 [sage] Date: 2006/07/27(木) 17:25:45 ID: oYq1PqLY0 Be:
http://developer.apple.com/jp/documentation/cocoa/Conceptual/CocoaBindings/Concepts/OOModel.html
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/chapter_5_section_5.html
ここでは cardinality を本当に数学用語として使ってあるから
数学用語として濃度と訳すのが正しいですね(集合の要素の数のことです)

ただリレーションシップでは有限個しか扱わず、無限個を扱うことがないはずなので
もともとの英語の記事から Number of Relationship として、リレーションシップの数と訳す方が
数学用語と知らない一般のプログラマにわかりやすいですね

僕は訳の問題ではなく元記事の問題だと思います
309 Name: 名称未設定 [sage] Date: 2006/08/01(火) 22:55:32 ID: A1O2SBBj0 Be:
DB用語としては普通にカーディナリとかカーディナリティとか言うから、
そのままカタカナにしてくれたほうが一般のプログラマにはわかりやすくないか?
310 Name: 名称未設定 [sage] Date: 2006/08/02(水) 09:46:15 ID: /HilA6hT0 Be:
カタカナにするくらいならそのまま英単語表記の方がいいよ。カタカナだと
一度英語に変換しなきゃならないからイライラする。
311 Name: 名称未設定 [sage] Date: 2006/08/02(水) 13:54:23 ID: JfbOkV6b0 Be:
もう原文で読めよ
312 Name: 名称未設定 [sage] Date: 2006/08/02(水) 14:44:43 ID: /HilA6hT0 Be:
それは嫌。
313 Name: 名称未設定 [sage] Date: 2006/08/04(金) 13:11:52 ID: nVyU6IcO0 Be:
NSImage/NSImageRef系では画像のフォーマットを調べられないのでしょうか。
拡張子での判断ではなく、信頼性のある情報が欲しいのですが、そのようなメソッドを見つけることができませんでした。
314 Name: 名称未設定 [sage] Date: 2006/08/04(金) 19:40:32 ID: bpPD/J0E0 Be:
このスレ的でのオススメ本はどれですか?
ttp://homepage.mac.com/mkino2/books/index.html

個人的には、Cocoa Recipes for Mac OS X: The Vermont Receips
Cocoa Programmingが気になるのですが........
315 Name: 沙織 [sage] Date: 2006/08/05(土) 13:04:40 ID: fVRgkOcW0 Be:
http://www.big.or.jp/~crane/cocoa/0800_internet/messageSend.html
ここの『フレームワークを追加』するとあるんですが
cocoa Applicationでプロジェクトを作り Xcodeの場所でプロジェクトからフレームワークを追加する
に行こうとしたんですが 『フレームワークを追加がありません』


Project Builderのプロジェクトって書いてあって Project Builderでスポットライトで検索したら無く
どこにあるか困っています
ちなみにOSは10.4 Tigerです
316 Name: 名称未設定 [sage] Date: 2006/08/05(土) 13:31:36 ID: 2c6Syp070 Be:
>>315
左のグループとファイルペインのところにFrameworksというフォルダがあるわけだ。
そのフォルダを選択した状態で、ツールバーにあるアクションをクリックした中のメニューか、
Frameworksを右クリック、あるいはcontrol + クリックで出てくるメニューの中に、
追加 > 既存のフレームワークってのがあるはず。
でもって、ライブラリってとこに飛ぶはずなので、その中からFrameworksというフォルダを探しなはれ。
317 Name: 沙織 [sage] Date: 2006/08/05(土) 14:53:45 ID: fVRgkOcW0 Be:
>>316さん
凄い!できました!
ありがとうございます、『cocoaはやっぱり』さんのサイトに載っているアプリケーションを
作ったら次はどんな物を作ったら良いですか? なかなか簡単な物を作ろうと思っても
英語とか難しいものばかりなので参考になるところとか教えて下さいお願いします
318 Name: 名称未設定 [sage] Date: 2006/08/05(土) 16:48:10 ID: YcFrfIBX0 Be:
>>317

>>295
319 Name: 名称未設定 [sage] Date: 2006/08/05(土) 22:20:28 ID: s1H4/Vjk0 Be:
任意のfile pathを絶対パスにする方法で悩んでいます。
・絶対パスはそのまま使う
・相対パスは展開する(~/foo/bar, ../foo/bar)
・ファイル名のみはカレントパスを補完
これをまとめて一発でやる方法ってないものでしょうか。
簡潔に書く方法が思いつかず、つい汚くなってしまいます。

a. [thePath isAbsolutePath]でチェック
 ・・絶対パスならそのまま返す
b. [[thePath pathComponents] count]で相対パスかどうかチェック
 ・・「./」「../」「dir/」で始まるかどうか見てそれぞれを補完
c. [[[NSFileManager defaultManager] currentDirectoryPath] stringByAppendingPathComponent:thePath]で補完
d. 最後に[thePath pathComponents]を得る。

//

ここまで書いて気がついたんですが、もしかしてstringByStandardizingPath
一発でカンペキOKなんでしょうか...
320 Name: 名称未設定 [sage] Date: 2006/08/05(土) 22:21:31 ID: s1H4/Vjk0 Be:
>>319
>d. 最後に[thePath pathComponents]を得る。

これ間違えました。無用ですね。
321 Name: 名称未設定 [sage] Date: 2006/08/06(日) 02:21:39 ID: mEFUqkp30 Be:
>>313
NSImage/CGImageRefでは出来るかどうか知らんが
GraphicsImporter使えば出来るんじゃまいか?

適当でスマソ。
322 Name: 沙織 [sage] Date: 2006/08/06(日) 09:06:42 ID: 4FZ7cDkw0 Be:
http://developer.apple.com/jp/documentation/japanese.html
セミナーの演習などを見させてもらったんですがRubyCocoaって初心者でも手軽にできますか?
あとどんなアプリケーションが作れるかしりたいです
http://www.studio-kura.com/index.htmlさんのpageみたいにジョークソフトを作ってみたいんですが
cocoaでもできますか??
323 Name: 名称未設定 [sage] Date: 2006/08/06(日) 11:00:21 ID: 2ArX1kJV0 Be:
>>313

fileコマンド呼んじゃうのが楽でない?
324 Name: 名称未設定 [sage] Date: 2006/08/06(日) 11:01:29 ID: 2ArX1kJV0 Be:
>>322

RubyCocoaは来週のWWDCで話が出るんじゃないかな?
325 Name: 名称未設定 [sage] Date: 2006/08/06(日) 12:44:00 ID: nXVcoRA90 Be:
>>319
一旦NSURLを経由して、URLWithString:relativeToURL: を使うとか。
あとみやくん氏のブログでこんなのを見た。
http://blog.cocoa-study.com/?eid=92750
326 Name: 名称未設定 [sage] Date: 2006/08/06(日) 15:58:31 ID: 3l6yOwH/0 Be:
>>321
GraphicsImporter は QuickTime ですね。
たしかにできそうでもある、、が、敷居が高そうです。調べてみます。

>>323
こんなコマンドがあったのか。確かにこれは簡単だw
ですが、これだと NSImage では扱えないのに file では扱える(または逆)、
ということになる可能性もあるので、できれば他の方法がいいですね。

で、結局 NSImage/NSImageRep の範囲でできてしまったんですが、どうもあまり気持ちがよくない。
どうしたかというと、NS*ImageRep のサブクラス HogeImageRepを作り、+imageUnfilteredFileTypes で返すタイプを制限、これをフォーマットごとに定義してやって、初期化できた HogeImageRep が返すタイプがまさに画像のフォーマットである、
という荒っぽいやり方です。

PDFImageRep, EPSImageRep, TIFFImageRep, BMPImageRep, PNGImageRep, ...
面倒で美しくないです。。

画像のフォーマットぐらい、NSImage が教えてくれてもいいような気がするんですが。
NSImage(Rep) はとにかく画像データを描画するというスタンスなのでしょうか。
327 Name: 名称未設定 [sage] Date: 2006/08/06(日) 16:20:25 ID: JHWeNIaU0 Be:
描画するというスタンスでしょう。
元データが何だったかなんて読み込んでしまえばどうでもいいことだし。
328 Name: 名称未設定 [sage] Date: 2006/08/06(日) 19:53:07 ID: nXVcoRA90 Be:
NSImageFile(wじゃないもんね。
329 Name: 326 [sage] Date: 2006/08/06(日) 20:41:27 ID: 3l6yOwH/0 Be:
少しして気づいた。この方法でも駄目だった..('A`)

で、結局、QuickTime の GraphicsImport の API と(というか Carbon と)格闘しました。
GraphicsImportGetImageDescription() という関数を使うと、読み込んだファイルのプロパティが得られるみたいです。
数時間の試行錯誤と検索の末、やっと「JPEG」の文字が標準出力に表示されました。

const char *fname = [imagePath cString];
// >>
FSRef fr;
FSSpec fs;
Boolean dir;

FSPathMakeRef((const UInt8*)fname,&fr,&dir);
FSGetCatalogInfo(&fr,kFSCatInfoNone,0,0,&fs,0);

ComponentResult error;
GraphicsImportComponent fileImporter;
GetGraphicsImporterForFile(&fs,&fileImporter);
ImageDescriptionHandle imageInfo;

imageInfo = (ImageDescriptionHandle)NewHandle(sizeof(ImageDescription));
error = GraphicsImportGetImageDescription(fileImporter, &imageInfo);
// << ここらへん殆ど意味分かってません

short width = (*imageInfo)->width;
short height = (*imageInfo)->height;
OSType type = (*imageInfo)->cType;
NSString *str = QTStringForOSType(type); //or NSFileTypeForHFSTypeCode(type);

NSLog(@"Image info: %ux%u, Type: %@ Codec: %s",width,height,str,(*imageInfo)->name);
330 Name: 名称未設定 [sage] Date: 2006/08/06(日) 22:09:47 ID: mEFUqkp30 Be:
NewHandle()したらDisposeHandle()をお忘れなく。
331 Name: 名称未設定 [sage] Date: 2006/08/06(日) 22:22:16 ID: mEFUqkp30 Be:
あと、CloseComponent()も。
332 Name: 沙織 [sage] Date: 2006/08/07(月) 18:53:47 ID: DCAi8Zwz0 Be:
私ぐらいの初心者で手軽に作れるアプリはあります???
ん~ペイントツールとか作ってみたいんですが 誰かcocoaのサンプル+作り方が載ってるページあったら教えて下さい
それと、本を注文してみました AppleScript Studioでゼンマイびゅんびゅん!!とMacでJava!―Macに付属のXcodeで始めるJavaプログラミング入門
Happy Macintosh Developing Time―はじめてさわる、はじめてわかる!!Xcodeに完全対応、Web Kitも解説です
他に良い本などあったら教えて下さい Xcodeに対応してない物が多く困り中~
333 Name: 名称未設定 [sage] Date: 2006/08/07(月) 18:56:23 ID: vBcSDb4J0 Be:
ツールの使い方だけ知っても仕方ないとは思うけど・・・
334 Name: 名称未設定 [sage] Date: 2006/08/07(月) 19:00:49 ID: kVayUrij0 Be:
>>332
あんた>>322でも書いてた人?
335 Name: 名称未設定 [sage] Date: 2006/08/07(月) 19:22:05 ID: uW56NgY90 Be:
>>332
ペイントアプリケーションの作り方は
中村正弘著「はじめてのMac OS X Cocoaプログラミング」
って本に書いてある。
今もこの本売ってんのかな?
336 Name: 名称未設定 [sage] Date: 2006/08/07(月) 19:47:00 ID: oDZn1gHU0 Be:
買った本からして、作りたい物の方向性が見えない。
闇雲に方法を模索すると正解が導きだせないよ。
337 Name: 326 [sage] Date: 2006/08/07(月) 19:53:42 ID: M72Kkhgx0 Be:
>>330-331
ちゃんとしておきました。
QTのドキュメントにも「Disposeしろ」と散々書かれていた。

>>332
HMDT は Objective-C が前提ですが、これは中級者向けとよく言われます。
>>335 も Objective-C です。
Cocoa やるなら Objective-C 以外無いかと。
338 Name: 沙織 [sage] Date: 2006/08/07(月) 20:01:52 ID: DCAi8Zwz0 Be:
凄い初心者なので一応 本買っときました
古いcocoaはxcodeに対応してないのでやめときました
あとブラウザ作ってみたんですが ホームに戻る のボタンが作れません
詳しい方教えて下さい
339 Name: 名称未設定 [sage] Date: 2006/08/07(月) 20:32:05 ID: Velt8suU0 Be:
>>328
凄い初心者というのならせめてここで質問してからがよかったのに…。
古いCocoaって、Cocoaが扱われてればXcodeで作成する手順が書かれてる思うけど、そうでもないのかな。
とりあえずMac OS X Cocoaプログラミングはオススメ。

で、ホームボタンが作れないというけれど、どこがどうわからない?
WebViewにURLを読み込ませる方法?
それとも、ボタンとアクションの接続方法?
それ以前にボタンの配置方法?
340 Name: 沙織 [sage] Date: 2006/08/07(月) 20:49:21 ID: DCAi8Zwz0 Be:
ブラウザで他のサイト行ってて ヤフーとか検索サイトに指定したホームに戻るってことです
ボタンのアクションです
もしIRCで教えてくれる人いますか?
irc.tokyo.wide.ad.jp
ポート6667
#cocoa1
です
341 Name: 名称未設定 [sage] Date: 2006/08/07(月) 21:25:05 ID: sBMKaV1t0 Be:
>>338
初心者がXcode触るとすぐ挫折しそうな...
結局、ツールの使い方に終始しそうだし。
HMDTのブラウザ作るってのも結局はコード書かずに
ツール使ってるだけだから、コード書けないんだったら
やってもあんまり意味ないよ。

Ruby、Python、Javaあたりでオブジェクト指向プログラミング
もしくはCで構造化プログラミング
が出来るようになってから
再度Xcodeを触る方が結局近道だと思う。

すぐGUIのアプリが作りたいんだったら、
REALbasicがオススメ。
IntelMac対応もアナウンス済みだし、オブジェクト指向言語。
ペイントアプリもチュートリアルで作り方が載っている。
デモ版(Standard)は1ヶ月無料で機能制限無しで使えるし、
Xcodeいきなり使うよりはこっちの方が良いんじゃない?
342 Name: 沙織 [sage] Date: 2006/08/07(月) 21:41:24 ID: DCAi8Zwz0 Be:
むむむ~ ーー;
難しそうですね Rubyってすごそうだと思いやろうとしたら英語だらけで挫折
もしかして近いうちにXcodeじゃなくてStandardってツールに移り変わるトカ?
一応、やさしいCって本持ってるんですけど Cじゃアプリ作るの難しそうなので
cocoaに来ました?GUIアプリって何ですか?
ちなみにREALbasicってのが気になります 簡単にアプリとか作れますか?
自作のアプリを作ってMypageに載せるのが夢なんです^^;

それと計算機とメモ帳とHello Wordなら作れまし
ちょっとREALbasicってのを試した見たいとおもいます
343 Name: 名称未設定 [sage] Date: 2006/08/07(月) 21:42:40 ID: vBcSDb4J0 Be:
中2からやりなお
344 Name: 名称未設定 [sage] Date: 2006/08/08(火) 04:09:12 ID: q6cb9qZB0 Be:
してきました。
345 Name: 名称未設定 [sage] Date: 2006/08/08(火) 05:03:34 ID: fVvRdJN40 Be:
>>342
なんかネタのような気がしてきたけど、
一応マジレスしておく。

Rubyは作者が日本人だから、日本語ドキュメントは充実してるよ。
Standardってなんだ?
CocoaはObjective-Cで使うことが多いけど、
Objective-CはCのスーパーセット(Cを完全に内包している)だから、
C言語を理解していないとちゃんと使えないよ。
GUIはGraphical User Interfaceの略。

REALbasicはシンプルなGUIアプリぐらいだったら簡単に作れる。
詳細はhttp://www.asciisolutions.com/products/rb/
を調べてくれ。

ってか、計算機、メモ帳作れるんなら、こんなことは周知のはずなんですがね。
REALbasicの試用期限が切れた頃にまた来てください。
346 Name: 名称未設定 [sage] Date: 2006/08/08(火) 05:10:27 ID: SxbF+QsK0 Be:
RubyCocoaの日本人作者、WWDCでスピーカーやるそうだ!!
347 Name: 名称未設定 [sage] Date: 2006/08/08(火) 05:55:42 ID: 7lJhl7tw0 Be:
>>346
それってWWDC本編じゃなくてmeetupじゃないすか?
スピーカーやるならLaurent Sansonettiだと思うんですけど。
348 Name: 名称未設定 [sage] Date: 2006/08/08(火) 14:00:45 ID: ciCw8nqe0 Be:
まずCocoaが何なのか分かってないような。
CocoaやるのにREALbasicってこれ如何に。
349 Name: 名称未設定 [sage] Date: 2006/08/08(火) 15:50:01 ID: /7Az5oTt0 Be:
>>348
Cocoaが目的じゃなくてアプリを作ることが目的だから
RBすすめてるんじゃないの?
Xcodeはある程度開発の経験と知識が必要とされるけど
RBならそれより簡単だろうし。使ったことないから知らないけど。
350 Name: 名称未設定 [sage] Date: 2006/08/08(火) 19:10:01 ID: fVvRdJN40 Be:
>>348
ttp://slashdot.jp/mac/article.pl?sid=06/01/10/1213218
REALbasicはCocoaをサポート予定ですぞ。
351 Name: 名称未設定 [] Date: 2006/08/08(火) 20:31:47 ID: /Y4oIh550 Be:
>>350
まじで!
REALbasicも使うので嬉しい!
でも、あの会社、信じられないところもあって…
352 Name: 名称未設定 [] Date: 2006/08/08(火) 20:45:37 ID: YJYH4Izt0 Be:
対話形式のコンソールアプリをXCodeからデバックするにはどうすればよいのでしょうか?Consoleからは出来ないし。。。やっぱ、Terminalから直接gdbで
やるしかないのでしょうか?
353 Name: 名称未設定 [sage] Date: 2006/08/08(火) 20:55:49 ID: c1o+lckm0 Be:
ひょっとしてスレ違いでは?
354 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:04:46 ID: WFQJp23n0 Be:
>352
Debug > Standard I/O Log
355 Name: 352 [] Date: 2006/08/08(火) 21:06:53 ID: YJYH4Izt0 Be:
>>353
確かにCocoaではないし。ただ、OSXプログラミングについての
スレってココくらいしか無い様なのでつい質問してしまいました。
スミマセン。
356 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:19:40 ID: w20yU7hd0 Be:
対話形式のコンソールアプリをCocoaで作っても不思議じゃないけどな。
357 Name: 352 [] Date: 2006/08/08(火) 21:20:31 ID: YJYH4Izt0 Be:
>>354
やた!できますた。
これで、わざわざTerminalでのデバッグを
しないですみます。ありがとうございます。
358 Name: 沙織 [sage] Date: 2006/08/08(火) 21:26:10 ID: tZNW5S5I0 Be:
Rubycocoaダウンロードしてみました!
使い方がいまいちなんですが Xcodeから開いてRubycocoaを使うんですか?
それともRubycocoaのアプリがあってそれを開くと開発できる画面にでるんですか?
Rubycocoaの開発画面の場所とか教えて下さいお願いします。
359 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:26:25 ID: sLb2u8kY0 Be:
cocoaもやっと64ビット!
カーボンを64ビットにするということはカーボンはまだまだ使えって事?
360 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:28:40 ID: c1o+lckm0 Be:
>使い方がいまいちなんですが
頭の使い方がいまいちなんですね
361 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:40:44 ID: VwKdJxFM0 Be:
>>359
Cocoaは上位フレームワークで中身はCarbonやCore何とかの集合体
362 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:44:32 ID: ciCw8nqe0 Be:
>>359
例:QuickTimeベースのQTKit
363 Name: 名称未設定 [sage] Date: 2006/08/08(火) 21:52:26 ID: 1VdsA1Ds0 Be:
Objective-C 2.0て
ハアハア
364 Name: 名称未設定 [sage] Date: 2006/08/08(火) 22:31:24 ID: w20yU7hd0 Be:
>>361
CarbonもCoreFoundationの上位レイヤーだけどね。
365 Name: 名称未設定 [sage] Date: 2006/08/08(火) 23:09:45 ID: dZaHaCpe0 Be:
誰か Objective-C 2.0 のドキュメントだけでも横流ししてくれないかな...
366 Name: 沙織 [sage] Date: 2006/08/08(火) 23:19:57 ID: tZNW5S5I0 Be:
みなさん最初は何を参考にしてcocoaを勉強しましたか?
もうcocoaはさっぱりです-_-;
Happy Macintosh Developing Time
─はじめてさわる、はじめてわかる!!の黒い方の本がxcode対応なので届くのが楽しみです♪
あと参考HPなどあったら教えてください 今の所cocoaはやっぱりさんのHPを参考にしています
367 Name: 名称未設定 [sage] Date: 2006/08/08(火) 23:26:34 ID: fVvRdJN40 Be:
>>366
http://www15.plala.or.jp/NovemberKou/
このサイトがオススメ。
Xcodeも最近のバージョン使ってるし、
手順通りにすすめていけば一通りの機能について学べる。
368 Name: 名称未設定 [sage] Date: 2006/08/08(火) 23:39:05 ID: ciCw8nqe0 Be:
Obj-C 2.0ってADCの情報?
369 Name: 名称未設定 [sage] Date: 2006/08/08(火) 23:45:25 ID: q6cb9qZB0 Be:
初心者はまずここで。
ttp://developer.apple.com/jp/documentation/japanese.html
HMDTが嫌いじゃなければ、Cocoa初級セミナーもmovである。
370 Name: 名称未設定 [sage] Date: 2006/08/08(火) 23:49:10 ID: c1o+lckm0 Be:
>>368
ttp://www.apple.com/macosx/leopard/xcode.html
371 Name: 名称未設定 [sage] Date: 2006/08/08(火) 23:50:06 ID: m0Rv7Psz0 Be:
ttp://park15.wakwak.com/~concordia/cocoa_break/index.html
日本語訳のドキュメントの数がすごいんだけど
372 Name: 名称未設定 [sage] Date: 2006/08/09(水) 02:00:48 ID: CGHsLCBf0 Be:
>>366
Cocoaは定番のヒレガス本で覚えろ。あと見てないからわからんけど、
アップルのサイトにあるCocoaセミナーの資料とか。
373 Name: 沙織 [sage] Date: 2006/08/09(水) 08:34:30 ID: 2i3vPbEv0 Be:
おはようございます♪
返信ありがとうございます!
参考にしてみます!
cocoaだけじゃダメだと思って C言語も初めてみたんですが
C言語はウインドウとかボタンとか出ないから凄い使いづらいです
色々参考にして試してみます。
374 Name: 名称未設定 [sage] Date: 2006/08/09(水) 08:39:18 ID: zE4/p92B0 Be:
>C言語はウインドウとかボタンとか出ないから凄い使いづらいです

ん~・

いや、ガンガレ
375 Name: 沙織 [sage] Date: 2006/08/09(水) 09:28:11 ID: 2i3vPbEv0 Be:
C言語なんてOSXに対応してないので
サッパリです これじゃcocoaもダメですか???
hello worldなら出来るんですが cocoaみたいにウインドウとかボタンとかテキストフィールドとか
でなくて ただhello worldって実行欄にでるだけで 難し過ぎます
OSXで参考になるC言語とかのページ知りませんか? 毎回毎回質問ですみません
376 Name: 名称未設定 [sage] Date: 2006/08/09(水) 09:41:30 ID: GBySbC5v0 Be:
>>373
>cocoaだけじゃダメだと思って C言語も
Cocoaは言語じゃないって。
Cの知識はプログラミングの常識みたいなものですが。

>C言語はウインドウとかボタンとか出ないから凄い使いづらい
いやだって言語だから。

>>375
>C言語なんてOSXに対応してない
なんでよwwww

やっぱり分かってないな。

しばらくはプログラミングの基礎を勉強した方がいい。
ここに来るのはC言語(とObjective-C)を習得した後。

難しすぎるって、、
プログラミングとは本来そういうやり方ですが。
printf() 使うだけのプログラムなんて、NSLog() だけを使った Cocoa アプリと同等だね。
377 Name: 沙織 [sage] Date: 2006/08/09(水) 09:48:23 ID: 2i3vPbEv0 Be:
ちなみに日本語版のxcodeのアップデートは無いんですか?
私はタイガー付属のxcode2.0なんです 調べてみたんですが2.4は英語だらけです
日本語版の一番新しいxcodeはどこにあるんですか?
378 Name: 名称未設定 [sage] Date: 2006/08/09(水) 09:49:34 ID: GBySbC5v0 Be:
聞いちゃいない。
これは釣りかもしれん。ハンドルからそうだし。
379 Name: 名称未設定 [sage] Date: 2006/08/09(水) 09:55:08 ID: 2i3vPbEv0 Be:
釣りじゃありません
380 Name: 名称未設定 [sage] Date: 2006/08/09(水) 10:26:59 ID: X8VcJyDN0 Be:
教えて君のコピペが見つからない。
381 Name: 名称未設定 [sage] Date: 2006/08/09(水) 11:10:12 ID: zE4/p92B0 Be:
>hello worldなら出来るんですが 
>cocoaみたいにウインドウとかボタンとかテキストフィールドとかでなくて
>ただhello worldって実行欄にでるだけで 難し過ぎます

ビジュアルがあると、やってて楽しいしね
わかるよ
382 Name: 名称未設定 [sage] Date: 2006/08/09(水) 11:14:37 ID: PBowRyDl0 Be:
とりあえず、オブジェクト配置して、接続して、

[textfield setStringValue:@"Hello World"];

はできるようになりますたアァ
383 Name: 名称未設定 [sage] Date: 2006/08/09(水) 11:46:56 ID: 2i3vPbEv0 Be:
あーもー教えて下さい本当に
電卓とhellowordならできますよ
プログラマーの人たちって猫かってる人多いですね
あとxcodeのバージョンが古いんです2.0ですけど 日本語版の新しいバージョンは無いんですかぁ?


384 Name: 名称未設定 [sage] Date: 2006/08/09(水) 11:59:09 ID: zE4/p92B0 Be:
いいね~香ばしくて
385 Name: 名称未設定 [sage] Date: 2006/08/09(水) 11:59:13 ID: CGHsLCBf0 Be:
釣り認定。
386 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:01:52 ID: X8VcJyDN0 Be:
見つけた。どうやらこれがオリジナルらしい。
長いからポインタだけ。
http://piza2.2ch.net/jisaku/kako/977/977945208.html
>383 日々精進して二度とこないように。
387 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:03:20 ID: X8VcJyDN0 Be:
ああ、もちろん教えて君はリンク先を参照したりしてはいけないぞ!
388 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:23:03 ID: 2i3vPbEv0 Be:
もーそれって酷いですよ
教えて下さい xcodeの新しいバージョン(日本語版!)お願いします
389 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:26:47 ID: Sma3ZoiR0 Be:
なんで新しいバージョンがいいの?
入門書はProjectBuilderや古いバージョンを前提としたものも多いし、
そこまで低脳なら古いバージョンの方がいいかと。
あと、英語(版)に抵抗あるならプログラミングはやめた方がいい。
390 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:34:48 ID: 2i3vPbEv0 Be:
そうやって自分がプログラミングできて凄いと思ってるから
私みたいな人を低脳呼ばわりするんです!「
酷いざです 英語に抵抗ありますよバリバリ悪いんですか????
391 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:38:18 ID: mXeMK5ZT0 Be:
正直英語に抵抗がある人は向かない。
読み書き出来なくても別にいいけど抵抗だけはどうにもならん。
392 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:46:06 ID: 8Hh7y4rC0 Be:
Cocoaでソフト開発なんて、日本語のドキュメント少ないんだから、
英語読めないと話にならんよ。
393 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:48:23 ID: UOvtnJXS0 Be:
ひょっとしてADCに登録もできないとか、、、?
Xcodeはなるべく新しい方がいいと思うな。
2.3はマルチリンガルで日本語のメニューあるし。
IBは英語で十分でしょ。
394 Name: 名称未設定 [sage] Date: 2006/08/09(水) 12:52:18 ID: 8Hh7y4rC0 Be:
どうでもいいんだけど、>>383さんが作れる電卓ってどんな電卓?
電卓って初心者が作るには結構難しいと思うんだけどね。
GUIにしろ、CUIにしろ。
395 Name: 名称未設定 [sage] Date: 2006/08/09(水) 13:03:13 ID: PBowRyDl0 Be:
isEqualToStringの使い方がわからん…。
if([W_num isEqualToString:@""]) {
とか書いてる俺は厨房ですかそうですか。

Objective-Cに抵抗ありすぎる…。英語はどうでもいいんだが。
396 Name: 名称未設定 [sage] Date: 2006/08/09(水) 13:18:40 ID: +u9elUEJ0 Be:
>>394

この演習でやってる。すごいね、ビデオの威力。
IBの操作をキャプチャー画面で巻き戻しながら見れる時代。

http://developer.apple.com/jp/documentation/japanese.html
HMDTが嫌いじゃなければ、Cocoa初級セミナーもmovである。
397 Name: 名称未設定 [sage] Date: 2006/08/09(水) 13:19:06 ID: mXeMK5ZT0 Be:
>>395
別に普通、@""でEqual取るかどうかは知らんけど、
if([W_num isEqualToString:@"HogeHoge"])
if([W_num hasPrefix:@"HogeHoge"])
if([W_num hasSuffix:@"HogeHoge"])
if([W_num length] > 0)

こんなのはよくやる。
398 Name: 名称未設定 [sage] Date: 2006/08/09(水) 13:19:43 ID: GBySbC5v0 Be:
>>395
NSString *str = @"";
if ([str isEqualToString:@""])
NSLog(@" aaaaaaaa ");

W_num が何なのかよくわからないけど。

399 Name: 名称未設定 [sage] Date: 2006/08/09(水) 13:55:16 ID: 2i3vPbEv0 Be:
>>394さん
私のつくれる電卓はcocoaセミナーさんでみた動画の電卓です
大きな計算できないけど~
400 Name: 名称未設定 [sage] Date: 2006/08/09(水) 14:00:04 ID: PBowRyDl0 Be:
>>397-398
ありがとうございます。
次のようなコードを書いてみました。

#import "CalcClass.h"

@implementation CalcClass

- (IBAction)Calc:(id)sender
{
if ([W_num length] == 0) {
[Price setStringValue:@"Test"];
}
}

@end

実は計算ツールを作っています。
W_numとPriceはテキストフィールドです。
ifで、W_numの中身の長さが0のとき、Priceの中身をTestに変えるというのを目的にしたコードなんですが、実行しても期待通り動きません。なんか勘違いしてるんだろうか…。実行ログには次のように出ます。

2006-08-09 13:58:30.437 eWarrant[11324] *** -[NSTextField length]: selector not recognized [self = 0x32c930]
401 Name: 名称未設定 [sage] Date: 2006/08/09(水) 14:06:28 ID: mXeMK5ZT0 Be:
>>400
NSTextFieldにlengthメソッドは無いと思うよと言われている

if ([[W_num stringValue] length] == 0) {
 [Price setStringValue:@"Test"];
}

こうやりたいんだろうと補完してみた
402 Name: 名称未設定 [sage] Date: 2006/08/09(水) 14:09:10 ID: PBowRyDl0 Be:
おおお、できました。
そうやって長さを測るのね…。一歩前進しました。

ありがとうございました。
403 Name: 名称未設定 [sage] Date: 2006/08/09(水) 14:11:46 ID: bkD7QxPU0 Be:
NSTextField そのものは数とか文字列じゃないよ。
あくまで入力ボックスだから。内容を取り出すには
[field stringValue] とか [field intValue] とかしないと。
404 Name: 名称未設定 [sage] Date: 2006/08/09(水) 14:16:23 ID: mXeMK5ZT0 Be:
>>402
コンパイル時にWarningでlengthって知らんとか言われてると思う。
Warningにも目を向けれ。
405 Name: 名称未設定 [sage] Date: 2006/08/11(金) 11:44:11 ID: 0dzdBJQd0 Be:
LeopardではCarbonからCocoaViewにアクセスできるらしいけど、
もし、C++でCocoaアプリ組めるって事ならば俺も開発してみたい
406 Name: さぉり [sage] Date: 2006/08/11(金) 18:24:52 ID: fJaLRu5S0 Be:
realbasicやりましたよ~
数当て作ってみました~
407 Name: 名称未設定 [sage] Date: 2006/08/11(金) 20:01:52 ID: ZhKQvd1F0 Be:
REALbasicはスレ違いなので。
408 Name: さぉり [sage] Date: 2006/08/11(金) 20:31:08 ID: fJaLRu5S0 Be:
>>407ただの報告ですよ~~

MacOSXで使える 総合開発ソフトって何がありますか?
私が知ってるのは RealbasicとcocoaとRubyとかjavaです♪
409 Name: 名称未設定 [sage] Date: 2006/08/11(金) 20:41:21 ID: FygbtXnt0 Be:
ちょっと面白かった。
410 Name: 名称未設定 [sage] Date: 2006/08/11(金) 20:43:39 ID: QdRo1RBy0 Be:
総合か。わからなくはないけど、違和感を拭えない。
411 Name: 名称未設定 [sage] Date: 2006/08/11(金) 21:41:24 ID: d4Z/ztxI0 Be:
>>408
統合開発環境だったら、
RealBasic、Xcode+InterfaceBuilder、CoreWarrior、Eclipse、NetBeans辺りかな。

ちなみに、
REALbasicは開発環境で、
Cocoaはフレームワーク、
Ruby、Javaは言語。
関係は並列じゃない。
412 Name: 名称未設定 [sage] Date: 2006/08/11(金) 21:50:12 ID: ZhKQvd1F0 Be:
(´_ゝ`)
413 Name: さぉり [sage] Date: 2006/08/11(金) 22:24:33 ID: fJaLRu5S0 Be:
がーーーん
って違ったんですか
Rubyってのは言語だったんですか、なんかRubyってソフトあってそれを開くと
Realbasicとかxcodeみたいにできると思ったのに~~
この前Rubyをインストールしたんですけど もう全く意味が分かりません
xcodeを久しぶりに使ってみたら Rubycocoaってあったんです!

そのプロジェクトから作れば良いんですよね??? なんかターミナルとか
でてきて私のOSが新しいせいか対応してなかったりするんです もう訳わかめ~♪
414 Name: さぉり [sage] Date: 2006/08/11(金) 22:28:52 ID: fJaLRu5S0 Be:
あ訂正です-
cocoa-Ruby Appulicationです
説明無しって欄に書いてあるんですけど~バグ?
あとRubyってどのように使っています? xcodeからなんですか?
ターミナルってどっかのHPに書いてあったんですけど
415 Name: 名称未設定 [sage] Date: 2006/08/11(金) 23:50:07 ID: ZjDCas8U0 Be:
M女史?
416 Name: 名称未設定 [sage] Date: 2006/08/12(土) 00:17:02 ID: VAraiMbh0 Be:
>>405
C++ の文法理解できていて Obj-C の文法理解するのに2日かかるひとなんて信じられないけど... みためちがうだけですよ。

あとは retain/release を勉強するだけ。
Leopard になって要らなくなるらしいけど。

Cocoa の C++ への binding ができたとしても、
結局大変なのはどんなクラスとどんなメンバ関数があるかを
把握することなわけだし。

417 Name: 名称未設定 [sage] Date: 2006/08/12(土) 00:37:51 ID: 2WDzMg9e0 Be:
>>413
RubyCocoaはObjective-CのかわりにRubyで書けるってもので、
言語以外はObjective-CでのCocoa開発とあまり変わらないです。
開発環境はふつうXcodeになると思います。
intel Macだと、最新の0.4.3d2じゃないと問題が起きるかもしれません。
418 Name: 名称未設定 [sage] Date: 2006/08/12(土) 01:03:20 ID: JrGqryUU0 Be:
>あとRubyってどのように使っています?
おいらはWebブラウザから使うことが多いな。
419 Name: さぉり [sage] Date: 2006/08/12(土) 07:50:09 ID: tS0rJGtG0 Be:
>>417さん
おお!参考になりました!
ありがとうございます がんばってみます♪
420 Name: 名称未設定 [sage] Date: 2006/08/12(土) 08:14:49 ID: iles6MfN0 Be:
NSAutoReleasePoolのreleaseでクラッシュするので
具体的にどのオブジェクトの破棄でクラッシュしたのかを
調べる方法をしりたいのです。(PPC G4)

レジスタでポインタが分かるらしいのですがその辺詳しく
書いたサイトがあれば教えてください。
421 Name: 名称未設定 [sage] Date: 2006/08/12(土) 12:34:50 ID: vLPn8Eft0 Be:
>>419
しかしなんでRubyCocoaなの?
初心者がRubyCocoaは茨の道ですぞ。
422 Name: 名称未設定 [sage] Date: 2006/08/12(土) 12:56:35 ID: VAraiMbh0 Be:
>>420
http://developer.apple.com/jp/technotes/tn2124.html
http://www.cocoadev.com/index.pl?DebuggingAutorelease
423 Name: 名称未設定 [sage] Date: 2006/08/12(土) 15:01:38 ID: PTuWq54O0 Be:
ん?Xcode2.4の新規プロジェクトテンプレートにRubby Cocoa Applicatio、入ってんの?
それとも...
424 Name: さぉり [sage] Date: 2006/08/12(土) 15:17:14 ID: tS0rJGtG0 Be:
>>421さんRubycocoaって難しいんですか?
ん~ いまrealbasic使ってますけど hello worldが簡単に出せて嬉しいですけど

Xcodeでcocoaアプリケーションやって hello wordの出し方が未だに分かりません
これって案外簡単そうだと思ったら  わからないんですよ
テキスト表示とかメモ帳ならわかるんですけど ポップアップみたいにhello worldって出し方が
わりません~ 誰か詳しい人教えて下さいお願いします!!!!1
425 Name: 名称未設定 [sage] Date: 2006/08/12(土) 15:28:59 ID: KKo926Ez0 Be:
>>424
うっとうしいからとりあえず口調改めるか黙ってくれ。
過去ログ読めばいくつも初心者用サイト挙げてくれてるだろうが。
426 Name: さぉり [sage] Date: 2006/08/12(土) 15:29:53 ID: tS0rJGtG0 Be:
追伸です~
cocoaセミナーさんがやってたテキストフィールドにhello worldってやるやつじゃなくて
警告のアラートみたいなやつでhello worldってでてOKって出るようにポップアップみたいなやつです
知ってる人教えて下さい!
427 Name: 名称未設定 [sage] Date: 2006/08/12(土) 15:54:13 ID: VAraiMbh0 Be:
これはもうだめかもわからんね
428 Name: 名称未設定 [sage] Date: 2006/08/12(土) 17:24:44 ID: P+3nOJiG0 Be:
>>422
さんくすです。
 実はこの辺は一通り試したんですけどね。

・・・同じコードがIntel iMacで落ちないのですよ。
エンディアンに絡むようなコードは一切書いていないのに。
もうお手上げに近いっす・・・
429 Name: 名称未設定 [sage] Date: 2006/08/12(土) 20:01:28 ID: vLPn8Eft0 Be:
これは駄目かも分からんね
430 Name: 名称未設定 [sage] Date: 2006/08/12(土) 21:59:39 ID: PTuWq54O0 Be:
NSAlert
http://www.big.or.jp/~crane/cocoa/0900_general/Panther/index.html
431 Name: 名称未設定 [sage] Date: 2006/08/13(日) 01:23:22 ID: FdvePCVG0 Be:
>>420
[NSAutoreleasePool showPools];
release前にこれ使ってみた?
432 Name: 名称未設定 [sage] Date: 2006/08/13(日) 02:04:57 ID: FdvePCVG0 Be:
ポインタ死んでたら、これもダメかも
Objのアドレスなら (gdb) p/x $r3 分かるかな
release2重バグは面倒だね

1.release少なく(retain多め)
2.その逆

1の方がObjectAllocで見れるからデバッグが楽になるとも言える

後は所々に、retainCountでAlertを入れておくとか
433 Name: 名称未設定 [sage] Date: 2006/08/13(日) 02:21:54 ID: 7Qd4gzCm0 Be:
>>432
>release2重バグは面倒だね

NSZombieはセットしても、まったく引っかからなかったので、
ObjC Objectのreleaseネタではないと判断しているのですが
NSZombieでは拾えないreleaseネタもあるのでしょうか・・・

>[NSAutoreleasePool showPools];
これ試してみます。ポインタアドレスさえ分かれば、
少なくとも何のクラスの破棄に成功して
何のクラスが失敗したのかチェックできるかも
434 Name: さぉり [sage] Date: 2006/08/14(月) 15:48:35 ID: cLR/zlEy0 Be:
ちょっと勉強してきました(笑
間違ってるかも知れませんが、C言語でGUIを使う場合はどうするんですか?
ウインドウなどボタンとかが無くて 挫折ぎみです
xcodeの場合どのプロジェクトをやれば良いんですかね~?
教えて下さいお願いします!
435 Name: さぉり [sage] Date: 2006/08/14(月) 16:06:48 ID: cLR/zlEy0 Be:
書き忘れです

GUIは理解できたんですが
GUIを使わないとアプリケーションにならないのでは???
前にC言語の本を買ったんでがターミナル上でしか出来ませんし C言語って意味ないのかなと思って
最近までやってませんでした GUIを使ってC言語はできないのでしょうか??
Standard ToolというプロジェクトでC言語を書いたんですが 変な四角い場所にHello worldとかしかでません
ウインドウとかボタンは使えないんですかね?? 
436 Name: 名称未設定 [sage] Date: 2006/08/14(月) 16:51:05 ID: KvwspFPx0 Be:
意味の無いプログラムなどプログラムではありません。

Cocoaで採用されているObjective-CはCの拡張で、Cとしても扱えます。
つまりCは基礎な訳で。

MacでGUIアプリを作るには普通はCocoaフレームワーク、Carbonフレームワークを使います。
Carbonの場合は完全にCです。
フレームワークというのは雛形の集まりようなもので、Cのstdioとかあの辺の親戚みたいなものです。

GUIアプリを作りたければXcodeでCocoaアプリケーションのテンプレートを選択すればいいです。
その辺については購入された本に書かれているはずです。

こういうのは読んでも分かる訳が無いので、適当にチュートリアルに従ってアプリケーションを作っていればそのうち分かるようになります。
437 Name: 名称未設定 [sage] Date: 2006/08/14(月) 16:51:36 ID: 7Z4XzBWQ0 Be:
>>434
おまえ、いつまでここにいるんだ?
頭悪いなら悪い頭なりに、金払って人に聞けや。
438 Name: 名称未設定 [sage] Date: 2006/08/14(月) 18:03:43 ID: EyEI2A/50 Be:
まあまあ。ここは頑張って育ててみるって気持ちで。

>>434
>xcodeの場合どのプロジェクトをやれば良いんですかね~?

ここから始めてみたら。記事は少し古いが、丁寧に書いてある。
>ttp://www.big.or.jp/~crane/cocoa/
入門編にある、Cocoaって何?とかはじめてのCocoaアプリとか。

//

ちゃんとやるなら、この辺をなめるのが最初でしょう。

日本語。cocoaとは。
>ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/index.html
日本語。Objective-C プログラミング言語。
>ttp://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/index.html
日本語。アプリケーションのアーキテクチャ。
>ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/AppArchitecture/index.html

英語。Cocoa Application Tutorial Using Objective-C。
>ttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/index.html#//apple_ref/doc/uid/TP40000863
439 Name: さぉり [sage] Date: 2006/08/14(月) 18:12:15 ID: cLR/zlEy0 Be:
>>436さん
おおおおおおおお!!!!!!!!!!
ありがとうございます!
C言語でできるcarbonで試してみます!

>>437さん 私が馬鹿のせいですみません

>>438さん リンクを参考にしてがんばってみます!
440 Name: 名称未設定 [sage] Date: 2006/08/14(月) 18:19:43 ID: 7Z4XzBWQ0 Be:
ぉいぉいw
441 Name: 名称未設定 [sage] Date: 2006/08/14(月) 18:46:52 ID: KSAM52MN0 Be:
釣りですよね?
442 Name: 名称未設定 [sage] Date: 2006/08/14(月) 19:20:33 ID: 5dgR1ZBO0 Be:
>>441
ここまで来ると多分釣りだろうな。
443 Name: さぉり [sage] Date: 2006/08/14(月) 19:57:17 ID: cLR/zlEy0 Be:
決して釣りではありません
444 Name: 名称未設定 [sage] Date: 2006/08/14(月) 20:47:34 ID: +b84nbIM0 Be:
http://kunekune.breeze.jp/up/uploader/src/up0039.m
HelloWorldのサンプルです。
良かったらどうぞ。
445 Name: 名称未設定 [sage] Date: 2006/08/14(月) 21:48:11 ID: sCfBc2eq0 Be:
皮先にそっくりだ。
446 Name: 名称未設定 [sage] Date: 2006/08/14(月) 22:30:27 ID: KvwspFPx0 Be:
carbonはスレ違いなのでもう来ないでくださいね。
447 Name: 名称未設定 [sage] Date: 2006/08/14(月) 22:39:10 ID: dT2+upkY0 Be:
>>421
>初心者がRubyCocoaは茨の道ですぞ。

私はまだソフトをひとつもつくったことのない、Macプログラミング入門希望者です。
ShellScriptやAppleScript、JavaScriptなどのスクリプト言語に触れた経験はあります。
さいきんRubyってよく聞くし、開発者が日本人てことなのでできればひいきにしたいし、
ですからCの勉強をしてそのあとObject-Cを勉強してCocoaで開発…って手順をたどるんじゃなくて、
Rubyを勉強してRubyCocoaでCocoaに慣れてからCの勉強をするっていう手もあるかなあ…と思ってたんですけど、
やめたほうがいいんでしょうか?
448 Name: 名称未設定 [sage] Date: 2006/08/14(月) 23:04:11 ID: 7Z4XzBWQ0 Be:
>>447
それを人に聞くようならやめとけ。
449 Name: 名称未設定 [sage] Date: 2006/08/15(火) 00:44:55 ID: mFg+S7K20 Be:
>>448
そうですか。では自分で試してみます。ありがとうございました。
450 Name: 名称未設定 [sage] Date: 2006/08/15(火) 01:28:51 ID: nmfI+FqP0 Be:
>>447
正直言って、そういう話をしている段階で RubyCocoa に手を出すのは
やめたほうがいい気がする。絶対的に解説ドキュメントの数がすくないから。

ああいうのは、Ruby もしってて、Obj-C による Cocoa もしってるけど、
ロジックをRuby で書くほうが簡単だな~と思っている人が使うものだと思われ。
初心者は大人しく Obj-C やっていればいいとおもう。
GUI の簡単なソフトを作るぐらいなら C の勉強を
Obj-C のまえにする必要もないとおもうし...
451 Name: 名称未設定 [sage] Date: 2006/08/15(火) 01:58:06 ID: gJMxw5RK0 Be:
なんか最近、王道が示されているにもかかわらず、妙にそれを避けたがって
地雷原につっぱしっていくような初心者多いな。夏だから?
452 Name: 名称未設定 [sage] Date: 2006/08/15(火) 06:47:43 ID: SkScPwba0 Be:
>>451
王道を覗いてみて挫折→もっと楽な方法ないんですか
だとおもう。

Cocoa+objCはよくできてると思う。2~3冊本を読めばそれなりなプログラムは書けるはず。
その最低限の努力もせずに他の方法を探そうなんてやつはなにをやっても(ry
453 Name: 名称未設定 [sage] Date: 2006/08/15(火) 07:28:34 ID: d+K0uu720 Be:
>>452
>Cocoa+objCはよくできてると思う。2~3冊本を読めばそれなりなプログラムは書けるはず。

そうだよね。かくいう自分もCはポインタで一度挫折したのに、
Obj-Cのおかげでそれなりに書けるようになったし。
最近ようやくCのポインタとハンドルが理解できてきた(笑)
454 Name: 名称未設定 [sage] Date: 2006/08/15(火) 08:29:27 ID: sv8HWqoj0 Be:
ObjC2のGCで、alloc/releaseを知らないCocoa Programerが誕生するんだろうね。
455 Name: 名称未設定 [] Date: 2006/08/15(火) 10:57:08 ID: l+6uFOzh0 Be:
>>454
>alloc/release
細かいけど、retain/releaseでないの?
ああ、でもallocが別のものに変わる可能性もあるか。
mkinoさんところにGCが動いてるとretain/releaseを無視すると書いてあるね。

オブジェクト指向をそれなりに理解したのは旧萩原本だったなぁ。
456 Name: 名称未設定 [sage] Date: 2006/08/15(火) 13:02:16 ID: is+0Grl40 Be:
objective-Cをさわったことはあんまりないから質問なんだけど、
Xcodeのビルド設定でGCを有効にした場合ってどうなの?
objective-C2でのGCサポートはもっと効率が良くなるって理解で良いのかしら。
457 Name: 名称未設定 [sage] Date: 2006/08/15(火) 19:05:33 ID: bteL8gKA0 Be:
Mac OS Xで素敵なアプリをつくる、
その目的のための第一歩として、e-bookoffで「入門Unix for Mac OS X」という本を買ってみましたよ(`・ω・´)
458 Name: 名称未設定 [sage] Date: 2006/08/15(火) 19:30:20 ID: XWdLcSnh0 Be:
>>456
あるだけで動いてなかった
みたいな感じだったはず
459 Name: 447 [sage] Date: 2006/08/15(火) 20:45:01 ID: 61dpP6B40 Be:
>>450
丁寧な説明をいただきありがとうございました。
Macアプリの開発用言語としてRubyを勉強するのはやめておきます。
>>450,451,452,453
Objectiv-Cを勉強してみます。アドバイスありがとうございました。
460 Name: 名称未設定 [sage] Date: 2006/08/15(火) 21:37:59 ID: 7ow4til30 Be:
>>457
第一歩としては失敗だと思うよ。


461 Name: 名称未設定 [sage] Date: 2006/08/15(火) 22:08:02 ID: tfcznGkz0 Be:
>>475
決して失敗ではないと思うぞ。
学んだ事は必ず役に立つ。
462 Name: 名称未設定 [sage] Date: 2006/08/15(火) 22:44:37 ID: pv3TzfFY0 Be:
素敵なアプリ、の定義によるけれど、
第一歩としては「……微妙だ」と言わざるを得ないかも。
463 Name: 名称未設定 [sage] Date: 2006/08/15(火) 23:03:29 ID: rDvH/jZE0 Be:
「入門Unix for Mac OS X」
という本自体があんま良くないんじゃない?
464 Name: 名称未設定 [sage] Date: 2006/08/15(火) 23:27:41 ID: gJMxw5RK0 Be:
つーか、Cocoaの何たるかくらい知ってからここに書きこめ、と。
Cocoaはさっぱり、というレベルでは全く話にならんよ。いくら初心者と言えども。
465 Name: 名称未設定 [sage] Date: 2006/08/15(火) 23:36:19 ID: 1PytX61m0 Be:
ここってCocoa屋の雑談兼質問スレだと思っていたよ。
466 Name: 名称未設定 [sage] Date: 2006/08/15(火) 23:37:40 ID: rDvH/jZE0 Be:
このスレタイは詐欺だ!
467 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:41:05 ID: F+IShryV0 Be:
図書館で「はじめてのMac OS X Cocoa プログラミング」中村正弘氏著という
本を借りてきた
まだ、Project Builderのころの本だが、意外とわかりやすく書いている
今REALbasicで家計簿ソフトを作っているが、Xcodeに移行しようか
迷っている
ただ、NSで始まるオブジェクトのリファレンスとしてわかりやすいのは
ないでしょうか? Xcodeのヘルプは少々分かりづらい
468 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:42:40 ID: JYXEdUZ10 Be:
http://www.oomori.com/cocoafw/index.html
俺が知っている中ではいちばん分かり易い。
469 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:44:53 ID: 4AfwvBq50 Be:
昔はCocoaBrowserを重宝して使ってたなぁ。今でも使えるのでは?
470 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:45:04 ID: GvSFyl1Z0 Be:
>>447
初心者だったらRubyCocoaよりAppleScriptの方がオススメだけどね。
英語みたいな構文に拒否反応が出ないのなら。
471 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:53:05 ID: JYXEdUZ10 Be:
AppleScriptは拒否反応出る上に、
どうやって構文を勉強すればいいのやら
よくわからないと言う・・・

あるアプリケーションに対して、
どういったことを命令できるのか
まずそのあたりから既にorz
472 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:54:22 ID: JYXEdUZ10 Be:
あ、ちなみに俺は、>>447じゃないので、念のため。
473 Name: 名称未設定 [sage] Date: 2006/08/16(水) 00:55:15 ID: F+IShryV0 Be:
>>468
サンクスです。なかなか良さそうですね。
でも、これをみてもチェックボックスを動的にチェックしたりすることが
できない・・・
474 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:13:55 ID: F+IShryV0 Be:
>>473
できました・・・アクションが外れていた
475 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:20:04 ID: F+IShryV0 Be:
NSオブジェクトのメソッドをマスターしたら意外と
XcodeでCocoaアプリ作るのってREALbasicでアプリ作るのと
あんまり変わらないほど簡単かもしれない・・・

ちなみに、木下氏著「Happy Mac・・・」の本だが初心者向けと言うことで
買ってきたが、コントローラークラスとアウトレット、インスタンス云々の
説明が中途半端、というよりあの説明で分からせるようにするって強引じゃないか
と思うような内容でしたね
そのあたりが分かればいい本かもしれないが、初心者には難しすぎるかも
476 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:26:09 ID: rip/ct0p0 Be:
>>468
ここ便利だよな。
今もXcodeと並べてた。
477 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:31:49 ID: dxhnyJwO0 Be:
oomori.com は最近は見に行かなくなったな。
挙げられてる使用例が適当すぎて実際の問題解決の役に立たないから。
478 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:39:08 ID: 7j9EyMou0 Be:
>>477
多分実際に使ったこと無いんだと思う。
でもサンプルっぽいのは書きたい。
とりあえず、何か書いてみる。

で、出来たのがあれだと思う。
無駄に何か付け加えずに、日本語訳に徹したほうがいいと思う。
479 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:40:30 ID: /krMgAx40 Be:
日本語のドキュメントが少なすぎるから、ないよりはまし。
480 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:42:40 ID: 4AfwvBq50 Be:
ずいぶん増えたと思うけどなぁ。。。
481 Name: 名称未設定 [sage] Date: 2006/08/16(水) 01:52:19 ID: /krMgAx40 Be:
oomori.com は、確かに間違った作例も多いが、API の機能はわかったけど
実際どう使っていいのかわからないときのヒントにはなる。
ここにはほんとに感謝している。
っていうか、間違いを見つけたら、ここにメールで知らせるとかするべきじゃないのか?
482 Name: 70 [sage] Date: 2006/08/16(水) 02:41:29 ID: DgG9EDFV0 Be:
4つめのリンク先は、ちょっと敷き居が高いかもしれんけど、
プログラミングの学習についてのヒントとかチュートリアルもあるし、
英語の学習法についてのアドバイスとかもあるのでおすすめ。

http://homepage.mac.com/mkino2/cocoaProg/index.html
http://www.big.or.jp/~crane/cocoa/cocoaNote/cocoaNote.html
http://numata.aquasky.jp/myweb/cocoamemo/
http://ohzawa-lab.bpe.es.osaka-u.ac.jp/resources.html
483 Name: 482 [sage] Date: 2006/08/16(水) 02:42:10 ID: DgG9EDFV0 Be:
ありゃ、何か名前ミスった。
すみません。
484 Name: 名称未設定 [] Date: 2006/08/16(水) 09:36:48 ID: XBRNwoP90 Be:
>>469
ドキュメントの階層構造が変わったのでだめみたい。
485 Name: 名称未設定 [sage] Date: 2006/08/16(水) 11:53:56 ID: DgG9EDFV0 Be:
>>469

Xcode1.5と2.0では使えるっぽいです。

http://numata.aquasky.jp/myweb/cocoabrowser/
486 Name: 名称未設定 [] Date: 2006/08/17(木) 00:46:04 ID: HF1Y3t/e0 Be:
>>408
>MacOSXで使える 総合開発ソフトって何がありますか?
VisualWorks
487 Name: 名称未設定 [sage] Date: 2006/08/17(木) 00:57:20 ID: OaNUe9490 Be:
squeakもあるね。
488 Name: 名称未設定 [sage] Date: 2006/08/17(木) 01:02:37 ID: nE3g0OzH0 Be:
蒸し返さなくていいよ
489 Name: 名称未設定 [sage] Date: 2006/08/17(木) 14:57:02 ID: 0k26lInq0 Be:
CocoaからXML-RPCを簡単に扱う方法ってありますか?Pantherで。
490 Name: 名称未設定 [sage] Date: 2006/08/17(木) 17:15:36 ID: F34tqFgq0 Be:
>>489
http://developer.apple.com/documentation/Networking/Conceptual/UsingWebservices/index.html

http://www.cocoadev.com/index.pl?WebServicesCore

http://ranchero.com/cocoa/xmlrpc/
491 Name: 名称未設定 [sage] Date: 2006/08/18(金) 13:19:05 ID: +zBtZn7a0 Be:
本題から離れて久しいネタを引っ張ってスミマセン。

>>486,487
OS X で Smalltalk…ということなら、Ambrai Smalltalk のほうがいいかも。Cocoa も叩けるし。

http://www.ambrai.com/smalltalk/index.html

ちなみに Smalltalk とは、Objective-C の [ ] の中の人みたいなものです。w 念のため。

VisualWorks はともかく、Squeak は ALTO OS(aka、暫定ダイナブック環境)臭が強いから、
なにげに統合化開発環境として捉えて接すると、勝手が違ってはまるので要注意、です。
492 Name: 名称未設定 [sage] Date: 2006/08/18(金) 15:18:15 ID: k5Wqgasy0 BE:93823632-2BP(100) Be:
>>490
サンクス
そんなフレームワークがあったんか。
493 Name: 名称未設定 [sage] Date: 2006/08/18(金) 15:20:21 ID: plOn4YBB0 Be:
というか Objective-C の [object message] というのが Smalltalk から取ったんですもんね。
494 Name: 名称未設定 [sage] Date: 2006/08/18(金) 15:43:50 ID: +zBtZn7a0 Be:
おっしゃるとおりで。ちなみに Objective-C は、Smalltalk のソースを C コンパイラに通すための
プリプロセッサとしてスタートした処理系です。
495 Name: 名称未設定 [sage] Date: 2006/08/18(金) 19:05:20 ID: nuoKJn610 Be:
このAmbraiってバイナリは作れないのかな?
496 Name: 名称未設定 [sage] Date: 2006/08/18(金) 20:07:45 ID: +zBtZn7a0 Be:
>>495
たぶん仕組み的に無理じゃまいかと。ラピッドプロトタイピング向きですね。
497 Name: 名称未設定 [sage] Date: 2006/08/18(金) 20:39:54 ID: PrNX8Xf70 Be:
イメージがパッケージ内に入ってるんだから、適切なスナップショットとって
パッケージのアイコンだけ入れ替えてしまえばオールオッケー。

しかし、はやく正式版にならんもんかな。
498 Name: 名称未設定 [sage] Date: 2006/08/19(土) 11:53:02 ID: mXtzwdaN0 Be:
アプリケーションAからバンドルBを読み込み、Bからアプリのメインメニューをいじりたいのですが、
Bからメインメニューを取得するにはどうすればいいんでしょうか。

[NSApp mainMenu]はnilが返ってきます。
499 Name: 名称未設定 [sage] Date: 2006/08/19(土) 14:23:08 ID: vDvq9ja70 Be:
>>498
[NSApp mainMenu] でとれるけど。
メニューがロードされる前に呼んでません?
500 Name: 名称未設定 [sage] Date: 2006/08/19(土) 15:32:56 ID: VuuOmoYh0 Be:
うむ、サンプル書いてみたが
[NSApp mainMenu]で逝ける。
501 Name: (・∀・) [sage] Date: 2006/08/19(土) 15:44:50 ID: i16PeY7V0 Be:

ttp://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/Articles/XMLPListsTask.html#//apple_ref/doc/uid/20001014-CJBIDCEF

この記事(2番目のサンプルコード)を参考に、
iTunesMusicLibrary.xmlをグローバルに置いた id plist に
変換しました。で、計算ボタンを押したら曲数を求めるように
別メソッドで下の行を実行。
[plist count];
でも、Bad Accessで落ちました。試行錯誤して変換時に
XmlRoot = [plist copy];
として
[XmlRoot count];
とするとうまく動作するけど、なんでかわかりません。なんで?
502 Name: 名称未設定 [sage] Date: 2006/08/19(土) 15:46:44 ID: vDvq9ja70 Be:
>>501
retain してないから。
503 Name: 名称未設定 [sage] Date: 2006/08/19(土) 19:10:26 ID: mXtzwdaN0 Be:
>>499-500
レスサンクスです。
おっしゃる通り、メニューがロードされてませんでした。
あとから[NSApp mainMenu]を読んだらうまくいきました。
504 Name: (・∀・) [sage] Date: 2006/08/20(日) 05:43:24 ID: 1aKnCZWS0 Be:
>>502
やっとこの辺理解できた。javaとはちと違うのね。
505 Name: さぉり [sage] Date: 2006/08/20(日) 19:43:13 ID: 6ZDqLh560 Be:
こんばんわ
最近AppleScriptでcocoaアプリ作ってます
AppleScriptの資料がOSX用のがあんまりありません
やっぱ調べるよりかも本見た方が良いと気づきました Finderくらいでしか使えません
"Sfari"とか"mail"をターゲットにして使いたいんですが OSX用の資料がありません
オブジェクトCは難しいとAppleScriptゼンマイびゅんびゅんに書いてありました
私みたいな初心者はAppleScriptの資料はどこで手に入れればいいですか?
参考URLなど知っていたらお願いします OS9の資料はしってるので
できればOSXとかの資料があったらお願いします
506 Name: 名称未設定 [sage] Date: 2006/08/20(日) 20:52:49 ID: Yi61OdaT0 Be:
個人的な意見ですが、
AppleScript より Obj-C が難しいと思う人
よりも
Obj-C より AppleScript が難しいと思う人
のほうが全然おおいと思います

僕はその AppleScriptびゅんびゅん本を立ち読みして、
Obj-C はむずかしいというコメントをよんで、
その本にのってる AppleScript の駆使の仕方の方が
よほど難しいと思いました

とにかく、人のこれまでの経験によってどっちが難しく思うかは
ちがってくるとおもいますので、あんまり人がどっちが難しいと
いっているかを信用しないほうがいいと思います

事実としては、Cocoa の文献は java より AppleScript より
断然 Obj-C でかいたものがおおいということです
だから、なにもやったことがないひとが Cocoa をやるなら
Obj-C がおすすめです。
507 Name: 名称未設定 [sage] Date: 2006/08/20(日) 21:39:23 ID: FgkWCBc40 Be:
>>505
その本と、Appleのデベロッパのページと、スクリプトエディタのマニュアル、
これでも十分な資料になると思いますが。
つかAppleScriptはスレ違いなので。AppleScript Studioの場合でも、CocoaのAPIに関すること以外はスレ違いです。
508 Name: 名称未設定 [sage] Date: 2006/08/20(日) 21:42:17 ID: X4FvPwfa0 Be:
>>505
「AppleScriptでゼンマイびゅんびゅん」の著者は
「純粋 Mac OS X 批判 序説」って文章書いて笑いものになった人だよ。
Objective-C とか何も知らんで難しいと主張してるんだろう。
509 Name: 名称未設定 [sage] Date: 2006/08/20(日) 22:35:24 ID: BHmbZrcR0 Be:
Core Dataのモデル作成で、日付型の属性の初期値に
add:されたときの時刻を設定する方法ってありますか?
コーディングしなければならないんでしょうか。
510 Name: 名称未設定 [sage] Date: 2006/08/20(日) 22:43:07 ID: DbZGl35Y0 Be:
コーディングすればいいじゃない
511 Name: 名称未設定 [sage] Date: 2006/08/20(日) 23:55:46 ID: sUsNHhvY0 Be:
>>505
AppleScriptができる人はObjective-Cも抵抗なく覚えられると思うよ。
512 Name: 名称未設定 [sage] Date: 2006/08/21(月) 00:36:43 ID: wLzTNpZj0 Be:
>>509
Core Dataの「デフォルト値」にいろいろ入れて試してたら、
"yesterday" とか "next month"とか書けるんですね。ちょっとおどろいた。
"day after tomorrow"は"tomorrow"となぜか同じでした。解釈はかなりテキトーっぽい。

時刻はコード書かないとどうにもだめみたい。書くならこんなで。
ttp://www.cocoabuilder.com/archive/message/cocoa/2006/8/13/169400

513 Name: 名称未設定 [sage] Date: 2006/08/21(月) 02:30:29 ID: kdxW7AM/0 Be:
>>512
試してみたら、todayとかやると、たしかに今日の日付がデフォルト値になった。
しかし日付が変わってもこのデフォルト値は固定されたまま変わらない罠。
コンパイル時の時刻が決め打ちされる模様です。
514 Name: 名称未設定 [sage] Date: 2006/08/21(月) 19:11:31 ID: Irj38qLy0 Be:
>>513
なんだ、それ。
515 Name: 512 [sage] Date: 2006/08/21(月) 21:50:11 ID: wLzTNpZj0 Be:
>>513
あー、本当だ。
.momファイルをProperty List Editorでのぞいてみたところ、それっぽい値が入ってますね。
デフォルト値に"today"や"now"としたときは、モデルのコンパイル時に決定されて
空にしたときは、現在日時(もしくはアプリケーション起動時?)の値になるみたいですね。
そんな機能なら、ないほうがマシじゃ?と思わずにはいられない。
516 Name: 509 [sage] Date: 2006/08/21(月) 22:40:50 ID: TDc19ztN0 Be:
>>512
ポインタどうもです。
時間が出来たら試してみます。
517 Name: 名称未設定 [sage] Date: 2006/08/22(火) 00:33:54 ID: XDjQOoTG0 Be:
誰か >>340 に突してくれよwwwww


518 Name: 名称未設定 [sage] Date: 2006/08/22(火) 00:34:27 ID: XDjQOoTG0 Be:
微妙に誤爆した。
519 Name: 447 [sage] Date: 2006/08/22(火) 00:58:40 ID: Uw9AXgI00 Be:
>>470
遅レスになってしまいましたが、ご助言ありがとうございます。
AppleScript はまだ勉強しかけなので、引き続き勉強します!
520 Name: さぉり [sage] Date: 2006/08/22(火) 12:30:55 ID: by1ec28k0 Be:
C言語とかはスレ違いって言われたので
他のスレッドで質問したら、こんな可愛らしい返信が来ました

http://pc7.2ch.net/test/read.cgi/mac/1130776036/701-800
734 :名称未設定 :2006/08/22(火) 10:21:55 ID:c0r0kx/K0
おまいら、「Cocoaはさっぱり」とか他のスレを読んでないのか?
スルーしろよ

あとまで付けてたんですね笑
521 Name: 名称未設定 [sage] Date: 2006/08/22(火) 14:02:35 ID: og3eQWrl0 Be:
>>520
つーか、ここに貼りついてる奴は
・Xcode
・Macでプログラミング
この2つも毎日チェックしてると思うが。ただでさえ日本語のリソース少ないし。
522 Name: 名称未設定 [sage] Date: 2006/08/22(火) 16:49:18 ID: m0Q9on4h0 Be:
>>520
自分が笑う前に、笑われているということに気付けw
523 Name: 名称未設定 [sage] Date: 2006/08/22(火) 20:16:51 ID: k46fJkGm0 Be:
流れブッた切って悪いが、Objective-C 2.0で追加されるSyntaxってどんなの?
524 Name: 名称未設定 [sage] Date: 2006/08/22(火) 20:53:45 ID: mBX4qr6e0 Be:
WebViewを使っております。
Safariのバージョンによって、表示するコンテンツを切り替えたいのですが、可能ですか?
(1.x系 なのか2.x系なのかを判別したい)
525 Name: 名称未設定 [sage] Date: 2006/08/22(火) 20:56:13 ID: Hd9q/6n00 Be:
>>523
まだ公開情報じゃないんじゃないのかな?
とりあえず
ttp://lists.apple.com/archives/Objc-language/2006/Aug/msg00039.html
ttp://lists.apple.com/archives/Objc-language/2006/Aug/msg00020.html
あたりで議論されてるっぽい。ナナメ読みなので間違ってたらすまぬ。
526 Name: 名称未設定 [sage] Date: 2006/08/22(火) 21:18:08 ID: eXuYgJCJ0 Be:
>>524
[[NSBundle bundleForClass:[WebView class]]objectForInfoDictionaryKey:(id)kCFBundleVersionKey];
527 Name: 名称未設定 [sage] Date: 2006/08/22(火) 21:26:33 ID: cvt6s4Yk0 Be:
まだ日本語のリソース少ないほうなんだろうけど
NeXTAnswersとリファレンスを一生懸命見ながらやっていた頃に比べたら
ずいぶん改善しているとしみじみ感じるのであった
プログラマもかなり増えてるだろうしね
528 Name: 524 [sage] Date: 2006/08/22(火) 22:06:30 ID: mBX4qr6e0 Be:
>>526
スペシャルサンクスです!

AppleWebKit?のバージョンが取得できました。
10.2.9 だと 「85.7」
10.4.6 だと 「418」

下のURLを見ると、バージョンが区別できそうです。
ttp://www.openspc2.org/userAgent/

ありがとー
529 Name: 名称未設定 [sage] Date: 2006/08/22(火) 22:14:31 ID: RHa+3uwI0 Be:
NSApplicationのデリゲートにならずにアプリケーションが起動したことを知る方法ってありますか?
530 Name: 名称未設定 [sage] Date: 2006/08/22(火) 22:41:07 ID: Hd9q/6n00 Be:
>>529
NSApplicationの通知NSApplicationDidFinishLaunchingNotificationを使う。
531 Name: 名称未設定 [] Date: 2006/08/25(金) 14:00:55 ID: 8hO13xNX0 Be:
NSTableViewで複数行を選択して、メニューからコピー(cmd+c)で
データをペーストボードにしたいのだが、
どうすりゃ、NSTableViewでFirst Responderからのメッセージを
受け取るのかわかりません。
それ以前に、コピー(NSMenuItem)をenableする方法がわかりません。
教えて下さい。
532 Name: 名称未設定 [sage] Date: 2006/08/25(金) 14:41:22 ID: rsDOHAV+0 Be:
その辺は全部自分で作って下さい。
533 Name: 名称未設定 [sage] Date: 2006/08/26(土) 16:40:41 ID: 0gSKSh0z0 Be:
[NSString stringWithContentsOfURL:]の引数に
NSURLのインスタンスを渡してもnilが返ってきます。
URLはちゃんとリソースが存在する有効なものです。
どうやったらURLの指すリソースを取得できるでしょうか
534 Name: 名称未設定 [sage] Date: 2006/08/26(土) 16:45:52 ID: kVVPTDMe0 Be:
リソースのエンコーディングが UTF-8 じゃなかったので NSString として解釈できなかったんだろう。
535 Name: 名称未設定 [sage] Date: 2006/08/26(土) 16:45:59 ID: j2DO6xC30 Be:
+stringWithContentsOfURL:encoding:error:
536 Name: 名称未設定 [sage] Date: 2006/08/26(土) 17:15:01 ID: 0gSKSh0z0 Be:
>>534-535
レスありがとうございます。
+stringWithContentsOfURL:ってUTF-8じゃないとダメだったんですね
>>535さんの教えてくださったstringWithContentsOfURL:encoding:error:を使ってみようと思いましたが、
セレクタが見つからず、調べてみたらTiger専用だったんですね。

調べる際にstringWithData:IANAencodingName:を見つけましたので、こちらを使おうと思います。
537 Name: 名称未設定 [sage] Date: 2006/08/26(土) 17:32:02 ID: 0gSKSh0z0 Be:
ええと、もう1回質問です。
[NSString stringWithData:IANAencodingName:]を使おうと思ったんですが、
最初の引数に [NSData dataWithContentsOfURL:]の返り値を、
2つ目の引数にCFStringConvertEncodingToIANACharSetName(kCFStringEncodingShiftJIS)を渡したんですが、
またnilが返ってきてしまいます。
1つ目の引数のNSDataはnilではありませんし、リソースはShift_JISです。
どうすればいいでしょうか。
538 Name: 名称未設定 [sage] Date: 2006/08/26(土) 17:48:22 ID: aaqAlILm0 Be:
>>537
stringWithData:IANAencodingName:って、私がカテゴリで実装したメソッドのような希ガス。

その用途なら普通に、NSDataにファイルを読み込んだ後
NSStringのinitWithData:encoding:でいいんじゃないですか?
539 Name: 名称未設定 [sage] Date: 2006/08/26(土) 18:02:14 ID: 0gSKSh0z0 Be:
うわ、めっちゃ恥ずかしい。
Xcodeのコード補完で出てきたから、ついFoundationで用意されてるメソッドかと思っちゃいました…
そういやT2のフレームワークimportしてました。
素直に-initWithString:encoding:使って吊ってきます
540 Name: さぉり [sage] Date: 2006/08/26(土) 18:12:13 ID: MK0Pl2a10 Be:
carbonって将来性ありますか?
いまcarbon使ったんですけどC言語少し覚えたのが無駄なように感じました
carbonでボタンを設置したんですけど ボタンに命令するやつがcocoaと違って
ボタンに命令するコードを書く所までもいけず挫折です
将来性があるのはcarbon、cocoaどっちが良いんですか??
541 Name: 名称未設定 [sage] Date: 2006/08/26(土) 19:21:50 ID: XmSBUEIp0 Be:
>>540
carbonです。
542 Name: 名称未設定 [sage] Date: 2006/08/26(土) 19:36:32 ID: j7UicjCP0 Be:
将来性とかそういう事で判断するからいつまでたっても先へ進まない。
AppleScriptやREALbasicはどうなったのよ?
つか最初はRubyCocoaだっただろ。
543 Name: 名称未設定 [sage] Date: 2006/08/26(土) 19:56:23 ID: t8twS9k+0 Be:
>>542
もちつけ。相手はさぉりだ。
544 Name: 名称未設定 [sage] Date: 2006/08/26(土) 20:15:26 ID: qPXAHq+G0 Be:
さぉりにレスすんな
545 Name: 名称未設定 [sage] Date: 2006/08/26(土) 21:09:16 ID: Yveif2/70 Be:
>>540

carbonっていうか、さぉりさんはtanpon派ですか?
546 Name: 名称未設定 [sage] Date: 2006/08/26(土) 21:53:00 ID: t8twS9k+0 Be:
男は黙ってタンポン
547 Name: さぉり [sage] Date: 2006/08/26(土) 22:05:15 ID: MK0Pl2a10 Be:
tanpon?
C言語でアプリを作りたいんですが carbonで作る事はわかりました
ですがあまりにもcarbonの日本語の資料が無くてわかりません
一応applescriptもやってます REALBASICはコードとか載ってなかったのでやめました
Rubycocoaもよくわからないのでやめました
C言語の本をもってたのでもったいないのでcarbonをやりたいと思っています!
どなたか資料のページなど教えて下さい 
548 Name: 名称未設定 [sage] Date: 2006/08/26(土) 22:07:26 ID: j7UicjCP0 Be:
「教えて下さい」

教える

「分かりません」

以後ループ
549 Name: 名称未設定 [sage] Date: 2006/08/26(土) 22:45:17 ID: ylh9tn/c0 Be:
意外に投げてない気もする。。。
550 Name: 名称未設定 [sage] Date: 2006/08/26(土) 22:58:32 ID: O7i7+5r50 Be:
俺がプログラミングを始めた十代の中頃
やる気(妄想)はあったが、分からない事が多すぎて
悶々としてたのを思い出した。

ありがとう、そしてさようなら。
551 Name: 名称未設定 [sage] Date: 2006/08/26(土) 23:45:20 ID: WGYI33BS0 Be:
こいつ馬鹿が釣れるまで続けるつもりなの?
552 Name: 名称未設定 [] Date: 2006/08/27(日) 00:35:53 ID: gnWPIlCo0 Be:
どう考えても男だもんなあ。
プログラム書く人、真面目な人が多いからなあ。
寂しいなあ。
553 Name: 名称未設定 [] Date: 2006/08/27(日) 01:15:59 ID: m15rKJfZ0 Be:
なんかやってみたけどインターフェースビルダー使って作ったけどプログラムの中身書けない、さっぱりわからんなこりゃ。
554 Name: 名称未設定 [sage] Date: 2006/08/27(日) 03:14:18 ID: VYv6VC4Y0 Be:
そんなときはヒレガス本だ
555 Name: (・∀・) [sage] Date: 2006/08/27(日) 03:14:51 ID: pN8geoEQ0 Be:
ちょっとくらい痛くても、コテ半をいじめないで><
556 Name: 名称未設定 [sage] Date: 2006/08/27(日) 04:21:49 ID: epoYzi9f0 Be:
むしろいじめられてる気分なんだけど。。。
557 Name: 名称未設定 [sage] Date: 2006/08/27(日) 05:10:09 ID: jj+sKaiZ0 Be:
サンプルも多いんだし、Cocoaでやればいいのにね。
558 Name: 名称未設定 [sage] Date: 2006/08/27(日) 05:36:08 ID: f7GDgJoF0 Be:
553だけど少し調べてボタン押したら文字が出るだけのアプリ出来た。
クラスって材料の集まりでそれを拾って組み立てる感覚で正しい?
559 Name: 名称未設定 [sage] Date: 2006/08/27(日) 05:45:55 ID: f8Cf9au20 Be:
それなりに正しい
560 Name: 名称未設定 [sage] Date: 2006/08/27(日) 08:53:35 ID: Ct19YdLp0 Be:
スレ違いかも知れませんが。。。
XCodeを使って、1つのプロジェクトでクライアントアプリとサーバアプリの
2つをターゲットにしました。この時、クライアントとサーバの両方を同時に
起動してデバッグしたいのですが、どうもXCodeではプロジェクト単位に
1つのアプリが起動するようで、どちらか1つしかデバッグできません。
両方同時にデバックする方法ってあるのでしょうか?
(プロジェクトを分けるしかない?)
561 Name: 名称未設定 [sage] Date: 2006/08/27(日) 11:50:12 ID: Gkb20CLx0 Be:
クライアントとサーバを同一のプロジェクトで作ってるの?
別プロジェクトにしてそれぞれデバッグするのが普通だと思うけど。
562 Name: さぉり [sage] Date: 2006/08/27(日) 12:03:03 ID: bp85/WSk0 Be:
こんな場所で聞く私が馬鹿でした!
みなさん頭弱過ぎです!自分がちょっとプログラミングできるからって
初心者をけなして どうせ大して凄くないんですよね 著者たちや会社に勤めてる方の方が凄いです
これだからこの板の方は(笑)  著者や会社に勤めてる方が凄いです
そんな詳しくないのに知ったかぶって(笑) 過去ログがちょっと笑えました(笑)
教えてgooで聞くのでいいです こんなユーザーレベルの低い場所は勘弁です
563 Name: 名称未設定 [sage] Date: 2006/08/27(日) 13:56:32 ID: H+hALgcb0 Be:
>>562
切れがないな。まあ乙でした。
564 Name: 名称未設定 [sage] Date: 2006/08/27(日) 13:56:35 ID: 3Fg0kqGR0 Be:
ダメだしされちゃったよ ┐(´_`)┌
565 Name: 名称未設定 [sage] Date: 2006/08/27(日) 13:56:52 ID: xwM7SLRN0 Be:
>>562
>私が馬鹿でした!

だけ読んだ。
566 Name: 名称未設定 [sage] Date: 2006/08/27(日) 14:00:25 ID: Zzora6ZC0 Be:
599 名前:さぉり sage 投稿日:2006/08/24(木) 17:09:30 ID:sq6zXXiN0 (4)
ここも頭悪い人ばっかし^^;
しょうだつやのさんを見習いなさい
匿名だからって悪口ばっか書いちゃダメなんですよ
これだから頭の弱い方は・・・・^^;
私は言えないけど大した技術も無さそうだし 凄い人ならこんな場所に書き込みなんてしないし
ここに居る人は可哀想な人 自分で凄いと思ってるんだけど 著者から見て大した事ないって
思ってますしね  ここに居る人は全然凄くないってことです 自覚して下さいね^^;
自画自賛と自意識過剰も程々にね(笑)
567 Name: 名称未設定 [sage] Date: 2006/08/27(日) 14:06:32 ID: HcZyH3ND0 Be:
某MLへ突入してくんないかな。
568 Name: 560 [sage] Date: 2006/08/27(日) 16:27:05 ID: LTW+eHhQ0 Be:
>>561
>>別プロジェクトにしてそれぞれデバッグするのが普通だと思うけど。

やはりそうですか。実験的な小さなプログラムだったので、一つの
プロジェクトにしたのですが。
分かりました。ありがとうございます。
569 Name: 名称未設定 [sage] Date: 2006/08/27(日) 16:48:10 ID: ktrO+3/x0 Be:
>>567
あはは、それいいな
某氏とやり合って欲しい
570 Name: 名称未設定 [sage] Date: 2006/08/28(月) 02:46:36 ID: JRfHdb9p0 Be:
複数のユーザーが 共通のフォルダに対して、「書き込み&読み取り」を
実現する方法はありますか?(プログラムで)

Application Support\(アプリ名)\

現状、最初に書き込んだユーザーしか、
上記のフォルダに書き込みできないようなのですが…
571 Name: 名称未設定 [sage] Date: 2006/08/28(月) 08:12:30 ID: awb7apM30 Be:
>>570
>複数のユーザーが 共通のフォルダに対して

/Library/Application Support/[appname]
っていうことだよね?

そこはシステム管理者権限があるユーザだけが書き込めるのが
普通では。普通はOwner root, Group adminになってるはず。
Otherの書き込み権限が落ちてるでしょ。

$ ls -ld /Library/Application¥ Support/
drwxrwxr-x 15 root admin 510 Aug 28 08:05 /Library/Application Support/
$ ls -ld /Library/Application¥ Support/Mozilla/
drwxrwxr-x 4 root admin 136 Aug 28 08:06 /Library/Application Support/Mozilla/

アプリによってはuser権限のままでフォルダを作っちゃうものが
あるみたいだけど。

Authenticationを取って、setuidして、root権限になってから
書き込み、で権限を破棄。でいいんじゃない。
572 Name: 名称未設定 [sage] Date: 2006/08/28(月) 09:33:51 ID: JZkhxaOW0 Be:
/Users/Shared以下に置きなよ…。
573 Name: 名称未設定 [sage] Date: 2006/08/28(月) 15:05:35 ID: dcOH6cG60 Be:
Shiiraの「進む/戻る」やXcodeの「ビルド」でやってるような、長押しでプルダウンメニューを出すツールバーアイテムを調べてるんですが
shiira最新版のソースを見てもimageとactionを設定してるだけで特別なことをしてる部分が見つけられません。
HMDTのBBSは死んでるし、どなたかわかる人いたら解説お願いします。
574 Name: 名称未設定 [sage] Date: 2006/08/28(月) 15:11:31 ID: hwGKK53s0 Be:
>>573
mouseDown: 内で NSApplication の nextMatchingMask:untilDate: inMode: dequeue: を使えばいいらしい。

Cocoaはやっぱり!のCocoaNote、
Cocoa Study Blog に関連の資料があったと思う。HMDTにもあったかな。
575 Name: 名称未設定 [sage] Date: 2006/08/28(月) 15:19:16 ID: dcOH6cG60 Be:
>>574
viewを使うと色々面倒なんですよ(validateToolbarItemで呼ばれない, 小さいサイズ時の調節が自前)
xcodeやshiiraは明らかにtoolbarItemのままメニューを出してるんで挙動も綺麗だし、そっちで実現したいと。
576 Name: 名称未設定 [sage] Date: 2006/08/28(月) 15:29:55 ID: EJG+w2Oc0 Be:
Xcodeは知らんが、ShiiraはAppleがAPI用意しないから自前で強引に実装したってmkinoタンが言ってたぞ
577 Name: 名称未設定 [sage] Date: 2006/08/28(月) 15:30:47 ID: dcOH6cG60 Be:
NSToolbarItemViewerなるclassを拡張してる部分がありますた。失礼しました。
578 Name: 名称未設定 [sage] Date: 2006/08/28(月) 17:49:51 ID: qDQr+REk0 Be:
NSArrayController と NSTableView の組み合わせでやるのと同じことを
(Core Data の Entity の一覧の表示と選択)、NSArrayController と
NSPopUpButton の組み合わせでやることってできますか?

NSPopUpButton の Bindings を設定すればできるのかも知れませんが、
設定の仕方がわかりません‥
579 Name: 名称未設定 [sage] Date: 2006/08/28(月) 23:53:34 ID: uEEJUIer0 Be:
ボタンを押すたびに処理が走るコードを書いたのですが、処理が
時間が少しばかりかかるため、その間GUIがブロックされます。
そこで、
 [self performSelecter:withObject:afterDelay:0]
として次のrunLoopのタイミングで駆動するように仕掛けました。

しかし、この状態でボタンクリックを連打されると、たまにボタン
が押し込まれた状態で止まることがあります。感じとしては、
MouseUp?が待ち状態になっているような動作です。

そのまま待っているだけですとボタンが戻りません。

画面をクリックすると「溜まっていた」MouseUp?が送られるらしく、
先に進むのですけれども、これを回避する方法にはどのようなものが
考えられますでしょうか。
580 Name: 名称未設定 [sage] Date: 2006/08/28(月) 23:57:16 ID: ok0Q4gnm0 Be:
>>579
スレッド
581 Name: 名称未設定 [sage] Date: 2006/08/29(火) 08:40:55 ID: /sy3aD/60 Be:
>>580
タイマーじゃね?
582 Name: 名称未設定 [sage] Date: 2006/08/29(火) 12:38:51 ID: YEygv97Q0 Be:
処理が終わるまでボタンを無効にしておくとか?
583 Name: 名称未設定 [sage] Date: 2006/08/29(火) 14:51:48 ID: yNo39QMD0 Be:
return キーの charCode で何でつか?
584 Name: 名称未設定 [sage] Date: 2006/08/29(火) 15:00:02 ID: V1TloU2I0 Be:
579です
結局スレッドにしてみました。・・・あんまり効果がなかったですが。
GUIのレスポンスって難しいですね。
585 Name: 名称未設定 [sage] Date: 2006/08/29(火) 17:30:42 ID: p3MzV9PM0 Be:
ちゃんとスレッドにできてれば他の処理が固まるなんてことはないと思うが。
586 Name: 名称未設定 [sage] Date: 2006/08/29(火) 22:59:12 ID: LKv8TWHg0 Be:
>>585
>ちゃんとスレッドにできてれば他の処理が固まるなんてことはない

まあそういわれればそうなんだけど。

メインスレッド上のNSTimerで駆動されるメソッド内で、
NSTaskでlaunchしてwailtUntilExitするケースだったんだ。
これとMouseクリックのタイミングがかぶると、GUIのイベント
処理が抜けることが判明。
NSTaskの処理には200msecから400msec取られてた。

ひとつはNSTaskを使わず、自前で処理するようにしたらOKになった。
もうひとつは自前でやりにくかったので、NSTaskのままスレッド化
したよ。こちらはばっちりOK。
587 Name: 名称未設定 [sage] Date: 2006/08/31(木) 14:14:03 ID: uXaPXFXD0 Be:
NSTextFieldを使用しています。

キーボード入力で常に大文字入力にする方法はどうすればよいのでしょうか?
小文字→大文字
588 Name: 名称未設定 [sage] Date: 2006/08/31(木) 16:21:59 ID: ZN9dnm620 Be:
入力されたらテキストを[NSString uppercaseString]する、というのはダメ?

ことえりとかで未変換状態の場合は知らん。
589 Name: 名称未設定 [sage] Date: 2006/08/31(木) 21:43:41 ID: Inp06MVC0 Be:
NSButtonの作成時にsetEnabled:NOした状態で表示させるにはどうしたらいいでしょうか?classのinit時に設定しても、反映されないようなのです。
590 Name: 589 [sage] Date: 2006/08/31(木) 21:48:02 ID: Inp06MVC0 Be:
うはっ、Interface Builderのattributeにあったのか…失礼しました。
591 Name: 名称未設定 [sage] Date: 2006/08/31(木) 22:23:59 ID: uXaPXFXD0 Be:
ファイルの存在チェックを下記関数で行っているのですが、存在するファイルを指定しても、
fileExistsAtPathでなぜかNOが返ってきます。
なにか問題がありますでしょうか?

// ファイルの存在チェックを行う。
BOOL isExistFile(NSString *path)
{
  NSFileManager *fm;
  BOOL folder;

  fm = [NSFileManager defaultManager];

  if ([fm fileExistsAtPath:path isDirectory:&folder]) {
    if (folder) {
      return NO;
    }
    return YES;
  }

  return NO;
}
592 Name: 591 [sage] Date: 2006/08/31(木) 22:32:27 ID: uXaPXFXD0 Be:
すみません。隠しの拡張子が設定されていたためでした。
593 Name: 名称未設定 [sage] Date: 2006/08/31(木) 22:34:04 ID: o8x0nj1z0 Be:
書き込んで数分後に帝政するスレはここですね?
594 Name: 名称未設定 [sage] Date: 2006/08/31(木) 22:35:52 ID: +3J8izoY0 Be:
アフリカでもよくあること
595 Name: 名称未設定 [sage] Date: 2006/09/01(金) 00:05:24 ID: QYrpATme0 Be:
このスレ見た直後だったから↓こっちも同じ流れでワロタ

Macでプログラミング{6}
http://pc7.2ch.net/test/read.cgi/mac/1130776036/783-784
596 Name: 名称未設定 [sage] Date: 2006/09/01(金) 13:24:43 ID: KoLd3z7j0 Be:
isExistFile は英語的に変なので
isFileExistent か fileExists に変えて欲しい
597 Name: 名称未設定 [sage] Date: 2006/09/01(金) 14:10:21 ID: 09L/SI8F0 Be:
I vote for 'isExistingFile'.
598 Name: 名称未設定 [sage] Date: 2006/09/01(金) 16:25:29 ID: Q30wQV4n0 Be:
isEqualがあってisEqualTo*があるみたいに
isExistがあってisExistFileがあるんだよきっと。
599 Name: 名称未設定 [sage] Date: 2006/09/01(金) 20:59:14 ID: qeLMU5AH0 Be:
NSThreadについて質問です
Cocoaでは、どのようにThreadの終了を別のThreadからモニタ
すれるのがよいのでしょうか。

Thread AからThread Bの終了を待ちたいケースを考えます。
今やっている方法は、ーこれはかなりスマートでないと思うのですがー
Thread Bの終了時のNSThreadWillExitNotification呼び出しで
インスタンス変数を書き換えて、これをThread Aでモニタする
というやり方です。Thread Aは時間待ちでループするという方法
くらいしか思いつきません。
600 Name: 名称未設定 [sage] Date: 2006/09/01(金) 21:04:35 ID: lnTx5Mtb0 Be:
>>599
Aが終了する時にYESになる変数を作っておいて
それをBからチェックすればよくね?
601 Name: 名称未設定 [sage] Date: 2006/09/01(金) 23:21:16 ID: H80bjlIa0 Be:
lock使えばよくね?
602 Name: 名称未設定 [sage] Date: 2006/09/02(土) 01:58:11 ID: uF4ouzHu0 Be:
pthread_join() みたいなのが欲しいよね
603 Name: 名称未設定 [sage] Date: 2006/09/02(土) 09:09:42 ID: SoJ8PmgC0 Be:
>>601
>lock使えばよくね?

なるほど。lockならlock解除ですぐThreadに復帰しますね。
それが現実的な選択肢ですね。

>>602
>pthread_join() みたいなのが欲しいよね

ですねぇ。それが出来れば一番良いんですけど。
604 Name: 名称未設定 [sage] Date: 2006/09/02(土) 10:12:12 ID: PDFeA+fw0 Be:
>>599-603
まずドキュメント読もうよ。このまま進めると怖過ぎ。
Introduction to Multithreading Programming Topics
http://developer.apple.com/documentation/Cocoa/Conceptual/Multithreading/index.html
605 Name: 名称未設定 [sage] Date: 2006/09/02(土) 14:31:14 ID: Sg3Res4v0 Be:
>>604
>このまま進めると怖過ぎ。
読んでみたんですけど、lockよりさくっといく方法は思いつかず。
NSThreadを使わずpthreadを使うと、いろいろ面倒を見ないと
行けないとある。結局NSThreadの方が安全なのかなと。

lockを読んで、lockが取れるまではブロックされるんですよね。
threadをクラスでカプセル化している場合、deallocでthreadが
きっちり終了するのを見届けないと、super deallocを呼べない。
 サブthreadのNSThreadWillExitNotificationでunlock
 メインでいきなりlockならコードは超簡単だけどミスるとハング
 代わりにtrylock+時間待ちなら、無駄はあるけど、時間切れも
 設定できる
良いところだと思ったんですが・・・
606 Name: 名称未設定 [sage] Date: 2006/09/02(土) 17:06:06 ID: FFFDnbzB0 Be:
>>605
スレッドの終了を確認するぐらいならインスタンス変数で十分だと思うけどな。
>>604 のThread Communicationの最初に出てくるShared Memoryとほぼ同義。

インスタンス変数の書き換えはアトミックじゃないかもしれないけど、今回のケースでそれによって問題が生じるとも思えないし。

排他的な処理をするならもちろんマルチスレッド・プログラミングの勉強をした方がいいけど。
607 Name: 名称未設定 [sage] Date: 2006/09/02(土) 17:46:51 ID: BnL+oSK30 Be:
WebKit 初心者のサンデープログラマです。
WebView に読み込んだページの HTML のソースを取り出そうとしてるのですが
うまくいきません。

WebDataSource * webDataSource;
webDataSource = [[webView mainFrame] dataSource];

id <WebDocumentRepresentation> webDocumentRepresentation;
webDocumentRepresentation = [webDataSource representation];

として

NSString * HTMLSource = [[NSString alloc] initWithString: @""];
HTMLSource = [webDocumentRepresentation documentSource];

としようとしてるのですが、

[webDocumentRepresentation canProvideDocumentSource] ;

が NO になってて読み込めません。
どの辺がまずいでしょうか。
608 Name: 名称未設定 [sage] Date: 2006/09/02(土) 17:47:17 ID: VC17T2uF0 Be:
>>606
>インスタンス変数の書き換えはアトミックじゃないかもしれないけど

そこが不安なんです。lockせずに書き換えても、スレッド間でリアル
タイムに同期するわけじゃない。シングルならまだしもマルチコアを
考慮するときっちりlockを取った方がいいかな、と。
で、lockしてインスタンス変数書き換えるくらいなら、最初からlock
そのものをフラグ代わりに使うのが簡単に思えたんですが・・・
素人考え?
609 Name: 名称未設定 [sage] Date: 2006/09/02(土) 18:16:14 ID: FFFDnbzB0 Be:
>>608
スレッド終了のタイミングで際どいことをするなら素直に排他した方が良いと思う。

ふと思ったんだけど、Cocoa的にはThread AでThread BのNSThreadWillExitNotificationを見るのが一番スマートな気がしたんですが。
610 Name: 名称未設定 [sage] Date: 2006/09/02(土) 18:41:15 ID: 1QBvPdUe0 Be:
>>607
WebViewにURL渡したあと、読み込み終わるの待ってる?
そこは非同期だから、URL渡す~ソース取得が一連の処理として書かれてるとダメだと思う。
notification受け取るなど、ソースの取得の処理は別メソッドにするとか。

>NSString * HTMLSource = [[NSString alloc] initWithString: @""];
>HTMLSource = [webDocumentRepresentation documentSource];
これって1行目がリークするよ。
611 Name: 名称未設定 [sage] Date: 2006/09/02(土) 18:45:30 ID: VC17T2uF0 Be:
>>609
>Thread AでThread BのNSThreadWillExitNotificationを見るのが
すみません。これよく理解できません。
NSThreadWillExitNotificationで呼ばれるメソッドは、
「終了する側のThread Bで動く」ので、Thread Aから間接的にしか
モニタできないのではないかと思うのですが。
612 Name: 名称未設定 [sage] Date: 2006/09/02(土) 22:11:35 ID: FFFDnbzB0 Be:
>>611
こんな感じ。
作ってから気づいたけど、Thread BのNSThreadオブジェクトの生存期間が微妙かも…。

ttp://www.uploda.org/uporg502613.zip.html
613 Name: 名称未設定 [sage] Date: 2006/09/02(土) 22:13:36 ID: C2LaizOb0 Be:
あぁ、致命的な間違いを発見。

threadをdetachすると、起こした側のインスタンスがretain
されるので、Threadが動いている間はdeallocが呼ばれない!。
deallocに飛んできたのは自分のコードのみすだったyo。

・initでthreadを起こすのはべつに問題ない
・ただしthreadのdetachでretainされるのでcountが増える
・だから止めるためのmethodを別途用意しないとだめ。
・threadが止まったらreleaseされるので、countが1に戻る
・この状態でメインスレッドからreleaseすると、deallocへ進む
614 Name: 名称未設定 [sage] Date: 2006/09/02(土) 22:22:36 ID: C2LaizOb0 Be:
>>612
さんきゅ。なるほどこういうのも可能なのね。
ただこれも、deallocは呼ばれないみたいだけど...
615 Name: 607 [sage] Date: 2006/09/03(日) 09:34:13 ID: novxCpDz0 Be:
>>610
読み込みは終わってるんです。
WebView の読み込みと、そこからソースを取り出すメソッドには
それぞれボタンを付けていて、今は手動で動かしています。

実はここを自動でやるにはどうすればいいかなとも思ってたのですが、
なるほど、notification という手がありましたね。
616 Name: 名称未設定 [sage] Date: 2006/09/06(水) 22:53:16 ID: a4FA3GAI0 Be:
Cocoa のプログラムで、
pthread でよくある pthread_cond_wait() でスレッドを寝かせて pthread_cond_signal() か
pthread_cond_broadcast() で起こす、ってパターンを使いたいんですが、
これって NSThread (NSConditionLock 等?)で書くとどんな感じになりますかね?
Cocoa のドキュメントを読んだだけではよくわかりませんでした。
617 Name: 名称未設定 [sage] Date: 2006/09/07(木) 18:50:47 ID: 2jQzgdDv0 Be:
NSTableviewで左端のカラムをドラッグ移動しないように
したいんだけど(他のカラムはドラッグ可能)、どうすればいいの?

残された道は、NSTableHeaderViewをカスタムして
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
をとってくる事だが。実験している余裕が無い。
618 Name: 名称未設定 [sage] Date: 2006/09/07(木) 18:59:30 ID: dyVH14ce0 Be:
- (BOOL)tableView:(NSTableView *)tableView shouldSelectTableColumn:(NSTableColumn *)tableColumn;
で Column の選択を監視して、左端が選択された場合だけ
- (void)setAllowsColumnReordering:(BOOL)flag;
に NO を設定するとか。
619 Name: 名称未設定 [sage] Date: 2006/09/07(木) 19:02:02 ID: dyVH14ce0 Be:
あ、これじゃダメかもしらん。
620 Name: 名称未設定 [sage] Date: 2006/09/07(木) 19:15:41 ID: 3nsMUMTo0 Be:
ココアの勉強始めようと思って来たけど、
これは本当に何言ってるか分かんなくてサッパリですね・・・
難しい気がします、なにやっていいかわからない。
621 Name: 名称未設定 [sage] Date: 2006/09/07(木) 19:18:35 ID: Muiw9MQt0 Be:
>>620

>>369
622 Name: 名称未設定 [sage] Date: 2006/09/07(木) 19:44:25 ID: 2jQzgdDv0 Be:
>>617
自己レス。説明不足だった。
ヘッダ部分のドラッグで、カラムの並べ替えができるけど
左端(No.)のカラムだけは動かしたくないんだよ。
NSTableView関連を見る限り、ドラッグ後のイベントしか受け取れない。
didClickTableColumn:だとヘッダ部分には反応してくれないんだ。
623 Name: 名称未設定 [sage] Date: 2006/09/08(金) 01:48:01 ID: emfTJ6RZ0 Be:
>>620
いきなり白旗ふらないで地道にやるしかないよ。プログラムは根気が大事。
設計も簡潔でよくできているし、他の環境でプログラムする時にも
Cocoaの作法は良い影響が出ると思います。
何をしたいのかがわからないので具体的なことは何も言えないけどCocoaは難しくないと思う。
プログラムの知識があれば一日まじめにやればとっかかりはつかめる。
624 Name: 名称未設定 [sage] Date: 2006/09/08(金) 02:36:57 ID: c/mVP49P0 Be:
>>623
少しも何が何だかわからないってだけで白旗は振ってないです。
ただただどうしていいのやら指針も立たないし
暗闇の中でどっち行っていいか何していいかわからない感触
625 Name: 名称未設定 [sage] Date: 2006/09/08(金) 03:32:08 ID: emfTJ6RZ0 Be:
>>624
いや、だからそれじゃ何もわからないですって、、、
具体的なこと何も書いてないじゃないですか。
Cはわかるのか、とかサンプルのソースはどれくらい理解できてるのか、とか
そもそもプログラム自体やったことないのか、とか
Cocoa以前にOSXのことはどれくらい知ってるのか、とか
adcの中はどれくらい見ました?
日本語化されてるドキュメントもけっこうありますよ。
少なくとも最初のとっかかりがつかめるくらいの日本語資料はWebにもたくさんあります。
CocoaはやっぱりやHMDTとかこのスレで紹介されてるサイトは見ました?
626 Name: 名称未設定 [sage] Date: 2006/09/08(金) 03:53:46 ID: AxhrEaLd0 Be:
またさぉりか
627 Name: 名称未設定 [sage] Date: 2006/09/08(金) 04:35:14 ID: c/mVP49P0 Be:
>>625
OS9の頃にCでHello!Worldを何かに付いてきたCodeWarriorでやって遊んだ事があるだけです。
でもやったうちに入らないです、かなり何年も前の話だし、忘れたし。
adcのドキュメントはパラパラとさっき読んでみましたけどよく解んなかったです。
628 Name: 名称未設定 [sage] Date: 2006/09/08(金) 05:11:32 ID: emfTJ6RZ0 Be:
>>627
うん。なるほど。Cocoaがわからないという問題じゃないね、それは。
ちなみにHelloWorldはプログラムを書く、という行為じゃなくて
セットアップです。環境に問題がないかどうかのテストです。

一度も自分で考えたことをプログラミングで形にしたことがない人ですか?
そういうレベルの人はこのスレに来ても回答は見つからないと思うよ。

他人の手取り足取りでその場はなんとなく分かった気になってもすぐ忘れるよ。
自分の努力で覚えないと身に付かない。トライ&エラーあるのみ。
なんでもいいからがむしゃらにかじりついてちょっとはがんばってみないと。
あと情報収集能力を鍛えることも成長につながるよ。Webをもっと積極的に使ってみなよ。

人によってプログラムを学ぶ最初のきっかけはいろいろあるので正解はないけど
ぼくはJavaが勉強には良いかなと思ってる。
Javaも今は森のような状態で見通しは悪くなったけど
初心者向けの解説サイトもいっぱいあるし
Cocoaよりは学びやすいんじゃないかな。
いろいろ迂回してもあなたのスキルにつながるので、まずはもっと勉強して
それからこのスレに来たらいいと思うよ。

と、いうことでスレ違い。
629 Name: 名称未設定 [sage] Date: 2006/09/08(金) 06:42:21 ID: ymRvCxhZ0 Be:
さぉりだな。スルーしる。
630 Name: 名称未設定 [sage] Date: 2006/09/08(金) 09:17:40 ID: Z1wRi7Nz0 Be:
ヒレガス本を嫁。これでわからなかったら、見込みはないということだ。
631 Name: 名称未設定 [] Date: 2006/09/08(金) 10:18:13 ID: bHnF0eXG0 Be:
630と同意見だ。
632 Name: 名称未設定 [sage] Date: 2006/09/08(金) 11:10:57 ID: V1yhfHgO0 Be:
Cocoaは「さっぱり」というスレタイが努力・勉強する気なしのバカを呼び込んでるんじゃなかろうか・・・
633 Name: 名称未設定 [sage] Date: 2006/09/08(金) 11:46:10 ID: dUJvi8oh0 Be:
Cocoaセミナーのムービーに中級編追加
http://developer.apple.com/jp/documentation/japanese.html#CocoaSeminar1
634 Name: 名称未設定 [sage] Date: 2006/09/08(金) 12:37:56 ID: XPP0BbrZ0 Be:
ネーミング意図は、MPWのToolboxは詳しいけどココアはさっぱりを狙ったけど、
実際は全くプログラミングが理解出来ずにココアもさっぱりなアフォが釣れてる悪寒。

hollo worldが出来るぐらいでココアアプリが組めるほど簡単じゃない。
簡単に見せようとアポーは努力してるけどね。
IBでちまちま弄ったくらいで実現出来る程度じゃアプリとして魅力無いし、新しい表示機能をつけようとするとIBの壁がもどかしい。

情報処理系の学校で学んで素養が有るならちょっと勉強すれば何とかなるけど、
非情報系で全くのプログラミングスキルが無くても簡単というほどではない。
マクのアプリを使うほうは簡単でも、作るほうは大変だよ。
簡単に使える様に作る側が苦労するってのがソフト屋の仕事であり、1クリックで全部出来る様にするなんて無茶が通るITって業界。
635 Name: 名称未設定 [sage] Date: 2006/09/08(金) 13:03:39 ID: Y6oJgQUW0 Be:
さぉりって大阪に住んでる大きな女か?
636 Name: 名称未設定 [sage] Date: 2006/09/08(金) 13:14:01 ID: h4uQyMorO Be:
XCODEがもっと使いやすくなればな…。
まぁ慣れなのかもしれんが。
637 Name: 名称未設定 [sage] Date: 2006/09/08(金) 13:43:44 ID: 3OYA3cEZ0 Be:
MPWのToolboxって何?
638 Name: 名称未設定 [] Date: 2006/09/08(金) 15:33:23 ID: bHnF0eXG0 Be:
Cocoaが難しいなら、RealBasicあたりで始めれば良かろうかと。

良くCocoaが簡単だと言うプログラマが居るが、
それはWindowsのMFCやOS 9のPowerPlantと比較した話であって、
WindowsのDelphiのようなRADと比較した話では無い。
639 Name: 名称未設定 [sage] Date: 2006/09/08(金) 16:35:42 ID: QZSkIqt30 Be:
俺的には、AppleScript Studio → Cocoaって流れがお勧め。
640 Name: 名称未設定 [sage] Date: 2006/09/08(金) 16:46:20 ID: VY21jbFU0 Be:
>>639
AppleScript Studio イラネ
641 Name: 名称未設定 [sage] Date: 2006/09/08(金) 16:56:39 ID: vmd8rVKa0 Be:
中級編ムービーやっときたか。
8月中公開という宣言はいったい・・・
642 Name: 名称未設定 [] Date: 2006/09/08(金) 17:00:34 ID: bHnF0eXG0 Be:
漏れもAppleScript Studioはオススメできないな。
言語部分がスクリプトと言うだけで、GUIライブラリやIDEはの難度はCocoaと変わらん。
643 Name: 名称未設定 [sage] Date: 2006/09/08(金) 17:03:45 ID: QZSkIqt30 Be:
だって、Cocoaが難しいって言ってる奴らはObjCが難しいんじゃないの?
644 Name: 名称未設定 [sage] Date: 2006/09/08(金) 17:12:25 ID: Y6oJgQUW0 Be:
Cocoaが難しいって言ってる奴らは、きっと何でも難しいんだと思う。
645 Name: 名称未設定 [sage] Date: 2006/09/08(金) 17:30:06 ID: 5bNLTdw40 Be:
・C
・(思想的な事ではない)オブフェクト指向プログラミングの基礎
・クラスライブラリを使ったプログラミングの基本

ぐらいを知っといた方がいいでしょうな(別にやりながら覚えてもいいけど)
AppleScriptに時間を費やすのは回り道
646 Name: 名称未設定 [sage] Date: 2006/09/08(金) 18:23:42 ID: Z1wRi7Nz0 Be:
>>638
Cocoaは簡単だよ。最低、Cがわかればすぐにプログラム出来る。
Objective-Cも難しくない。
Delphiは知らんが、RADで出来ることって限られるからな。
647 Name: 名称未設定 [sage] Date: 2006/09/08(金) 18:37:24 ID: Hh+gQuSP0 Be:
REALbasicもCocoaも大してかわらんよ。
Cocoaが難しいのは、Cocoaの入門チュートリアルがCの知識があることを前提としているのに
Mac OS X向けに書かれたCの入門書が少ないこと、Cocoaの日本語リファレンスが少ない
ことなどが原因だと思う。
648 Name: 名称未設定 [sage] Date: 2006/09/08(金) 18:45:56 ID: AxhrEaLd0 Be:
>Mac OS X向けに書かれたCの入門書
まず不要だと思う。
649 Name: 名称未設定 [sage] Date: 2006/09/08(金) 19:02:47 ID: Mw6LnD9+0 Be:
>>646
>最低、Cがわかればすぐにプログラム出来る
それも違うかな。
自身の経験から言えば、Cがきちんと分かってなくてもObj-Cは出来る。
おれAppleScriptからの移行組だけど、ほんとに初心者だったから。

文法もXcodeのヘルプもしっかりしているし、容易に応用が利く。
Cは配列とポインタあたりで挫折していたが、そういう所をすっ飛ばして
いきなり入れたよ。

結論。英語さえ読む気力があれば、問題ない。
650 Name: 名称未設定 [sage] Date: 2006/09/08(金) 19:16:51 ID: 5bNLTdw40 Be:
配列とポインタが分かってないってCをほとんど理解してないってことじゃないか...
そんな状態でObjCのプログラムを書いてほしくないなあw

Cocoa API「しか」使わないならまあ何とかなるかもしれんが
651 Name: 名称未設定 [sage] Date: 2006/09/08(金) 19:30:48 ID: Z1wRi7Nz0 Be:
ポインタがわからないということは

NSString* str = [...

のアスタリスクの意味を知らずに使ってるってことか?
それは十分怖いかも・・・
652 Name: 名称未設定 [sage] Date: 2006/09/08(金) 19:45:16 ID: vmd8rVKa0 Be:
CocoaってXcode・InterfaceBuiderの使い方から始まって
基本的なObjective-Cの文法をかじれば、あとは
Cocoaフレームワークの使いかたを必要に応じてヘルプから
参照すればいいので入門は楽なんだけど・・・

分かりにくいのはクラス間、メソッド間のデータの連携。
あるメソッドで書いた変数や配列のデータを他のメソッドや
クラスでどうやって利用するのか分かんない。
653 Name: 名称未設定 [sage] Date: 2006/09/08(金) 20:05:14 ID: 5bNLTdw40 Be:
>>652
だからオブジェクト指向プログラミングの基礎を勉強しろと
654 Name: 647 [sage] Date: 2006/09/08(金) 20:25:01 ID: Hh+gQuSP0 Be:
>>652
だからそれって、Objective-Cの文法をかじっていても
Cプログラミングからしてまともに出来ないってことでしょ。

>>648
初心者がCの入門書を読むと、ターミナル使わなきゃいけない
GUIでメッセージ表示するにはどうすんの?ってさぉりみたいなことになる
C入門書のチュートリアルを1冊丸ごと最後まで出来る人間は
相当忍耐力のある人間だろう、忍耐力がなければCocoa使うなと言うなら
Cocoaは他の環境と比べて、仕様は簡単なのに敷居が高い。
Mac OS X向けのC入門書というよりは、C入門からはじめられる
Objective-C、Cocoa入門書というようなものはあってもいい。
655 Name: 名称未設定 [] Date: 2006/09/08(金) 20:26:06 ID: bHnF0eXG0 Be:
待て、みんなプログラマの感覚でCocoaが簡単とか言ってないか?
相談に来てる人は、とてもそんなレベルに見えないぞ。
656 Name: 名称未設定 [] Date: 2006/09/08(金) 20:29:28 ID: Y4bYTqIY0 Be:
>>651
>アスタリスク

オレ、意味わからんっす…
C言語やったことないっす…
でも、Cocoaでアプリは作れている。
オレの作っているものって、詳しい人からすると、メチャクチャなんだろうなあ。
657 Name: 名称未設定 [sage] Date: 2006/09/08(金) 20:30:49 ID: Y6oJgQUW0 Be:
そりゃそのレベルのことくらい自力で学習・解決できなくちゃ、
とうてい(Macの)プログラマなんかにはなれないだろ。
対価払って教えてもらうんじゃなく、タダで身につけようとするんだから。
658 Name: 名称未設定 [sage] Date: 2006/09/08(金) 20:37:49 ID: w2PC3pNm0 Be:
>>655
そもそもCocoa以前にCもObjective-Cもしらないというなら
それぞれの言語を勉強しろと言うしかないし

CもObjective-CもしってるけどCocoaがわからんというなら
InterfaceBuilderの使い方を覚えろ、APIリファレンスを読む努力をしろと言うしかないなあ
659 Name: 名称未設定 [sage] Date: 2006/09/08(金) 20:38:25 ID: kDW+rSq90 Be:
C++とObjectieCを同時に覚えると理解が深まるよ
遠回りだけどお奨め
660 Name: 名称未設定 [sage] Date: 2006/09/08(金) 20:38:32 ID: mzEHl9hn0 Be:
>>656
例えばfileExistsAtPath:isDirectory:の第2引数なんかは使い方分かるの?
661 Name: 名称未設定 [sage] Date: 2006/09/08(金) 20:44:00 ID: YAkEsotb0 Be:
その程度ならドキュメントのサンプルコードとにらめっこすればどうとでもなるだろ。
662 Name: 名称未設定 [] Date: 2006/09/08(金) 20:53:54 ID: bHnF0eXG0 Be:
>>658
そうではなくて、一番最初に取り組む言語がObjctive-cで、
ライブラリがCocoaなのは、専門教育を受けていない一般人には無茶じゃないかと思う。
情報系の専門学校でさえ、Cの簡単な宿題コピーしてる人が一杯居るんだから。

既に習得した僕らから見れば、一つでも言語を習得できてしまえば他がなんとかなるのは事実だけど、
最初の壁は厚いよ。
お手軽なRADに誘導した方が、挫折率が下がるかと思う。
てゆーか、いきなりCとか習得できる適性があれば、こんな所で相談しないって。
663 Name: 649 [sage] Date: 2006/09/08(金) 20:59:46 ID: Mw6LnD9+0 Be:
>>650
>Cocoa API「しか」使わないならまあ何とかなるかもしれんが

もちろん、最初はCocoaオンリーで始めたよ。

AppleScriptではオブジェクト指向的考え方はよく出来ている。
ここはAS食わず嫌いのひと多そうだけど、ASの参照の概念から
ポインタも継承の概念も理解できたし。
Cの文法があまり整理されていないことが、Cocoaの文法と比べて
よく分かったし。・・・Cって、やっぱり汚いと思うな。
その気になれば全部オブジェクトでラップできるCocoaの世界って
Cそのものよりずっと理解し易しいと思う。
664 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:30:42 ID: 5bNLTdw40 Be:
CもObjective-Cも文法は同じなんだけどなあw
Cocoaの文法って何だろうw
665 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:32:49 ID: iKhHqW6Z0 Be:
というかCを知らないのにObjective-Cを理解したつもりになれるのがすごい
666 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:33:58 ID: XPP0BbrZ0 Be:
ど素人マカには壁がいっぱい。
1)プログラムセンス。
2)英語の情報の壁。WWDCとかも英語だし。
3)Cのポインタの壁。
3)ObjCのオブジェクト指向の壁。
ソースが無いから、アポーが想定してる範囲外の特殊なことをやろうとするといきなり厚い壁が現れる。IBで実現出来るうちは簡単だけどねえ。
667 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:35:24 ID: emfTJ6RZ0 Be:
プログラムの修得に正解も近道もないと思ってる。
だからASでもRbでもObjectパスカルでも何でもいいと思う。

AS嫌いな人が多いのは文法が苦手なんじゃないかな。
HyperTalkや昔のLingoみたいな自然言語って慣れたら簡単なんだけどね
タイプ数が多いのが嫌がられるとこなのかも。

で、ぼくがJavaをおすすめした理由は無料ではじめられて資料が豊富だから。
意外にJavaすすめる人が少なくてちょっとさみしかったなぁ。
Cは後追いで勉強しました。本はK&R。

あ、あとDashboardもいいかも。
JavaScriptとCSSは実用的な技術だし、結果もターミナル使って~よりは
派手で楽しいからやる気も出ると思うし。

オブジェクト指向の修得は、なるべく今の環境で勉強するのがいいと思う。
よく難しいとか言われるのは古い環境で古いプログラミングスタイルに慣れすぎた
人の意見で
今からやる人はへんなクセはないから、そういうもんだと思って理解すると思う。
668 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:40:55 ID: pJCmVuUz0 Be:
むしろCが汚いとか平気で言える無神経さがすごい
669 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:51:25 ID: Y6oJgQUW0 Be:
誤 >Cの文法があまり整理されていない
正 >Cの文法をあまり整理できていない、自分の頭の中で。
だろ。「文法」というのも何か勘違いしてそうだけどな。
670 Name: 名称未設定 [sage] Date: 2006/09/08(金) 21:55:31 ID: emfTJ6RZ0 Be:
多分Cのローレベルなとこを汚いって言ってるんじゃないかと。
あとは何だろうな、関数名や変数名の省略の仕方とか?
671 Name: 名称未設定 [sage] Date: 2006/09/08(金) 22:15:15 ID: CxOLDvGZ0 Be:
Scheme と比較すれば、たしかに C はウンコなみに汚ない。
672 Name: 649 [sage] Date: 2006/09/08(金) 22:32:50 ID: Mw6LnD9+0 Be:
皆さん絡んでくれるので、もうちょっと燃料等か。
汚いという趣旨だけど。すごく極端に書いてみる。

Cより先にオブジェクト指向の概念から学習したから、こう感じたという話。
結局、オブジェクトとして扱おうとすると汚いところにいらいらするので。

>>669, 670
スカラーとポインタ。
・スカラーを中途半端に併用せず、なんですべてポインタで統一しないの?
その方が文法的にきれいじゃん。だいたいNSObjectに集約されるのが
Cocoaのすきなとkろ。NSSizeとかの部分は最初めんくらったけど。

C配列。ポインタの概念の部分に直結するけど。
・スカラーの配列と、ポインタの配列で扱い方が変わるところが一番嫌い。
・値の追加、削除、サイズなどなど。無いようによって全部書き換えしない
とだめ。これこそフレームワークが必要だよね。

C文字列。
・なんだこりゃ。固定長、エンコードの概念無し、文字数や行数などの
属性ももてないし。char型のポインタとして表すのが汚さの極地。

673 Name: 649 [sage] Date: 2006/09/08(金) 22:35:08 ID: Mw6LnD9+0 Be:
カプセル化が不完全。
・構造体の属性記述。->と.の二つの記述がある点。シンプルでない。
・これ自体はメソッドを内包できず、オブジェクトとしてあつかえない。
・属性は属性で、ものはものとして扱えるようにならんかな。

ポインタ。
・ダブルポインタ。隠蔽には中途半端だし、型情報は取り出せないし。

データがデータとして扱えず、型として扱わないといけないところによる箇所。
・関数の引数。データ型によってバイト数が違うのを意識しないといけない。
・スカラーに直結するけど、型によって関数を分けないといけない。

メモリ管理。
・mallocした箇所とハンドルで確保した領域とのコピーを理解するのに
かなりの時間を要した。メモリ管理そのものをオブジェクトで隠蔽したいと
思った瞬間。

とか。
674 Name: 名称未設定 [sage] Date: 2006/09/08(金) 22:52:36 ID: TCmCTR4z0 Be:
なんというか、ID:Mw6LnD9+0がやっぱりCをまともに理解してないってことは分かった。
675 Name: 名称未設定 [sage] Date: 2006/09/08(金) 23:02:26 ID: lM0sn6I/0 Be:
そんなに長々と必死に書かなくても、
オブジェクト指向な言語じゃないから嫌って書けばいいのにね。
676 Name: 名称未設定 [sage] Date: 2006/09/08(金) 23:34:30 ID: Y6oJgQUW0 Be:
頭の悪さを晒してるだけだな。
677 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:00:11 ID: WEGK48Zz0 Be:
ポインタはアセンブラをやってると理解しやすい。アドレッシングモードとかね。
ポインタのポインタも意味があるんだけど、無理して使わなければいけないことも
ない。

TerminalでCを習得することに何も不都合はないはずだ。俺がCをやりはじめた頃は
フルセットのCコンパイラなんて少なかったし、Cの入門書はUNIX用に書かれた
ものしかなかったから、自分の環境に合わせて変更したりする必要があった。
それに比べればOS Xではそのまま本に書いてあることを試せるんだから十分じゃ
ないか。GUIはCocoaでやればいいだけの話。
678 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:02:32 ID: Y6oJgQUW0 Be:
Cの欠陥や汚さというより、なにか別の欠陥や汚さが見えた気がした。
679 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:20:44 ID: nDTH1JHm0 Be:
最初に FORTRAN から学習すれ。
C が綺麗に見えるようになるから。
680 Name: 649 [sage] Date: 2006/09/09(土) 00:21:29 ID: pm/vDv890 Be:
なんだもっと個別に反論することを期待していたのに。

それはともかく、一言で聞くけど、C言語って好き?
681 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:25:04 ID: nDTH1JHm0 Be:
好きですが、何か?
682 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:35:39 ID: UtPdq4KP0 Be:
反論も何も自分の理解力の無さを棚に上げて的外れな事を言ってるだけだし
どうせ言っても理解できないだろw
683 Name: (・∀・) [sage] Date: 2006/09/09(土) 00:37:55 ID: 9VMu+rgf0 Be:
やはり、プログラミングは8bit CPUから入るべきだな。
メモリは8KBくらいで。
684 Name: 647 [sage] Date: 2006/09/09(土) 00:47:56 ID: uDH4w+270 Be:
>>677
不都合は敷居が高いということです。
初心者はCを習得することが目的なのではなく、GUIを使ったプログラムを作りたいのですが
その為にCを覚えてこいといわれているわけです。
Cocoaを覚えるのは比較的敷居が低いが、Cを覚えるのは敷居が高い
その為にCocoaプログラミングは出来るが、Cの知識がないという人間がこのスレにも何人かみられます
Cを覚える為の敷居が低い環境があっても、それこそ不都合はないでしょう。
685 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:48:01 ID: hMIw5EZB0 Be:
つ ZX-81
686 Name: 名称未設定 [sage] Date: 2006/09/09(土) 00:56:34 ID: 9sN/D+ob0 Be:
667の意見はもっともだなぁ。
僕は最初でCで始めて挫折して、その後Pascalでなんとか書けるようになった。
今はC++を使っているので、一つ習得すれば後は何とかなるのは事実だと思う。
それだったら、Javaは情報が多く、IDEも無料で手に入る。
言語も後発だけあってハメが少ない。
687 Name: (・∀・) [sage] Date: 2006/09/09(土) 00:57:20 ID: 9VMu+rgf0 Be:
>>684
今の子供は幸せだよ。高速な32bit CPUに使い切れないほどのメモリ。
そして開発環境がそろってネットで調べる事も出来る。
コンパイラも無いからハンドアセンブルしていた時代が懐かしいよ。

学校のコンピュータなんか、マークシートを書いてカードリーダー
に読み込ませてた。キーボードやモニタすらない。プリンタのみ。
これでも楽しかったよ。orz歳がばれるね。
688 Name: 名称未設定 [sage] Date: 2006/09/09(土) 01:03:16 ID: zavlh9C60 Be:
ObjCは分かるけどCは分からない、という状況(がそもそも不思議だが)で
Cocoaプログラミングができるというのはすごーく不思議なんだが。
689 Name: 名称未設定 [sage] Date: 2006/09/09(土) 01:06:08 ID: 9sN/D+ob0 Be:
僕も不思議だけど、それは議論に偽プログラマが紛れてるだけだと思う(w
690 Name: 名称未設定 [sage] Date: 2006/09/09(土) 01:07:13 ID: 3XmdHeIv0 Be:
反論ねえ...まずAPI(Cocoa)と言語(C)を比べてるところからおかしいんだがw

>スカラーとポインタ
>データがデータとして扱えず、型として扱わないといけないところによる箇所
基本型を全く使わない人ですか?

>C配列
扱い方...変わるか?ポインタと実体の区別がついてないだけではw

>C文字列
まあ使いにくいのは同意だが、低レベルな実装を考えると最も無難な仕様。
固定長というのは明確な誤り。

>カプセル化が不完全
そんなに嫌ならptr->memberを(*ptr).memberとでも書いたら?w
ObjCでも構造体を使えば結局同じことが言える。
ヒープかスタックか、という話だがスタック上にオブジェクトが置けないのは
別にObjC自体の制限ではないという話。
関数ポインタ...は知らないんだろうなあw

>メモリ管理
それは言語仕様ではなく処理系の話だろう。
少なくとも標準Cライブラリの範囲ではハンドルを使う事はない。
691 Name: 名称未設定 [sage] Date: 2006/09/09(土) 01:25:28 ID: IL7feIMI0 Be:
>>684
647氏の言いたい事はわかるような気がする。一寸ズレているのが難だが。
RealBASICがもうちっとマトモだったらずいぶんと様変わりするのにな。
692 Name: 名称未設定 [] Date: 2006/09/09(土) 01:33:38 ID: BPGpKH120 Be:
結論からいうと、オブジェクトやらデータの連携の仕方が分からんとか
行ってる奴はCとかオブジェックト指向を勉強し直せってことですね。
693 Name: 名称未設定 [sage] Date: 2006/09/09(土) 01:40:09 ID: W4HBIvuz0 Be:
>>687
開発環境はともかく、おっちゃん子供時代の方が幸せそうだよ。
それこそ陳腐化しない低レベルな知識を体得できたんだから。
694 Name: 名称未設定 [sage] Date: 2006/09/09(土) 01:46:19 ID: 6R8Tc9SO0 Be:
>>693
今だって求めれば勉強できるでしょ。
今から学ぶ方が断然短い時間で修得できると思うけどなぁ。
特にネット以降とネット以前のスピードの違いは甚だしい。
ぐぐったら一発で分かるようなことを資料探してちんたらやってたもんなぁ。
まぁたくさん迂回したおかげで他のことも勉強できたっていうのはあるけど。
695 Name: 649 [sage] Date: 2006/09/09(土) 09:00:24 ID: YNVUmVlG0 Be:
>>690
自分が皆さんより圧倒的に初心者であることはわきまえているつもりだし、
自分が理解できてないって指摘されているのは分かるんだけど。やっぱり
ASスクリプタ組の出身だからかなぁ。基本スタンスは、Cocoaまんせーー。

>ポインタと実体の区別がついてないだけでは

区別はしているけど、理解してないと言われればそう。
2バイトの基本形を配列にすれば、実体は配列の中。だけどc文字列を配列
にしたら、実体は別にあって、ポインタが配列になっているわけでしょ。
両者の配列の要素のサイズはことなるから、++で演算して出てくるアドレス
は要素のサイズによって変わることになる。全部ポインタで統一すれば、
配列は実体をもたず、あくまでポインタの配列をほじする領域ってことに
できる。そうした方がシンプルになって「まだ」分かりやすいな、と。
現在のシステムの中では、ポインタは32bit固定長。64bit apiでは64bitに
なるだけらしいし。

でも、NSMutableArrayとかにしてしまえば、実体だ参照だなんて考えずに
ぽいぽい放り込める。要素の追加削除、カウント条件抽出だってくっついて
くる訳だから。めんどいのが嫌いなので、わざわざC配列なんてつかわないっす。

>まずAPI(Cocoa)と言語(C)を比べてるところからおかしいんだが

これ、よく言われるのだけれど、obj-cが言語だよね?その上で構築された
フレームワークがCocoaだと思ってるんだ。フレームワークを使わずに
obj-cを使うなんてほとんどあり得ないだろうし、実質的にobj-cの世界=
Cocoaって言っていいと思う。

696 Name: 649 [sage] Date: 2006/09/09(土) 09:03:23 ID: YNVUmVlG0 Be:
基本的に、出来ることを出来る方法でやればそれで良いと思う。方法は何種類
もあって、それこそフレームワークを使わない方法もあるんでしょうが、あれ
こそは非効率的だと思うな。
(もちろんスピードなんて実質的に問題にならないからだけど)

ところがCの場合は、C自体が持つ機能だけで使え、覚えろ、となると、厳しい。
Cはメモリ管理べたべたな言語ってのはなんとか分かるけど、その部分こそが
初心者に取っては理解しづらいところ。結局フレームワークを使った方が簡単
だし効率がいいと思うから、obj-c+Cocoaに流れただけの話で。

>基本型を全く使わない人ですか?

BOOLとかInt32とは使わないわけじゃないけど。でも使いにくいでしょ。
基本的にChar型やCstringは使わない。全部obj-c strにしちゃうし。C配列や
構造体は出来るだけ使わずに、クラスを作ってしまうです。
値の未定義を表すnilが判定に使えるのと、KVCで扱うのが楽なので、わりと
スカラーの代わりにNSNumberを使うようにしていたりします。
メモリ管理をクラスに押し込めてしまえるのが(インスタンスの破棄でメモリ
掃除完了とか)楽だなぁ。

自分みたいな初心者に取っては、データと入れ物を明確に区別できる、KVCの
存在が最高。KVCで動的にチェックしてKeyがないとかエラーを吐いてくれる
のはありがたいし。
KVO/Bindingも便利。Bindingが使えない状態でGUIのプログラムを書くのは
苦痛に等しい。UserDefaultsへのBindingって設定値の保存も考えなくていい
し、すっごく楽。
そういったひっくるめた部分で、Cocoaのやり方って楽だと思う。

697 Name: 649 [sage] Date: 2006/09/09(土) 09:08:16 ID: YNVUmVlG0 Be:
Cでも定石みたいのはあるんだろうけれども、Cocoaの決まった方法でのやり方
は(クラスが基本単位、initで初期か、deallocで破棄、autoreleasepoolとか)
初心者には飲み込み安いと思うんだよね。
Cのプログラムって、人によってやり方がばらばらで、他人のソース見てると理
解するのに時間がかかってしまう。半端にオブジェクトとして扱うところと、
べたべたなところとが混在してて。

自身はまだCoreDataがなかなか理解できないけど、あれ使えるようになったら
もっと楽になりそうに感じています。

・・・やっぱり玄人さんとは絶対相容れないなぁ。
698 Name: 名称未設定 [sage] Date: 2006/09/09(土) 13:18:04 ID: AGwnSZbs0 Be:
だからさあ
素のCとObjC+Cocoaを比較してCにケチ付けるのは筋違いだろ
OSXならCoreFoundationでも持ってこいと
http://developer.apple.com/documentation/CoreFoundation/Reference/CoreFoundation_Collection/index.html

これはCのAPIなわけだが、こういうのはカプセル化もきちんとされてるし、
メモリ管理もできるし、独自の文字列や配列もあるし。
まあCocoaのFoundationの低レベルなAPIなわけだが。

Cocoa APIで○○ができるのにANSI Cではできないなんて文句は
とりあえずやめてほしい。
699 Name: (・∀・) [sage] Date: 2006/09/09(土) 14:17:50 ID: 9VMu+rgf0 Be:
>>697
どう考えてもGUIアプリケーションだけを前提にしているじゃないか。
それでCの有効性を語られても。
Cの汎用性、移植性にかなう言語は無いよ。一度書けば
半永久的に動くでしょ。事実それだけの歴史がある。
700 Name: 649 [sage] Date: 2006/09/09(土) 15:01:41 ID: ML+61Nzm0 Be:
>>699
CocoaはAppKitを含むのだから、このスレはGUIアプリ前提でもいいかと。
CFだけじゃGUIアプリは書けないし。Carbon一般の知識も必要でしょ。

>>698
>Cocoa APIで○○ができるのにANSI Cではできないなんて文句は

言ってないよ。言いたかったのはあくまで
「Cがきちんと分かってなくてもObj-Cは出来る。」だから。
さんざんさらしてきたように、自分は「Cを分かってる」訳じゃない。
でも、Cocoaを使うことができるし、アプリも書ける。

最初に戻るけど、Cocoaが学習できるかどうかはやっぱり、
英語のマニュアル読むことができるかどうかだけだと思うな。
701 Name: 名称未設定 [sage] Date: 2006/09/09(土) 15:15:27 ID: TlBnIruJ0 Be:
( ゚д゚)ポカーン
>>672-673なんてまさにANSI Cに対する文句だろw
702 Name: 名称未設定 [sage] Date: 2006/09/09(土) 15:21:35 ID: AGwnSZbs0 Be:
・Cで学んだ知識は全てObjCプログラミングでも使える(言語仕様としてのObjCはCを完全に含む)
・世の中で公開されているライブラリの多くはCのインターフェースを持っている
・Carbon、CoreFoundation、CoreAudio等、OSXでもCocoa以外のAPIはほとんどC

結局Cocoaの世界から一歩でも外に踏み出すとCが必要なのに、
汚いとかいう理不尽な理由でCを避ける利点がどこにあるのかという話だ。
少なくともAppleScriptなんかより遥かに役に立つ。
703 Name: 名称未設定 [sage] Date: 2006/09/09(土) 15:25:03 ID: 45yRLbmC0 Be:
Cocoa APIだけで完結するアプリケーションしか作ってないうちは
一生理解できんだろうな
704 Name: 名称未設定 [sage] Date: 2006/09/09(土) 15:38:03 ID: vL0rysP+0 Be:
というかObj-Cだって言語仕様そのままでは、allocもinitもretainもreleaseもないし、
NSArrayもNSStringもないわけだから、Cへの文句はそのまま当てはまるのでは?
705 Name: 名称未設定 [sage] Date: 2006/09/09(土) 15:42:56 ID: DaSB6hhV0 Be:
CocoaだけでもMVCでいうMの部分で少々複雑なことをやろうとすると
結局Cの知識が必要になるわな。

>>704
彼にはそれが分からんらしいw
706 Name: (・∀・) [sage] Date: 2006/09/09(土) 15:53:53 ID: 9VMu+rgf0 Be:
>>700
>>672-673 は、Cの汎用性、移植性を考えれば当然の結果で
なんの疑問も無くなるから。

リファレンスの日本語訳がある/なしじゃ、敷居がぜんぜん
ちがうね。AJにはなんとかしてほしいよ。
707 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:20:39 ID: 3XmdHeIv0 Be:
まあ何だ、例えばNSImageで画像を読んでNSBitmapImageRepの-bitmapDataで
ビットマップを直接いじりたいとか思ったとき、配列もポインタも知らずにどうするんだろうねえw
ID:ML+61Nzm0は英語力だけで何とか解決してくれるんだろうか?w

こんなことはCocoaを使ってればいくらでもあると思うんだがねえw
708 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:32:15 ID: vP8/RuuX0 Be:
低級な部分を触る必要の無いプログラミングにおいては、
649の言いたい事はべつにわからんでもないがなぁ。
>>707みたいな場面に出くわす機会ってそんなにある?
俺もCの細かい部分には自信ないけれど、Objective-Cでプログラミングって
面白いなぁと感じる所までは行けたよ。いつか困るんだろうけど。

言い方が決めつけ過ぎだったり、Objective-JがCを完全に内包している事を
すっとばしてCに文句を並べるから、批判が飛ぶんではないかい。
少なくともさおりネカマ嬢よりはまとも。
709 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:36:23 ID: hJLXPXIA0 Be:
J
710 Name: 649 [sage] Date: 2006/09/09(土) 16:38:13 ID: 0SYtDy030 Be:
燃料投下でたくさん絡んできてくれてうれしいな^^

>701
そうだよ。だからCocoaというかFoundationでやったほうが楽でしょ。
>702
そういうのは逐次対応。基本はCocoaとその関係のAPIで十分。
今んとこQuickTime系APIとPosix系APIは触らないといけないケースが
あるので、そこは勉強してる。
>703
普段使うほとんどのアプリケーションで使う機能のうち、CocoaAPIでは
「書けない」ものってどれくらいの量があるのかな?ほんとに書けない?
>704
だからCocoaだとry)
>705
それはモデルの設計が悪い。と思う。どうしても他のAPIに依存するなら、
モデルをラッパクラス化するのがアプローチとしてはよいのでは。
>706
疑問がある訳じゃないが、自分に取ってはCとCarbonとCFは開発効率わるいから。
日本語ドキュメントがあるにこしたことは無いけど、訳語が変で却って困ることが。
>707
そこだけは同意。でも画像をいじるのなら、自分ならOpenGLを調べるけど。

>708
ありがとう。ご指摘痛み入ります。
711 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:50:35 ID: TlBnIruJ0 Be:
なんだ、結局文句を言いつつCの勉強してるじゃんw
712 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:55:05 ID: 45yRLbmC0 Be:
>>710
>>707みたいなケースのことを言ってるんだが
他のAPIとかラッパーとかそういう問題ではない
713 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:57:10 ID: AGwnSZbs0 Be:
音声・動画系の処理は間違いなくCocoaだけじゃできないと思うが。
714 Name: 名称未設定 [sage] Date: 2006/09/09(土) 16:59:44 ID: UP11whiQ0 Be:
何だ‥結局屁理屈で自分の無知を正当化してるだけじゃん。

いい加減いつもの流れに戻してくれ。
715 Name: 名称未設定 [sage] Date: 2006/09/09(土) 17:08:23 ID: jDhL2gpG0 Be:
Cocoaのようなオブジェクト指向のAPIを利用でき、かつ必要に応じて
ポインタ操作等の低レベルな記述が可能なのがObjC(C++でもいいが)の利点だと思ってるんだが。

せっかく小回りが利くC的なを否定するのはなんだかなあ、と
むしろJavaなんかに対する大きなアドバンテージだと思うんだが。
最近は低レベルな実装を嫌う人が多いんだろうか。
716 Name: 649 [sage] Date: 2006/09/09(土) 17:26:39 ID: EF1bNYao0 Be:
>>713
>音声・動画系の処理は間違いなくCocoaだけじゃできないと思うが。

QTKitでそこそこ出来るしょ?
OpenGL/CoreImage系でならかなりのことができそうだけどな。

音声の方は・・・CoreAudioにCocoaなInterfaceはないみたいだけど。
717 Name: 名称未設定 [sage] Date: 2006/09/09(土) 17:27:26 ID: uwndJUJZ0 Be:
低レベルな部分を受け入れられる人と受け入れられない人の果てしなき戦い
718 Name: 名称未設定 [sage] Date: 2006/09/09(土) 17:27:42 ID: vL0rysP+0 Be:
オブジェクトじゃないものが嫌いってことかな。
NSRectを触ると蕁麻疹が出るとか。
719 Name: 名称未設定 [sage] Date: 2006/09/09(土) 17:29:59 ID: fgEuoIUc0 Be:
>>716
ttp://aldebaran.armory.com/~zenomt/macosx/MTCoreAudio/
720 Name: 名称未設定 [sage] Date: 2006/09/09(土) 17:34:34 ID: k0OahFdV0 Be:
リンクドリストが欲しい時にNSArrayで無理やり代用するか否か。
見たいな話か?
721 Name: 名称未設定 [sage] Date: 2006/09/09(土) 17:40:41 ID: AGwnSZbs0 Be:
>>716
まあ「できそう」と口で言うのは簡単だなw

>>719
結局使うのはAudioToolbox/AudioUnitの方だからほとんど意味がないんだなあ
つかAudioDeviceを使った再生ってもうobsoleteだったようなw
722 Name: 名称未設定 [sage] Date: 2006/09/09(土) 18:04:17 ID: JrFeKIO60 Be:
Cocoaの世界で綺麗にまとめることを止めはしないけど、Cじゃないとできないこともあることは知っておいてね。
723 Name: 名称未設定 [sage] Date: 2006/09/09(土) 18:32:39 ID: rF8E3bnr0 Be:
なんだFaundationとかいうのは何かと思ったらただの材料の山かょ
724 Name: 名称未設定 [sage] Date: 2006/09/09(土) 18:39:55 ID: hJLXPXIA0 Be:
とりあえず流れが落ち着いたと思うので質問しますけど、
Interface Builderで、NSTableViewにSort Keyって項目があるんですけど、
ここはモデルになってるオブジェクトのメソッド名を書けばいいんですよね?
725 Name: 名称未設定 [sage] Date: 2006/09/09(土) 19:47:51 ID: LOxJMv3o0 Be:
>>724
ソート対象への、KVCでのアクセス可能なkeypathを指定する。
モデルのアクセッサメソッドとかインスタンス変数名そのものでオK。

>http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableColumn_Class/index.html
>http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSortDescriptor_Class/index.html
726 Name: (・∀・) [sage] Date: 2006/09/09(土) 22:25:24 ID: 9VMu+rgf0 Be:
>>724
NSTableColumn のidentifierを書く。カラムのヘッダをクリックしたとき
そのidentifierを持つカラムでソートされる。
727 Name: 名称未設定 [sage] Date: 2006/09/10(日) 00:12:51 ID: YHtw3DST0 Be:
便乗質問させてください。
アプリが起動したときに、自動でカラム(例えば日付のカラム)をソートするには
どうすればいいでしょうか?
728 Name: 724 [sage] Date: 2006/09/10(日) 00:28:48 ID: 2omrP4+i0 Be:
>>725
サンクス。やってみたけど上手くいかなかったです。
カラムヘッダに矢印は出るんだけど、並び変わらないです。

>>726
すみません、よくわからないです。
カラムのidentifierをカラムのソートキーに設定するってことですか?
729 Name: 名称未設定 [sage] Date: 2006/09/10(日) 00:30:17 ID: LQ6yUU+y0 Be:
すぐみつかるよ
>http://www.big.or.jp/~crane/cocoa/cocoaNote/cocoaNote.html
730 Name: (・∀・) [sage] Date: 2006/09/10(日) 02:16:46 ID: O7SWdeKN0 Be:
>>727
NSTableViewのsetSortDescriptors:を使ってソート。場所はNSTableView
にdatasourceを設定するあたりでいいかと。例を挙げると下のコード。
aTableViewはNSTableView,IBでNSTableColumnのソートを定義しておく。

NSSortDescriptor *sortDes1 = [[aTableView tableColumnWithIdentifier:@"カラムのID"] sortDescriptorPrototype];
NSArray *sortDes = [NSArray arrayWithObjects:sortDes1,nil];

[aTableView setSortDescriptors:sortDes];

当然、datasourceにsortDescriptorsDidChange:を入れたりして
ヘッダクリックでのソートを実現しておく事。
731 Name: 名称未設定 [sage] Date: 2006/09/10(日) 18:53:29 ID: h7kk2j0M0 Be:
developer.apple.comで技術翻訳があるのは、
ほぼ日本語だけなんだけど、
他の国の人はみんな英語ができるんかい?
732 Name: 名称未設定 [sage] Date: 2006/09/10(日) 20:18:40 ID: WOfbgacT0 Be:
>>731
作らないから必要ないんじゃない?
外国は作るのはWindowsのソフトばっかでしょ。
金にならないし。
733 Name: 名称未設定 [sage] Date: 2006/09/10(日) 20:42:02 ID: 3c4PziZQ0 Be:
>>731
できるんでしょ。
日本人だってそれなりに勉強してんだからできるはずだよ。

フランスは意外に英語が通じた。プライドが高いから英語話さないって
聞いてたけど街はそうでもなかったです。
スペインは全く英語が通じない。日本人より英語知らないと思う。
あとオランダとドイツも普通に英語通じたよ。
中国はビジネスやる人は通じる。街はよくわからない、場所によると思う。
アメリカとイギリスは英語が通じる都市にしか行った事がない。

>>732
なんだそれ。学生の方ですか?

日本って自分たちが思ってる以上に重要な国だよ。
なんか小さな島国だってイメージがあったけど、全然でかい。
734 Name: 名称未設定 [sage] Date: 2006/09/10(日) 20:54:41 ID: l31H8Gcf0 Be:
>>733
関係ないが、最近地球儀を見て「うわ、日本てデカイじゃん」と思ったのは俺だ。
735 Name: 名称未設定 [sage] Date: 2006/09/10(日) 20:58:21 ID: Dwh3O20M0 Be:
日本は連邦制をとらない国の中では世界最大。
って」すれ違いだな
736 Name: 名称未設定 [sage] Date: 2006/09/10(日) 21:12:33 ID: PXz6m+x40 Be:
>735
スレ違いと言ってるところに何だが
何が「世界最大」なんだ? 面積じゃないのは間違いないし(……いや領海含めたらそうでもないのか? )
737 Name: 727 [sage] Date: 2006/09/10(日) 23:14:42 ID: YHtw3DST0 Be:
>>730
サンクスです。できました!!
738 Name: 名称未設定 [sage] Date: 2006/09/11(月) 03:32:13 ID: JUwp8ZJP0 Be:
>>734
つGoogle Earth
739 Name: 名称未設定 [age] Date: 2006/09/11(月) 12:22:52 ID: Bg3A5KK20 Be:
半角英数しか受け付けないように制御した
NSTextFieldを作りたいんですが
私は今、頓挫してしまいました。

どうやったら出来るのでしょうか?
orz...
740 Name: 名称未設定 [sage] Date: 2006/09/11(月) 12:37:30 ID: JqbRBwcb0 Be:
>>739
>半角英数しか受け付けないように制御

>http://www.google.com/search?q=keyDown+nsview&hl=ja&client=safari&rls=ja-jp&lr=lang_ja&sa=X&oi=lrtip8
741 Name: 名称未設定 [sage] Date: 2006/09/11(月) 16:11:04 ID: x/buEH2d0 Be:
Viewに表示される内容をPDFに保存したい場合、dataWithPDFInsideRect:を
使うけど、Viewがスクロールしなければ表示し切れない大きなものの場合、上の
メソッドで作成されたPDFは1ページが巨大なものになって、これを印刷しようと
すると全体が縮小されたものか、拡大しても一部だけしか印刷出来ないような代物
になっちゃうんだけど、複数ページに分割出来るように保存出来る方法は
ないですか?一体、どうやれば複数ページのPDFを作成出来るんでしょ?
742 Name: 名称未設定 [sage] Date: 2006/09/11(月) 16:23:57 ID: d/fWNG3R0 Be:
>>741
あるよ。説明面倒だからヒレガス本でも読んでね。
743 Name: 739 [age] Date: 2006/09/11(月) 16:38:10 ID: Bg3A5KK20 Be:
>> 740

え…っと、どの記事でしょう???
744 Name: 741 [sage] Date: 2006/09/11(月) 17:29:28 ID: x/buEH2d0 Be:
>>742
knowsPageRange:とrectForPage:のこと?
実装してるけど、印刷はうまくいくものの、PDF作成ではうまくいかず。
745 Name: 名称未設定 [sage] Date: 2006/09/11(月) 18:08:41 ID: TH/JX8Zx0 Be:
>>743
>え…っと、どの記事でしょう???

>http://www8.ocn.ne.jp/~sonoisa/OgreKit/
これとか。
746 Name: 名称未設定 [sage] Date: 2006/09/11(月) 19:21:42 ID: uUkwgPKf0 Be:
>>733
100%の識字率で高所得、1億2千万以上の人口だから、
まぁそりゃ確かに重要だよなぁ。
747 Name: 名称未設定 [sage] Date: 2006/09/11(月) 19:45:47 ID: s8d7B+f20 Be:
アウトラインビューで、
「キーボードの矢印で選択変更された」のか、もしくは、「マウスでクリックして選択変更された」のか
を判別する方法はありますでしょうか?

また、同じくアウトラインビューで、
既に選択されてフォーカス状態の項目があり、
もう一度その同じ項目をクリックしたとき、クリックされたイベントはとれるのでしょうか?
(違う項目をクリックすると、変更されたイベントは来るのですが)
748 Name: 名称未設定 [sage] Date: 2006/09/11(月) 19:48:23 ID: xWp0HPq70 Be:
>>747
前段は NSEvent の NSEventType で判別できないか。
749 Name: 名称未設定 [sage] Date: 2006/09/11(月) 20:11:56 ID: 19VX4VKH0 Be:
>>736 遅レスだけど、、、
wikipediaの日本の項目で世界最大の記述が何点かあります。

>首都  首都は東京。世界最大の都市圏でもある

>両生類 現存する世界最大の両生類であるオオサンショウウオは
    日本を代表する両生類として世界的に知られている。

>国際経済 継続的な経常黒字により世界最大の債権国
>注釈10 日本の2004年末の対外純資産は1.8兆ドルと世界最大である。


スレ違いすまん。
750 Name: 名称未設定 [sage] Date: 2006/09/11(月) 20:17:59 ID: xWp0HPq70 Be:
スレ違いと思うなら書き込むなよ阿呆が。
751 Name: 名称未設定 [sage] Date: 2006/09/11(月) 20:27:29 ID: 19VX4VKH0 Be:
>>750 うるせー馬鹿。
てめぇの書き込みもスレ違いだよ。
752 Name: 736 [sage] Date: 2006/09/11(月) 22:56:22 ID: 2q1OvLEw0 Be:
>750-751
スマヌ、スレ違いネタを引っ張った俺が全て悪いのだorz
ってことで[俺 release];
753 Name: 名称未設定 [sage] Date: 2006/09/11(月) 23:09:30 ID: P8nPczNT0 Be:
>>752
誰もretainしてなかったっつーの。
754 Name: 名称未設定 [] Date: 2006/09/11(月) 23:16:05 ID: duVkojAH0 Be:
きっとNSAutoreleasePoolによって(ry
755 Name: 名称未設定 [age] Date: 2006/09/12(火) 01:52:39 ID: fQ4f2bEk0 Be:
Dockにアイコンを登録するのってCocoa(もしくCarbon)プログラムで
可能なのでしょうか?
com.apple.dock.plist
を編集するしかないんでしょうか??
756 Name: 名称未設定 [sage] Date: 2006/09/12(火) 01:59:00 ID: hJimq3F40 Be:
行儀の悪いソフトを作るなよ。
757 Name: 名称未設定 [sage] Date: 2006/09/12(火) 02:13:34 ID: 2AmM/ryi0 Be:
行儀悪いw
758 Name: 名称未設定 [sage] Date: 2006/09/12(火) 10:48:51 ID: rtNWCARc0 Be:
shiroタン乙
759 Name: 名称未設定 [age] Date: 2006/09/12(火) 11:00:40 ID: JzhvnkZb0 Be:
>>755
Installer VISEでインストールすると
Dockにアイコンが登録されるね。
多分、やり方はあるはず。
760 Name: 名称未設定 [sage] Date: 2006/09/12(火) 11:06:57 ID: c46TlFxZ0 Be:
>>755
余計なお世話
登録したいユーザはD&Dで勝手にする
761 Name: 名称未設定 [sage] Date: 2006/09/12(火) 12:00:55 ID: rtNWCARc0 Be:
>>755
iLifeはインストール時にaddDockIconというスクリプトでアイコンを追加してるんだが、
自前でxmlファイルを作ってcom.apple.dock.plistにマージしてるだけだったりする。
iLifeをインストールしてたらReceipts以下に残ってるはずだから参考に。
でも、どうせ同じことやるならdefaults writeを使ったほうがいいよなぁ…。

関係ないが、DockにSIGHUPを送ってるな。ちゃんと終了してくれるんだろうか。
762 Name: 名称未設定 [] Date: 2006/09/12(火) 14:25:25 ID: Xz/0ZhUD0 Be:
Dockに、そのためのAppleScriptがありそうな物だが。
763 Name: 名称未設定 [sage] Date: 2006/09/12(火) 14:39:07 ID: fdiDzdI+0 Be:
文化の違いだと思うが、
764 Name: 763 [sage] Date: 2006/09/12(火) 14:41:59 ID: fdiDzdI+0 Be:
途中で送っちゃった。
文化の違いだと思うが、
Windows -> スタートメニューに入れるのが当たり前。っていうか入れなかったらダメだろ。
Mac -> 勝手に変なことすんな、ボケ!俺のMacに何て事してくれたんだ!!!
765 Name: 名称未設定 [age] Date: 2006/09/12(火) 15:01:24 ID: JzhvnkZb0 Be:
iTune のインストーラもDockに登録するスクリプト
入ってるじゃん!

Apple自身が行儀悪いインストーラ作ってることか??

Dockに登録されても気に入らなきゃ
ドラッグ&ドロップで外せばいいんじゃない。
そんな大騒ぎするほどのこどでもないじゃん。
766 Name: 名称未設定 [sage] Date: 2006/09/12(火) 15:21:47 ID: fdiDzdI+0 Be:
>>765
Apple は特別なの。

Apple がやることにはどんなに理不尽でもついていく人を相手に商売しなくちゃならない。
Apple が執拗にくり返す「標準」の変更についていくサードパーティーだけが善であり、
それ以外はすべて悪であると思い込んでいる人を相手に商売をしなくちゃならない。
Apple だけに許される暗黙事項をすべて承知しておくことを要求する人を相手に商売しなくちゃならない。

そういう覚悟でどうぞ。
767 Name: 名称未設定 [] Date: 2006/09/12(火) 15:55:30 ID: Xz/0ZhUD0 Be:
同感、Appleがやっても気にならないけど、765がやったら糞インストーラとか思います。
768 Name: 名称未設定 [sage] Date: 2006/09/12(火) 16:12:34 ID: Feq9lR6l0 Be:
つーか>>755はCocoa/Carbonアプリから
Dockに登録出来るかどうかを聞いてるんだが。

インストーラとアプリとでは同じDockに手を出すにしても
意味が違うだろ。
769 Name: 名称未設定 [sage] Date: 2006/09/12(火) 16:17:43 ID: rtNWCARc0 Be:
Apple信者ってこわいなぁ…。
>>762
真っ先にスクリプトエディタで用語説明を開こうとしたんだが、対応していない云々いわれる。
つーか、必須AppleEventにすら対応してない。一番行儀悪いのはDockだな。

まぁDockへの追加の是非はともかく、plistを直接いじるのはいただけない。
770 Name: 名称未設定 [age] Date: 2006/09/12(火) 16:44:37 ID: JzhvnkZb0 Be:
>>766-767
狂信者だ。こえぇ~~~!
自分を見失うなよ。
771 Name: 名称未設定 [sage] Date: 2006/09/12(火) 16:46:09 ID: aKF7l/rm0 Be:
>>770
ID変えてまで自己弁護乙
772 Name: 名称未設定 [sage] Date: 2006/09/12(火) 16:55:45 ID: fdiDzdI+0 Be:
>>770
俺は信者じゃね-よ。
信者につかまるとろくなことがないから、
避けられるのであれば避けて通るべき道を教えてあげてるだけだよ。

つかまったらほんとに怖いよ、信者は。
773 Name: 名称未設定 [age] Date: 2006/09/12(火) 16:57:55 ID: JzhvnkZb0 Be:
>>771
あんたもね。
774 Name: (・∀・) [sage] Date: 2006/09/12(火) 17:20:41 ID: PzXteuo40 Be:
>>764
だって、exeやdllがたくさんあってどれが本体か分からないんだもん。
775 Name: 名称未設定 [sage] Date: 2006/09/12(火) 18:18:27 ID: T6x11eqc0 Be:
ここは開発者用のスレだ。
荒らしは消えろ。
776 Name: 名称未設定 [sage] Date: 2006/09/12(火) 18:35:40 ID: VV27bxQM0 Be:
つまるところAPIはないから禁止。ってことでFA?
777 Name: 名称未設定 [sage] Date: 2006/09/12(火) 19:07:13 ID: pOhclL+y0 Be:
apiがあってもいいね。
ドック上のアイコンを頻繁に変更するのも非推奨だったはず。
リアルタイム指向にドックを洗練してもいいと思う。
現時点ではウィンドウズのタスクバーの方がいろいろできる。
778 Name: 名称未設定 [age] Date: 2006/09/12(火) 19:07:53 ID: JzhvnkZb0 Be:
くはぁっ!無念。
779 Name: 名称未設定 [sage] Date: 2006/09/12(火) 19:48:53 ID: 2AmM/ryi0 Be:
DockExtraのAPIが非公開になったぐらいだからな
780 Name: 名称未設定 [age] Date: 2006/09/12(火) 20:36:34 ID: JzhvnkZb0 Be:
Windowsはタスクバーにアイコンを追加するAPIって
あるのかな?
多分あるんだろうね。
macもホスイ…。
781 Name: 名称未設定 [] Date: 2006/09/12(火) 20:37:45 ID: 7NOi56j00 Be:
タスクバーにアイコンを追加?
782 Name: 1/7 [sage] Date: 2006/09/12(火) 21:27:20 ID: TiBUhRpI0 Be:
>>780
タスクトレイ?

空気読まずに投下。

オリジナルはオレンジニュースにのってた andymatuschak.org/articles/2006/08/27/clues-to-objective-c-2-0
この記事はNDAとかとは関係ない、gccのリポジトリにあるobjc関連の主にtestsuiteから
Objective-C 2.0がどんななのかを調べてたって内容です。
日本語でこの記事に触れてるブログとか見つからなかったので訳してみました。

----以下テキトーな訳----
783 Name: 2/7 [sage] Date: 2006/09/12(火) 21:28:05 ID: TiBUhRpI0 Be:
【Clues to Objective-C 2.0】

Obj-C 2.0でなにが新しくなるのさ?seed keyを持っていて(訳注:seed developer
のこと?)さえ“hey, we’re changing around the syntax of the language
you do all your work in; hush, we’ll tell ya about it later”なんて言われる
のにはウンザリだ。だからオレはちょいと探ってみたんだ。

gnu.orgのgccのAppleブランチのリポジトリに秘密があるんだ。そのchangelogが
すっかり教えてくれる。とくにtestsuiteがな。これから挙げるObj-C 2.0の追加機能は
誰でもリポジトリで見ることができるものなんだ。

Appleの法務担当さんよ、オレを殺さないでくれよな。
これはぜーんぶ公開されたリポジトリからの情報なんだから。
784 Name: 3/7 [sage] Date: 2006/09/12(火) 21:28:49 ID: TiBUhRpI0 Be:
【プロパティ】

これはオレが見つけた中では追加された最大のものだ。こいつはグルーコードを書くために
費やす時間やコード量を節約してくれる。

Rubyの属性(attributes)のようにObj-C 2.0ではクラスのプロパティを定義することができる。
んでもって、プロパティの属性(nocopy, readonly, readwrite. etc)を指定すれば、コンパイラは
その指定に従ったKVC準拠のアクセサを生成する。もしそうしたければ、アクセサである
setVar:やvarメソッドをオーバーライドすることもできる。

(長いのでコード省略。属性無指定のプロパティとreadonlyのプロパティの例、アクセサのオーバーライド)

で、見りゃわかることはこんなことだ。
・プロパティは.(ピリオド)でアクセスできる。かんたんインスタンス変数アクセス(訳注:あとででてくる)は
 ->を使うことをヘンに思うかもしれんが、これはKVCとは関係ないってことで納得しとこう。
・デフォルトのプロパティの実装は、文字列みたいなオブジェクトすら"do the right thing"で扱ってる
 ように見える。set時にコピーして、自分自身の解放時にもちゃんと解放するみたいだ。
 少なくともdeallocのテストは見当たらないな。
・当たり前だがGroupオブジェクト中のPersonオブジェクトは初期化しなくちゃいけない
785 Name: 4/7 [sage] Date: 2006/09/12(火) 21:29:33 ID: TiBUhRpI0 Be:
他にもプロパティに指定できる属性がある。便利なのがivarだ。こいつはプロパティを指定した
名前のインスタンス変数にマッピングするものだ。

(コード。プロパティの属性ivarの例)
@interface Bar : Object
{
int iVar;
}
@property(ivar = iVar) int FooBar;
@end

getterやsetterのメソッドも別に指定することができる

(コード。プロパティのアクセサメソッドを個々に指定する)
@property(getter = whatBaby, setter = setFire:) id baby;
786 Name: 5/7 [sage] Date: 2006/09/12(火) 21:30:13 ID: TiBUhRpI0 Be:
【foreachでかんたんenumeration】

こいつは言語ベースのenumeratorが追加されたみたいだな。例はこんな感じだ。

NSArray *someArray;
for (id obj in someArray)
NSLog(@"%@", obj);

スタンダードなCocoaのコレクションのすべてでこの振る舞いが有効だ。もちろん、自分の
オブジェクトでこの機能を有効にするには次のメソッドを実装しなくちゃならない。
- (unsigned int)countByEnumeratingWithState:(struct __objcFastEnumerationState *)state objects:(id *)items count:(unsigned int)stackcount
たったこれだけ!

【プロトコルのオプショナル/必須メソッド】

(サンキュ、Jay Tuley。これは忘れてたよ!)

@publicや@privateみたいに、プロトコルは@optionalと@requiredの新しい
キーワードを手に入れたんだ。こいつはスゴイぜ!
前までは非定型プロトコル(informal protocol)しか使えなかった。
だからいつだってdelegateの素晴らしい柔軟性のためには、本当のプロトコルの
代わりにNSObjectのカテゴリを使わなきゃならなかったからな。
787 Name: 6/7 [sage] Date: 2006/09/12(火) 21:30:50 ID: TiBUhRpI0 Be:
【ガベージコレクションのメタデータ】

オレが公開されてるリポジトリで見つけたガベージコレクションに関する追加は、
__weakと__strongキーワードで、これらは変数の弱い参照と強い参照を指定する
ものだ。こいつは__weak NSString *someStringElsewhereみたいに使うんだ。

【メソッドの属性】

メソッドの属性を指定できるようになった。今のとこ"deprecated"と"unavailable"の
2つを見つけた。この2つは指定されたメソッドの呼び出し時に警告が出るようになる。
キーワードの形式は__attribute__ ((attr))になる。こいつはdeprecatedなメソッドのひな形だ。
- (int)foo __attribute__ ((deprecated));
この機能はもうCの関数にはあるものだけど、Obj-Cのセレクタ(メソッド)では
新しい機能になる。ぜんぶの属性のリストは
ttp://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html
で見ることができる。
788 Name: 7/7 [sage] Date: 2006/09/12(火) 21:31:24 ID: TiBUhRpI0 Be:
【かんたんインスタンス変数アクセス】

最初の記事で、オレはObj-C 2.0の新機能と紹介したけどそうでもなかったようだ。
まあでもオレと同じように君らにとっても新しいものかもしれんからな。
(訳注:ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/3objc_language_overview/chapter_7_section_5.html の「インスタンス変数の参照」)

インスタンス変数はobj->ivって形式でアクセスできるけれど、それは@publicな
ものだけだ。キーワードには@protectedや@privateもある。以下は(変更した)リポジトリの例だ。

(長いのでコード省略。@publicのみがアクセスできる)

【結論】

AppleはObj-C言語にほんとにいっぱい追加したな!オレはプロパティと
かんたんenumerationに興奮したよ。思うにオレたちはこの春にはぜんぶ
調べつくさにゃならん。(もしくはAppleサマがADCのSelect/Premire会員に
DP(訳注:Developer Previewのことか?)を与えるまではな)
789 Name: 782 [sage] Date: 2006/09/12(火) 21:32:29 ID: TiBUhRpI0 Be:
終わりです。間違ってるとこあったら指摘お願います。
790 Name: 名称未設定 [sage] Date: 2006/09/12(火) 23:29:38 ID: dqLn12uX0 Be:
翻訳スレの方がよかったんじゃないか。
どっちにしても>>TiBUhRpI0 乙
791 Name: 名称未設定 [sage] Date: 2006/09/12(火) 23:31:15 ID: dqLn12uX0 Be:
いや、翻訳スレの住人にはどうでもいい話か。
792 Name: 名称未設定 [sage] Date: 2006/09/12(火) 23:58:01 ID: oQJ98+Qe0 Be:
>>TiBUhRpI0

乙です。ありがとう。
793 Name: 名称未設定 [] Date: 2006/09/13(水) 11:13:55 ID: 1P0rviQk0 Be:
後は匿名メソッドさえあれば十分だ。セレクタを引数で渡す所にメソッド宣言を直接書けて、ブロック内で外側の変数にアクセスできるやつ。
794 Name: 名称未設定 [sage] Date: 2006/09/13(水) 19:25:48 ID: mZXqM74b0 Be:
クロージャのこと?lambda式とか。
795 Name: 名称未設定 [] Date: 2006/09/15(金) 14:22:13 ID: zqF3RbO20 Be:
近いが、クロージャはローカルスタックの保存の概念が有るので、そこまでは要求しない。
C# 2.0の匿名delegateやJava 7の匿名メソッドと同程度でいい。
796 Name: 名称未設定 [] Date: 2006/09/15(金) 14:23:55 ID: zqF3RbO20 Be:
lamda式は匿名メソッドが一行の場合の見栄えが良いだけなので、要らんと思う。
797 Name: 名称未設定 [sage] Date: 2006/09/15(金) 17:35:18 ID: EiYITv5K0 Be:
__weakとか__strongみたいな、アンダーバーが付く識別子はいやだなぁ
798 Name: 名称未設定 [sage] Date: 2006/09/15(金) 17:36:12 ID: eFpmRdc50 Be:
それはきっと他のにtypedefされるんじゃね?
799 Name: 名称未設定 [sage] Date: 2006/09/15(金) 23:20:17 ID: Z6IaU+i30 Be:
isFlipped が YES の NSView に isFlipped が YES の NSImage を描画しようとして
- (void)drawInRect:(NSRect)rect fromRect:(NSRect)fromRect operation:(NSCompositingOperation)op fraction:(float)delta;
と格闘すること半日。
両方とも isFlipped を NO にすれば簡単だということに気づいた。
何をやってたんだか……
800 Name: 名称未設定 [sage] Date: 2006/09/16(土) 00:38:04 ID: K63W0dy2O Be:
そもそもisFlippedってどんなときにYESにするんだ?
801 Name: 名称未設定 [sage] Date: 2006/09/16(土) 06:26:32 ID: pu1cZi920 Be:
NSView のサブクラスで自前のコントロールを作る時に
左上が原点だと座標計算が少しだけ簡単になる。
もっとも、他の NSView や NSImage と組み合わせようとすると途端に難しくなるが。
802 Name: 名称未設定 [sage] Date: 2006/09/16(土) 12:14:40 ID: zqD8DA610 Be:
パスで示されるあるファイル@"/Foo/Bar/Hoge"がアプリケーションかどうか判別する方法ってありますかね?
NSWorkspaceの -getInfoForFile:application:type:では拡張子.appがついてないアプリは判別できないようなんですが。
803 Name: 名称未設定 [sage] Date: 2006/09/17(日) 00:19:38 ID: ORQ+CIEg0 Be:
LaunchServicesの kLSItemInfoIsApplication なら大丈夫だったと思う
804 Name: 名称未設定 [sage] Date: 2006/09/17(日) 01:49:22 ID: GUl2N7nB0 Be:
日本語ロゴをグラデーション付きで生成したいんだけんども、
CocoaのAPIだとシェーディング使えんのね。
仕方なくQuartzをいじってみたがこっちは日本語が使えん。
もうちょっと高機能な描画ルーチン無い?
そこまで全部自作するとかでか過ぎて見当もつかんw
805 Name: 名称未設定 [sage] Date: 2006/09/17(日) 02:27:16 ID: k1ZNARn80 Be:
-[NSBezierPath appendBezierPathWithGlyph:inFont:] あたりで
path を作って set してから CGShading でどうでしょうか。
806 Name: 名称未設定 [sage] Date: 2006/09/17(日) 03:20:24 ID: GUl2N7nB0 Be:
そんな共用できるんですか。
ありがとう
807 Name: 名称未設定 [sage] Date: 2006/09/17(日) 08:44:27 ID: l8eIFVqfO Be:
>>803
レスサンクスです。
kLSItemInfoIsApplicationでぐぐってみたらいろいろとサンプルコード見つかりました。
808 Name: 名称未設定 [sage] Date: 2006/09/17(日) 23:15:04 ID: JweGeWnS0 Be:
Cocoaはじめて一週間ほどの者です。
参考書を読んで手探りでやっている状態で、オブジェクト指向言語も
初めてです。

Xcodeでプロジェクトを作り、インターフェースビルダーを使って
「Aclass」というクラスを自分で作りました。
そして、Aclassに Amethodというアクションを作って、
CreateFiles for Aclass... を実行して、Amethodを実装しました。

そして、さらに新しく「B」というクラスを作り、
Bmethodというアクションを作り、
同じようにCreateFiles for Bclass... を実行して、Bmethod
実装しました。
それで、Bmethodの実装で、先ほどのAmethodの機能を使いたいので、
Amethodに
 [AClass Amethod]; のようにメッセージを投げました。
が、プロジェクトをビルドして、Bmethodのアクションに接続した
ボタンをクリックすると、

[16133] *** +[AClass Amethod]: selector not recognized

というログが出て何も起こりません。
どこが間違っているのでしょうか。
809 Name: 名称未設定 [sage] Date: 2006/09/17(日) 23:26:52 ID: YYsdqVJQ0 Be:
>>808
Aclassそのものではなくて、Aclassのインスタンス(aClassとします)に投げる必要があります。
InterfaceBuilderを使うなら、Bclassに「aClass」というアウトレットを追加します。こいつの型を
"id" または "Aclass" に設定してください(コンパイル時により厳密なチェックを行いたければ後者をお勧め)。

もう一度「Create Files for Bclass...」してヘッダを見てみれば、インタフェース宣言に
{
 ...
 IBOutlet AClass aClass;
}
という変数が追加されているはずです。AclassではなくaClassに向かって命令を投げればOK。
他にもっと違ったアプローチもありますが。
810 Name: 809 [sage] Date: 2006/09/17(日) 23:28:16 ID: YYsdqVJQ0 Be:
追記。
InterfaceBuilderで追加したアウトレットは、もちろん接続を行っておく必要あり。
811 Name: 名称未設定 [sage] Date: 2006/09/17(日) 23:30:59 ID: Zb7/+lFt0 Be:
>もう一度「Create Files for Bclass...」してヘッダを見てみれば、

そしたら最初に作った Bmethod が消えるような気がする。
Read Bclass.h の方が良いんと違うか。
812 Name: 名称未設定 [sage] Date: 2006/09/17(日) 23:44:23 ID: Zb7/+lFt0 Be:
ごめん。気になったんで試してみたら Create Files for Bclass... でも既存のメソッドは消えないな。
813 Name: 名称未設定 [] Date: 2006/09/17(日) 23:50:51 ID: PcgzIBsr0 Be:
ねえねえ、ウインドウの背景色を濃くしたようなやつ(NSBoxの中の色)を簡単に書く方法ってある?
いまは普通のウインドウの背景色が書かれてるところで
[[NSColor controlHighlightColor] set];
NSRect selfBounds = [self bounds];
NSRectFillListUsingOperation(&selfBounds, 1, NSCompositePlusDarker);
ってやってるんだけど、一発で書ける関数ってないのかな。
814 Name: 名称未設定 [sage] Date: 2006/09/18(月) 01:48:14 ID: aevMiTxb0 Be:
[[NSColor controlHighlightColor] set];
[NSBezierPath fillRect:rect];
815 Name: 名称未設定 [sage] Date: 2006/09/18(月) 21:28:32 ID: tsjVA5K90 Be:
>>809
ありがとうございました。

>他にもっと違ったアプローチもありますが。
というのは、インターフェイスビルダーを使わずに
メッセージングを行うという事ですか?
816 Name: 名称未設定 [sage] Date: 2006/09/18(月) 23:03:43 ID: 60B5UsnE0 Be:
JavaでDIってのが花盛りのようですが
Objective-CでDIってのはどういう風に実装するんでしょうか。
Objective-C(Cocoa)ではDIは必要ない?

って、DIってのがよく分かってないのが一番問題ですけど・・・。
817 Name: 名称未設定 [sage] Date: 2006/09/18(月) 23:16:11 ID: B4N4/boW0 Be:
>>815
そうすね。よく見かける奴では、たとえば常に単一の(既に作成された、とでも言えばいいのか)
インスタンスに対してメッセージを送りたい時に、sharedウンタラカンタラ、というのを作っておく
のが常套手段のようです。たとえば Aclassの Aclass.m にこんな記述を。

#import "Aclass.h"
static id _sharedA = nil;
@implementation Aclass
- (id)init{
 if(self = [super init]){
  ...(固有の初期化処理はここ)
  _sharedA = self;  // 変数 _sharedA で Aclassのインスタンスが参照できるようにする
  return self;
 }
 return nil;
}

+ (id)sharedA{
 return _sharedA;
}

こーしておいて、他のオブジェクトがAclassのインスタンスにメッセージを送りたい時には、
 [[Aclass sharedA] message];
とやるみたい。
本質的には意味合いが違うもんかもしれませんが、私はIBを使うのが面倒なのでこっちで済む時は
こうしてます。
818 Name: 名称未設定 [sage] Date: 2006/09/18(月) 23:20:08 ID: B4N4/boW0 Be:
>>811
ご指摘どもです。
思わず「ごめんなさい」といいかけましたが、Read しなくても大丈夫みたいですね。

関係ないけど次期IB、ツールバーぐらいはGUI上で作れるようにして欲しいなぁ。
819 Name: 名称未設定 [sage] Date: 2006/09/19(火) 02:48:13 ID: Jt+bXHCB0 Be:
マルチドキュメントのアプリケーションでメニューバーのメニューを動作させるためには、
アプリケーションの nib ファイルでメニューの target を First Responder に接続して、
ドキュメントの nib ファイルで -(IBAction)hoge:(id)sender; といった action を実装するのが通常だろうと思います。

今作っているアプリケーションでは
ドキュメントの nib ファイルの File's Owner のクラスとして MyDocument を指定してあり、
ドキュメントの window の delegate は File's Owner に接続してあるのですが、
それとは別に、AController というクラスを window 上にある view のコントローラとしてインスタンス化してあります。

こうした場合に AController に -(IBAction)hoge:(id)sender; といった action を実装しても
メニューバーのメニューは選択不可なのですが、
これは AController のインスタンスが Responder chain に入っていないためだと理解しています。

そこで、view の nextResponder として AController のインスタンスを指定したところ、
view にフォーカスが当たっている時にはメニューが選択可能になったのですが、
view からフォーカスが外れるとメニューは選択不可になってしまいます。

view にフォーカスが当たっていると否とを問わずメニューを選択可能にするためには、
どういう方法を取るのが正しいのでしょうか?

AController のインスタンスを view ではなく NSApp の nextResponder として指定すれば
view のフォーカスの状態に関係なくメニューは選択可能になるのですが、
ドキュメントのレベルを超えていきなり NSApp の nextResponder として指定するのは、
どうも正しくないような気がします。
820 Name: 名称未設定 [sage] Date: 2006/09/19(火) 08:37:54 ID: r+O+UOSw0 Be:
>そこで、view の nextResponder として AController のインスタンスを指定したところ、
>view にフォーカスが当たっている時にはメニューが選択可能になったのですが、
>view からフォーカスが外れるとメニューは選択不可になってしまいます。

そりゃそうだ。自分で書いてある通りAControllerをそのViewのNextResponderにしたんだから。

>view にフォーカスが当たっていると否とを問わずメニューを選択可能にするためには、
>どういう方法を取るのが正しいのでしょうか?

そのドキュメント (のウインドウ) が選択されている時に応答したいんだったら,素直に
NSDocumentのサブクラスにメソッドを実装して,そのメソッドの中で
[aController myAction:sender];とかすればいいんじゃないの?
アプリケーション共通の処理だったらNSApplicationのDelegateに書いてもいいし,
FirstRepponder使わずにそのインスタンスのアクションメショッドをそのまま呼び
出してもよいだろうし。
あと,NSAppのnextResponderなんかに指定しなくても,単にNSAppのデレゲートに
すればレスポンダーチェーンに参加できる。つーかnextResponderを変更したら,その
変更されたnexResponderに指定されたオブジェクトも次のrepoonderをきちんと指定
しないと上位のビューに投げていくというCocoaのResponder Chainsが壊れちゃう気がする。
レスポンダーチェーンについては
ttp://developer.apple.com/documentation/Cocoa/Conceptual/BasicEventHandling/index.html
の図を見よう。無理にnextResponder:をいじるより,アプリの設計を考え直した方がいいと思う。
なんか混乱していると思うぞ?
821 Name: 名称未設定 [sage] Date: 2006/09/19(火) 22:03:12 ID: 9YjYVzRM0 Be:
最近よく使われてる黒い半透明のWindowはどうやって作るんですか?
822 Name: 名称未設定 [sage] Date: 2006/09/19(火) 22:06:00 ID: ckAkXMLv0 Be:
NSWindow のサブクラスでも作って実装してください。
823 Name: 名称未設定 [sage] Date: 2006/09/19(火) 22:36:41 ID: lnS2glGH0 Be:
/System/Library/PrivateFrameworks/ProKit.framework
824 Name: 名称未設定 [sage] Date: 2006/09/19(火) 22:38:03 ID: /FEdPOf+0 Be:
ProKitのウインドウって、前に使ったときはただパネルを黒く塗っただけのような感じだったな。
使い方が悪かったのかな。
825 Name: 名称未設定 [sage] Date: 2006/09/19(火) 22:52:02 ID: RY1STNNF0 Be:
ProKitって公開しないのかな?
826 Name: 821 [sage] Date: 2006/09/20(水) 07:13:43 ID: p1b6ugmC0 Be:
ProKit(というかPrivateFrameworks)ってガンガン使っちゃってもいいんですか?
良いなら使いたいですが、NSWindowサブクラスを作るのが吉?
827 Name: 名称未設定 [sage] Date: 2006/09/20(水) 19:15:21 ID: Rk3hyc9I0 Be:
バックグラウンドでやりたい長い処理があるんですが、CPU能力の10~20%くらいで
まったりやらせる方法はあるでしょうか?
NSThreadで優先度を0にしても空いてる処理能力を全部使って一生懸命やってくれちゃうので
丁度良く力を抜かせたいんですが。
828 Name: 名称未設定 [sage] Date: 2006/09/20(水) 20:29:03 ID: n0oVMtfS0 Be:
定期的にスリープしとけ。
829 Name: 名称未設定 [] Date: 2006/09/21(木) 18:56:47 ID: VMd1nvD00 Be:
最近「MAC OSX Cocoa プログラミング(アーロン ヒレガス)」を読みながら勉強を始めた者です。
もし、この本で学習された方がいらっしゃいましたらぜひアドバイス願いたいのですが、第6章(アーカイブ)の課題のプログラムは本の通りに打ち込むとパンサーでも動くのでしょうか?
本の通りに打ち込んだ(つもりなんですが)後に、実行してプログラム内で適当なデータを保存すると、「シグナル 11(SIGSEGV)により終了しました。」と表示されてプログラムが終了してしまいます。
コンパイル時点でのエラーはすべて解決しているのですが、何が悪いのかわからず途方に暮れています。
まず、パンサーでも動くコードなのかどうかを確認したいと思っています。
830 Name: 名称未設定 [sage] Date: 2006/09/21(木) 19:07:54 ID: RLkfsmHk0 Be:
>>829
>打ち込んだ(つもりなんですが)
「打ち込みました」と言い切れるようになってから出直してね。
831 Name: 名称未設定 [sage] Date: 2006/09/21(木) 19:14:12 ID: JxoTV12u0 Be:
>>829
私はその本持ってないので分かりませんが、デバッガで追えばどこで落ちてるか分かるのでは。
832 Name: 名称未設定 [sage] Date: 2006/09/21(木) 19:27:46 ID: zgOSpSEr0 Be:
プログラムのmd5値でも晒してみたら?
誰も試してないと思うが。

定期的にCPU負荷調べてスリープさせる。
renice +20
相当の優先度設定している?

Prokitってタイガー以降だっけ?
833 Name: 名称未設定 [sage] Date: 2006/09/21(木) 20:09:23 ID: qW+Ve3/H0 Be:
ProKitはPantherからだったはず。ていうか俺の10.3.9に入ってる。
834 Name: 名称未設定 [sage] Date: 2006/09/21(木) 20:09:30 ID: v/5rKMVh0 Be:
Pantherにもある
835 Name: 名称未設定 [sage] Date: 2006/09/21(木) 20:22:38 ID: JPjaynic0 Be:
NSThreadで、ある条件が成立したらthreadを動かすというのを
考えています。
NSThreadに、sleepUntilDateってのはあるんですが、一定時間
ごとに起こしてチェック、というのはあんまりスマートじゃないし
タイムラグが馬鹿にならない、と思うのですが、皆さんならどうい
うふうに書くものなのでしょうか?
836 Name: 名称未設定 [sage] Date: 2006/09/21(木) 20:27:02 ID: S0ry4CA/0 Be:
NSConditionLock
837 Name: 名称未設定 [sage] Date: 2006/09/21(木) 21:09:55 ID: JPjaynic0 Be:
>>836
なるほど・・・
これって、lockのインスタンスがint値を保持するということですよね。

ということは、32bit分のconditionがとれるわけだから、bitごとに
フラグを持たせて、全thread即終了とか再初期化!とかできたりして

・・・とか思ったんですが、conditionは式で指定するのはダメか。
これ、式の評価をリアルタイムでやってくれるわけではないですよね?

 [condLock lockWhenCondition:(評価式)];
とかかけると便利なんですが。(xxx & 0xF > 0とかxxx & yyy == TRUEとか)

単純に特定のint値がセットされるまで待つ、しかできないのかな。
838 Name: 名称未設定 [sage] Date: 2006/09/21(木) 21:25:40 ID: n07L3R2X0 Be:
>>826
>ProKit(というかPrivateFrameworks)ってガンガン使っちゃってもいいんですか?

PrivateFrameworksって、OSのバージョンが変わるときにメソッドが変更/消滅したり、
フレームワークそのものが消滅したりすることがある。
そうしたらそのフレームワークを参照しているアプリはクラッシュするようになる。
ある特定のOSのバージョンだけで動けばいいならいいのかもしれんが。
839 Name: 名称未設定 [] Date: 2006/09/21(木) 21:46:50 ID: VMd1nvD00 Be:
829 です。
早速のレスどうもありがとうございました。
何とか解決できました。
原因は私の勘違いでした(^^;)。
本によると「ドキュメントベースアプリケーションで保存に関するメニュー項目を扱うのには3つのメソッドを実装しておかなくてはならない。」
と書いてあるんですが、
直後にかかれたサンプルコードにはそのうちの1つのメソッドについてしか記述がありませんでした。
それで、残り二つのメソッドについて勝手にとんちんかんなことを書き込んでしまっておりました。
イヤ~、お騒がせして申し訳ありませんでした(m..m)。
勉強になりました。
840 Name: 名称未設定 [sage] Date: 2006/09/21(木) 21:51:33 ID: v/5rKMVh0 Be:
>>826
Pro風のウインドウのサンプル。
他にもいろいろ面白いものがある。
ttp://mattgemmell.com/source/
841 Name: 名称未設定 [sage] Date: 2006/09/21(木) 22:25:23 ID: qW+Ve3/H0 Be:
>>840
すげーー。AppKitだけで自力で描画してるのか。
RoundedBoxもおもしろそうだけど、こっちはCore Image使ってるのね。

ところで全然話変わりますけど、setValue:forKey:でアクセサがなくてインスタンス変数に直接アクセスされたとき、
それまで保持されていたオブジェクトってちゃんと解放されるんでしょうか?
842 Name: 名称未設定 [sage] Date: 2006/09/21(木) 22:33:26 ID: n07L3R2X0 Be:
>>837
>フラグを持たせて、全thread即終了とか再初期化!とかできたりして

NSConditionLock って内部的には broadcast でスレッドを起こしてるっぽいけど。
そういう意味じゃなくて?

> [condLock lockWhenCondition:(評価式)];
>とかかけると便利なんですが。(xxx & 0xF > 0とかxxx & yyy == TRUEとか)

逆に unlockWithCondition: を呼ぶ部分で式を評価すればよいのでは?
843 Name: 826 [sage] Date: 2006/09/21(木) 23:04:12 ID: NSKoAuiV0 Be:
>>838
>>840
どうもです。参考になりました。
844 Name: 名称未設定 [sage] Date: 2006/09/21(木) 23:06:19 ID: vStkDCcA0 Be:
>>842

>内部的には broadcast で
すみません。細かい話はさっぱりなので (^^;)

>逆に unlockWithCondition: を呼ぶ部分で式を評価すればよいのでは?
これ勉強してみます。逆転の発想かぁ、便利そうですね。
845 Name: 名称未設定 [sage] Date: 2006/09/21(木) 23:47:40 ID: n07L3R2X0 Be:
>>844
>>逆に unlockWithCondition: を呼ぶ部分で式を評価すればよいのでは?
>これ勉強してみます。逆転の発想かぁ、便利そうですね。

ただ、ふと思ったが、プログラムの構造や変数のスコープ等によってはそうもいかない
こともあるような気がしてきた。

どうしてもlock側で条件を評価したい場合はどうするんでしょ > 識者
最初のlockの外側に別にロックされた条件評価のループを作るとかかなあ。ベタですが。
846 Name: 名称未設定 [sage] Date: 2006/09/21(木) 23:49:03 ID: 1/19nKH90 Be:
ほとんど虎用か。
847 Name: 名称未設定 [sage] Date: 2006/09/22(金) 06:42:34 ID: nI6W8T410 Be:
>>829
ヒレガス本は著者のサイトにサンプルコードのソースがアップされてるので
それをダウンロードすればいいよ。ただ、日本語版とページ番号が違うので
そこは注意しなきゃならないけどね。URLは本に書いてあったはず。
848 Name: 名称未設定 [sage] Date: 2006/09/22(金) 18:06:43 ID: cn0luS/RO Be:
NSWindowのサブクラスを作って、マスクにNSBorderlessWindowMaskを指定した場合、
ウインドウ右下でのリサイズ機能は自分で実装しなければならないと思うのですが、
これは具体的にどのようにして実装すれば良いのでしょうか?
849 Name: 名称未設定 [sage] Date: 2006/09/22(金) 18:16:05 ID: /keDXe9l0 Be:
>>848
単に mouseDown: を実装すればいいんじゃねーの?
[NSWindow nextEventMatchingMask:untilDate:inMode:dequeue:]
も使うでしょうね。
850 Name: 名称未設定 [sage] Date: 2006/09/22(金) 19:10:29 ID: 0gnQnPb70 Be:
>847
アドバイスありがとう。
そのサイトに行ってみたのですが、第2版(英語版のみ出版)のサンプルしかなく、その内容も初版とずいぶん異なっていました。
初版のサンプルもどこかにあるのですかね?
851 Name: 名称未設定 [sage] Date: 2006/09/22(金) 19:22:00 ID: gHXFlnyX0 Be:
ヒレガス本の第6章読んでみたが、
Panther で動かなくなるようなコードは無かったな。
落ちるタイミングは分かってるんだから、
該当する部分をデバッガで1ステップづつ実行していけば良かろう。
852 Name: 名称未設定 [] Date: 2006/09/23(土) 07:30:18 ID: jlxpvsYo0 Be:
>851
おかげさまで何とか解決できております。
原因は私の不勉強からくる誤読でした。
853 Name: 名称未設定 [sage] Date: 2006/09/23(土) 08:00:45 ID: SxAvLdB+0 Be:
>>852
>原因は私の不勉強からくる誤読でした。

なんだ、本の通りに打ち込んだんちゃうやん。
よくいるんだよなー自分で間違えといて自分以外に原因があると思い込む奴。
そういうのって大抵自分の側にミスがあると思って間違いないから。マジで。
854 Name: 名称未設定 [sage] Date: 2006/09/23(土) 15:24:52 ID: ZmbsKE7z0 Be:
>>853
芽を潰すタイプだな。
855 Name: 名称未設定 [sage] Date: 2006/09/23(土) 19:35:37 ID: sDuqrn5y0 Be:
よくいるんだよなー人の失敗ばかりせめる奴
自分の馬鹿さ加減はわからないでいると思って間違いないから。マジで。
856 Name: 名称未設定 [sage] Date: 2006/09/23(土) 20:09:40 ID: q1U6m7U+0 Be:
初心者相手に優越感に浸りたいんだろ。

>>850
first editonのサンプルもあるよ。
ttp://www.bignerdranch.com/products/cocoa1.shtml

first editonの方を選んでpage#を入れて実行すればいい。
857 Name: 名称未設定 [] Date: 2006/09/24(日) 00:32:36 ID: UUBNIT8X0 Be:
829,839,859 の書き込みをした者です。
何やらお騒がせをしてすみません。
浅学を恥じ入っております(m..m)。

>856さん
わざわざリンク先まで指示してもらってどうもありがとう。
早速行ってきました。
確かに初版のサンプルがあるかのように記述されていました。
喜んでDLしようとしたのでが、残念がらリンク切れでした(^^;)。
古い資料ですから仕方ないですね。


858 Name: 名称未設定 [sage] Date: 2006/09/24(日) 01:49:09 ID: 0BdJf+kd0 Be:
自分は正しいコードを書いてるつもりなのに思い込みでミスをした例を一つ。

aとbという2つのNSDateについてaがbと同時刻ないしは以前の時刻であることを調べるために
if ([a timeIntervalSinceDate:b] <= 0) hoge;
てなコードを書いていたのな。

ところが、aとbの日付も時間も秒も同じなのに、このif文で偽になってしまう場合がある。
秒まで同じなのに偽になるのは変だと思ったんだが、
timeIntervalSinceDate:の返り値の型であるNSTimeIntervalはdoubleをtypedefしたものなので、
<=で比較する時に小数点以下の秒数まで比較していたんだな。

これはNSTimeIntervalはlongをtypedefしたものだという思い込みがあったのが原因だった。
859 Name: 名称未設定 [sage] Date: 2006/09/24(日) 14:45:42 ID: uiSQe78v0 Be:
NSArrayController に add したオブジェクトを、add した直後に取り出したいんですが、
どう書けばいいでしょうか。

-(void) hoge: (id) sender
{
NSArrayController * arrayController;
NSManagedObject * managedObject;

[arrayController add: sender];
managedObject = [arrayController content];

// ここで managedObject をいじりたい
}

としてますがうまくいきません‥
860 Name: 名称未設定 [sage] Date: 2006/09/24(日) 17:04:17 ID: ppctiKi00 Be:
[[arrayController content] lastObject] じゃないの?
861 Name: 859 [sage] Date: 2006/09/24(日) 18:32:11 ID: uiSQe78v0 Be:
>>860
できました!
ありがとうございました。
862 Name: 名称未設定 [sage] Date: 2006/09/25(月) 22:26:50 ID: /3XRGlnsO Be:
NSXMLParserってなかったことにされたんですか?
863 Name: 名称未設定 [sage] Date: 2006/09/26(火) 09:33:05 ID: 7vG+AnqC0 Be:
NSButton の keyEquivalent にリターンキーを設定したいときは、
charCode のところは何て書けばいいでしょうか?
[NSButton setKeyEquivalent: charCode];
864 Name: 名称未設定 [sage] Date: 2006/09/26(火) 10:15:13 ID: aJrIfMP00 Be:
@"¥r"
865 Name: 863 [sage] Date: 2006/09/26(火) 11:16:25 ID: 7vG+AnqC0 Be:
㌧クス
866 Name: 名称未設定 [] Date: 2006/09/29(金) 12:13:39 ID: 8FJ0xXFR0 Be:
ログアウト・再起動・システム終了のイベントってどうやって受け取れば
いいんでしょうか?AppleEventのquitだとapplicationShouldTerminateが
呼ばれるんですが、ログアウトとかでは呼ばれないので別の仕組みなので
しょうか?
867 Name: 名称未設定 [sage] Date: 2006/09/29(金) 12:18:56 ID: Mw77BSt10 Be:
NSWorkspaceWillPowerOffNotification
だろうと思うが。
868 Name: 名称未設定 [sage] Date: 2006/09/29(金) 13:15:27 ID: oknVkkAE0 Be:
http://developer.apple.com/documentation/Cocoa/Conceptual/AppArchitecture/Tasks/GracefulAppTermination.html
を読む限りでは、ログアウトのときも applicationShouldTerminate: が呼ばれるように書いてるように思うけど、ドキュメントのバグなのかな。
いまログアウトしてみたくないので手元で試さずにカキコしますが失礼
869 Name: 866 [] Date: 2006/09/29(金) 13:17:49 ID: 8FJ0xXFR0 Be:
>>867
ありがとうございます。notificationは受け取れたのですが、何かの処理を
する間もなくログアウトや再起動の処理が進んでしまいました。どちらに
してもnotificationだとcancelを返すこともできないんですよね?

applicationShouldTerminateのようにNSTerminateCancelを返せるような
方法というのはないのでしょうか?
870 Name: 866 [] Date: 2006/09/29(金) 13:43:54 ID: 8FJ0xXFR0 Be:
>>868
document-basedのアプリであれば、各ウィンドウ毎に保存するかどうか聞いて、
終了のキャンセルもできるような仕組みがデフォルトで組み込まれているようです。
ただし、この仕組みも書類がdirtyでなければもちろんスルーされてしまいます。

ユーザから見えない書類を作ってdirtyにしておいて、NSDocumentController
のサブクラスでreviewUnsavedDocumentsWithAlertTitle:を書き換えるとかで
しょうか?
871 Name: 868 [sage] Date: 2006/09/29(金) 14:06:10 ID: oknVkkAE0 Be:
そんなトリッキーなことしなくてもできるはずだと思う。
document-based app にしたって、Apple は NSApplication
の枠組みで自社のAPIでつくってるはずだから、
そんなところに裏 API があるとは思えないけどな。

というかいま single window app の空のをつくってみたら、
ログアウト時でも applicationShouldTerminate: 受け取れましたけど?
こちらは 10.4.7 intel です。
そちらも、既存の作りかけの app でやってみるんじゃなくて、
空の app で試してみてくれません?
そちらのソースコードをみせていただけるとこっちでもチェックできますけど。
872 Name: 866 [] Date: 2006/09/29(金) 14:56:08 ID: 8FJ0xXFR0 Be:
>>871
原因がわかりました。NSUIElementが1になっているためでした。applicationShouldTerminate:は
呼ばれることは呼ばれるのですが、何か処理しようとしてもその途中で強制終了させられているみ
たいです。

フェイスレスなアプリでログアウトの処理をするのは無理ってことでしょうか...
873 Name: 名称未設定 [] Date: 2006/09/29(金) 16:38:40 ID: Ns1R0XGD0 Be:
今期のCocoaセミナー。全部のスケジュールが確定。
ちょっと前に紹介した初級編に加えて、
中級編と新たに上級編もアナウンスしている。
http://hmdt.jp/
874 Name: 名称未設定 [] Date: 2006/09/30(土) 01:42:53 ID: rQO5hHU50 Be:
コマンドラインからccでコンパイル、リンクしたいの
ですが、(NSLogなどが)リンクエラー(Undefined
symbols)になってしまいます。どんなオプションを
指定すればいいのでしょうか、教えてください。
875 Name: 名称未設定 [sage] Date: 2006/09/30(土) 01:56:55 ID: kz0zMxOL0 Be:
-framework Cocoa
つーか、コマンドラインにこだわるのはなぜ?
876 Name: 名称未設定 [sage] Date: 2006/09/30(土) 01:58:24 ID: YZs26opt0 Be:
AppKit 使わないなら -framework Foundation
877 Name: 名称未設定 [sage] Date: 2006/09/30(土) 02:03:42 ID: rQO5hHU50 Be:
>>875,876
速攻レス感謝。うまくいきました。
>>875
ちょっとしたプログラム(ゴミプロ)書くのに、
XCodeは大げさに感じるんですよね、なぜか。
ターミナルからviでちょこちょこ書くのがふさわしい
ように感じられて。
878 Name: 名称未設定 [sage] Date: 2006/09/30(土) 11:17:37 ID: uUDevZs50 Be:
つーかIBってなにげに面倒だよ。
Makefileに書いとけばmake一発で良いし、あんまりxcode要らない。

Object-C本でもIB使わずにプログラム組んでるよね。
879 Name: 名称未設定 [] Date: 2006/09/30(土) 12:22:40 ID: rQO5hHU50 Be:
重ねて質問します。
dirArray =
[[NSFileManager defaultManager]
directoryContentsAtPath:
@"/Users/MyHome/Music/iTunes/iTunes Music"] ;
NSLog([dirArray description]);
として、ターミナルに吐き出しているのですが、日本語
のフォルダ名が化けます。どうすべきなのでしょうか?
OSは10.3.9で、デフォルトのbashを使用してます。
880 Name: 名称未設定 [sage] Date: 2006/09/30(土) 12:39:14 ID: rbWpebVT0 Be:
エンコーディングのこともしらずにプログラミングならターミナルだよねとか偉そうなこと言ってるの?と言いたくなりますが、

ターミナルのファイル→情報を見るのなかにエンコーディング設定するところがあるので正しいエンコーディングにしてみてください。
もしくは現時点のエンコーディングをぐぐるとかして調べて、そのエンコーディングに変換して表示したらいいんじゃないですか?
10.4 なら標準でついてる textutil でエンコード変更できます。
10.3.9 なら... nkf でもインストールしてください。
881 Name: 名称未設定 [sage] Date: 2006/09/30(土) 13:06:24 ID: Ff2If9Al0 Be:
>>880
1行目に同意して、
10.3.9 なら iconv があるよ。
882 Name: 名称未設定 [sage] Date: 2006/09/30(土) 13:13:43 ID: rQO5hHU50 Be:
>>880
>>ターミナルのファイル→情報を見るのなかにエンコーディング設定するところが>>あるので正しいエンコーディングにしてみてください。

これを試してみて、駄目だったから訊きました。
883 Name: 名称未設定 [sage] Date: 2006/09/30(土) 13:14:43 ID: dfnrvWTV0 Be:
ソウデスカ
884 Name: 名称未設定 [sage] Date: 2006/09/30(土) 13:47:37 ID: 2NWlCAE+0 Be:
素人は大人しくXcodeを使ってなさい、ってことだ。
俺もターミナルは詳しくは分からないんだけどな(´・ω・`)
885 Name: 名称未設定 [sage] Date: 2006/09/30(土) 15:15:48 ID: gTfuScp00 Be:
Object-C
886 Name: 名称未設定 [sage] Date: 2006/09/30(土) 16:12:18 ID: uUDevZs50 Be:
つーかユニックス知らないのにプログラムは無謀じゃね?
887 Name: 名称未設定 [sage] Date: 2006/09/30(土) 16:14:41 ID: kz0zMxOL0 Be:
?
888 Name: 名称未設定 [sage] Date: 2006/09/30(土) 16:21:11 ID: YZs26opt0 Be:
!
889 Name: 名称未設定 [sage] Date: 2006/09/30(土) 16:29:41 ID: 9BDwUP6d0 Be:
i
890 Name: 名称未設定 [sage] Date: 2006/09/30(土) 16:33:04 ID: rbWpebVT0 Be:
偉そうなこと書いた癖に iconv 忘れてた Σ(゚Д゚;)

更にいま実際に[@"あいうえお" description] と
[[NSArray arrayWithObject:@"あいうえお"] description] をしてみて驚愕した。

とにかく吊ってくる...
891 Name: 名称未設定 [sage] Date: 2006/09/30(土) 17:48:01 ID: +ROLY4HP0 Be:
試してないからどうなったのか分からんけど
@""ディレクティブが7bit ASCIIしかサポートしてないんだから
文字化けしても不思議ではないでそ?
892 Name: 名称未設定 [sage] Date: 2006/09/30(土) 18:03:02 ID: 9BDwUP6d0 Be:
ローカライズ使わないと
893 Name: 名称未設定 [sage] Date: 2006/09/30(土) 22:21:38 ID: F/tzvttr0 Be:
日本語が表示できないとは
ls, cat, view もだめなのか ?
894 Name: 名称未設定 [sage] Date: 2006/09/30(土) 22:38:10 ID: Id8Hazxn0 Be:
( (( (((……先が思いやられるなァ))) )) )
895 Name: 名称未設定 [sage] Date: 2006/10/01(日) 00:12:32 ID: EOG5NQg00 Be:
>>882 これで化けるのがおかしいと思ったわけ。で、
>>879 のNSLogを
NSEnumerator * enu = [dirArray objectEnumerator];
while(anObject = [enu nextObject]){
NSLog([anObject description]);printf("¥n");
printf ([anObject UTF8String]);printf("¥n");
}
に変えてテストしてみた。するとwhile中の2行目のprintfは
すべてのフォルダ名を表示できてる。しかし、1行目のNSLog
は、英文フォルダは問題ないが、日本語フォルダは1つだけ表示
できて、なぜかあとは空行になっている。

じつは、Cで同じような関数をかいたので、同等なものを Cocoa
を使ったらどうなるのか試してみただけなのにこんな状態になって
しまった。ちなみにCでは、

DIR * dir = opendir("folder_name");
struct dirent *dp;
while ( (dp = readdir(dir)) != NULL)
printf("%%#06x %s¥n",DTTOIF(dp->d_type),dp->d_name);
であっさりいったのだが。

Cocoaの上記のコードで、先のような現象がおこるのはどうした
理由が考えられるでしょうか。
896 Name: 名称未設定 [sage] Date: 2006/10/01(日) 00:22:21 ID: EOG5NQg00 Be:
いちばんの謎は、日本語フォルダ名が表示されている
ものと、そうでないものとがあることだ。
なんとなく、スピッツとかコンピレーションなどの
文字列が悪さしているような気がする。
もちろん、素人のあて推量ですがね。詳しい人教えてください。
897 Name: 名称未設定 [sage] Date: 2006/10/01(日) 00:51:49 ID: 4WFCp8Wg0 Be:
NSLog(@"%@¥n", anObject);
898 Name: 名称未設定 [sage] Date: 2006/10/01(日) 01:08:52 ID: EOG5NQg00 Be:
>>897
うわ、恥ずかしい。。。そうでしたね。
すっかり頭からトンでいました。ほんとごめんなさい。

しかし、NSLog([dirArray description]);のほうは
NSLog(@"%@",[dirArray description]);に変えても
おなじまま(化けている)なんですよ。
フォルダ名ってUnicodeで、NSStringのなかもUnicode、
ターミナルの設定もUTF-8となっているのになぜでしょう?
899 Name: 名称未設定 [sage] Date: 2006/10/01(日) 01:17:48 ID: 4WFCp8Wg0 Be:
NSLog(@"%@", dirArray);
900 Name: 名称未設定 [sage] Date: 2006/10/01(日) 02:12:52 ID: 9+woVPzw0 Be:
うちでやってみたかぎりでは、日本語文字は NSArray のなかに入れて description すると ¥U つかってエスケープされて表示されてるけど、それのことを文字化けって言ってるんですか?
901 Name: 名称未設定 [sage] Date: 2006/10/01(日) 02:18:23 ID: WO9TfSxs0 Be:
> NSLog([anObject description]);printf("\n");

NSLog

Logs error messages to stderr.
902 Name: 名称未設定 [sage] Date: 2006/10/01(日) 03:01:13 ID: oMD9MIhl0 Be:
なんかもうグダグダだな
903 Name: 名称未設定 [sage] Date: 2006/10/01(日) 08:41:49 ID: EOG5NQg00 Be:
>>899 これでうまくいきました。
端的に解決策だけ教示してくださるその明快
さと、正確さに感服しました。深謝します。

>>900 そうですよ。それが問題だったのです。
>>901 いや、そうですけどね、
ターミナルで自分専用のゴミプロ作って
いるときにはまったく問題ないよ。
904 Name: 名称未設定 [] Date: 2006/10/01(日) 09:19:20 ID: Wm594WtN0 Be:
というか、そもそもNSLogって英数字しか対応してなかったような?
どうしても日本語でログに出したい私は下のようなマクロと関数で無理矢理
やってますけど。

#define JLog(...) _JLog( [NSString stringWithFormat:__VA_ARGS__] )

void _JLog( NSString* message ) {
NSString* dateTime = [[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d %H:%M:%S.%F" timeZone:nil locale:nil];
NSString* processName = [[NSProcessInfo processInfo] processName];
NSString* _message = [NSString stringWithFormat:@"%@ %@[%d] %@\n", dateTime, processName, getpid(), message];
[(NSFileHandle*)[NSFileHandle fileHandleWithStandardError]
writeData:[_message dataUsingEncoding:NSUTF8StringEncoding]];
}
905 Name: 904 [] Date: 2006/10/01(日) 09:34:16 ID: Wm594WtN0 Be:
ちなみに使う時はソースコードのエンコーディングをUnicode (UTF-8)
にしておいて、こんな感じで。

#define NSUTF8(s) [NSString stringWithUTF8String:(s)]

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
JLog( NSUTF8("プログラムを終了します。") );
return NSTerminateNow;
}

ソースに日本語入れるのはどうかという意見もあると思いますけど、
何やってるかぱっと見てわかりやすいですもんね。
906 Name: 名称未設定 [sage] Date: 2006/10/01(日) 13:01:53 ID: f8VXdlCv0 Be:
ターミナルに出したいだけでNSLogってのが変。
printfでいいだろ。

ソースに日本語入れるのはローカライズしか考えてなくて頭悪いな。
許されるのはコメントに使う程度までだよ。
他言語に対応するときに大変な目に遭うと思う。
別にリソース持って参照する形にしておくのが吉。
引数でja指定で日本語のリソース参照で完璧。

907 Name: 名称未設定 [sage] Date: 2006/10/01(日) 13:08:14 ID: dJuzXZoO0 Be:
普通にNSLocalizedStringでいいだろ
908 Name: 名称未設定 [sage] Date: 2006/10/01(日) 14:19:37 ID: EOG5NQg00 Be:
>>904 なるほど。
>>906 コメントありがとね。
でも
>>ターミナルに出したいだけでNSLogってのが変。
>>printfでいいだろ。
Cocoa(Foundation)というフレームワークを使っていて、
NSArrayのインスタンス(つまりオブジェクト)を
出力させようとしてんだから変じゃないと思うけど。
べつにprintfでもいいけど(>>895 みたいに)、NSLog
のが手っ取り早いよね。
909 Name: 名称未設定 [sage] Date: 2006/10/01(日) 14:24:11 ID: EOG5NQg00 Be:
>>899 さんのおかげでこの問題は解決
したんだけど、腑に落ちない点も残る。

なぜ、NSLog(@"%@", dirArray); はよくて、
NSLog(@"%@",[dirArray description]); や
NSLog([dirArray description]);は駄目なんだろ。
910 Name: 名称未設定 [] Date: 2006/10/01(日) 15:25:46 ID: Wm594WtN0 Be:
>>906
まぁ、そういうことを一所懸命やってた時期もあったけど、
どう考えても使われることのありえない英語のリソース作っ
たり、日本語しか表示されることがないのにいちいちリソー
スから引っ張ってくるなんてのは非効率だと気づいたわけ。

そういう可能性のある人はまじめにやればいいだけで、仕
様の関係で日本人(語)限定であれば別に日本語をソース
に入れてもいいと思う。
911 Name: 名称未設定 [sage] Date: 2006/10/01(日) 15:36:12 ID: 4WFCp8Wg0 Be:
[dirArray description]で返されるのは
Old-Style ASCII Property List。

ASCIIから分かると思うが、7bit ASCIIのみサポート。
非ASCII文字はエスケープされる。

で、文字列に非ASCII文字が含まれていた場合、
"¥U5de6¥U3068¥U3093¥U5e73"みたく文字化けした*よう*に見える。

要は仕様。
http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/index.html
912 Name: 名称未設定 [sage] Date: 2006/10/01(日) 18:03:19 ID: EOG5NQg00 Be:
>>911 またしても納得です。
(NSArray)descriptionのマニュアルの記述
Returns a string that represents the contents of the receiver,
formatted as a property list. の後半部分に注目して調べて
いくべきだったのでしょうが、ビギナーにはちょっと思いつき
ませんでした。ご教示いただいたマニュアルにはしっかり、
Though the property list format uses ASCII for strings,
note that Cocoa uses Unicode. Since string encodings vary from
region to region, this representation makes the format fragile.
You may see strings containing unreadable sequences of ASCII
characters; these are used to represent Unicode characters.
とありますね。素人の疑問におつきあい下さってほんとにありがとう
ございました。
913 Name: 名称未設定 [sage] Date: 2006/10/01(日) 19:26:59 ID: f8VXdlCv0 Be:
7ビットのJISだと通るのかな?
今はウニコードだけど。
914 Name: 名称未設定 [sage] Date: 2006/10/03(火) 00:10:44 ID: vZLUW2580 Be:
>>906
>printfでいいだろ。
ちょっと気になったんだが、ユニコードって printf で出力できるんだっけ?
例えば、%s に UTF-8 を突っ込んでもおk? ワイド文字? ロケール?
%@ は理解しないよね?
915 Name: 名称未設定 [sage] Date: 2006/10/03(火) 00:21:18 ID: Zzu7W0y10 Be:
実装によるかとは思うけど
printfで%s指定されたとこにchar* が来たら
'\0'が来るまで1バイトずつstdoutへ垂れ流すだけじゃないの?
それが出力先で表示できるかどうか、とかはしったこっちゃないんでは。
916 Name: 名称未設定 [sage] Date: 2006/10/05(木) 08:23:49 ID: iQdGwIIvO Be:
LeopardでCocoaはどう変わりますかね
917 Name: 914 [sage] Date: 2006/10/05(木) 15:38:18 ID: VyTiZ+Z40 Be:
>>915
確かに...

そうだ、俺が前にハマッたのは、確か +[NSString stringWithFormat:] で
%s を使ったときだった(と思う)。%s はシステムエンコーディングを使うんだったような。
918 Name: 名称未設定 [sage] Date: 2006/10/07(土) 15:12:41 ID: DydNHfNp0 Be:
NSArrayController 使って Core Data の中身をテーブルに表示しています。
新しくデータを add したときに、テーブル上の選択をその追加されたデータに
フォーカスさせたいんですが、やり方がよくわかりません。

[NSArrayController add: sender];

だと add する前後でフォーカスが変わらないんですが、何を使えば
いいでしょうか。
919 Name: 名称未設定 [sage] Date: 2006/10/07(土) 16:06:13 ID: qPlgXBFq0 Be:
「フォーカスする」とか妙な言い回しを使うのは混乱の元。
IB上で "Selects inserted objects" がオンになってれば追加項目が自動で選択されるはず。
920 Name: 名称未設定 [sage] Date: 2006/10/08(日) 11:13:20 ID: VkvE8xkM0 Be:
SSL認証が必要な場所からデータを取得するにはどうすればいいのでしょうか。
NSURLDownloadでURIを指定すると-download:didReceiveAuthenticationChallenge:が呼ばれるようなのですが、ここからどうすればいいのかわかりません。
921 Name: 名称未設定 [sage] Date: 2006/10/10(火) 02:54:23 ID: 0mWfr7JN0 Be:
cocoaからzlibを使いたいんですが、適当なクラスはありますか?
直に叩きに逝かないと無理ですか?
922 Name: 名称未設定 [sage] Date: 2006/10/10(火) 03:29:02 ID: HWiovJ9m0 Be:
こんなのはどうですか?
ttp://hetima.com/soft/hetimaunzip.html
923 Name: 921 [sage] Date: 2006/10/10(火) 13:21:47 ID: 0mWfr7JN0 Be:
>922
いいもの教えてくださってありがとうございます。
これで出来そうです。
924 Name: 名称未設定 [sage] Date: 2006/10/10(火) 14:06:15 ID: QWkbtnHC0 Be:
Cocoaセミナー満員御礼だってよーヽ(`Д´)ノ
925 Name: 名称未設定 [] Date: 2006/10/10(火) 21:45:40 ID: xgO7ab5+0 Be:
すいません、よかったら教えてください。
NSTimerとNSSoundを使って定期的に音を鳴らすことをやりたいのですが、
数回に1回、音が何故か2回鳴っちゃうという現象が出て困ってます。
以下現象を再現できるソースです。OSは10.4.8です。

@implementation Metronome

NSSound*wTSound;

- (void)CallBack:(NSTimer*)pTimer {
[ wTSound play ];
}

- (IBAction)StartStop:(id)sender
{
wTSound = [ NSSound soundNamed : @"Pop" ];
[ NSTimer
scheduledTimerWithTimeInterval:1.
target:self
selector:@selector(CallBack:)
userInfo:nil
repeats:YES
];
}

@end
926 Name: 名称未設定 [sage] Date: 2006/10/10(火) 22:23:38 ID: /VujWzmI0 Be:
何回もTimerが起動してるんでしょ。
927 Name: 名称未設定 [sage] Date: 2006/10/10(火) 23:18:37 ID: u1x6lnsI0 Be:
NSTimerのインスタンスは闇の中。
どうやってストップさせるんだ?
928 Name: 名称未設定 [sage] Date: 2006/10/10(火) 23:22:13 ID: C5aU20T50 Be:
wTSoundも闇の中ですね
929 Name: 名称未設定 [sage] Date: 2006/10/11(水) 01:33:39 ID: gW50yOVj0 Be:
>>927
> NSTimerのインスタンスは闇の中。

RunLoop が持ってるし

> どうやってストップさせるんだ?

CallBack: (しかしこの method 名最悪だね) で invalidate すればいいし
930 Name: 名称未設定 [sage] Date: 2006/10/11(水) 09:22:36 ID: E5bPHcGk0 Be:
>>929
それは>>925のやりたい事とはぜんぜん違うんでないかい?
CallBack:でinvalidateしてたらリピートできないし、
StartStop:ってメソッド名からして、ストップもそこでやりたいはずだし。
931 Name: 名称未設定 [sage] Date: 2006/10/11(水) 13:19:22 ID: gpdU8zAd0 Be:
タイマーに関する部分だけなら、俺ならこう書くかなぁ。正攻法?
[_timer isValid] を使って、もっと効率的にいける気もするけれど、自信ない。

@interface Metronome
{
   NSTimer*_timer;
   BOOL   _timerRunning;
}
@end

- (void)awakeFromNib
{
 _timerRunning = NO;
}

- (IBAction)StartStop:(id)sender
{
 if(_timerRunning){
  [_timer invalidate];
  _timerRunning = NO;
 }
 else{
  _timer  = [NSTimer scheduledTimerWithTimeInterval:1.0f
         target:self
         selector:@selector(CallBack:)
         userInfo:nil
         repeat:YES];
  [_timer fire];
  _timerRunning = YES;
 }
}
932 Name: 名称未設定 [sage] Date: 2006/10/11(水) 13:23:03 ID: gUmtjTHD0 Be:
え?
933 Name: 名称未設定 [sage] Date: 2006/10/11(水) 13:23:14 ID: Qjx8Gy0C0 Be:
>>931
ついでにメソッド名もまともなのに変えてやれば?
934 Name: 名称未設定 [sage] Date: 2006/10/11(水) 13:39:52 ID: gUmtjTHD0 Be:
もういちど、りふぁれんすを、よくよんでください。
それとも、つりですか?
935 Name: 名称未設定 [sage] Date: 2006/10/11(水) 13:57:00 ID: VKAa2sv50 Be:
>>931
[_timer fire]はいらないんじゃ。
あと_timerRunningもいらないんじゃないの?
止めた時には_timerにnil入れて、_timerがnilかどうかで判断すればいい。
936 Name: 名称未設定 [sage] Date: 2006/10/11(水) 14:08:13 ID: gpdU8zAd0 Be:
>>935
それもそうですね。

>>925
というわけです。
937 Name: 名称未設定 [sage] Date: 2006/10/11(水) 14:13:50 ID: gUmtjTHD0 Be:
なんで、したりがおなのかさっぱりわかりませんが、
-[NSTimer invalidate] をなげると、れしーばーは、らんるーぷからとりのぞかれます。
つまり、さいとうろくしなないかぎり、たいまーとしてはたらきません。

-[NSTimer fire] は、たーげっとにたいして、めっせーじをそうしんするめそっどです。
このばあいは、self にたいして、-[Metronome CallBack:] がなげられます。

つまり、>931 はまったくいみふめいな、とんちんかんなものです。
938 Name: 名称未設定 [sage] Date: 2006/10/11(水) 14:16:16 ID: gpdU8zAd0 Be:
>>937
なるほど。よくわかりました。

>>925
というわけです。
939 Name: 名称未設定 [sage] Date: 2006/10/11(水) 14:28:07 ID: XO3lNLzb0 Be:
>>929のやり方が妙に気になる。
940 Name: 名称未設定 [sage] Date: 2006/10/11(水) 14:48:49 ID: gUmtjTHD0 Be:
- (IBAction)StartStop:(id)sender
{
static NSTimer *timer = nil; // いんすたんすがふくすうのときは、いんすたんすへんすうにしないとだめ。

if(timer) {
[timer invalidate];
[timer release];
timer = nil;
return;
}

timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(CallBack:) userInfo:NULL repeats:YES];
[timer retain]; // なくてもいいけど、「もってるよ」としゅちょうしておく。
}

というほうほうもある。
いんでんとつけるのめんどうくさい。
941 Name: 名称未設定 [sage] Date: 2006/10/11(水) 14:57:11 ID: ZGPLLPKC0 Be:
scheduledTimerWithTimeInterval:1.
このIntervalの数値を見て思ったんだが、
これは定期的に音を鳴らしたいというよりは、
連続して音を鳴らしたいって意味じゃないのか。
それならもっと別の手法もあるんだけどな。
942 Name: 名称未設定 [] Date: 2006/10/11(水) 15:01:01 ID: gSf29chT0 Be:
>>928 の突っ込みは放置?
[wTSound play]の時点でwTSoundは不定なような気がする。
943 Name: 名称未設定 [sage] Date: 2006/10/11(水) 15:05:38 ID: JHPG+IJP0 Be:
>>940
「なくてもいいけど」のところをしょうりゃくすると、
double freeでランタイムエラーがおきませんか?
それともつり?
944 Name: 名称未設定 [sage] Date: 2006/10/11(水) 15:11:45 ID: gUmtjTHD0 Be:
>>943
retain しないなら release しないでしょ。
そこまでかかないと、わかりませんか?
945 Name: 名称未設定 [sage] Date: 2006/10/11(水) 15:14:03 ID: JHPG+IJP0 Be:
>>944
わりとくだらないことにまでつっこむのがすきなひとなのかと思いまして。
おこりっぽいんですね。
946 Name: 名称未設定 [sage] Date: 2006/10/11(水) 15:40:14 ID: gUmtjTHD0 Be:
>>945
おこったんじゃないです。
ふつうにわからないかどうかが、わからなかったです。
もじでかんじょうをつたえるのは、むずかしいですね。
947 Name: 名称未設定 [sage] Date: 2006/10/11(水) 16:14:11 ID: VKAa2sv50 Be:
ひらがなでかくとあまりさつばつとしていないようにかんじるかもしれないけど
あいてをばかにしているともとられるきがす
ていうかよみにくすだぶりゅー
948 Name: 名称未設定 [sage] Date: 2006/10/11(水) 16:52:30 ID: 81SxFUz2O Be:
だぶりゅーわろすだぶりゅーだぶりゅーだぶりゅー
949 Name: 名称未設定 [sage] Date: 2006/10/11(水) 17:04:26 ID: IAYeDbFK0 Be:
さぉりとかいたよな
950 Name: さぉり [sage] Date: 2006/10/11(水) 17:13:58 ID: ph3mhrLZ0 Be:
ポインタとかstaticとか、説明がないとさっぱりわからないんですけど??
もっとわかりやすいホームページとか教えてください。みんな不親切ですね。





みたいなテンションの人ね。
動物園にいるならば多少は面白かったかもしれない。
951 Name: 名称未設定 [sage] Date: 2006/10/11(水) 17:51:04 ID: Qjx8Gy0C0 Be:
>>950
似てるw
952 Name: 名称未設定 [sage] Date: 2006/10/11(水) 21:43:01 ID: Vs3QQzMK0 Be:
あのさー、
>>925 の「数回に1回、音が何故か2回鳴っちゃう」という原因に関しては
結局たどり着いていないような。もし >>926 なら、「数回に1回」にはならないよね。

ランループが乱れる要素があるせいかな?
このコードだと、メインスレッドのランループにタイマーが登録されるから、
UI をいじったりするとタイマーの実行間隔が乱れうるよね。
>>925 のアプリで、書いてあるコード以外に何が動いているか知らんが...

もしそうならタイマーを別スレッドにでもした方がいいのかな。

そういえばリアルアイムに走る(走らせられる)スレッドってあるんだっけ?
音楽系のアプリとかってどうなっているのか気になってるんだが。
953 Name: (・∀・) [sage] Date: 2006/10/12(木) 01:18:11 ID: LwR2yQv30 Be:
>>952
>>>925 の「数回に1回、音が何故か2回鳴っちゃう」という原因に
わはは、その通りだね。でも明確な理由をかける人も
いないんでしょう。オレも分からん。
仮想マシンだからサウンド・ボードにどれだけ同期を保証しているか
見えないし。Timer自身の精度も保証されてないから。
そんなものだ。としかいえない。>>925
954 Name: 名称未設定 [sage] Date: 2006/10/12(木) 10:50:12 ID: 71lhc7Dt0 Be:
>仮想マシンだからサウンド・ボードにどれだけ同期を保証しているか
>見えないし。Timer自身の精度も保証されてないから。
????????
そんな細かい話がひつようなところか?
955 Name: 名称未設定 [sage] Date: 2006/10/12(木) 13:35:11 ID: Rg+hK3Nr0 Be:
本当のメトロノームを作りたいなら精度が求められるでしょうね
NSTimer と NSSound で作るなら「簡易」メトロノーム程度にしかならないでしょう
956 Name: 名称未設定 [sage] Date: 2006/10/12(木) 16:27:00 ID: vgJeAgwV0 Be:
NSGridViewって凄いのかなぁ
楽しみだなぁ
957 Name: 名称未設定 [sage] Date: 2006/10/12(木) 18:57:52 ID: OIDPMcdX0 Be:
CoreDataの勉強しようと思ってXcodeを立ち上げたら
俺のiBookはPantherだったので使えなかった...orz
958 Name: 名称未設定 [] Date: 2006/10/13(金) 03:49:30 ID: H7XRKrky0 Be:
スレッド違いだったらすみません。
初心者です。
os X 10.4.8 で、純正DVDに入ってた Interface Builder で
いろいろとウインドウデザインを試行錯誤して作っているのですが、
右上にボタン(ブラウザの戻るボタンみたいなもの)をつけています。
で、実際に立ち上げてさわってみると、ウインドウリサイズしたとき
ボタンの位置はそのままで隠れてしまいます。

これを、ウインドウの縮小拡大に沿うように貼り付けるには
どのようにしたらいいのでしょうか。
959 Name: 名称未設定 [sage] Date: 2006/10/13(金) 04:37:31 ID: dHydwTkN0 Be:
Interface Builder でボタンの位置がウインドウの拡大縮小に沿うようにすればいいだろう。
右上固定なら左と下を可動にすればいい。
960 Name: 名称未設定 [sage] Date: 2006/10/13(金) 11:36:22 ID: 78vJkeZ/0 Be:
>>958
ボタンを選択してインスペクタで「Size」を選ぶと
http://www.mujmac.cz/images/cocoa24_3.jpeg
こういうのが出るでそ。
これがウィンドウとボタンの位置関係を表してる。
あとはいろいろクリックしてCmd+Rして体で覚えて。
961 Name: 名称未設定 [sage] Date: 2006/10/13(金) 13:57:48 ID: 5E+IsYdO0 Be:
コマンド+R でテストモード
コマンド+Q でテストモード終了。
962 Name: 958 [] Date: 2006/10/13(金) 15:08:50 ID: H7XRKrky0 Be:
ありがとうございましたー。!
テストモードは便利ですね。知りませんでした。
963 Name: 名称未設定 [sage] Date: 2006/10/13(金) 18:10:32 ID: EKZdZw6R0 Be:
バネが可変
棒が固定
964 Name: 名称未設定 [] Date: 2006/10/14(土) 18:46:33 ID: i+5Lo1Pz0 Be:
いつもお世話になってます>All

OS10.3で和暦に対応したプログラムを書きたいのですが、システム設定から
持ってくる方法って無いんでしょうか?
10.4からだとNSCalendar一発でできそうな気がするんですが、10.3だと対応
していないみたいなので、システム設定から持ってこれるのならいいかな、と。
よりよい方法がありましたら教えてください。お願いします。
965 Name: 名称未設定 [sage] Date: 2006/10/14(土) 21:50:37 ID: XRV3TEO30 Be:
>>964
>OS10.3で和暦に対応したプログラムを書きたいのですが、

それが具体的にどういうものかによる。
最近の日付を平成... とか表示したいだけなら、NS(Calendar)Date とかで済むかも。
カレンダーウィジェットみたいに昔の年号とかもサポートしたいとなると面倒くさそう。
それは

>システム設定から持ってこれるのならいいかな、と。

どうやら NS/CFCalendar は年号等を ICU というライブラリの関数 (ucal) から
引っ張ってくるように見える。
10.3 にも ICU はあるようなので (libicucore.dylib)、これがちゃんとしていれば、
自分で NS/CFCalendar 相当分を書くのは不可能ではないかもw

今ググったら、和暦<->西暦を変換するマック用のソフトがあった。リソースデータを
調べたら自前で年号名を持っていた。のでこれをパクるという手もなくはないw
(というわけでソフト名はあえて書かないw)
966 Name: 名称未設定 [] Date: 2006/10/14(土) 22:21:27 ID: i+5Lo1Pz0 Be:
>>965
>>自分で NS/CFCalendar 相当分を書くのは不可能ではないかもw

ちょwww
実力的、時間的に不可能ですww

日本史に出てくるすべての年号を表示したかったんですが、その場合南北朝のダブル年号表示
がネックになるのでやめました。カレンダ-ウィジェットはどういう表記なんでしょうね?
残念ながらそんな回数クリックする根性はありませんがw

最近の(といっても過去は明治くらいまで表示したい)日付を持ってくるだけでいいんです。
やっぱり自前で年号名を持たせるしか無いんですかね・・・とりあえずそのソフトをググって
調べてみます。パクりませんよ~w
967 Name: 名称未設定 [sage] Date: 2006/10/14(土) 23:18:29 ID: 7Q9emVii0 Be:
ていうか明治以前は陰暦にするの?それはかなり辛いんでは...
968 Name: 名称未設定 [sage] Date: 2006/10/15(日) 03:04:49 ID: sTo6GLwB0 Be:
明治も5年まで陰暦だから気をつけてね。
閏月もあるし。
969 Name: 名称未設定 [sage] Date: 2006/10/15(日) 11:38:55 ID: pSfxPY7L0 Be:
太陰太陽暦も、時代によってイロイロ微妙に変化してるからねえ。
元嘉暦 儀鳳暦 大衍暦 宣明暦 貞享暦 宝暦暦 寛政暦 天保暦
970 Name: 名称未設定 [sage] Date: 2006/10/15(日) 15:51:04 ID: KHoeWjFZ0 Be:
>>969
過去の日付だけならテーブルを持っておけばいいだけだから暦法は
あまり関係ない。

問題は文献によって日付が食いちがったり、内乱のせいで複数の暦が
同時に行なわれていたり、地方ごとに別の暦が行なわれていたりする
場合だけど、江戸時代以降にかぎればそれほど問題ないとおもう。


971 Name: 名称未設定 [sage] Date: 2006/10/15(日) 15:56:11 ID: DNZXpkU/0 Be:
>>966
>>>自分で NS/CFCalendar 相当分を書くのは不可能ではないかもw
>ちょwww
>実力的、時間的に不可能ですww

多分 ICU には日付データを与えると暦の名前が返ってくるような関数が
あると思うんだけど、それを呼び出す部分を作るだけならどうにか、
と思ったのだが。

NSCalendar そのものには ObjC のクラスとしての体裁を整えるコードがいっぱい
入ってるだろうから、それまで書くというのは確かにアレだが。

>残念ながらそんな回数クリックする根性はありませんがw

自分で NSCalendar を使ったお試しコードを書いてみればいいじゃんw

でも、ICU ってこんな複雑な日本の暦を本当にサポートできてるのかねえ。
972 Name: 964 [] Date: 2006/10/17(火) 00:04:49 ID: FyP7runb0 Be:
>>971

>自分で NSCalendar を使ったお試しコードを書いてみればいいじゃんw

おっしゃるとおりですw
試しにやってみたら大化まで表示できたよ。
お世話になりました、ありがとう!

>>967-970
日本の暦って難しいんでつね・・・
そこまで複雑じゃなくてよかったんで、今回は助かりました。
また何かあったら書き込みます。本当にありがとう!
973 Name: 名称未設定 [] Date: 2006/10/17(火) 05:36:54 ID: 5nQ5p4fa0 Be:
>試しにやってみたら大化まで表示できたよ。

まじかい。想定外。
974 Name: 名称未設定 [] Date: 2006/10/17(火) 08:46:16 ID: yCtgDnDn0 Be:
Cocoa始めたばっかりの初心者用のスレはありませんか?
975 Name: (・∀・) [sage] Date: 2006/10/17(火) 09:26:50 ID: yLCHAHfb0 Be:
過疎スレに初心者用なんて無いよ。ここでOK。
976 Name: 名称未設定 [sage] Date: 2006/10/17(火) 10:54:01 ID: BhY2kEQh0 Be:
>>972

自分でもやってみた。うーん。なんか 645 より前を指定しても全部大化に
なってしまうような。大化のあとの元号のない時代にも全部元号がついて
いる。南北朝時代は南朝に固定。

元号と年だけで、月日はグレゴリオ暦になっている?

元号の変わる日付だけはなんかがんばってるようだが、元年以外はグレ
ゴリオ暦に正月一日とともに年が変わる。

かなり謎めいた仕様。
977 Name: 名称未設定 [sage] Date: 2006/10/17(火) 12:40:29 ID: ZTBPxdK80 Be:
>>976
謎めいたも何も、要するに普通のグレゴリオ暦に日本の年号対応させたってだけの話でしょ。
そりゃあ太陰暦なんかに対応してたら換算するのに便利かもしれないけど、
その時代の「グレゴリオ暦で表した日付」を定義するとしたらそれで十分だと思う。

追求していくと「この時代に『刻』じゃねーのはおかしい」とかなっちまう。
978 Name: 名称未設定 [age] Date: 2006/10/17(火) 18:54:52 ID: DH8+tsPy0 Be:
NSTableViewのリストにNSButtonCellをはりつけているのですが、
リスト上のボタンをクリックすると、ボタンがある行に
リストのセレクションが切り替わります。

セレクションが切り替わらないように制御したいのですが
制御する方法がみつからなくて困っています。
NSButtonCellを派生する方針が良いのでしょうか…?
979 Name: 978 [age] Date: 2006/10/19(木) 20:57:41 ID: qK+va4yo0 Be:
NSButtonCellより前にNSTableViewが
クリックイベントに反応するので
全くお手上げです…orz
たすけてぇ~~~
980 Name: 名称未設定 [sage] Date: 2006/10/19(木) 21:03:10 ID: PyA+g9MP0 Be:
>>979
んー、話はわかるけど、
どういう時にそんな妙な挙動をしたいのか想像がつかないんだけど。
981 Name: 名称未設定 [sage] Date: 2006/10/19(木) 21:04:28 ID: fraomPvk0 Be:
tableView のサブクラスにmouseDownを書いて、ここでイベントをキャッチして、
なんとかして手動でボタンの表示をかえる
等すれば、列は選択されないと思う。

>>88 あたりを参照。 OutlineViewだけど、TableViewでも同じだと思う。
982 Name: 名称未設定 [sage] Date: 2006/10/19(木) 21:20:31 ID: HDVqrw4/0 Be:
>>980
iTunesのチェックボックスなんかはそういう動作やね
983 Name: 名称未設定 [sage] Date: 2006/10/19(木) 23:47:50 ID: PyA+g9MP0 Be:
>>982
言われて試してみれば。なるほど。

>>979
というわけで、他の方もアドバイスされているように、
・MyTableViewでmouseDown:を検知
→ eventのlocationからColumnを調べる
→ locationがButtonCellのColumnだった場合にはRowを調べ、
 該当のButtonCellにsetState:とか送って、Rowのセレクトは変えない
みたいな方針でいけると思いますよ。
984 Name: 名称未設定 [sage] Date: 2006/10/20(金) 00:03:17 ID: NCVYdCQ70 Be:
tableviewのcellをつかわずに直接frameを取得してaddSubview:で張り付けると
勝手にそういう仕様になるね

まあ、リサイズしたり順番を入れ替えたりしたいなら向かないけど
985 Name: 名称未設定 [sage] Date: 2006/10/20(金) 00:33:00 ID: fpP7aaMO0 Be:
カラーパネルやDeveloperToolsのDigitalColor Meterのように、
指定した座標の画素の色をNSColorで取得するにはどうすればいいでしょうか。
986 Name: 名称未設定 [sage] Date: 2006/10/20(金) 04:05:10 ID: fpP7aaMO0 Be:
NSReadPixel()でできました
987 Name: 978 [age] Date: 2006/10/20(金) 13:49:20 ID: fpRFnrK50 Be:
>>980-984
アドバイス、どうもありがとうございます。
以下のようにTableViewのmouseDownを書いたのですが、
NSButtonCellをクリックしても、ボタンがハイライトに
ならにのです。
Cellにセットしているアクションは作動します。
ボタンのハイライトしないのは自前で描画処理が必要なのでしょうか…?

@implementation MyTableView

- (void)mouseDown:(NSEvent *)theEvent
{
NSPointlocation = [theEvent locationInWindow];
location = [self convertPoint:location fromView:[[self window] contentView]];
int indexOfColumn = [self columnAtPoint:location];
int indexOfRow = [self rowAtPoint:location];

if (indexOfColumn == 2) { // NSButtonCellはインデックス2番目にある.
NSTableColumn*column = [[self tableColumns] objectAtIndex:indexOfColumn];
NSCell*cell = [column dataCellForRow:indexOfRow];
NSRectframe = [self frameOfCellAtColumn:indexOfColumn row:indexOfRow];
[cell trackMouse:theEvent inRect:frame ofView:self untilMouseUp:YES];
}
else {
[super mouseDown:theEvent];
}
}

@end

988 Name: 名称未設定 [sage] Date: 2006/10/20(金) 14:39:34 ID: yOB1O2eg0 Be:
performClick:ではだめ?
だめだったらmouseDown のなかで
nextEventMatchingMask を使って
ハイライト描画→ボタンを放す→ボタンアクション実行&ハイライト取り消し描画
とするとか
989 Name: 978 [age] Date: 2006/10/20(金) 17:32:22 ID: fpRFnrK50 Be:
>>988
ありがとうございます。
performClick:ではだめでした。

nextEventMatchingMaskを使うということは
nextEventMatchingMaskをMouseUpとMouseDragイベントで
マスクしてループさせるような感じですか??
990 Name: 978 [age] Date: 2006/10/20(金) 22:07:30 ID: fpRFnrK50 Be:
ハイライトで描画するのが、うまくいきません…。
ハイライト描画の関数は
NSButtonCell のsetHighlightedを呼んでいるのですが
これだけではダメなのでしょうか??
991 Name: 名称未設定 [] Date: 2006/10/21(土) 01:43:11 ID: G3OGMsVc0 Be:
>>990
setNeedsDisplayは?
This page was generated by Dat2HTML Rev.