Cocoaはさっぱり!!! version.6

このエントリーをはてなブックマークに追加
1名称未設定
初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FSRef
↓ FSNewAlias,FSNewAliasMinimal
AliasHandle

typedef unsigned char UInt8

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

[NSSavePanel filename]の戻り値はNSString

こんなところかな?正直フレームワーク側で面倒見て欲しい
5045:2006/05/05(金) 13:26:08 ID:Ui65Lrx+0
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名称未設定:2006/05/05(金) 14:49:12 ID:rADOU+FM0
>>50

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

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

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

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

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

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

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

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

記憶がかなり曖昧なんだけど、他の同じようなタイミングで呼ばれるdelegate/datasourceメソッドと
組み合わせて対応したような記憶がある(shouldEditTableColumn かな...?)
最後にクリックされたitemを覚えておいて、今回と同じだったら云々とか、かな?
ColumnがEditableかどうかでメソッドの呼ばれ方も変わってくるから、その辺も変えたかもしれん。
86名称未設定:2006/05/11(木) 14:48:18 ID:GDauEYVP0
チェックボックスがあるコラムは編集不可にしておいて、
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名称未設定:2006/05/11(木) 14:50:25 ID:GDauEYVP0
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];

}
}

タブが消えちゃったから適当に修正して下さい
8881:2006/05/11(木) 16:48:44 ID:74huxGk50
>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 ];

続く
8981:2006/05/11(木) 16:57:55 ID:74huxGk50
// チェックボックスのある列がクリックされたか?
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;
}

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

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

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

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

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

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

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

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

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

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

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

NSWindowのサブクラスでsendEvent関数をオーバーライドして
そこでマウスの長押しの判定処理するしかないんでしょうか?
96名称未設定:2006/05/12(金) 14:01:10 ID:gt1SKJcT0
viewをtoolbaritemに指定してそこで好きなようにいじるのが一番簡単かと
97名称未設定:2006/05/14(日) 01:11:09 ID:m1DF90Kj0
ウインドウのタイトルバー部分にアクセスする事は出来ますか?
タイトルバーのViewを取得・セットするとか。
98名称未設定:2006/05/15(月) 19:20:33 ID:2F/yZVx40
タイトルバーってNSView使ってるの?
NSWindowのみでやってると思ってたんだけど。
99名称未設定:2006/05/15(月) 19:47:49 ID:S2fURzmp0
ここら辺参考にならんか?
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名称未設定:2006/05/15(月) 20:05:21 ID:S2fURzmp0
ついでに
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名称未設定:2006/05/15(月) 20:07:38 ID:S2fURzmp0
環境書き忘れた。
10.3.9です。
連投スマソ。
102名称未設定:2006/05/16(火) 12:46:44 ID:P0CJ9wZ70
Stackを表現するオブジェクトは提供されていますか?
javaの java.util.Stackみたいに。
103名称未設定:2006/05/16(火) 12:57:01 ID:iGe3reE50
提供されない。
NSArrayにカテゴリで、pushとpopでも付けたまえ。
104名称未設定:2006/05/16(火) 13:17:06 ID:by7Zl1Li0
スタックくらい自分で作れるだろ。難易度も低いし。
105名称未設定:2006/05/16(火) 13:30:40 ID:P0CJ9wZ70
>>103-104 了解です。
106名称未設定:2006/05/16(火) 23:56:21 ID:6EZsMV0m0
Smalltaklでもそんなこという人いるけど
追加されない理由は、追加する理由がないからなんだよん
107名称未設定:2006/05/17(水) 21:59:52 ID:zYS/GfmO0
どうしても分からないので教えてください。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名称未設定:2006/05/17(水) 22:18:27 ID:riCKSE7u0
プログラマの関知しない別のところで retain されてるんだろう。
"自分で alloc したオブジェクトは自分で解放する" という原則に従っていれば、
retainCount が幾つなのかは特に気にしなくていいんじゃないか。
109名称未設定:2006/05/17(水) 22:23:19 ID:jAJSJWmc0
>>107
>>108の言う通り気にする必要は無いと思うけど、
どうしても気になるならObjectAllocを使えばいつ誰がretainしたか調べる事ができるよ。
あるいはQTMovieのサブクラスを作ってdeallocにブレークポイントを置いてみるとか
110名称未設定:2006/05/17(水) 22:35:39 ID:OcxRFKJQ0
OpenGL(っていうかGLUT)を使ったプログラムで、ZeroLinkを
外してコンパイルしようとすると、リンクでこけてしまいます。
ZeroLinkをせずにビルドするには、どのような設定が必要なの
でしょうか?開発環境はXCode1.5です。
111名称未設定:2006/05/17(水) 23:15:29 ID:Lnd/rQMO0
>110
フレームワークの追加した?
112名称未設定:2006/05/18(木) 13:01:45 ID:FOb3Gi7H0
IBOutlet id myControls[5];
と配列にしてもIBで反映できなくて面倒だと気づいたんですが、
何か代わる方法があるんでしょうか?
113名称未設定:2006/05/18(木) 15:36:19 ID:oENKH0310
>>112
コントロールしないでActionだけ使う
114名称未設定:2006/05/18(木) 17:08:27 ID:OnRvaQEv0
>>112
CustomViewの上に全部のせて、awakeFromNibでsubviewsを取り出して
配列に代入するとか
115110:2006/05/18(木) 21:03:28 ID:Rtyx+UkT0
>>111
レス、ありがとうございます。

>フレームワークの追加した?
ええ、勿論追加しました。
116112:2006/05/18(木) 21:34:12 ID:EAzea5ar0
>>114
ああ、それいいですね。
indexと同じ順でtagを付けてviewWithTagで取得するとかもできますね。
ありがとうございました。
117名称未設定:2006/05/19(金) 13:31:49 ID:11F4sGW90
>115
OpenGL.frameworkとGLUT.frameworkを両方とも?
どっちか忘れてない?
118名称未設定:2006/05/23(火) 03:23:59 ID:nAlY+wVs0
>>97
ttp://journal.mycom.co.jp/column/objc/031/
こんなのがありました
NSCell でタイトルバーを取り出せるのかもしれません
119110:2006/05/24(水) 19:50:31 ID:Q7tCtJzR0
>>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名称未設定:2006/05/24(水) 22:06:01 ID:C1tm5YPg0
>119
standard C toolのプロジェクトから始めたのにObjective-Cを使っていたりしない?
どんなヘッダをinclude又はimportしてるの?
121110:2006/05/24(水) 22:34:04 ID:Q7tCtJzR0
>>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さん
有益で貴重なレス、ありがとうございました。
122111,117,120:2006/05/24(水) 22:40:06 ID:C1tm5YPg0
解決してよかったね
123名称未設定:2006/05/25(木) 02:39:40 ID:ZfQDSndy0
>>99
マウスイベントと描画がちゃんとしていれば実用的なんだけどなぁ
ttp://amb.sakura.ne.jp/hanyou/img-box/img20060525023010.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


//---------------------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名称未設定:2006/06/21(水) 20:18:31 ID:blg9utrJ0
>>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名称未設定:2006/06/21(水) 20:20:18 ID:zXPirQWv0
>>183
#importと@classはひとつのヘッダに併記できるけど、そういう話じゃなくて?

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

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

#import "A.h"
@class A;
@interface B
{
 A* a;
}
@end
186名称未設定:2006/06/21(水) 20:48:30 ID:5euUhkDV0
レスありがとうございます
自分で色々なクラスを作って、設計上の分類として同一レイヤーのクラス郡を
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名称未設定:2006/06/21(水) 20:57:59 ID:5euUhkDV0
追記。話はやや別件ですが:

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

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

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

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

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

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




















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

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

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

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

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

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

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

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

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

>あと、214で[super dealloc]が抜けていると思います。
あぅ。確かに。失礼しました。
229名称未設定:2006/07/03(月) 01:46:51 ID:emK4Ct5N0
>>213
俺のMBで使えないからイラネ
230名称未設定:2006/07/03(月) 10:03:14 ID:m5PLoxv+0
>>221
PowerPCではそうだが、Intelでは例外が発生しなかったっけ?
231名称未設定:2006/07/03(月) 10:38:29 ID:z8fiLpaE0
232名称未設定:2006/07/03(月) 10:45:46 ID:sGdD8YCc0
>>230
それは大丈夫。

-(float)[HOGE hoge];

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

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

前のが間違いだったのか!?
234231:2006/07/03(月) 11:22:07 ID:z8fiLpaE0
>>233
いや俺も確かに以前は逆の情報をここで読んだ気がするんだが・・・
235名称未設定:2006/07/03(月) 11:52:05 ID:j6F1dWhI0
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名称未設定:2006/07/03(月) 12:10:47 ID:sGdD8YCc0
原文の"The Objective-C Programming Language" には

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

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

むちゃくちゃだな。
237名称未設定:2006/07/03(月) 13:24:18 ID:c8VZVKn90
238名称未設定:2006/07/03(月) 13:46:21 ID:sGdD8YCc0
>>237
一応原文の方の「Did this document help you?」から送ってみた。
米国人に読めるかどうか定かではない。
239202:2006/07/03(月) 22:17:26 ID:0POPeGrk0
やっぱりできませんでした…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名称未設定:2006/07/03(月) 22:53:59 ID:1GGgkFvn0
>>239
>>202文中の「その下に画像を選択するチェックボックス」
というのがよくわからないんですが、こういう感じのインタフェースのこと?
http://amb.sakura.ne.jp/hanyou/img-box/img20060703225311.jpg

それで、画像ビューア的なものを作ろうとしているためにMatrixの個数が
ころころ変わるから、カスタムクラスで対応しようとしている、と?
241202:2006/07/03(月) 23:36:22 ID:0POPeGrk0
>>240
まさしくそんな感じです。
画像の右下につけたいんですが、どうしてもうまいこと行きません。
どうやったらそんな感じになるんでしょう?
242名称未設定:2006/07/03(月) 23:51:12 ID:HXCXI1up0
243202:2006/07/03(月) 23:55:42 ID:0POPeGrk0
>>242
わわわわーーーー!まさしくこういうやつです! すげーーーー!
ありがとうございます! 早速試してみます!
244名称未設定:2006/07/04(火) 17:26:21 ID:EtnP0KDm0
Online会員もOKになってるよ。

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

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

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

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

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

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

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

そこまで自動でやってくれるんだったら NSObject の dealloc で
instance var. に全部 release を送ってくれても良いのにね、
短いプログラム書いて確かめてみたら、してくれないようです。
256214:2006/07/09(日) 12:59:11 ID:HrXmC/KL0
>>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名称未設定:2006/07/09(日) 15:36:58 ID:H2YJeMnN0
>>256

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

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

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

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

259名称未設定:2006/07/09(日) 21:07:40 ID:zyDgX85Y0
>>256

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

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

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

260名称未設定:2006/07/10(月) 01:46:21 ID:BTIU67C00
>>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名称未設定:2006/07/10(月) 16:44:39 ID:NVNosukD0
Blender で関節を作って、それを cocoa のスクロールバーを動かしたら関節が動く

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

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

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

//

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

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

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

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

あぁ、何がいいたいのか自分で分からなくなってきたorz。
267260:2006/07/12(水) 00:49:52 ID:cCNV0N560
バインディングでつなぐのは、どのオブジェクト間でもできます。コードさえ書けば。
詳しくはこのへん
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を身につけられるようにとの教育的配慮なのかはわかりませんが。
268260:2006/07/12(水) 01:06:50 ID:cCNV0N560
あれ?両側でバインディングしたらだめかも。
コード書くのって片方向のときばかりなので。実際に確認してからまた書きます。
269名称未設定:2006/07/12(水) 11:35:21 ID:uWLciWqb0
>>266
Bindingって言葉のイメージで、例えばAとBをBindしたら、双方向に変更が反映されると思うかもしれないけど
実際は違って、KVOで監視されるのはModelだけ。

そもそもCocoa Bindingって元々はController Layerとかそんな名前で記事が公開されてたはず。
あくまでModelとViewを繋ぐコードを出来るだけ書かないで済ませられる、再利用可能なControllerの導入。
270名称未設定:2006/07/12(水) 17:13:34 ID:7HB45Tst0
271名称未設定:2006/07/12(水) 17:32:25 ID:Y+OZKsDY0
>>267
適当な自作controllerでもKVCにさえ対応させればinterfaceBuilderからbindできるお。
nib上のNSDictionaryですらbind先に出てくる。
272名称未設定:2006/07/12(水) 22:09:16 ID:d5Z4yb6a0
Obj-Cプログラム中に、
Cの標準ライブラリ関数の機能
sin(x)とか使いたいとき、#include <math.h>すればそのままつかえるの?
273名称未設定:2006/07/12(水) 22:15:25 ID:PapfZQSJ0
試せよ
274名称未設定:2006/07/12(水) 22:21:30 ID:TsaPZEym0
やだな〜、コンパイルエラーが起こると鼻から悪魔が出てくるんじゃないかって
おびえてるんじゃないですか
275名称未設定:2006/07/12(水) 22:23:06 ID:xdii1JAr0
デモン君は良い悪魔だから、出て来ても安心だよ
276名称未設定:2006/07/12(水) 22:56:18 ID:0seFQ/fJ0
毛穴から皮脂が出てきます
277名称未設定:2006/07/13(木) 06:28:07 ID:tY6w695H0
メールアドレス間違えて送ると悪魔から返信メールが来るしな。
278名称未設定:2006/07/13(木) 20:47:32 ID:nGSwsYOi0
-lmとかはどこで指定すんの?と聞いてるんじゃまいか?
279名称未設定:2006/07/15(土) 17:32:11 ID:euMhXwyg0
libm って libSystem に入ってたんじゃなかったっけ?
すくなくとも

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

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

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

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

キー値バインディング、キー値コーディング、キー値監視、リレーションシップの
濃度、何だ?意味わかんね。特に最後の濃度。
307名称未設定:2006/07/27(木) 10:07:35 ID:NyKix3Vm0
iPodで再生出来る?
308名称未設定:2006/07/27(木) 17:25:45 ID:oYq1PqLY0
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名称未設定:2006/08/01(火) 22:55:32 ID:A1O2SBBj0
DB用語としては普通にカーディナリとかカーディナリティとか言うから、
そのままカタカナにしてくれたほうが一般のプログラマにはわかりやすくないか?
310名称未設定:2006/08/02(水) 09:46:15 ID:/HilA6hT0
カタカナにするくらいならそのまま英単語表記の方がいいよ。カタカナだと
一度英語に変換しなきゃならないからイライラする。
311名称未設定:2006/08/02(水) 13:54:23 ID:JfbOkV6b0
もう原文で読めよ
312名称未設定:2006/08/02(水) 14:44:43 ID:/HilA6hT0
それは嫌。
313名称未設定:2006/08/04(金) 13:11:52 ID:nVyU6IcO0
NSImage/NSImageRef系では画像のフォーマットを調べられないのでしょうか。
拡張子での判断ではなく、信頼性のある情報が欲しいのですが、そのようなメソッドを見つけることができませんでした。
314名称未設定:2006/08/04(金) 19:40:32 ID:bpPD/J0E0
このスレ的でのオススメ本はどれですか?
ttp://homepage.mac.com/mkino2/books/index.html

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


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

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

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

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

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

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

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

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

画像のフォーマットぐらい、NSImage が教えてくれてもいいような気がするんですが。
NSImage(Rep) はとにかく画像データを描画するというスタンスなのでしょうか。
327名称未設定:2006/08/06(日) 16:20:25 ID:JHWeNIaU0
描画するというスタンスでしょう。
元データが何だったかなんて読み込んでしまえばどうでもいいことだし。
328名称未設定:2006/08/06(日) 19:53:07 ID:nXVcoRA90
NSImageFile(wじゃないもんね。
329326:2006/08/06(日) 20:41:27 ID:3l6yOwH/0
少しして気づいた。この方法でも駄目だった..('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名称未設定:2006/08/06(日) 22:09:47 ID:mEFUqkp30
NewHandle()したらDisposeHandle()をお忘れなく。
331名称未設定:2006/08/06(日) 22:22:16 ID:mEFUqkp30
あと、CloseComponent()も。
332沙織:2006/08/07(月) 18:53:47 ID:DCAi8Zwz0
私ぐらいの初心者で手軽に作れるアプリはあります???
ん〜ペイントツールとか作ってみたいんですが 誰かcocoaのサンプル+作り方が載ってるページあったら教えて下さい
それと、本を注文してみました AppleScript Studioでゼンマイびゅんびゅん!!とMacでJava!―Macに付属のXcodeで始めるJavaプログラミング入門
Happy Macintosh Developing Time―はじめてさわる、はじめてわかる!!Xcodeに完全対応、Web Kitも解説です
他に良い本などあったら教えて下さい Xcodeに対応してない物が多く困り中〜
333名称未設定:2006/08/07(月) 18:56:23 ID:vBcSDb4J0
ツールの使い方だけ知っても仕方ないとは思うけど・・・
334名称未設定:2006/08/07(月) 19:00:49 ID:kVayUrij0
>>332
あんた>>322でも書いてた人?
335名称未設定:2006/08/07(月) 19:22:05 ID:uW56NgY90
>>332
ペイントアプリケーションの作り方は
中村正弘著「はじめてのMac OS X Cocoaプログラミング」
って本に書いてある。
今もこの本売ってんのかな?
336名称未設定:2006/08/07(月) 19:47:00 ID:oDZn1gHU0
買った本からして、作りたい物の方向性が見えない。
闇雲に方法を模索すると正解が導きだせないよ。
337326:2006/08/07(月) 19:53:42 ID:M72Kkhgx0
>>330-331
ちゃんとしておきました。
QTのドキュメントにも「Disposeしろ」と散々書かれていた。

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

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

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

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

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

ん〜・

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

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

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

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

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

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

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

[textfield setStringValue:@"Hello World"];

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


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

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

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

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

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

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

399名称未設定:2006/08/09(水) 13:55:16 ID:2i3vPbEv0
>>394さん
私のつくれる電卓はcocoaセミナーさんでみた動画の電卓です
大きな計算できないけど〜
400名称未設定:2006/08/09(水) 14:00:04 ID:PBowRyDl0
>>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名称未設定:2006/08/09(水) 14:06:28 ID:mXeMK5ZT0
>>400
NSTextFieldにlengthメソッドは無いと思うよと言われている

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>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さぉり:2006/08/14(月) 18:12:15 ID:cLR/zlEy0
>>436さん
おおおおおおおお!!!!!!!!!!
ありがとうございます!
C言語でできるcarbonで試してみます!

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

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

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

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

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

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

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


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

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

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

で、出来たのがあれだと思う。
無駄に何か付け加えずに、日本語訳に徹したほうがいいと思う。
479名称未設定:2006/08/16(水) 01:40:30 ID:/krMgAx40
日本語のドキュメントが少なすぎるから、ないよりはまし。
480名称未設定:2006/08/16(水) 01:42:40 ID:4AfwvBq50
ずいぶん増えたと思うけどなぁ。。。
481名称未設定:2006/08/16(水) 01:52:19 ID:/krMgAx40
oomori.com は、確かに間違った作例も多いが、API の機能はわかったけど
実際どう使っていいのかわからないときのヒントにはなる。
ここにはほんとに感謝している。
っていうか、間違いを見つけたら、ここにメールで知らせるとかするべきじゃないのか?
48270:2006/08/16(水) 02:41:29 ID:DgG9EDFV0
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
483482:2006/08/16(水) 02:42:10 ID:DgG9EDFV0
ありゃ、何か名前ミスった。
すみません。
484名称未設定:2006/08/16(水) 09:36:48 ID:XBRNwoP90
>>469
ドキュメントの階層構造が変わったのでだめみたい。
485名称未設定:2006/08/16(水) 11:53:56 ID:DgG9EDFV0
>>469

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

http://numata.aquasky.jp/myweb/cocoabrowser/
486名称未設定:2006/08/17(木) 00:46:04 ID:HF1Y3t/e0
>>408
>MacOSXで使える 総合開発ソフトって何がありますか?
VisualWorks
487名称未設定:2006/08/17(木) 00:57:20 ID:OaNUe9490
squeakもあるね。
488名称未設定:2006/08/17(木) 01:02:37 ID:nE3g0OzH0
蒸し返さなくていいよ
489名称未設定:2006/08/17(木) 14:57:02 ID:0k26lInq0
CocoaからXML-RPCを簡単に扱う方法ってありますか?Pantherで。
490名称未設定:2006/08/17(木) 17:15:36 ID:F34tqFgq0
491名称未設定:2006/08/18(金) 13:19:05 ID:+zBtZn7a0
本題から離れて久しいネタを引っ張ってスミマセン。

>>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名称未設定:2006/08/18(金) 15:18:15 ID:k5Wqgasy0 BE:93823632-2BP(100)
>>490
サンクス
そんなフレームワークがあったんか。
493名称未設定:2006/08/18(金) 15:20:21 ID:plOn4YBB0
というか Objective-C の [object message] というのが Smalltalk から取ったんですもんね。
494名称未設定:2006/08/18(金) 15:43:50 ID:+zBtZn7a0
おっしゃるとおりで。ちなみに Objective-C は、Smalltalk のソースを C コンパイラに通すための
プリプロセッサとしてスタートした処理系です。
495名称未設定:2006/08/18(金) 19:05:20 ID:nuoKJn610
このAmbraiってバイナリは作れないのかな?
496名称未設定:2006/08/18(金) 20:07:45 ID:+zBtZn7a0
>>495
たぶん仕組み的に無理じゃまいかと。ラピッドプロトタイピング向きですね。
497名称未設定:2006/08/18(金) 20:39:54 ID:PrNX8Xf70
イメージがパッケージ内に入ってるんだから、適切なスナップショットとって
パッケージのアイコンだけ入れ替えてしまえばオールオッケー。

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

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

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名称未設定:2006/08/19(土) 15:46:44 ID:vDvq9ja70
>>501
retain してないから。
503名称未設定:2006/08/19(土) 19:10:26 ID:mXtzwdaN0
>>499-500
レスサンクスです。
おっしゃる通り、メニューがロードされてませんでした。
あとから[NSApp mainMenu]を読んだらうまくいきました。
504(・∀・):2006/08/20(日) 05:43:24 ID:1aKnCZWS0
>>502
やっとこの辺理解できた。javaとはちと違うのね。
505さぉり:2006/08/20(日) 19:43:13 ID:6ZDqLh560
こんばんわ
最近AppleScriptでcocoaアプリ作ってます
AppleScriptの資料がOSX用のがあんまりありません
やっぱ調べるよりかも本見た方が良いと気づきました Finderくらいでしか使えません
"Sfari"とか"mail"をターゲットにして使いたいんですが OSX用の資料がありません
オブジェクトCは難しいとAppleScriptゼンマイびゅんびゅんに書いてありました
私みたいな初心者はAppleScriptの資料はどこで手に入れればいいですか?
参考URLなど知っていたらお願いします OS9の資料はしってるので
できればOSXとかの資料があったらお願いします
506名称未設定:2006/08/20(日) 20:52:49 ID:Yi61OdaT0
個人的な意見ですが、
AppleScript より Obj-C が難しいと思う人
よりも
Obj-C より AppleScript が難しいと思う人
のほうが全然おおいと思います

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

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

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

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

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


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

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

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

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

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

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

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

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

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

教える

「分かりません」

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

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

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

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

Application Support\(アプリ名)\

現状、最初に書き込んだユーザーしか、
上記のフォルダに書き込みできないようなのですが…
571名称未設定:2006/08/28(月) 08:12:30 ID:awb7apM30
>>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名称未設定:2006/08/28(月) 09:33:51 ID:JZkhxaOW0
/Users/Shared以下に置きなよ…。
573名称未設定:2006/08/28(月) 15:05:35 ID:dcOH6cG60
Shiiraの「進む/戻る」やXcodeの「ビルド」でやってるような、長押しでプルダウンメニューを出すツールバーアイテムを調べてるんですが
shiira最新版のソースを見てもimageとactionを設定してるだけで特別なことをしてる部分が見つけられません。
HMDTのBBSは死んでるし、どなたかわかる人いたら解説お願いします。
574名称未設定:2006/08/28(月) 15:11:31 ID:hwGKK53s0
>>573
mouseDown: 内で NSApplication の nextMatchingMask:untilDate: inMode: dequeue: を使えばいいらしい。

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

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

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

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

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

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

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

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

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

ことえりとかで未変換状態の場合は知らん。
589名称未設定:2006/08/31(木) 21:43:41 ID:Inp06MVC0
NSButtonの作成時にsetEnabled:NOした状態で表示させるにはどうしたらいいでしょうか?classのinit時に設定しても、反映されないようなのです。
590589:2006/08/31(木) 21:48:02 ID:Inp06MVC0
うはっ、Interface Builderのattributeにあったのか…失礼しました。
591名称未設定:2006/08/31(木) 22:23:59 ID:uXaPXFXD0
ファイルの存在チェックを下記関数で行っているのですが、存在するファイルを指定しても、
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;
}
592591:2006/08/31(木) 22:32:27 ID:uXaPXFXD0
すみません。隠しの拡張子が設定されていたためでした。
593名称未設定:2006/08/31(木) 22:34:04 ID:o8x0nj1z0
書き込んで数分後に帝政するスレはここですね?
594名称未設定:2006/08/31(木) 22:35:52 ID:+3J8izoY0
アフリカでもよくあること
595名称未設定:2006/09/01(金) 00:05:24 ID:QYrpATme0
このスレ見た直後だったから↓こっちも同じ流れでワロタ

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

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

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

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

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

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

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

排他的な処理をするならもちろんマルチスレッド・プログラミングの勉強をした方がいいけど。
607名称未設定:2006/09/02(土) 17:46:51 ID:BnL+oSK30
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名称未設定:2006/09/02(土) 17:47:17 ID:VC17T2uF0
>>606
>インスタンス変数の書き換えはアトミックじゃないかもしれないけど

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

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

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

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

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

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

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

残された道は、NSTableHeaderViewをカスタムして
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
をとってくる事だが。実験している余裕が無い。
618名称未設定:2006/09/07(木) 18:59:30 ID:dyVH14ce0
- (BOOL)tableView:(NSTableView *)tableView shouldSelectTableColumn:(NSTableColumn *)tableColumn;
で Column の選択を監視して、左端が選択された場合だけ
- (void)setAllowsColumnReordering:(BOOL)flag;
に NO を設定するとか。
619名称未設定:2006/09/07(木) 19:02:02 ID:dyVH14ce0
あ、これじゃダメかもしらん。
620名称未設定:2006/09/07(木) 19:15:41 ID:3nsMUMTo0
ココアの勉強始めようと思って来たけど、
これは本当に何言ってるか分かんなくてサッパリですね・・・
難しい気がします、なにやっていいかわからない。
621名称未設定:2006/09/07(木) 19:18:35 ID:Muiw9MQt0
622名称未設定:2006/09/07(木) 19:44:25 ID:2jQzgdDv0
>>617
自己レス。説明不足だった。
ヘッダ部分のドラッグで、カラムの並べ替えができるけど
左端(No.)のカラムだけは動かしたくないんだよ。
NSTableView関連を見る限り、ドラッグ後のイベントしか受け取れない。
didClickTableColumn:だとヘッダ部分には反応してくれないんだ。
623名称未設定:2006/09/08(金) 01:48:01 ID:emfTJ6RZ0
>>620
いきなり白旗ふらないで地道にやるしかないよ。プログラムは根気が大事。
設計も簡潔でよくできているし、他の環境でプログラムする時にも
Cocoaの作法は良い影響が出ると思います。
何をしたいのかがわからないので具体的なことは何も言えないけどCocoaは難しくないと思う。
プログラムの知識があれば一日まじめにやればとっかかりはつかめる。
624名称未設定:2006/09/08(金) 02:36:57 ID:c/mVP49P0
>>623
少しも何が何だかわからないってだけで白旗は振ってないです。
ただただどうしていいのやら指針も立たないし
暗闇の中でどっち行っていいか何していいかわからない感触
625名称未設定:2006/09/08(金) 03:32:08 ID:emfTJ6RZ0
>>624
いや、だからそれじゃ何もわからないですって、、、
具体的なこと何も書いてないじゃないですか。
Cはわかるのか、とかサンプルのソースはどれくらい理解できてるのか、とか
そもそもプログラム自体やったことないのか、とか
Cocoa以前にOSXのことはどれくらい知ってるのか、とか
adcの中はどれくらい見ました?
日本語化されてるドキュメントもけっこうありますよ。
少なくとも最初のとっかかりがつかめるくらいの日本語資料はWebにもたくさんあります。
CocoaはやっぱりやHMDTとかこのスレで紹介されてるサイトは見ました?
626名称未設定:2006/09/08(金) 03:53:46 ID:AxhrEaLd0
またさぉりか
627名称未設定:2006/09/08(金) 04:35:14 ID:c/mVP49P0
>>625
OS9の頃にCでHello!Worldを何かに付いてきたCodeWarriorでやって遊んだ事があるだけです。
でもやったうちに入らないです、かなり何年も前の話だし、忘れたし。
adcのドキュメントはパラパラとさっき読んでみましたけどよく解んなかったです。
628名称未設定:2006/09/08(金) 05:11:32 ID:emfTJ6RZ0
>>627
うん。なるほど。Cocoaがわからないという問題じゃないね、それは。
ちなみにHelloWorldはプログラムを書く、という行為じゃなくて
セットアップです。環境に問題がないかどうかのテストです。

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

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

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

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

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

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

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

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

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

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

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

NSString* str = [...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ところが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のやり方って楽だと思う。

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

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

・・・やっぱり玄人さんとは絶対相容れないなぁ。
698名称未設定:2006/09/09(土) 13:18:04 ID:AGwnSZbs0
だからさあ
素の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(・∀・):2006/09/09(土) 14:17:50 ID:9VMu+rgf0
>>697
どう考えてもGUIアプリケーションだけを前提にしているじゃないか。
それでCの有効性を語られても。
Cの汎用性、移植性にかなう言語は無いよ。一度書けば
半永久的に動くでしょ。事実それだけの歴史がある。
700649:2006/09/09(土) 15:01:41 ID:ML+61Nzm0
>>699
CocoaはAppKitを含むのだから、このスレはGUIアプリ前提でもいいかと。
CFだけじゃGUIアプリは書けないし。Carbon一般の知識も必要でしょ。

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

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

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

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

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

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

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

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

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

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

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

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

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

>>719
結局使うのはAudioToolbox/AudioUnitの方だからほとんど意味がないんだなあ
つかAudioDeviceを使った再生ってもうobsoleteだったようなw
722名称未設定:2006/09/09(土) 18:04:17 ID:JrFeKIO60
Cocoaの世界で綺麗にまとめることを止めはしないけど、Cじゃないとできないこともあることは知っておいてね。
723名称未設定:2006/09/09(土) 18:32:39 ID:rF8E3bnr0
なんだFaundationとかいうのは何かと思ったらただの材料の山かょ
724名称未設定:2006/09/09(土) 18:39:55 ID:hJLXPXIA0
とりあえず流れが落ち着いたと思うので質問しますけど、
Interface Builderで、NSTableViewにSort Keyって項目があるんですけど、
ここはモデルになってるオブジェクトのメソッド名を書けばいいんですよね?
725名称未設定:2006/09/09(土) 19:47:51 ID:LOxJMv3o0
>>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(・∀・):2006/09/09(土) 22:25:24 ID:9VMu+rgf0
>>724
NSTableColumn のidentifierを書く。カラムのヘッダをクリックしたとき
そのidentifierを持つカラムでソートされる。
727名称未設定:2006/09/10(日) 00:12:51 ID:YHtw3DST0
便乗質問させてください。
アプリが起動したときに、自動でカラム(例えば日付のカラム)をソートするには
どうすればいいでしょうか?
728724:2006/09/10(日) 00:28:48 ID:2omrP4+i0
>>725
サンクス。やってみたけど上手くいかなかったです。
カラムヘッダに矢印は出るんだけど、並び変わらないです。

>>726
すみません、よくわからないです。
カラムのidentifierをカラムのソートキーに設定するってことですか?
729名称未設定:2006/09/10(日) 00:30:17 ID:LQ6yUU+y0
730(・∀・):2006/09/10(日) 02:16:46 ID:O7SWdeKN0
>>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名称未設定:2006/09/10(日) 18:53:29 ID:h7kk2j0M0
developer.apple.comで技術翻訳があるのは、
ほぼ日本語だけなんだけど、
他の国の人はみんな英語ができるんかい?
732名称未設定:2006/09/10(日) 20:18:40 ID:WOfbgacT0
>>731
作らないから必要ないんじゃない?
外国は作るのはWindowsのソフトばっかでしょ。
金にならないし。
733名称未設定:2006/09/10(日) 20:42:02 ID:3c4PziZQ0
>>731
できるんでしょ。
日本人だってそれなりに勉強してんだからできるはずだよ。

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

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

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

どうやったら出来るのでしょうか?
orz...
740名称未設定:2006/09/11(月) 12:37:30 ID:JqbRBwcb0
741名称未設定:2006/09/11(月) 16:11:04 ID:x/buEH2d0
Viewに表示される内容をPDFに保存したい場合、dataWithPDFInsideRect:を
使うけど、Viewがスクロールしなければ表示し切れない大きなものの場合、上の
メソッドで作成されたPDFは1ページが巨大なものになって、これを印刷しようと
すると全体が縮小されたものか、拡大しても一部だけしか印刷出来ないような代物
になっちゃうんだけど、複数ページに分割出来るように保存出来る方法は
ないですか?一体、どうやれば複数ページのPDFを作成出来るんでしょ?
742名称未設定:2006/09/11(月) 16:23:57 ID:d/fWNG3R0
>>741
あるよ。説明面倒だからヒレガス本でも読んでね。
743739:2006/09/11(月) 16:38:10 ID:Bg3A5KK20
>> 740

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

空気読まずに投下。

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

----以下テキトーな訳----
7832/7:2006/09/12(火) 21:28:05 ID:TiBUhRpI0
【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の法務担当さんよ、オレを殺さないでくれよな。
これはぜーんぶ公開されたリポジトリからの情報なんだから。
7843/7:2006/09/12(火) 21:28:49 ID:TiBUhRpI0
【プロパティ】

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

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

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

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

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

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

(コード。プロパティのアクセサメソッドを個々に指定する)
@property(getter = whatBaby, setter = setFire:) id baby;
7865/7:2006/09/12(火) 21:30:13 ID:TiBUhRpI0
【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のカテゴリを使わなきゃならなかったからな。
7876/7:2006/09/12(火) 21:30:50 ID:TiBUhRpI0
【ガベージコレクションのメタデータ】

オレが公開されてるリポジトリで見つけたガベージコレクションに関する追加は、
__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
で見ることができる。
7887/7:2006/09/12(火) 21:31:24 ID:TiBUhRpI0
【かんたんインスタンス変数アクセス】

最初の記事で、オレは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のことか?)を与えるまではな)
789782:2006/09/12(火) 21:32:29 ID:TiBUhRpI0
終わりです。間違ってるとこあったら指摘お願います。
790名称未設定:2006/09/12(火) 23:29:38 ID:dqLn12uX0
翻訳スレの方がよかったんじゃないか。
どっちにしても>>TiBUhRpI0 乙
791名称未設定:2006/09/12(火) 23:31:15 ID:dqLn12uX0
いや、翻訳スレの住人にはどうでもいい話か。
792名称未設定:2006/09/12(火) 23:58:01 ID:oQJ98+Qe0
>>TiBUhRpI0

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

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

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

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

って、DIってのがよく分かってないのが一番問題ですけど・・・。
817名称未設定:2006/09/18(月) 23:16:11 ID:B4N4/boW0
>>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名称未設定:2006/09/18(月) 23:20:08 ID:B4N4/boW0
>>811
ご指摘どもです。
思わず「ごめんなさい」といいかけましたが、Read しなくても大丈夫みたいですね。

関係ないけど次期IB、ツールバーぐらいはGUI上で作れるようにして欲しいなぁ。
819名称未設定:2006/09/19(火) 02:48:13 ID:Jt+bXHCB0
マルチドキュメントのアプリケーションでメニューバーのメニューを動作させるためには、
アプリケーションの 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名称未設定:2006/09/19(火) 08:37:54 ID:r+O+UOSw0
>そこで、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名称未設定:2006/09/19(火) 22:03:12 ID:9YjYVzRM0
最近よく使われてる黒い半透明のWindowはどうやって作るんですか?
822名称未設定:2006/09/19(火) 22:06:00 ID:ckAkXMLv0
NSWindow のサブクラスでも作って実装してください。
823名称未設定:2006/09/19(火) 22:36:41 ID:lnS2glGH0
/System/Library/PrivateFrameworks/ProKit.framework
824名称未設定:2006/09/19(火) 22:38:03 ID:/FEdPOf+0
ProKitのウインドウって、前に使ったときはただパネルを黒く塗っただけのような感じだったな。
使い方が悪かったのかな。
825名称未設定:2006/09/19(火) 22:52:02 ID:RY1STNNF0
ProKitって公開しないのかな?
826821:2006/09/20(水) 07:13:43 ID:p1b6ugmC0
ProKit(というかPrivateFrameworks)ってガンガン使っちゃってもいいんですか?
良いなら使いたいですが、NSWindowサブクラスを作るのが吉?
827名称未設定:2006/09/20(水) 19:15:21 ID:Rk3hyc9I0
バックグラウンドでやりたい長い処理があるんですが、CPU能力の10~20%くらいで
まったりやらせる方法はあるでしょうか?
NSThreadで優先度を0にしても空いてる処理能力を全部使って一生懸命やってくれちゃうので
丁度良く力を抜かせたいんですが。
828名称未設定:2006/09/20(水) 20:29:03 ID:n0oVMtfS0
定期的にスリープしとけ。
829名称未設定:2006/09/21(木) 18:56:47 ID:VMd1nvD00
最近「MAC OSX Cocoa プログラミング(アーロン ヒレガス)」を読みながら勉強を始めた者です。
もし、この本で学習された方がいらっしゃいましたらぜひアドバイス願いたいのですが、第6章(アーカイブ)の課題のプログラムは本の通りに打ち込むとパンサーでも動くのでしょうか?
本の通りに打ち込んだ(つもりなんですが)後に、実行してプログラム内で適当なデータを保存すると、「シグナル 11(SIGSEGV)により終了しました。」と表示されてプログラムが終了してしまいます。
コンパイル時点でのエラーはすべて解決しているのですが、何が悪いのかわからず途方に暮れています。
まず、パンサーでも動くコードなのかどうかを確認したいと思っています。
830名称未設定:2006/09/21(木) 19:07:54 ID:RLkfsmHk0
>>829
>打ち込んだ(つもりなんですが)
「打ち込みました」と言い切れるようになってから出直してね。
831名称未設定:2006/09/21(木) 19:14:12 ID:JxoTV12u0
>>829
私はその本持ってないので分かりませんが、デバッガで追えばどこで落ちてるか分かるのでは。
832名称未設定:2006/09/21(木) 19:27:46 ID:zgOSpSEr0
プログラムのmd5値でも晒してみたら?
誰も試してないと思うが。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

とにかく吊ってくる...
891名称未設定:2006/09/30(土) 17:48:01 ID:+ROLY4HP0
試してないからどうなったのか分からんけど
@""ディレクティブが7bit ASCIIしかサポートしてないんだから
文字化けしても不思議ではないでそ?
892名称未設定:2006/09/30(土) 18:03:02 ID:9BDwUP6d0
ローカライズ使わないと
893名称未設定:2006/09/30(土) 22:21:38 ID:F/tzvttr0
日本語が表示できないとは
ls, cat, view もだめなのか ?
894名称未設定:2006/09/30(土) 22:38:10 ID:Id8Hazxn0
( (( (((……先が思いやられるなァ))) )) )
895名称未設定:2006/10/01(日) 00:12:32 ID:EOG5NQg00
>>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名称未設定:2006/10/01(日) 00:22:21 ID:EOG5NQg00
いちばんの謎は、日本語フォルダ名が表示されている
ものと、そうでないものとがあることだ。
なんとなく、スピッツとかコンピレーションなどの
文字列が悪さしているような気がする。
もちろん、素人のあて推量ですがね。詳しい人教えてください。
897名称未設定:2006/10/01(日) 00:51:49 ID:4WFCp8Wg0
NSLog(@"%@¥n", anObject);
898名称未設定:2006/10/01(日) 01:08:52 ID:EOG5NQg00
>>897
うわ、恥ずかしい。。。そうでしたね。
すっかり頭からトンでいました。ほんとごめんなさい。

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

NSLog

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

>>900 そうですよ。それが問題だったのです。
>>901 いや、そうですけどね、
ターミナルで自分専用のゴミプロ作って
いるときにはまったく問題ないよ。
904名称未設定:2006/10/01(日) 09:19:20 ID:Wm594WtN0
というか、そもそも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]];
}
905904:2006/10/01(日) 09:34:16 ID:Wm594WtN0
ちなみに使う時はソースコードのエンコーディングをUnicode (UTF-8)
にしておいて、こんな感じで。

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

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

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

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

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

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

そういう可能性のある人はまじめにやればいいだけで、仕
様の関係で日本人(語)限定であれば別に日本語をソース
に入れてもいいと思う。
911名称未設定:2006/10/01(日) 15:36:12 ID:4WFCp8Wg0
[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名称未設定:2006/10/01(日) 18:03:19 ID:EOG5NQg00
>>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名称未設定:2006/10/01(日) 19:26:59 ID:f8VXdlCv0
7ビットのJISだと通るのかな?
今はウニコードだけど。
914名称未設定:2006/10/03(火) 00:10:44 ID:vZLUW2580
>>906
>printfでいいだろ。
ちょっと気になったんだが、ユニコードって printf で出力できるんだっけ?
例えば、%s に UTF-8 を突っ込んでもおk? ワイド文字? ロケール?
%@ は理解しないよね?
915名称未設定:2006/10/03(火) 00:21:18 ID:Zzu7W0y10
実装によるかとは思うけど
printfで%s指定されたとこにchar* が来たら
'\0'が来るまで1バイトずつstdoutへ垂れ流すだけじゃないの?
それが出力先で表示できるかどうか、とかはしったこっちゃないんでは。
916名称未設定:2006/10/05(木) 08:23:49 ID:iQdGwIIvO
LeopardでCocoaはどう変わりますかね
917914:2006/10/05(木) 15:38:18 ID:VyTiZ+Z40
>>915
確かに...

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

[NSArrayController add: sender];

だと add する前後でフォーカスが変わらないんですが、何を使えば
いいでしょうか。
919名称未設定:2006/10/07(土) 16:06:13 ID:qPlgXBFq0
「フォーカスする」とか妙な言い回しを使うのは混乱の元。
IB上で "Selects inserted objects" がオンになってれば追加項目が自動で選択されるはず。
920名称未設定:2006/10/08(日) 11:13:20 ID:VkvE8xkM0
SSL認証が必要な場所からデータを取得するにはどうすればいいのでしょうか。
NSURLDownloadでURIを指定すると-download:didReceiveAuthenticationChallenge:が呼ばれるようなのですが、ここからどうすればいいのかわかりません。
921名称未設定:2006/10/10(火) 02:54:23 ID:0mWfr7JN0
cocoaからzlibを使いたいんですが、適当なクラスはありますか?
直に叩きに逝かないと無理ですか?
922名称未設定:2006/10/10(火) 03:29:02 ID:HWiovJ9m0
こんなのはどうですか?
ttp://hetima.com/soft/hetimaunzip.html
923921:2006/10/10(火) 13:21:47 ID:0mWfr7JN0
>922
いいもの教えてくださってありがとうございます。
これで出来そうです。
924名称未設定:2006/10/10(火) 14:06:15 ID:QWkbtnHC0
Cocoaセミナー満員御礼だってよーヽ(`Д´)ノ
925名称未設定:2006/10/10(火) 21:45:40 ID:xgO7ab5+0
すいません、よかったら教えてください。
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名称未設定:2006/10/10(火) 22:23:38 ID:/VujWzmI0
何回もTimerが起動してるんでしょ。
927名称未設定:2006/10/10(火) 23:18:37 ID:u1x6lnsI0
NSTimerのインスタンスは闇の中。
どうやってストップさせるんだ?
928名称未設定:2006/10/10(火) 23:22:13 ID:C5aU20T50
wTSoundも闇の中ですね
929名称未設定:2006/10/11(水) 01:33:39 ID:gW50yOVj0
>>927
> NSTimerのインスタンスは闇の中。

RunLoop が持ってるし

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

CallBack: (しかしこの method 名最悪だね) で invalidate すればいいし
930名称未設定:2006/10/11(水) 09:22:36 ID:E5bPHcGk0
>>929
それは>>925のやりたい事とはぜんぜん違うんでないかい?
CallBack:でinvalidateしてたらリピートできないし、
StartStop:ってメソッド名からして、ストップもそこでやりたいはずだし。
931名称未設定:2006/10/11(水) 13:19:22 ID:gpdU8zAd0
タイマーに関する部分だけなら、俺ならこう書くかなぁ。正攻法?
[_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名称未設定:2006/10/11(水) 13:23:03 ID:gUmtjTHD0
え?
933名称未設定:2006/10/11(水) 13:23:14 ID:Qjx8Gy0C0
>>931
ついでにメソッド名もまともなのに変えてやれば?
934名称未設定:2006/10/11(水) 13:39:52 ID:gUmtjTHD0
もういちど、りふぁれんすを、よくよんでください。
それとも、つりですか?
935名称未設定:2006/10/11(水) 13:57:00 ID:VKAa2sv50
>>931
[_timer fire]はいらないんじゃ。
あと_timerRunningもいらないんじゃないの?
止めた時には_timerにnil入れて、_timerがnilかどうかで判断すればいい。
936名称未設定:2006/10/11(水) 14:08:13 ID:gpdU8zAd0
>>935
それもそうですね。

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

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

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

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





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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

まあ、リサイズしたり順番を入れ替えたりしたいなら向かないけど
985名称未設定:2006/10/20(金) 00:33:00 ID:fpP7aaMO0
カラーパネルやDeveloperToolsのDigitalColor Meterのように、
指定した座標の画素の色をNSColorで取得するにはどうすればいいでしょうか。
986名称未設定
NSReadPixel()でできました