Cocoaはさっぱり!!! version.9
at MAC
1:名称未設定
08/01/24 01:47:00 /Ae+OMPn0
初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。
前スレ
Cocoaはさっぱり!!! version.8
スレリンク(mac板)
2:名称未設定
08/01/24 02:06:19 zBsL8SS+0
2?
3:名称未設定
08/01/24 09:31:19 s+4xNGMC0
今日は寒いから、ラム入りココア!
4:名称未設定
08/01/24 09:38:09 yVuwS2iA0
なぜMacプログラミングはこんなに寂れてしまっているのか
URLリンク(www.vector.co.jp)
5:名称未設定
08/01/24 09:41:49 T1Kwwqvq0
Macに限らずWindowsでもだが、Vectorはもう見限られてる。
6:名称未設定
08/01/24 10:00:53 uLUkYs720
ダウンロードにたどり着くまでにエロゲの広告が一杯出るからなあ
7:名称未設定
08/01/24 10:41:24 vV8dED/00
vectorの存在忘れてた
昔は便利だったのだろうが、昨今ではどうだろうね
8:名称未設定
08/01/24 11:47:27 /Xbx9Tjk0
Vector は掲載を申し込んでから実際に掲載されるまでに1ヶ月かかるんだよ。
アップデート時も同様。
MacUpdate とか Version Tracker は数時間なのに。
9:名称未設定
08/01/24 19:42:14 4xv9sIsr0
どこから登録したらいいか、すぐ分からなかったのでやめた。
登録させたくないとしか。
10:名称未設定
08/01/24 20:12:29 nQjPjB6N0
M女史ですら登録できてるのに
11:名称未設定
08/01/24 20:51:54 e2gLsBWo0
NSOutlineViewで階層表示、ドラッグ&ドロップで並び替えの
良いサンプルはないでしょうか?
機能を実現するための考え方というか仕組みが分からず
苦労しています。
NSTableViewでのドラッグ&ドロップで並び替えはわかったのですが。
12:名称未設定
08/01/24 22:52:54 Cl70dvtl0
>>11
LeopardならAppleのsample codeのAbstractTree、SourceView
Leopardより前なら古いけれどDragNDropOutlineViewが
Developer/Examples/AppKit/DragNDropOutlineView
にあります
13:名称未設定
08/01/25 19:40:32 S+ZRut250
なんか日本でcocoaのプログラマーって10人いないような気がする。
14:名称未設定
08/01/25 19:55:32 FluJhFso0
すげーな
お前も俺もレアモノだぜ
15:名称未設定
08/01/25 20:17:12 rI2glRe80
いくらなんでも希少種と呼ばれる麻薬取締官より少ないってことはあるまい。
16:名称未設定
08/01/25 20:41:30 D6FaF35S0
それはないw
17:名称未設定
08/01/25 20:46:08 efY+uiCx0
Javaだったら、Socketとか、SocketChannelを使うケースって、
Cocoaだと、どうするのですか。
Cを使う必要があるのでしょうか。
18:名称未設定
08/01/25 22:28:04 lGCqdeBy0
Cを使った方が間違いないと思うよ
むかーし、CocoaだけでXMLやSocketを実現しようとしたけど、
バグっぽくて嫌になったorz
C++のライブラリを使ったObjC++がおすすめ
19:名称未設定
08/01/25 23:27:19 dCMPysux0
>>13
「Cocoaで食ってるプロ」なら10人いないかも
20:名称未設定
08/01/26 00:11:21 42x0AZNA0
>>17
client も server もCocoa だけで済むなら、Distributed Objects つかうと
めちゃめちゃ簡単ですよ。
21:名称未設定
08/01/26 00:45:22 42x0AZNA0
URLリンク(developer.apple.com)
のへんとか。
22:名称未設定
08/01/26 02:52:40 zd6T2u+m0
Cocoaだけで完結するプロジェクトなんてないでしょう
23:名称未設定
08/01/26 09:25:36 42x0AZNA0
ええっと僕に言われてるのだとすると、
Cocoa だけ、と書いたのは、プロジェクトが全部ココアだけ、
ということではなくて、
Client も Server も Cocoa つかったソフトで良ければ、ということです。
実際に、案外のフリーウェアでサポートされてる LinkBack とか Growl とかは
Cocoa の Distributed Objects で実装されてるけど、
Carbon app とかスクリプトからも使えます
24:名称未設定
08/01/27 01:57:57 FVS3vl130
暇だから日本人のCocoaプログラマを知ってるだけあげてみるか。
mkinoさん、荻原さん、nakamuxuさん
まだまだいるはずだけどぱっと出てこないもんだなあ。もっとあげられる暇な人いる?
25:名称未設定
08/01/27 02:08:39 jtZNwbED0
Digitalians' Alchemyの人。
26:名称未設定
08/01/27 02:41:19 mqS2hNH70
俺
27:名称未設定
08/01/27 02:48:04 Kw+jrJKi0
10人どころか5人もいねえw
28:名称未設定
08/01/27 04:47:59 nttUWrdb0
hetimaさん俺
29:名称未設定
08/01/27 08:44:22 InynCMyW0
名取り、さわっち、まさき
30:名称未設定
08/01/27 08:50:27 sMOKTW0+0
プログラミングする気がないなら無理に来なくていいんだよ
31:名称未設定
08/01/27 10:02:11 uLYFX0yW0
松本さんとか永野さんとか
32:名称未設定
08/01/27 10:47:06 CW8LN0Lg0
俺俺、俺だよ、俺
33:名称未設定
08/01/27 13:04:54 ddsvCdr30
IBでボタンにリターンキーを割り当てると、
テキストフィールド上で文字の決定でリターンキーを押した時にもボタンが反応してしまいます。
どうやって回避したらいいんでしょうか?
あと、矢印キーに至ってはボタンに割り当ててしまうと
テキストフィールドで矢印キーでの操作がまったくできなくなってしまう始末です。
34:名称未設定
08/01/27 13:16:25 Z+4QpQ0X0
ボタンにキーを割り当てるのは良くない気がする。
NSWindow サブクラス化とかでキーイベントひろって、ターゲットを呼び出せば?
35:名称未設定
08/01/27 14:10:58 NSDBpLCP0
>>33
そりゃサブクラスのファーストレスポンダあたりの設定がおかしいんじゃまいか。
変換決定のリターンキーではデフォルトボタンは反応しないよ。
36:名称未設定
08/01/27 16:43:50 3qPDxaPt0
NSなんたらviewのサブクラスを作って右クリックでコンテキストメニューを
表示させているのですが、10.4だと表示されて10.5だと表示されません。
なにか仕様が違うのでしょうか?
37:名称未設定
08/01/27 16:47:48 oxF7lnRH0
また仕様ですか君か。
違っているから、自分で調べなさい。
38:名称未設定
08/01/27 18:40:43 YX2EedA00
>>33は変換確定ではなくて改行の事を言っているのでは?
NSTextFieldじゃなくてNSTextViewを使えばどう?
39:名称未設定
08/01/27 18:42:05 Se/+uO9l0
37はMSMVP工作員
40:名称未設定
08/01/27 22:46:02 ddsvCdr30
>>34
key EquivだとIB上でできるので楽だと思ったのですが、あまり良くないのですね;
>>35
変換決定でなくてアクションを送るためにリターンキーで決定する時、ということでした。
>>38
NSTextViewを使ったことがなかったので、勉強してみます。
みなさんありがとうございました。
で、問題だった部分ですが、
テキストフィールドにアクションのターゲットを設定してやれば解決しました。
ターゲットがあればそちらにレスポンダチェインが走って(?)
ターゲット先でなんらかのアクションが起きてチェインが終了、他のボタンにはチェインは送られない
ということなのかなと、とりあえずは解釈しました。
41:名称未設定
08/01/27 22:55:30 ddsvCdr30
あ、ちなみに矢印キーをボタンにセットすると
NSTextFieldとNSTextViewどちらでも矢印キーが使えなくなってしまうみたいです。
42:名称未設定
08/01/28 10:06:56 /ciPWHQy0
LeopardにしたらsetControlTint:NSGraphiteControlTintが効かんようになっとるじゃないか
43:名称未設定
08/01/28 22:09:02 YFjOEr6f0
アレイコントローラーにデータがロードされた直後に
一回だけ処理をしたいのですがさっぱりです。
44:名称未設定
08/01/29 13:33:05 14AFSb+t0
Windowを最前面に固定するのってどうするの?
45:名称未設定
08/01/29 14:59:24 FsQS6A+l0
CALayer の contents に登録してある CGImageRef から
CIImage に変換したいんだけど,
CIImage *image = [CIImage imageWithCGImage: layer.contents]
であってますかね?
やりたいことは,CoreAnimation の2つのレイヤーから画像をとり出して,
CIFilter かまして,CoreAnimation の結果格納用レイヤーに画像をはめ込みたいのです.
46:名称未設定
08/01/29 16:04:52 /eQnXvPk0
やっと直った。Xcode3+IB3
Cocoaアプリケーションチュートリアル
URLリンク(developer.apple.com)
47:名称未設定
08/01/29 16:10:32 aFFUaCVD0
>44
// スクリンセーバーよりも前に出せ
[theWindow setLevel:9999];
48:名称未設定
08/01/29 16:14:44 waybUL+d0
>>46
しかし、なんだこの中華なフォントは?
49:名称未設定
08/01/29 16:15:40 /eQnXvPk0
国際化って奴だろ。
50:名称未設定
08/01/29 19:50:55 14AFSb+t0
>47
ありがとう。
最前面のちっちゃいメモがあればいいと思ってたので助かった
51:45
08/01/29 22:55:26 Weo8Bh4n0
自己解決しました.キャストがないだけだった orz
CIImage *image = [CIImage imageWithCGImage: (CGImageRef)layer.contents]
52:名称未設定
08/01/30 00:06:41 kQnUgB310
>>46
やっと直ったじゃなくて、リンク切れてたから
おとといぐらい ADC に連絡したんだけど。
24時間ぐらいで直したよ、って返事来てたよ。
というわけで皆さんも ADC にじゃんじゃん連絡しましょう。
53:名称未設定
08/01/30 08:44:26 8y/Wb65A0
HMDTつならがない...
54:名称未設定
08/01/30 09:12:46 ggAgLyT80
つながるけど?
>>52
ADCって日本語スタッフいるの?直接本家ADCに連絡すればいいんすか?
55:名称未設定
08/01/30 11:23:33 kQnUgB310
直接本家に言ったら直してくれたよ。
56:名称未設定
08/01/30 13:57:14 ggAgLyT80
サンクス、積極的に連絡してきます
たまにリンク切れとかあるんすよね
57:名称未設定
08/01/31 00:39:07 ut76z/B00
NSOpenpanel について質問させて下さい。
何か開くと、ポップアップメニューの「最近使った場所」に自動的に追加されますが、
この情報はどこに保存されているのでしょう?
~/Library/Preferences/(BundleIdentifier).plist には含まれていないようなのです。
OS 10.4.11 Xcode 2.5
58:名称未設定
08/01/31 00:49:48 5dWW8izh0
NSRecentDocumentRecords?
59:57
08/01/31 00:54:09 ut76z/B00
>>58
それはファイルメニューの「最近使った項目」のほうですよね。
僕が言ってるのはNSOpenPanelのタイトルバー下にあるポップアップメニューのです。
で、自己レスですが、色々試してたら気付きました。この情報は全てのアプリで共通なんですね。
~/Library/Preferences/.GlobalPreferences.plist の NSNavRecentPlaces にありました。
自分で編集できないかと思ったんですが、他のアプリと共通なら
(NSUserDefaultでできるのかもしれませんが)すべきでないんでしょうね。
60:名称未設定
08/02/01 12:39:56 JVdTTK6m0
Cocoaというか、プログラミング自体初めてなんだけど難し過ぎて挫折したw
サイト参考にして簡単な計算やHelloworld、
簡単なGUI作ってボタン押したら数字がtextviewに表示されるのとかやったけど、
ファイル読み込んでそれを表示させたり、編集できるようにしたり、とかなると、
もう訳分からない単語ばかり出てきて頭が痛くなったw
とりあえず、IBでGUIだけでも完成系に近いものを組み立ててそのままにしてる。
プログラミングできる人、本当に尊敬するわ。
61:名称未設定
08/02/01 13:18:34 6z2zxgjy0
>>60
俺も全くわからなかったが、ヒレガス本読んだらかなりできるようになった。
プログラミング初めてならCからやった方がいいね。
62:名称未設定
08/02/01 13:19:28 TGU2uzhR0
まずは住所録ぐらいから始めてみては?
いきなり目指すアプリを作るのは大変ですよ。
普通(タイトルバーや左上にボタンがついた)のNSWindowを
フルスクリーンにしたり元のWindowに戻したりするには
どうすれば良いのでしょうか?
ネットで探すと別途でNSWindowをallocして初期化でボーダレスに
したりしているのが多いのですが、そうではなくて例えばプレビューで表示させている
ウインドウをそのままフルスクリーンにしたいのです。
どうかよろしくお願いします。
63:名称未設定
08/02/01 13:40:03 gj02vTeJ0
レパードなら NSView の
enterFullScreenMode:withOptions:
で出来ますが、レパード以前だと別途 alloc しか仕方がないと思います。
別途 alloc でもそんなに面倒くさくないですよ。
[newWindow setContentView:[oldWindow contentView]]
とかするとオッケーだったと思います。
64:名称未設定
08/02/01 13:41:28 JVdTTK6m0
レスサンクスです。
>>61
C言語ですか、、、。道のりはかなり長そうですね、、。
ヒレガス、、ちょっとググって見ますね。
ありがとうございます。
>>62
住所録ではないですが、
TableViewを使って、左側に名前、右側に収入を入力(記録)できるものは作ってみました。
ビデオをチュートリアルを参考にしたんですけどね、、。
作りながら各文がどういった動作をさせているのか
説明を聞きながら理解しようとして作成しましたが、やはり初めて一週間ちょっとだと
難しいですね。ややこしいというか。これがパッと分かって簡単だと感じる人ってすごいです。
ちなみに参考にした動画はこれです。
URLリンク(revver.com)
ここのNSArrayController & Cocoa Bindings Tutorialというビデオです。
ほかにもいろいろ動画がありました。
65:名称未設定
08/02/01 14:03:06 5TPP70fY0
俺も最近Cocoa始めたけど
NSなんたらController系が逆にわかりにくくて
手書きでちまちまコントローラを書いてしまう
66:名称未設定
08/02/01 14:06:51 JVdTTK6m0
手書きで書いてしまうということは、
プログラミングに関する知識はあったということなんですかね。
やっぱり最初からCocoaに飛び込むのは無謀だったか、、w
67:名称未設定
08/02/01 14:32:40 5TPP70fY0
いやー最初の絶望感は自分も味わったからわかるw
Cocoaの初心者向けサイトって見てもあんまり噛み砕いた説明してないよね。
プログラミング自体完全に初めてなんだったらいきなりGUI付きのアプリより
Terminalで動かすCUI専用のツールをCで書いてみるとかから始めてみたらどうだろう。
68:名称未設定
08/02/01 14:39:06 nIkc8tTq0
>>65
ありすぎて困る
69:名称未設定
08/02/01 15:17:37 C/yNXutt0
アップルのセミナー、全部取れた!
有給使って行ってくるよ!
70:名称未設定
08/02/01 15:36:22 pOmNc0iY0
Leopardになってから何かXcode壮絶に変化した気がする。
Tigerの時はOSをさかのぼっても10.3止まりだったのが
OSX10.1用にコンパイルできたり、カスタマイズがやりやすくなってる印象。
Interface Builderあたりも結構、仕様が変わったのねぇ
71:名称未設定
08/02/01 19:15:50 2iNcArMz0
楽しいcocoaプログラミングを読みながら基本的な用語を理解しようとしてる
んだが、俺の理解&例えが正しいかちょっとおまいら見てみてください
[メソッド(インスタンスメソッド)]を使って[インスタンス変数]を[クラス]という設計図の
中に書く(定義する)。これをインスタンス化してできるものが[インスタンス]。
↓
[英語]を使って[文章]を[原稿]の中に書く。
これをプリントアウトしてできるものが[本]
72:名称未設定
08/02/01 19:18:33 9gQ7inmn0
>>62
普通のNSWindowをフルスクリーンぽく表示するならこんな感じでたぶん出来ます
NSWindowのサブクラスで
- (void)setFullScreen:(BOOL)b
{
fullscreen = b;
if (!fullscreen) {
[self setShowsResizeIndicator:YES];
[NSMenu setMenuBarVisible:YES];
[self setFrame:NSMakeRect(0,0,500,500) display:YES];
} else {
[NSMenu setMenuBarVisible:NO];
[self setFrame:NSZeroRect display:YES];
[self setShowsResizeIndicator:NO];
}
}
-(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)aScreen
{
if (fullscreen) {
NSRect result = [[NSScreen mainScreen] frame];
if (![NSMenu menuBarVisible]) result.size.height+= 22;
return result;
} else {
return [super constrainFrameRect:frameRect toScreen:aScreen];
}
}
あとはsetHidesOnDeactivate:とかsetLevel:をお好みに応じて。
73:名称未設定
08/02/01 19:50:51 /sxPQuGn0
>>71
さっぱり分からん例えだ…オブジェクト指向言語の入門書を読んだ方が良いかも。
クラス:工場ラインと設計図
インスタンス:カスタマイズド製品
クラスメソッド:インスタンス化(製品製造)したり廃棄とか…
インスタンス変数:カスタマイズ項目
インスタンスメソッド:入出力系(カスタマイズ状態によって応答を変えることができる)
みたいな感じかな?補完修正よろ
74:名称未設定
08/02/01 20:05:15 xnZLBzPn0
>>73
私の理解はこうです。
クラス:たいやきの型
インスタンス:たいやき
クラスメソッド:たいやきの型の火加減調整
インスタンス変数:たいやきのあんこの量
インスタンスメソッド:たいやきのあんこの量調整
75:名称未設定
08/02/01 20:24:54 5TPP70fY0
>>74
たいやきをたこ焼きに変えただけで俺のイメージと全く同じで笑った
76:名称未設定
08/02/01 20:32:49 TraSyxiD0
クラス:ロボットの設計図
インスタンス:完成したロボット
クラスメソッド:ロボットの生産命令
インスタンス変数:ロボット各部の部品
インスタンスメソッド:ロボットの動作の定義(前ボタンを押したら前進、下ボタンでしゃがむ、とか)
77:名称未設定
08/02/01 20:34:30 B7VDsqsz0
OOのたとえ話なんて何のたしにもならん。
言葉遊びしてる暇があったらリファレンス読みこなせ。
78:名称未設定
08/02/01 20:47:44 5TPP70fY0
言葉遊びとは違うでしょ
触り始めに知識ばっか詰め込んでも
その知識の使い方がわからないんじゃ意味がない
もちろん量を読むのは大事だけれど
79:名称未設定
08/02/01 20:51:30 l9eCdrlK0
複数のロボットが共同してひとつの仕事をこなす。
80:名称未設定
08/02/01 20:54:13 UH/1hOjR0
比喩で解った気になってるとな、後でなぁ。
81:名称未設定
08/02/01 20:56:09 UH/1hOjR0
>>78
>>73, >>76
言葉遊びしてるが。
82:名称未設定
08/02/01 21:18:09 x3DHvtPP0
メモリがリークするってのは、食いきれないたい焼きがどんどん増えていって、
地球上がたい焼きで溢れかえる、と言う認識でよろしかったでしょうか
83:名称未設定
08/02/01 21:20:23 nIkc8tTq0
だめだろ
84:名称未設定
08/02/01 21:27:30 BFHK/vDAO
初めは解った「気」になるのも大事だと思うがね
85:名称未設定
08/02/01 21:38:49 2N2icJuR0
最初は自分の納得出来る形で覚えるのがいいよ。
進んで行くうちに修正すればいい。
私の場合、ロールプレイングゲームのモンスターをイメージしてたし(笑
メンバ変数:名前や体力とかマジックポイント
IBアクション:攻撃を受けたとか
メソッド:体力を減らすとか0になったら死亡フラグが立つとか
モンスターが10匹現れたら上記のインスタンスを10個立てて
それぞれのインスタンスに攻撃すれば、それぞれで勝手に処理してくれる。
みたいな。
86:名称未設定
08/02/01 21:47:23 lRnFBVym0
>>82
バイバイン乙
そして、仕事でVBを使うことになった俺orz
87:名称未設定
08/02/01 23:06:17 BWMB+ueI0
皆さんマジレスどうもです
たぶん自分の理解は外れてないけどものすごく浅いってことだろうと
解釈しました。分かった気にはなれませんでしたが、もうちょっと読みこなして
リファレンスももっと見ていこうと思います
88:71
08/02/01 23:06:54 BWMB+ueI0
なぜかIDが変わりましたが、>>71でした
89:名称未設定
08/02/02 00:01:21 5pl+Uu5I0
プログラムは実践あるのみです
90:名称未設定
08/02/02 00:38:04 NqyLEgiZ0
>>63
>>72
できました、ありがとうございます。
Leopardは直接フルスクリーンにできるんですね。
まだ、10.4なんです。
>>72のやり方だとウィンドウのステータスバーが残るんですね。
仕方ないのでウィンドウ内のビューサイズをウィンドウに合わせて回避しました。
91:名称未設定
08/02/02 00:57:40 RXlTV5ga0
NSWindowにステータスバーなんてあったっけ?
まぁいずれにせよconstrainFrameRect:で返してるNSRectがウィンドウのrectになるってだけなので、
result.size.height+=(ステータスバーの高さ);
result.origin.y-=(ステータスバーの高さ);
とかしたらうまくいくんじゃないでしょうか
92:名称未設定
08/02/02 05:01:00 J7XNENPv0
>>80
大間違いな解釈していると後で大変だよな。
あるケースで奈落の底に・・・
93:名称未設定
08/02/02 14:45:30 Rc4l3OTe0
>>91
勘違いしてました。
ステータスバーと言うのはないですね。
単にウインドウ内部のビューが小さかっただけです。
94:名称未設定
08/02/03 08:08:17 X+xH8J460
テーブルビューで、ヘッダーのところをクリックするとデータが
並べ替えられますが、クリックしても何も起きないようにするには
どうすればいいでしょうか。
95:名称未設定
08/02/03 09:23:00 USR4Jfgk0
>>67
レスサンクスdです。ID:JVdTTK6m0 です。
CUI版ですかぁ。あまり親しみがないんですよね。
cui版mplayerを時々使ってるくらいかな。
最初からGUI物に飛び込むのは無謀なんですかね。
今はC言語のサイトを見つけて読んでるところです。
>>74
わかりやすいですね。
ほかの方が「わかった気になってるだけ」とおっしゃっていましたが、
個人的に、最初にそこでたくさん出てくる横文字でつまずき、挫折するよりかは、
少しでもわかりやすい例えで理解して前に進んだ方がいいと思っています。
"なんとなく"でも把握していれば、やっていくうちに、もっとはっきりと
どういったものなのか分かってくるかなと。初心者の自分がいうのもなんですがw
プログラミングではなく、自分が習ってきたほかの物のことを考えるとそうなんで。
>>94
自分は、始めて1週間ちょっとくらいしか経っていないので
確かではないのですが、
TableViewを選択した状態で、インスペクターのAttributesを表示し、
「Allow: 」って所の「Column Ordering」っていうのからチェックを外したらどうなるでしょうか?
実際に使ったことがないのですが、名前からして、チェックがついてると「並び替えを許可」っぽい感じなんですが。
96:名称未設定
08/02/03 09:28:10 USR4Jfgk0
>>94
>>95に書いたのは、
Interface Builderでの操作です。
97:94
08/02/03 09:40:07 X+xH8J460
>>95, 96
私は IB3 を使ってるんですが、NSTableView の Attributes -
Columns の "Reordering" のことでしょうか。
これは column の位置を変えられるようにするかどうか
(1列目と2列目を入れ替える、など)のようです。
98:名称未設定
08/02/03 10:18:00 USR4Jfgk0
>>97
名前は違いますが、Column Oderingと同じ機能っぽいですね。
確かにそうかもしれませんね、、すみませんm(_)m
あとは、TableViewを一つのコラムを選択した状態で
Attributesを選択。その時に表示される、Sort Key、Sort Selector、Sort Order
っていうのは何か関係あるんですかね。
Sortというのは整頓という意味ですし、もしかしたら、、
と思ったので一応書いておきます。
99:名称未設定
08/02/03 10:57:49 3kiF/6/w0
自動でソートが効くってことはアレイコントローラを使っているんだと思うけど、
[arrayController setSortDescriptor:nil];
とかしてみればいいんじゃなかろうか
100:94
08/02/03 12:03:55 X+xH8J460
>>99
おっしゃる通り、NSArrayController(と Core Data + Cocoa Bindings)
を使っています。
で、sortDescriptor を NSArrayController に設定して使っているのですが、
テーブルのヘッダをクリックすると勝手に並べ替えられてしまって、
設定した sortDescriptorとは違う順序になってしまい困っています。
101:名称未設定
08/02/03 12:16:24 87lsToCL0
クリックしたときに何も起きないようにしたいんじゃなくて、
自分で設定したsort descriptor を動作させたい、てこと?
102:94
08/02/03 12:26:16 X+xH8J460
>>101
sortDescriptor は立ち上げ時に一度設定するだけなのですが、
それを変更できないようにしたい、ということです。
103:101
08/02/03 12:38:05 oWNxC6th0
それだったら アレイコントローラにsort descriptor は設定しておかないで、立ち上げ時に
手動でアレイコントローラのコンテントをsortUsingDescriptorsをつかってソートすれば
いいかな
あるいは、NSTableHeaderView のmouseDown: を横取りしてマウスクリックを受け付けなくするとか
もっとスマートな方法があるかもしれないけど
104:名称未設定
08/02/03 12:39:48 UJklTjPo0
>>102
[tableView unbind@"sortDescriptors"]
105:101
08/02/03 12:44:59 oWNxC6th0
昇順←→降順の切替をユーザにさせたくなくて、常に昇順に保持しておきたい場合、降順ソートできないように
書き換えた sort descriptor サブクラス…
- (id)reversedSortDescriptor
が単に自分のコピーを返す…
を作って置き換えるとか??
106:名称未設定
08/02/03 12:50:54 9QAhjThz0
カラムのソートデスクリプタはIBで設定せず、
コードでプログラム起動時に一回だけ動くように記述する。
あと、ヘッダーカラムをクリックした時の記述があったはず。
107:94
08/02/03 14:08:07 X+xH8J460
たくさんレスいただきありがとうございます。
>>102, 106
sortDescriptor そのものはバインディングはせず、コード内で立ち上げ時に
一度 arrayController にセットしています。
テーブルに表示される Core Data のデータの方だけ、バインディングしています。
>>103, 105
データそのものは追加されていくものなので、できれば sortDescriptor だけで
済ませたいのですが‥
arrayController の content を手動でセットする場合、立ち上げ時はいつ
Core Data のデータのフェッチが終了するのかがよくわかりません。
データの順番は、表示されているデータそのものの昇順、降順ではなく、
表示には使っていない attribute をキーにしているのですが、ヘッダーセルを
クリックすると、表示されているデータを昇順、降順に並べ替えてしまう
ようです。
やはり mouseDown の上書きしかないでしょうか‥
108:名称未設定
08/02/03 14:46:43 UJklTjPo0
>>107
104です。
tableColumnのvalueにbindすると自動的にtableViewのcontent,selectionIndexes,
sortDescriptorsにarrayControllerのarrangedObjects, selecionIndexes,
sortDescriptorsとbindされます。
だからcolumn headerをクリックしてソートするのを禁止するにはsortDescriptors
のbindをストップすればよいのです。
Cocoa Bindings Examples and Hints のCocoa Bindings Examples and Hints
のようにIBで設定しても良いです。
core dataの順序を記録する用途で当方でも使っていますので、同じ状況だと思いますが?
109:94=107
08/02/03 14:56:26 X+xH8J460
>>104
ありがとうございます、できました!
>>104 の unbnd を arrayController unbind: と勘違いし、
うまくいかないと思ってしまいました。すみません。
さらに欲を言うと、ヘッダをクリックしたときヘッダの色が
青になりますが、この色も変化させないようにすることは
できるでしょうか?
110:名称未設定
08/02/03 15:23:42 UJklTjPo0
>>109
104です
出先のWindows機からのアクセスなので、確認できませんが、
headerをクリックしても何もおこらないと思います。
念のため、IBで設定しても同じか実験してみてください。
Cocoa Bindings Examples and Hints
URLリンク(homepage.mac.com)
Disabling sorting in a tableview
なれないWindows機からなのでtypoが多くてすいません
111:名称未設定
08/02/03 16:09:54 u/Oq4gE50
QuickTimeムービーのプロパティでサウンドトラックの低音/高音の音量を個別に設定できますが
あれをQTMovieに対して設定する事は可能なんでしょうか?
112:名称未設定
08/02/03 16:49:05 bYJaQCBN0
アトリビュートなんたらを洗えばあるんでないかい?
ADCのクラスリファレンスに一覧があるよ。
113:名称未設定
08/02/03 23:50:01 xhvNdcsT0
あるビューにサブクラスを2つ以上実装したい場合はどうすればよろしいのでしょうか?
例えば、NSImageViewのパーツを置いてカスタムクラスにMyImageViewを設定するのですが、
もう一つMyImageView2もカスタムクラスにしたいのです。
よろしくおねがいします。
114:名称未設定
08/02/03 23:58:11 DfOP/trw0
ええっと、オブジェクトというのは一つのクラスにしかなりえないから、
ひとつの ImageView をふたつのクラスにするのは無理だよ
単に
@class MyImageView : NSImageView
としてから、
@class MyImageView2 : MyImageView
として、カスタムクラスを MyImageView2 にすれば?
そうすると MyImageView2 からは MyImageView のメソッドも
NSImageView のメソッドも使えるよ。
115:名称未設定
08/02/04 00:11:19 LLRzPB740
委譲させたら?
116:名称未設定
08/02/04 03:37:51 Sa7MZiJY0
質問なんですが、ボタンを押した時に特定のコントロールにキーのフォーカスを移動させたいんですが、どうやればいいんですか?
NSWindowにselectKeyViewFollowingViewみたいなのはあるんですが、渡すView自体を選択してくれるメソッドが見つかりません。
117:名称未設定
08/02/04 03:47:53 JOVg4Jvf0
NSWindow の makeFirstResponder:
118:名称未設定
08/02/04 14:58:53 Sa7MZiJY0
>>117
ありがとうございます。できました!
119:名称未設定
08/02/05 09:13:12 b+MI5Uyi0
数年ぶりにCocoaの世界に帰ってきた者です。当方の環境は
Mac OS X Tiger v10.4.11
Xcode 2.3
確かJaguarの時代だったと思いますが、私は次のコードを書きました。
ボタンを押すと、ユーザーディレクトリの中にあるTest.jpgのシンボリックリンクをTestAliasという名前で作るプログラムです。
確かこのときは、オリジナルのTest.jpgを移動したり、名前を変えたりすると、リンクが切れて、もやはTestAliasをダブルクリックしても、オリジナルが見つからず、開かれることはなくなったと記憶しています。
ところが、今日、久しぶりにこのプログラムを実行してみましたが、オリジナルを移動させても、名前を変えても、リンクが切れず、TestAliasをダブルクリックすることで、オリジナルを開くことができます。
また、Test.jpgをゴミ箱に入れて、TestAliasをダブルクリックした場合は、オリジナルがゴミ箱の中にあるので、開けないというメッセージが表示されるようになっていました。
これはシンボリックリンクがエイリアスと全く同じ仕様になったと理解していいのでしょうか。
それとも、シンボリックリンクの仕様は変わっていないけど、createSymbolicLinkAtPath: pathContent: メソッドが、シンボリックリンクではなく、エイリアスを生成するようになったのでしょうか。
また、このような変化があったのはMac OS Xのどのバージョンからなのでしょうか。
#import "MyObject.h"
@implementation MyObject
- (IBAction)myAction:(id)sender
{
NSString *str = @"~/";
NSFileManager *myFile = [ NSFileManager defaultManager];
[myFile changeCurrentDirectoryPath:[str stringByExpandingTildeInPath]];
if ([myFile createSymbolicLinkAtPath:@"TestAlias" pathContent:@"Test.jpg"]){
NSLog(@"YES");
}else{
NSLog(@"NO");
}
}
@end
120:119
08/02/05 09:57:32 b+MI5Uyi0
試しにターミナルで次のコマンドを実行しました。
ln -s Test.jpg TestAlias
これはシンボリックリンクを作るはずですが、やはり、出来上がったTestAliasはエイリアスのように振る舞います。
Test.jpgを移動しても、名前を変えても追跡してくれるみたいです。
ということは、私の環境ではもはやシンボリックリンクという概念は存在せず、エイリアスだけに
なってしまったのでしょうか。
121:45
08/02/05 10:33:27 JH9guR+l0
なぜマニュアルを読まないのかさっぱり分からないが
HFS+ だと Alias も Symlink もサポートされる.
UFS だと Symlink のみ.
122:名称未設定
08/02/05 11:39:40 JsyJRBki0
cocoaアプリ側からそのシステムがcore image使用可能かどうかって、
どうやって知るのかな・・・。
123:名称未設定
08/02/05 12:32:13 9FDDjTmb0
>>120
てもとで ln -s やってみたけど、
うちの 10.4.11, 10.5.1 ではそんなことにならないよ。
alias と symlink にはまだ区別があるみたいだけど。
124:名称未設定
08/02/05 12:33:38 cij0dARY0
/tmp ディレクトリは起動時に空にされますが、ホームフォルダ以下で
ログイン時(または起動時)に自動的に空にされるディレクトリってないんでしょうか?
125:名称未設定
08/02/05 13:17:40 HDjiUsh/0
>>124
CarbonのFindFolder()とか、CocoaのNSTemporaryDirectoryとかで
userドメインのTemporaryフォルダは取得できる。
これで取ったフォルダの中身は再起動時に空になるけど、
ゴミ箱の中のRecoverd Filesに化けるな。
126:119
08/02/05 15:03:13 b+MI5Uyi0
>>121
マニュアルってなんですか。
Xcodeヘルプから見れるReference Libraryのこと?
127:名称未設定
08/02/05 15:38:53 Cj6Km0Em0
>>126
Finderが勝手にシンボリックにエイリアス情報を
追加書きしているように見えるけど。
ターミナルからopen TestAliasとやれば追跡できないし。
128:名称未設定
08/02/05 21:47:04 xbftVDuZ0
書類をアプリにドラッグして開けるようにするには
ターゲット>プロパティ>書類のタイプ
で指定するわけですが、
フォルダだけを開きたい場合はどうすれば良いんでしょうか?
拡張子に*を指定するとフォルダも含め何でも開けてしまうんですが、
フォルダ「だけ」、の場合は何を指定するんでしょう?
129:名称未設定
08/02/05 21:59:10 rdVERx6H0
質問です。
カーソルのイメージをQuickDrawの関数を使って取得してるんですが、
虹色カーソル(spinning wait cursor)が表示されているのに標準の矢印カーソルのイメージを
取得してしまいます。
虹色カーソルが表示中って分かるイベントフラグみたいのってあるのでしょうか。
欲を言えば、虹色カーソルが取得出来ればベストなんですけど(この場合はアニメーションなくて1フレーム目の画像のみでも・・)
130:名称未設定
08/02/05 22:03:41 BmVs9NNX0
>>128
OSTypeを'fold'にする。拡張子とかは空欄でいいんじゃないか。
UTIも空で動くけど、"public.folder"を指定するのが正しいと思う。
131:名称未設定
08/02/05 22:12:52 g5I0ovRl0
Core DataはIBを使わないで使うと、結構良いフレームワークだという事に気づいた
その後IBを使ったCore Dataは快適になった
つうことでみなさん、コードでゴリゴリ書いた方が理解が早いかも
132:名称未設定
08/02/05 22:14:17 BmVs9NNX0
ついでに>>129
CGSGetGlobalCursorData()なら取れるかもしれないけど、
プライベートフレームワークだから無保証。
関数名でぐぐるとちょっと情報みつかるよ。
133:124
08/02/05 22:32:09 iWlRhzBT0
>>125
ありがとうございました。
試した結果を書くと、私の環境(PPC 10.4.11)では以下でした。
・NSTemporaryDirectory →
/private/var/tmp/folders.501/TemporaryItems
・FSFindFolder の kUserDomain
kTemporaryFolderType → ~/Library/Caches/TemporaryItems
kUserSpecificTmpFolderType → ~/Library/Caches
kTemporaryItemsInCacheDataFolderType → ~/Library/Caches/TemporaryItems
kMagicTemporaryItemsFolderType → fnfErr
kTemporaryItemsInUserDomainFolderType → fnfErr
kCachedDataFolderType → ~/Library/Caches
134:名称未設定
08/02/05 22:41:17 rdVERx6H0
>>132
情報ありがとうございます。
CGSGetGlobalCursorDataの方が一度にたくさん情報取れるのでいいですね。
でも、虹色カーソルのとき標準矢印カーソルとなってしまいます・・・。
やっぱり何かイベントが発生していると思うんだけどなぁ。
CarbonEventのコントロール系はイベント返ってこないし、打つ手なしかな??
135:名称未設定
08/02/05 22:56:06 xbftVDuZ0
>>130
ありがとうございます
あとで試してみます
136:名称未設定
08/02/07 18:51:37 i1sXHLe20
NSSlider *slideVolumeと定義して
float volume = [slideVolume floatValue];
NSLog(@"volume=%f", slideVolume);
とやったらvolumeの値がめちゃくちゃだった。
30分ハマって、slideVolume->slideVolに変更したら直った。
こんなのあり??
10.4.11 Xcode2.5
137:名称未設定
08/02/07 19:01:56 P0z8W2nh0
>>136
何処から突っ込めばいいの?
138:名称未設定
08/02/07 19:08:50 //LqtxVA0
>>136
NSLog(@"volume=%f", slideVolume);
にしてたらlogに吐かれるのはvolumeの値なんかじゃないから
こんなのあり?っていうかそうにしかならない
139:名称未設定
08/02/07 19:27:02 Dc7nZeu50
>>136
slideVolでなぜ直るのかかなり疑問
140:名称未設定
08/02/07 21:18:51 ipiWvlAk0
>>137
すんません。
NSLogの引数はslideVolumeじゃなくてvolumeでした。
しかし本当に不思議なんですよ。
クリーンとかかけたり再起動したりしてもおかしいまま。
141:名称未設定
08/02/07 23:27:30 H1Xb5CsL0
>>140
NSSliderオブジェクトを生成もしくは取得してない、なんてオチではないだろうな?
142:45
08/02/07 23:50:02 vbFRyn0Y0
>>141
あーありそう.ありそう.
ポインタ宣言したら実体まで確保されてるとか思うんだよね.
初心者って
143:名称未設定
08/02/08 00:11:35 Bz1m/8mJ0
float volume = [slideVolume floatValue];
の返り値は正しかったのか?
>>141
slideVolumeがnilだったらvolumeは常に0になると思うけど
144:名称未設定
08/02/08 01:16:59 iietHHAy0
>>143
>slideVolumeがnilだったらvolumeは常に0になると思うけど
Mac OS X 10.5 以降限定だよ。
URLリンク(developer.apple.com)
それ以前のは
PPCなら返値の型がfloat, double, struct, long long, long double なら不定。
intelも同様だったきがするが良く覚えてない。
なんかドキュメントが原文と日本語版でグチャグチャだったのを覚えてる。
# 以前のドキュメント参照って書いておきながら以前のドキュメントが見つからないのは気のせい。
145:名称未設定
08/02/08 01:19:12 XxzPVdKP0
Intel Mac では、message to nil で float その他が返ると 0 だけど、
ppc Mac では未定義。
URLリンク(developer.apple.com)
参照。
それは別として、 slideVol というメンバがあるのが理解できない
146:名称未設定
08/02/08 01:30:40 iietHHAy0
おお、これだ、これ。
IntelだとOKでPPCだとNGだったか。
まあ、俺は怖くて使わ(え)ないけど。
147:名称未設定
08/02/08 04:22:13 tCo++TR90
>>143
NSSlider *slideVolume = nil;
としたとは書いてないから、ポインタ値がめちゃくちゃな値になってる可能性もあるんじゃない?
でも、それならメッセージ送ったときに落ちるか。該当部分のコード全部晒してくれないとわからんな。
148:名称未設定
08/02/08 07:42:39 Ra3ZPNDQ0
親クラスで volume インスタンス変数が定義されているとか。
149:名称未設定
08/02/08 08:00:34 dfpba1su0
ローカル変数のスコープが優先されるだろ。
150:名称未設定
08/02/08 14:18:53 mOfTgsF60
オカルト方面の議論に似ておる
151:名称未設定
08/02/09 16:16:50 m0UtGMte0
すみません、教えて下さい。
QTMovieView内のQTMovieをフリップ、回転させたいのですが
どうすればいいのかわかりません。
サブクラスのdrawRectでNSAffineTransformを使うような気がするのですが、
具体的にどう書けばいいのかさっぱりです。
よろしくおねがいします。
152:名称未設定
08/02/09 16:44:37 XwOffBYp0
View自体を回せばいいんじゃないの?
153:名称未設定
08/02/09 16:46:43 S/WQlHWE0
QuickTimeにNSAffineTransformってきくのかな?
ここは、CoreAnimationのQTMovieLayerを使うのが楽だと思います。
154:名称未設定
08/02/09 16:52:15 SPsXuN9d0
QTMovie自体のMatrixを書き換えるってのはなしか。
155:名称未設定
08/02/09 17:20:57 5COFL2820
View 自体をaffin transform で回すことについて…不確かな記憶だけど、Tiger では拡大縮小は効くが、回転はできない
Leopard では回転も拡大縮小も効かない
と思った。
156:名称未設定
08/02/09 18:14:54 XwOffBYp0
ボタンとか回転できた記憶があるけど。
157:名称未設定
08/02/09 22:58:18 m0UtGMte0
みなさん、ご意見ありがとうございます。
いろいろ漁ってみたのですが、QTMovieView(NSView)自体の回転は敷居が高そうですね。
拡大、縮小はsizeの変更でうまくいったのですが。
>>152
View自体を回す方法もいろいろ試しているのですが、枠が回転したりなかなかうまくいきません。
>>153
まだ10.4なんです。CoreAnimationならここら辺が簡単なんですよねえ。
>>154
QTMovieのMatrixを書き換えるという方法があるのでしょうか?
158:名称未設定
08/02/09 22:59:33 JLKpZqHO0
>>157
QuartzComposerを使うのはダメ?
159:名称未設定
08/02/09 23:12:54 XwOffBYp0
NSBoxに入れてQTMovieViewを回転させたらいいんじゃないかな。
160:名称未設定
08/02/09 23:43:51 J/8Qd+ts0
OpenGL textureにして回すとか
URLリンク(developer.apple.com)
ぐりぐり回るよ;-)
161:名称未設定
08/02/10 18:07:31 uw0MifcW0
Objective-C 2.0 の property って、コードの量が減る以外に
何かメリットありますか?(例えばパフォーマンスとか)
既存のコードを property で書き換えるか悩み中‥
162:名称未設定
08/02/10 20:09:37 MQiiMPM60
たしかパフォーマンスは落ちるかと
163:名称未設定
08/02/10 22:44:37 Fr8iJ/eI0
コンパイラでインライン化とかしてくれないの?
164:名称未設定
08/02/10 23:28:22 mNbPLIG00
>>162
そうなの?アクセサメソッドのコードを生成してくれるんじゃ
ないの。速度は変わらないと思ってたけど。
165:名称未設定
08/02/11 00:04:13 rw6fzeGL0
いずれにせよ、既存のアクセッサをわざわざ書き換える必要は無いという事でFA?
166:名称未設定
08/02/11 00:14:36 Mw0lyuru0
@property id value;
とか書かなくても、obj.valueなどのようなプロパティー構文は使えるよ。
ただ、Xcodeが入力を補完してくれないだけで。
167:名称未設定
08/02/11 00:32:16 WABBHTZZ0
でも、Obj-C 1.xのころは、アクセッサはスレッドセーフでも同値
チェックありでもなかったじゃない?
Obj-C 2.0はGC導入に伴い、いろいろ余計なことするようになった
分遅くなったと思うんだけど。
Obj-C 2で速度出すなら、アクセッサはきちんと書くか、少なくとも
属性書き足さないといけないのでは?
168:名称未設定
08/02/11 02:32:07 DHyabWpb0
誰かきちんと書いて速度比較してないのかな。
169:名称未設定
08/02/11 09:51:52 qHxPQa8p0
実際のところアプリの内容によって違う
俺のメインのプロジェクトのは書き換えたら遅くなったから使うのやめたよ
170:名称未設定
08/02/11 09:52:35 qHxPQa8p0
でも特殊なことしてない限り大丈夫だと思います
171:名称未設定
08/02/11 13:01:17 bv2jVL8f0
UI の NSTextField に NSNumberFormatter を設定して、
AppController 内の NSNumber のメンバにバインディングさせているのですが、
その NSTextField に一旦数字を入力し、その後それを削除してリターンを押すと、
どこからともなく「フォーマットエラー(変更内容を破棄)(OK)」というパネルが
現れ、NSTextField をブランクのままにすることが拒絶されます。
このとき、このパネルを表示させずに、NSTextField はブランクのまま、単純に
NSNumber に nil を設定するには、どうすれば良いでしょうか。
172:名称未設定
08/02/11 15:34:22 nf9aGNMi0
ヌル時の動作がバインディングのインスペクターで設定出来たような。
か、やはり空白時はヌルで更新するコードをかますか。
173:名称未設定
08/02/12 04:19:53 IXJXTrlG0
TigerでSafariStandの「メタルを除去」みたいなアピアランスって
どうすればできるんでしょうか
174:名称未設定
08/02/12 04:29:29 NDM2BdXw0
>>173
setBackgroundColor:
175:名称未設定
08/02/12 16:17:32 YacaCMuF0
UIKitにNSBrowserみたいな階層表示できるviewはつきますかね?
176:名称未設定
08/02/12 16:30:21 YacaCMuF0
誤爆スマソ
177:名称未設定
08/02/12 18:52:09 41YUEpKu0
秒をhh:mm:ssに変換するのって自力で書くしかないですかね。
178:名称未設定
08/02/12 22:04:34 n90Q8BNy0
[NSString stringWithFormat:@"%02d:%02d:%02d",(s / 3600),((s / 60) % 60),(s % 60)];
s は int として、こんな感じか?
179:名称未設定
08/02/12 22:20:36 OwQ15KHvO
それを自力で書くと言うんでは。
Formatterとか使いたいんじゃないの、何となくだけど。
180:名称未設定
08/02/12 23:25:27 nMEwufKb0
>>161
Objective-C2.0のプロパティーのパフォーマンスについて調べてみました。
まず、
obj,value = @"hello";
a = obj.value;
は、単純に
[obj setValue:@"hello"];
a = [obj value];
に変換されるだけで、パフォーマンス的な問題は発生しません。
次に、@synthesizeが生成するアクセッサのコードは、@propertyの属性が、
assignのものはパフォーマンス的に全く影響のないコードが生成されます。ただし、GC前提ということになりますが。
copyとretainは、基本的にスレッドセーフなコードが生成されます。つまり、内部でspin_lockの処理が行われます。それ以外は、特にパフォーマンスに影響する部分はなさそうです。
181:名称未設定
08/02/12 23:34:01 SpY+Nhzt0
>>177
[NSDate descriptionWithCalendarFormat〜] なんかそうじゃないかな
ちらっとリファレンス探ってみただけで試したりしてないけど
dateコマンドと同じ様なのがBSDレベルでもありそうな気がするけど
182:名称未設定
08/02/13 00:36:31 hLcBAx030
>>177
俺以前NSCalendarDateでやったけど、NSDateと使いやすい方でやればいいと思う。
「Dates and Times Programming Topics for Cocoa」ってそのまんまの
ドキュメントがあるよ。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5375日前に更新/48 KB
担当:undef