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

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

前スレ
Cocoaはさっぱり!!! version.8
http://pc11.2ch.net/test/read.cgi/mac/1179498292/
2名称未設定:2008/01/24(木) 02:06:19 ID:zBsL8SS+0
2?
3名称未設定:2008/01/24(木) 09:31:19 ID:s+4xNGMC0
今日は寒いから、ラム入りココア!
4名称未設定:2008/01/24(木) 09:38:09 ID:yVuwS2iA0
なぜMacプログラミングはこんなに寂れてしまっているのか
http://www.vector.co.jp/vpack/whats/
5名称未設定:2008/01/24(木) 09:41:49 ID:T1Kwwqvq0
Macに限らずWindowsでもだが、Vectorはもう見限られてる。
6名称未設定:2008/01/24(木) 10:00:53 ID:uLUkYs720
ダウンロードにたどり着くまでにエロゲの広告が一杯出るからなあ
7名称未設定:2008/01/24(木) 10:41:24 ID:vV8dED/00
vectorの存在忘れてた
昔は便利だったのだろうが、昨今ではどうだろうね
8名称未設定:2008/01/24(木) 11:47:27 ID:/Xbx9Tjk0
Vector は掲載を申し込んでから実際に掲載されるまでに1ヶ月かかるんだよ。
アップデート時も同様。
MacUpdate とか Version Tracker は数時間なのに。
9名称未設定:2008/01/24(木) 19:42:14 ID:4xv9sIsr0
どこから登録したらいいか、すぐ分からなかったのでやめた。
登録させたくないとしか。
10名称未設定:2008/01/24(木) 20:12:29 ID:nQjPjB6N0
M女史ですら登録できてるのに
11名称未設定:2008/01/24(木) 20:51:54 ID:e2gLsBWo0
NSOutlineViewで階層表示、ドラッグ&ドロップで並び替えの
良いサンプルはないでしょうか?

機能を実現するための考え方というか仕組みが分からず
苦労しています。

NSTableViewでのドラッグ&ドロップで並び替えはわかったのですが。
12名称未設定:2008/01/24(木) 22:52:54 ID:Cl70dvtl0
>>11
LeopardならAppleのsample codeのAbstractTree、SourceView

Leopardより前なら古いけれどDragNDropOutlineViewが
Developer/Examples/AppKit/DragNDropOutlineView
にあります

13名称未設定:2008/01/25(金) 19:40:32 ID:S+ZRut250
なんか日本でcocoaのプログラマーって10人いないような気がする。
14名称未設定:2008/01/25(金) 19:55:32 ID:FluJhFso0
すげーな
お前も俺もレアモノだぜ
15名称未設定:2008/01/25(金) 20:17:12 ID:rI2glRe80
いくらなんでも希少種と呼ばれる麻薬取締官より少ないってことはあるまい。
16名称未設定:2008/01/25(金) 20:41:30 ID:D6FaF35S0
それはないw
17名称未設定:2008/01/25(金) 20:46:08 ID:efY+uiCx0
Javaだったら、Socketとか、SocketChannelを使うケースって、
Cocoaだと、どうするのですか。
Cを使う必要があるのでしょうか。
18名称未設定:2008/01/25(金) 22:28:04 ID:lGCqdeBy0
Cを使った方が間違いないと思うよ
むかーし、CocoaだけでXMLやSocketを実現しようとしたけど、
バグっぽくて嫌になったorz
C++のライブラリを使ったObjC++がおすすめ
19名称未設定:2008/01/25(金) 23:27:19 ID:dCMPysux0
>>13
「Cocoaで食ってるプロ」なら10人いないかも
20名称未設定:2008/01/26(土) 00:11:21 ID:42x0AZNA0
>>17
client も server もCocoa だけで済むなら、Distributed Objects つかうと
めちゃめちゃ簡単ですよ。
21名称未設定:2008/01/26(土) 00:45:22 ID:42x0AZNA0
22名称未設定:2008/01/26(土) 02:52:40 ID:zd6T2u+m0
Cocoaだけで完結するプロジェクトなんてないでしょう
23名称未設定:2008/01/26(土) 09:25:36 ID:42x0AZNA0
ええっと僕に言われてるのだとすると、
Cocoa だけ、と書いたのは、プロジェクトが全部ココアだけ、
ということではなくて、
Client も Server も Cocoa つかったソフトで良ければ、ということです。

実際に、案外のフリーウェアでサポートされてる LinkBack とか Growl とかは
Cocoa の Distributed Objects で実装されてるけど、
Carbon app とかスクリプトからも使えます
24名称未設定:2008/01/27(日) 01:57:57 ID:FVS3vl130
暇だから日本人のCocoaプログラマを知ってるだけあげてみるか。
mkinoさん、荻原さん、nakamuxuさん
まだまだいるはずだけどぱっと出てこないもんだなあ。もっとあげられる暇な人いる?
25名称未設定:2008/01/27(日) 02:08:39 ID:jtZNwbED0
Digitalians' Alchemyの人。
26名称未設定:2008/01/27(日) 02:41:19 ID:mqS2hNH70
27名称未設定:2008/01/27(日) 02:48:04 ID:Kw+jrJKi0
10人どころか5人もいねえw
28名称未設定:2008/01/27(日) 04:47:59 ID:nttUWrdb0
hetimaさん俺
29名称未設定:2008/01/27(日) 08:44:22 ID:InynCMyW0
名取り、さわっち、まさき
30名称未設定:2008/01/27(日) 08:50:27 ID:sMOKTW0+0
プログラミングする気がないなら無理に来なくていいんだよ
31名称未設定:2008/01/27(日) 10:02:11 ID:uLYFX0yW0
松本さんとか永野さんとか
32名称未設定:2008/01/27(日) 10:47:06 ID:CW8LN0Lg0
俺俺、俺だよ、俺
33名称未設定:2008/01/27(日) 13:04:54 ID:ddsvCdr30
IBでボタンにリターンキーを割り当てると、
テキストフィールド上で文字の決定でリターンキーを押した時にもボタンが反応してしまいます。
どうやって回避したらいいんでしょうか?
あと、矢印キーに至ってはボタンに割り当ててしまうと
テキストフィールドで矢印キーでの操作がまったくできなくなってしまう始末です。
34名称未設定:2008/01/27(日) 13:16:25 ID:Z+4QpQ0X0
ボタンにキーを割り当てるのは良くない気がする。
NSWindow サブクラス化とかでキーイベントひろって、ターゲットを呼び出せば?
35名称未設定:2008/01/27(日) 14:10:58 ID:NSDBpLCP0
>>33
そりゃサブクラスのファーストレスポンダあたりの設定がおかしいんじゃまいか。
変換決定のリターンキーではデフォルトボタンは反応しないよ。
36名称未設定:2008/01/27(日) 16:43:50 ID:3qPDxaPt0
NSなんたらviewのサブクラスを作って右クリックでコンテキストメニューを
表示させているのですが、10.4だと表示されて10.5だと表示されません。

なにか仕様が違うのでしょうか?
37名称未設定:2008/01/27(日) 16:47:48 ID:oxF7lnRH0
また仕様ですか君か。
違っているから、自分で調べなさい。
38名称未設定:2008/01/27(日) 18:40:43 ID:YX2EedA00
>>33は変換確定ではなくて改行の事を言っているのでは?
NSTextFieldじゃなくてNSTextViewを使えばどう?
39名称未設定:2008/01/27(日) 18:42:05 ID:Se/+uO9l0
37はMSMVP工作員
40名称未設定:2008/01/27(日) 22:46:02 ID:ddsvCdr30
>>34
key EquivだとIB上でできるので楽だと思ったのですが、あまり良くないのですね;
>>35
変換決定でなくてアクションを送るためにリターンキーで決定する時、ということでした。
>>38
NSTextViewを使ったことがなかったので、勉強してみます。

みなさんありがとうございました。
で、問題だった部分ですが、
テキストフィールドにアクションのターゲットを設定してやれば解決しました。
ターゲットがあればそちらにレスポンダチェインが走って(?)
ターゲット先でなんらかのアクションが起きてチェインが終了、他のボタンにはチェインは送られない
ということなのかなと、とりあえずは解釈しました。
41名称未設定:2008/01/27(日) 22:55:30 ID:ddsvCdr30
あ、ちなみに矢印キーをボタンにセットすると
NSTextFieldとNSTextViewどちらでも矢印キーが使えなくなってしまうみたいです。
42名称未設定:2008/01/28(月) 10:06:56 ID:/ciPWHQy0
LeopardにしたらsetControlTint:NSGraphiteControlTintが効かんようになっとるじゃないか
43名称未設定:2008/01/28(月) 22:09:02 ID:YFjOEr6f0
アレイコントローラーにデータがロードされた直後に
一回だけ処理をしたいのですがさっぱりです。
44名称未設定:2008/01/29(火) 13:33:05 ID:14AFSb+t0
Windowを最前面に固定するのってどうするの?
45名称未設定:2008/01/29(火) 14:59:24 ID:FsQS6A+l0
CALayer の contents に登録してある CGImageRef から
CIImage に変換したいんだけど,
CIImage *image = [CIImage imageWithCGImage: layer.contents]
であってますかね?

やりたいことは,CoreAnimation の2つのレイヤーから画像をとり出して,
CIFilter かまして,CoreAnimation の結果格納用レイヤーに画像をはめ込みたいのです.
46名称未設定:2008/01/29(火) 16:04:52 ID:/eQnXvPk0
やっと直った。Xcode3+IB3

Cocoaアプリケーションチュートリアル
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial
47名称未設定:2008/01/29(火) 16:10:32 ID:aFFUaCVD0
>44
// スクリンセーバーよりも前に出せ
[theWindow setLevel:9999];



48名称未設定:2008/01/29(火) 16:14:44 ID:waybUL+d0
>>46
しかし、なんだこの中華なフォントは?
49名称未設定:2008/01/29(火) 16:15:40 ID:/eQnXvPk0
国際化って奴だろ。
50名称未設定:2008/01/29(火) 19:50:55 ID:14AFSb+t0
>47
ありがとう。
最前面のちっちゃいメモがあればいいと思ってたので助かった
5145:2008/01/29(火) 22:55:26 ID:Weo8Bh4n0
自己解決しました.キャストがないだけだった orz
CIImage *image = [CIImage imageWithCGImage: (CGImageRef)layer.contents]
52名称未設定:2008/01/30(水) 00:06:41 ID:kQnUgB310
>>46
やっと直ったじゃなくて、リンク切れてたから
おとといぐらい ADC に連絡したんだけど。
24時間ぐらいで直したよ、って返事来てたよ。

というわけで皆さんも ADC にじゃんじゃん連絡しましょう。
53名称未設定:2008/01/30(水) 08:44:26 ID:8y/Wb65A0
HMDTつならがない...
54名称未設定:2008/01/30(水) 09:12:46 ID:ggAgLyT80
つながるけど?

>>52
ADCって日本語スタッフいるの?直接本家ADCに連絡すればいいんすか?
55名称未設定:2008/01/30(水) 11:23:33 ID:kQnUgB310
直接本家に言ったら直してくれたよ。
56名称未設定:2008/01/30(水) 13:57:14 ID:ggAgLyT80
サンクス、積極的に連絡してきます
たまにリンク切れとかあるんすよね
57名称未設定:2008/01/31(木) 00:39:07 ID:ut76z/B00
NSOpenpanel について質問させて下さい。

何か開くと、ポップアップメニューの「最近使った場所」に自動的に追加されますが、
この情報はどこに保存されているのでしょう?
~/Library/Preferences/(BundleIdentifier).plist には含まれていないようなのです。

OS 10.4.11 Xcode 2.5
58名称未設定:2008/01/31(木) 00:49:48 ID:5dWW8izh0
NSRecentDocumentRecords?
5957:2008/01/31(木) 00:54:09 ID:ut76z/B00
>>58
それはファイルメニューの「最近使った項目」のほうですよね。
僕が言ってるのはNSOpenPanelのタイトルバー下にあるポップアップメニューのです。


で、自己レスですが、色々試してたら気付きました。この情報は全てのアプリで共通なんですね。
~/Library/Preferences/.GlobalPreferences.plist の NSNavRecentPlaces にありました。

自分で編集できないかと思ったんですが、他のアプリと共通なら
(NSUserDefaultでできるのかもしれませんが)すべきでないんでしょうね。
60名称未設定:2008/02/01(金) 12:39:56 ID:JVdTTK6m0
Cocoaというか、プログラミング自体初めてなんだけど難し過ぎて挫折したw
サイト参考にして簡単な計算やHelloworld、
簡単なGUI作ってボタン押したら数字がtextviewに表示されるのとかやったけど、
ファイル読み込んでそれを表示させたり、編集できるようにしたり、とかなると、
もう訳分からない単語ばかり出てきて頭が痛くなったw
とりあえず、IBでGUIだけでも完成系に近いものを組み立ててそのままにしてる。

プログラミングできる人、本当に尊敬するわ。
61名称未設定:2008/02/01(金) 13:18:34 ID:6z2zxgjy0
>>60
俺も全くわからなかったが、ヒレガス本読んだらかなりできるようになった。
プログラミング初めてならCからやった方がいいね。
62名称未設定:2008/02/01(金) 13:19:28 ID:TGU2uzhR0
まずは住所録ぐらいから始めてみては?
いきなり目指すアプリを作るのは大変ですよ。

普通(タイトルバーや左上にボタンがついた)のNSWindowを
フルスクリーンにしたり元のWindowに戻したりするには
どうすれば良いのでしょうか?

ネットで探すと別途でNSWindowをallocして初期化でボーダレスに
したりしているのが多いのですが、そうではなくて例えばプレビューで表示させている
ウインドウをそのままフルスクリーンにしたいのです。

どうかよろしくお願いします。
63名称未設定:2008/02/01(金) 13:40:03 ID:gj02vTeJ0
レパードなら NSView の
enterFullScreenMode:withOptions:
で出来ますが、レパード以前だと別途 alloc しか仕方がないと思います。

別途 alloc でもそんなに面倒くさくないですよ。
[newWindow setContentView:[oldWindow contentView]]
とかするとオッケーだったと思います。
64名称未設定:2008/02/01(金) 13:41:28 ID:JVdTTK6m0
レスサンクスです。

>>61
C言語ですか、、、。道のりはかなり長そうですね、、。
ヒレガス、、ちょっとググって見ますね。
ありがとうございます。

>>62
住所録ではないですが、
TableViewを使って、左側に名前、右側に収入を入力(記録)できるものは作ってみました。
ビデオをチュートリアルを参考にしたんですけどね、、。
作りながら各文がどういった動作をさせているのか
説明を聞きながら理解しようとして作成しましたが、やはり初めて一週間ちょっとだと
難しいですね。ややこしいというか。これがパッと分かって簡単だと感じる人ってすごいです。

ちなみに参考にした動画はこれです。
ttp://revver.com/u/masna/

ここのNSArrayController & Cocoa Bindings Tutorialというビデオです。
ほかにもいろいろ動画がありました。
65名称未設定:2008/02/01(金) 14:03:06 ID:5TPP70fY0
俺も最近Cocoa始めたけど
NSなんたらController系が逆にわかりにくくて
手書きでちまちまコントローラを書いてしまう
66名称未設定:2008/02/01(金) 14:06:51 ID:JVdTTK6m0
手書きで書いてしまうということは、
プログラミングに関する知識はあったということなんですかね。
やっぱり最初からCocoaに飛び込むのは無謀だったか、、w
67名称未設定:2008/02/01(金) 14:32:40 ID:5TPP70fY0
いやー最初の絶望感は自分も味わったからわかるw
Cocoaの初心者向けサイトって見てもあんまり噛み砕いた説明してないよね。

プログラミング自体完全に初めてなんだったらいきなりGUI付きのアプリより
Terminalで動かすCUI専用のツールをCで書いてみるとかから始めてみたらどうだろう。
68名称未設定:2008/02/01(金) 14:39:06 ID:nIkc8tTq0
>>65
ありすぎて困る
69名称未設定:2008/02/01(金) 15:17:37 ID:C/yNXutt0
アップルのセミナー、全部取れた!
有給使って行ってくるよ!
70名称未設定:2008/02/01(金) 15:36:22 ID:pOmNc0iY0
Leopardになってから何かXcode壮絶に変化した気がする。
Tigerの時はOSをさかのぼっても10.3止まりだったのが
OSX10.1用にコンパイルできたり、カスタマイズがやりやすくなってる印象。

Interface Builderあたりも結構、仕様が変わったのねぇ
71名称未設定:2008/02/01(金) 19:15:50 ID:2iNcArMz0
楽しいcocoaプログラミングを読みながら基本的な用語を理解しようとしてる
んだが、俺の理解&例えが正しいかちょっとおまいら見てみてください

[メソッド(インスタンスメソッド)]を使って[インスタンス変数]を[クラス]という設計図の
中に書く(定義する)。これをインスタンス化してできるものが[インスタンス]。



[英語]を使って[文章]を[原稿]の中に書く。
これをプリントアウトしてできるものが[本]
72名称未設定:2008/02/01(金) 19:18:33 ID: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名称未設定:2008/02/01(金) 19:50:51 ID:/sxPQuGn0
>>71
さっぱり分からん例えだ…オブジェクト指向言語の入門書を読んだ方が良いかも。

クラス:工場ラインと設計図
インスタンス:カスタマイズド製品
クラスメソッド:インスタンス化(製品製造)したり廃棄とか…
インスタンス変数:カスタマイズ項目
インスタンスメソッド:入出力系(カスタマイズ状態によって応答を変えることができる)

みたいな感じかな?補完修正よろ
74名称未設定:2008/02/01(金) 20:05:15 ID:xnZLBzPn0
>>73

私の理解はこうです。

クラス:たいやきの型
インスタンス:たいやき
クラスメソッド:たいやきの型の火加減調整
インスタンス変数:たいやきのあんこの量
インスタンスメソッド:たいやきのあんこの量調整
75名称未設定:2008/02/01(金) 20:24:54 ID:5TPP70fY0
>>74
たいやきをたこ焼きに変えただけで俺のイメージと全く同じで笑った
76名称未設定:2008/02/01(金) 20:32:49 ID:TraSyxiD0
クラス:ロボットの設計図
インスタンス:完成したロボット
クラスメソッド:ロボットの生産命令
インスタンス変数:ロボット各部の部品
インスタンスメソッド:ロボットの動作の定義(前ボタンを押したら前進、下ボタンでしゃがむ、とか)
77名称未設定:2008/02/01(金) 20:34:30 ID:B7VDsqsz0
OOのたとえ話なんて何のたしにもならん。
言葉遊びしてる暇があったらリファレンス読みこなせ。
78名称未設定:2008/02/01(金) 20:47:44 ID:5TPP70fY0
言葉遊びとは違うでしょ
触り始めに知識ばっか詰め込んでも
その知識の使い方がわからないんじゃ意味がない
もちろん量を読むのは大事だけれど
79名称未設定:2008/02/01(金) 20:51:30 ID:l9eCdrlK0
複数のロボットが共同してひとつの仕事をこなす。
80名称未設定:2008/02/01(金) 20:54:13 ID:UH/1hOjR0
比喩で解った気になってるとな、後でなぁ。
81名称未設定:2008/02/01(金) 20:56:09 ID:UH/1hOjR0
>>78
>>73, >>76
言葉遊びしてるが。
82名称未設定:2008/02/01(金) 21:18:09 ID:x3DHvtPP0
メモリがリークするってのは、食いきれないたい焼きがどんどん増えていって、
地球上がたい焼きで溢れかえる、と言う認識でよろしかったでしょうか
83名称未設定:2008/02/01(金) 21:20:23 ID:nIkc8tTq0
だめだろ
84名称未設定:2008/02/01(金) 21:27:30 ID:BFHK/vDAO
初めは解った「気」になるのも大事だと思うがね
85名称未設定:2008/02/01(金) 21:38:49 ID:2N2icJuR0
最初は自分の納得出来る形で覚えるのがいいよ。
進んで行くうちに修正すればいい。

私の場合、ロールプレイングゲームのモンスターをイメージしてたし(笑

メンバ変数:名前や体力とかマジックポイント
IBアクション:攻撃を受けたとか
メソッド:体力を減らすとか0になったら死亡フラグが立つとか

モンスターが10匹現れたら上記のインスタンスを10個立てて
それぞれのインスタンスに攻撃すれば、それぞれで勝手に処理してくれる。

みたいな。
86名称未設定:2008/02/01(金) 21:47:23 ID:lRnFBVym0
>>82
バイバイン乙
そして、仕事でVBを使うことになった俺orz
87名称未設定:2008/02/01(金) 23:06:17 ID:BWMB+ueI0
皆さんマジレスどうもです
たぶん自分の理解は外れてないけどものすごく浅いってことだろうと
解釈しました。分かった気にはなれませんでしたが、もうちょっと読みこなして
リファレンスももっと見ていこうと思います
8871:2008/02/01(金) 23:06:54 ID:BWMB+ueI0
なぜかIDが変わりましたが、>>71でした
89名称未設定:2008/02/02(土) 00:01:21 ID:5pl+Uu5I0
プログラムは実践あるのみです
90名称未設定:2008/02/02(土) 00:38:04 ID:NqyLEgiZ0
>>63
>>72
できました、ありがとうございます。
Leopardは直接フルスクリーンにできるんですね。
まだ、10.4なんです。

>>72のやり方だとウィンドウのステータスバーが残るんですね。
仕方ないのでウィンドウ内のビューサイズをウィンドウに合わせて回避しました。
91名称未設定:2008/02/02(土) 00:57:40 ID:RXlTV5ga0
NSWindowにステータスバーなんてあったっけ?
まぁいずれにせよconstrainFrameRect:で返してるNSRectがウィンドウのrectになるってだけなので、
result.size.height+=(ステータスバーの高さ);
result.origin.y-=(ステータスバーの高さ);
とかしたらうまくいくんじゃないでしょうか
92名称未設定:2008/02/02(土) 05:01:00 ID:J7XNENPv0
>>80
大間違いな解釈していると後で大変だよな。
あるケースで奈落の底に・・・
93名称未設定:2008/02/02(土) 14:45:30 ID:Rc4l3OTe0
>>91
勘違いしてました。
ステータスバーと言うのはないですね。
単にウインドウ内部のビューが小さかっただけです。
94名称未設定:2008/02/03(日) 08:08:17 ID:X+xH8J460
テーブルビューで、ヘッダーのところをクリックするとデータが
並べ替えられますが、クリックしても何も起きないようにするには
どうすればいいでしょうか。
95名称未設定:2008/02/03(日) 09:23:00 ID:USR4Jfgk0
>>67
レスサンクスdです。ID:JVdTTK6m0 です。
CUI版ですかぁ。あまり親しみがないんですよね。
cui版mplayerを時々使ってるくらいかな。
最初からGUI物に飛び込むのは無謀なんですかね。

今はC言語のサイトを見つけて読んでるところです。

>>74
わかりやすいですね。
ほかの方が「わかった気になってるだけ」とおっしゃっていましたが、
個人的に、最初にそこでたくさん出てくる横文字でつまずき、挫折するよりかは、
少しでもわかりやすい例えで理解して前に進んだ方がいいと思っています。
"なんとなく"でも把握していれば、やっていくうちに、もっとはっきりと
どういったものなのか分かってくるかなと。初心者の自分がいうのもなんですがw
プログラミングではなく、自分が習ってきたほかの物のことを考えるとそうなんで。

>>94
自分は、始めて1週間ちょっとくらいしか経っていないので
確かではないのですが、
TableViewを選択した状態で、インスペクターのAttributesを表示し、
「Allow: 」って所の「Column Ordering」っていうのからチェックを外したらどうなるでしょうか?
実際に使ったことがないのですが、名前からして、チェックがついてると「並び替えを許可」っぽい感じなんですが。
96名称未設定:2008/02/03(日) 09:28:10 ID:USR4Jfgk0
>>94
>>95に書いたのは、
Interface Builderでの操作です。
9794:2008/02/03(日) 09:40:07 ID:X+xH8J460
>>95, 96
私は IB3 を使ってるんですが、NSTableView の Attributes -
Columns の "Reordering" のことでしょうか。

これは column の位置を変えられるようにするかどうか
(1列目と2列目を入れ替える、など)のようです。
98名称未設定:2008/02/03(日) 10:18:00 ID:USR4Jfgk0
>>97
名前は違いますが、Column Oderingと同じ機能っぽいですね。

確かにそうかもしれませんね、、すみませんm(_)m

あとは、TableViewを一つのコラムを選択した状態で
Attributesを選択。その時に表示される、Sort Key、Sort Selector、Sort Order
っていうのは何か関係あるんですかね。
Sortというのは整頓という意味ですし、もしかしたら、、
と思ったので一応書いておきます。
99名称未設定:2008/02/03(日) 10:57:49 ID:3kiF/6/w0
自動でソートが効くってことはアレイコントローラを使っているんだと思うけど、
[arrayController setSortDescriptor:nil];
とかしてみればいいんじゃなかろうか
10094:2008/02/03(日) 12:03:55 ID:X+xH8J460
>>99
おっしゃる通り、NSArrayController(と Core Data + Cocoa Bindings)
を使っています。

で、sortDescriptor を NSArrayController に設定して使っているのですが、
テーブルのヘッダをクリックすると勝手に並べ替えられてしまって、
設定した sortDescriptorとは違う順序になってしまい困っています。
101名称未設定:2008/02/03(日) 12:16:24 ID:87lsToCL0
クリックしたときに何も起きないようにしたいんじゃなくて、
自分で設定したsort descriptor を動作させたい、てこと?
10294:2008/02/03(日) 12:26:16 ID:X+xH8J460
>>101
sortDescriptor は立ち上げ時に一度設定するだけなのですが、
それを変更できないようにしたい、ということです。
103101:2008/02/03(日) 12:38:05 ID:oWNxC6th0
それだったら アレイコントローラにsort descriptor は設定しておかないで、立ち上げ時に
手動でアレイコントローラのコンテントをsortUsingDescriptorsをつかってソートすれば
いいかな

あるいは、NSTableHeaderView のmouseDown: を横取りしてマウスクリックを受け付けなくするとか

もっとスマートな方法があるかもしれないけど
104名称未設定:2008/02/03(日) 12:39:48 ID:UJklTjPo0
>>102
[tableView unbind@"sortDescriptors"]
105101:2008/02/03(日) 12:44:59 ID:oWNxC6th0
昇順←→降順の切替をユーザにさせたくなくて、常に昇順に保持しておきたい場合、降順ソートできないように
書き換えた sort descriptor サブクラス…
- (id)reversedSortDescriptor
が単に自分のコピーを返す…
を作って置き換えるとか??
106名称未設定:2008/02/03(日) 12:50:54 ID:9QAhjThz0
カラムのソートデスクリプタはIBで設定せず、
コードでプログラム起動時に一回だけ動くように記述する。

あと、ヘッダーカラムをクリックした時の記述があったはず。
10794:2008/02/03(日) 14:08:07 ID:X+xH8J460
たくさんレスいただきありがとうございます。

>>102, 106
sortDescriptor そのものはバインディングはせず、コード内で立ち上げ時に
一度 arrayController にセットしています。

テーブルに表示される Core Data のデータの方だけ、バインディングしています。

>>103, 105
データそのものは追加されていくものなので、できれば sortDescriptor だけで
済ませたいのですが‥

arrayController の content を手動でセットする場合、立ち上げ時はいつ
Core Data のデータのフェッチが終了するのかがよくわかりません。

データの順番は、表示されているデータそのものの昇順、降順ではなく、
表示には使っていない attribute をキーにしているのですが、ヘッダーセルを
クリックすると、表示されているデータを昇順、降順に並べ替えてしまう
ようです。

やはり mouseDown の上書きしかないでしょうか‥
108名称未設定:2008/02/03(日) 14:46:43 ID: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の順序を記録する用途で当方でも使っていますので、同じ状況だと思いますが?


10994=107:2008/02/03(日) 14:56:26 ID:X+xH8J460
>>104
ありがとうございます、できました!

>>104 の unbnd を arrayController unbind: と勘違いし、
うまくいかないと思ってしまいました。すみません。

さらに欲を言うと、ヘッダをクリックしたときヘッダの色が
青になりますが、この色も変化させないようにすることは
できるでしょうか?
110名称未設定:2008/02/03(日) 15:23:42 ID:UJklTjPo0
>>109
104です
出先のWindows機からのアクセスなので、確認できませんが、
headerをクリックしても何もおこらないと思います。

念のため、IBで設定しても同じか実験してみてください。
Cocoa Bindings Examples and Hints
http://homepage.mac.com/mmalc/CocoaExamples/controllers.html
Disabling sorting in a tableview

なれないWindows機からなのでtypoが多くてすいません
111名称未設定:2008/02/03(日) 16:09:54 ID:u/Oq4gE50
QuickTimeムービーのプロパティでサウンドトラックの低音/高音の音量を個別に設定できますが
あれをQTMovieに対して設定する事は可能なんでしょうか?
112名称未設定:2008/02/03(日) 16:49:05 ID:bYJaQCBN0
アトリビュートなんたらを洗えばあるんでないかい?
ADCのクラスリファレンスに一覧があるよ。
113名称未設定:2008/02/03(日) 23:50:01 ID:xhvNdcsT0
あるビューにサブクラスを2つ以上実装したい場合はどうすればよろしいのでしょうか?
例えば、NSImageViewのパーツを置いてカスタムクラスにMyImageViewを設定するのですが、
もう一つMyImageView2もカスタムクラスにしたいのです。

よろしくおねがいします。
114名称未設定:2008/02/03(日) 23:58:11 ID:DfOP/trw0
ええっと、オブジェクトというのは一つのクラスにしかなりえないから、
ひとつの ImageView をふたつのクラスにするのは無理だよ

単に
@class MyImageView : NSImageView
としてから、
@class MyImageView2 : MyImageView
として、カスタムクラスを MyImageView2 にすれば?
そうすると MyImageView2 からは MyImageView のメソッドも
NSImageView のメソッドも使えるよ。

115名称未設定:2008/02/04(月) 00:11:19 ID:LLRzPB740
委譲させたら?
116名称未設定:2008/02/04(月) 03:37:51 ID:Sa7MZiJY0
質問なんですが、ボタンを押した時に特定のコントロールにキーのフォーカスを移動させたいんですが、どうやればいいんですか?
NSWindowにselectKeyViewFollowingViewみたいなのはあるんですが、渡すView自体を選択してくれるメソッドが見つかりません。
117名称未設定:2008/02/04(月) 03:47:53 ID:JOVg4Jvf0
NSWindow の makeFirstResponder:
118名称未設定:2008/02/04(月) 14:58:53 ID:Sa7MZiJY0
>>117
ありがとうございます。できました!
119名称未設定:2008/02/05(火) 09:13:12 ID: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
120119:2008/02/05(火) 09:57:32 ID:b+MI5Uyi0
試しにターミナルで次のコマンドを実行しました。

ln -s Test.jpg TestAlias

これはシンボリックリンクを作るはずですが、やはり、出来上がったTestAliasはエイリアスのように振る舞います。
Test.jpgを移動しても、名前を変えても追跡してくれるみたいです。
ということは、私の環境ではもはやシンボリックリンクという概念は存在せず、エイリアスだけに
なってしまったのでしょうか。
12145:2008/02/05(火) 10:33:27 ID:JH9guR+l0
なぜマニュアルを読まないのかさっぱり分からないが
HFS+ だと Alias も Symlink もサポートされる.
UFS だと Symlink のみ.
122名称未設定:2008/02/05(火) 11:39:40 ID:JsyJRBki0
cocoaアプリ側からそのシステムがcore image使用可能かどうかって、
どうやって知るのかな・・・。
123名称未設定:2008/02/05(火) 12:32:13 ID:9FDDjTmb0
>>120
てもとで ln -s やってみたけど、
うちの 10.4.11, 10.5.1 ではそんなことにならないよ。
alias と symlink にはまだ区別があるみたいだけど。
124名称未設定:2008/02/05(火) 12:33:38 ID:cij0dARY0
/tmp ディレクトリは起動時に空にされますが、ホームフォルダ以下で
ログイン時(または起動時)に自動的に空にされるディレクトリってないんでしょうか?
125名称未設定:2008/02/05(火) 13:17:40 ID:HDjiUsh/0
>>124
CarbonのFindFolder()とか、CocoaのNSTemporaryDirectoryとかで
userドメインのTemporaryフォルダは取得できる。
これで取ったフォルダの中身は再起動時に空になるけど、
ゴミ箱の中のRecoverd Filesに化けるな。
126119:2008/02/05(火) 15:03:13 ID:b+MI5Uyi0
>>121

マニュアルってなんですか。
Xcodeヘルプから見れるReference Libraryのこと?
127名称未設定:2008/02/05(火) 15:38:53 ID:Cj6Km0Em0
>>126
Finderが勝手にシンボリックにエイリアス情報を
追加書きしているように見えるけど。
ターミナルからopen TestAliasとやれば追跡できないし。
128名称未設定:2008/02/05(火) 21:47:04 ID:xbftVDuZ0
書類をアプリにドラッグして開けるようにするには
ターゲット>プロパティ>書類のタイプ
で指定するわけですが、
フォルダだけを開きたい場合はどうすれば良いんでしょうか?
拡張子に*を指定するとフォルダも含め何でも開けてしまうんですが、
フォルダ「だけ」、の場合は何を指定するんでしょう?
129名称未設定:2008/02/05(火) 21:59:10 ID:rdVERx6H0
質問です。
カーソルのイメージをQuickDrawの関数を使って取得してるんですが、
虹色カーソル(spinning wait cursor)が表示されているのに標準の矢印カーソルのイメージを
取得してしまいます。
虹色カーソルが表示中って分かるイベントフラグみたいのってあるのでしょうか。

欲を言えば、虹色カーソルが取得出来ればベストなんですけど(この場合はアニメーションなくて1フレーム目の画像のみでも・・)
130名称未設定:2008/02/05(火) 22:03:41 ID:BmVs9NNX0
>>128
OSTypeを'fold'にする。拡張子とかは空欄でいいんじゃないか。
UTIも空で動くけど、"public.folder"を指定するのが正しいと思う。
131名称未設定:2008/02/05(火) 22:12:52 ID:g5I0ovRl0
Core DataはIBを使わないで使うと、結構良いフレームワークだという事に気づいた
その後IBを使ったCore Dataは快適になった

つうことでみなさん、コードでゴリゴリ書いた方が理解が早いかも
132名称未設定:2008/02/05(火) 22:14:17 ID:BmVs9NNX0
ついでに>>129
CGSGetGlobalCursorData()なら取れるかもしれないけど、
プライベートフレームワークだから無保証。
関数名でぐぐるとちょっと情報みつかるよ。
133124:2008/02/05(火) 22:32:09 ID: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名称未設定:2008/02/05(火) 22:41:17 ID:rdVERx6H0
>>132
情報ありがとうございます。
CGSGetGlobalCursorDataの方が一度にたくさん情報取れるのでいいですね。
でも、虹色カーソルのとき標準矢印カーソルとなってしまいます・・・。
やっぱり何かイベントが発生していると思うんだけどなぁ。
CarbonEventのコントロール系はイベント返ってこないし、打つ手なしかな??
135名称未設定:2008/02/05(火) 22:56:06 ID:xbftVDuZ0
>>130
ありがとうございます
あとで試してみます
136名称未設定:2008/02/07(木) 18:51:37 ID:i1sXHLe20
NSSlider *slideVolumeと定義して

float volume = [slideVolume floatValue];
NSLog(@"volume=%f", slideVolume);

とやったらvolumeの値がめちゃくちゃだった。

30分ハマって、slideVolume->slideVolに変更したら直った。
こんなのあり??

10.4.11 Xcode2.5
137名称未設定:2008/02/07(木) 19:01:56 ID:P0z8W2nh0
>>136
何処から突っ込めばいいの?
138名称未設定:2008/02/07(木) 19:08:50 ID://LqtxVA0
>>136
NSLog(@"volume=%f", slideVolume);
にしてたらlogに吐かれるのはvolumeの値なんかじゃないから
こんなのあり?っていうかそうにしかならない
139名称未設定:2008/02/07(木) 19:27:02 ID:Dc7nZeu50
>>136
slideVolでなぜ直るのかかなり疑問
140名称未設定:2008/02/07(木) 21:18:51 ID:ipiWvlAk0
>>137
すんません。
NSLogの引数はslideVolumeじゃなくてvolumeでした。

しかし本当に不思議なんですよ。
クリーンとかかけたり再起動したりしてもおかしいまま。
141名称未設定:2008/02/07(木) 23:27:30 ID:H1Xb5CsL0
>>140
NSSliderオブジェクトを生成もしくは取得してない、なんてオチではないだろうな?
14245:2008/02/07(木) 23:50:02 ID:vbFRyn0Y0
>>141
あーありそう.ありそう.
ポインタ宣言したら実体まで確保されてるとか思うんだよね.
初心者って
143名称未設定:2008/02/08(金) 00:11:35 ID:Bz1m/8mJ0
float volume = [slideVolume floatValue];
の返り値は正しかったのか?

>>141
slideVolumeがnilだったらvolumeは常に0になると思うけど
144名称未設定:2008/02/08(金) 01:16:59 ID:iietHHAy0
>>143
>slideVolumeがnilだったらvolumeは常に0になると思うけど
Mac OS X 10.5 以降限定だよ。
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_2_section_3.html

それ以前のは
PPCなら返値の型がfloat, double, struct, long long, long double なら不定。
intelも同様だったきがするが良く覚えてない。
なんかドキュメントが原文と日本語版でグチャグチャだったのを覚えてる。

# 以前のドキュメント参照って書いておきながら以前のドキュメントが見つからないのは気のせい。
145名称未設定:2008/02/08(金) 01:19:12 ID:XxzPVdKP0

Intel Mac では、message to nil で float その他が返ると 0 だけど、
ppc Mac では未定義。

http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_22.html

参照。

それは別として、 slideVol というメンバがあるのが理解できない
146名称未設定:2008/02/08(金) 01:30:40 ID:iietHHAy0
おお、これだ、これ。
IntelだとOKでPPCだとNGだったか。
まあ、俺は怖くて使わ(え)ないけど。
147名称未設定:2008/02/08(金) 04:22:13 ID:tCo++TR90
>>143
NSSlider *slideVolume = nil;
としたとは書いてないから、ポインタ値がめちゃくちゃな値になってる可能性もあるんじゃない?
でも、それならメッセージ送ったときに落ちるか。該当部分のコード全部晒してくれないとわからんな。
148名称未設定:2008/02/08(金) 07:42:39 ID:Ra3ZPNDQ0
親クラスで volume インスタンス変数が定義されているとか。
149名称未設定:2008/02/08(金) 08:00:34 ID:dfpba1su0
ローカル変数のスコープが優先されるだろ。
150名称未設定:2008/02/08(金) 14:18:53 ID:mOfTgsF60
オカルト方面の議論に似ておる
151名称未設定:2008/02/09(土) 16:16:50 ID:m0UtGMte0
すみません、教えて下さい。
QTMovieView内のQTMovieをフリップ、回転させたいのですが
どうすればいいのかわかりません。
サブクラスのdrawRectでNSAffineTransformを使うような気がするのですが、
具体的にどう書けばいいのかさっぱりです。

よろしくおねがいします。
152名称未設定:2008/02/09(土) 16:44:37 ID:XwOffBYp0
View自体を回せばいいんじゃないの?
153名称未設定:2008/02/09(土) 16:46:43 ID:S/WQlHWE0
QuickTimeにNSAffineTransformってきくのかな?
ここは、CoreAnimationのQTMovieLayerを使うのが楽だと思います。
154名称未設定:2008/02/09(土) 16:52:15 ID:SPsXuN9d0
QTMovie自体のMatrixを書き換えるってのはなしか。
155名称未設定:2008/02/09(土) 17:20:57 ID:5COFL2820
View 自体をaffin transform で回すことについて…不確かな記憶だけど、Tiger では拡大縮小は効くが、回転はできない
Leopard では回転も拡大縮小も効かない
と思った。
156名称未設定:2008/02/09(土) 18:14:54 ID:XwOffBYp0
ボタンとか回転できた記憶があるけど。
157名称未設定:2008/02/09(土) 22:58:18 ID:m0UtGMte0
みなさん、ご意見ありがとうございます。
いろいろ漁ってみたのですが、QTMovieView(NSView)自体の回転は敷居が高そうですね。
拡大、縮小はsizeの変更でうまくいったのですが。

>>152
View自体を回す方法もいろいろ試しているのですが、枠が回転したりなかなかうまくいきません。
>>153
まだ10.4なんです。CoreAnimationならここら辺が簡単なんですよねえ。
>>154
QTMovieのMatrixを書き換えるという方法があるのでしょうか?
158名称未設定:2008/02/09(土) 22:59:33 ID:JLKpZqHO0
>>157
QuartzComposerを使うのはダメ?
159名称未設定:2008/02/09(土) 23:12:54 ID:XwOffBYp0
NSBoxに入れてQTMovieViewを回転させたらいいんじゃないかな。
160名称未設定:2008/02/09(土) 23:43:51 ID:J/8Qd+ts0
OpenGL textureにして回すとか
http://developer.apple.com/samplecode/QTQuartzPlayer/index.html

ぐりぐり回るよ;-)
161名称未設定:2008/02/10(日) 18:07:31 ID:uw0MifcW0
Objective-C 2.0 の property って、コードの量が減る以外に
何かメリットありますか?(例えばパフォーマンスとか)

既存のコードを property で書き換えるか悩み中‥
162名称未設定:2008/02/10(日) 20:09:37 ID:MQiiMPM60
たしかパフォーマンスは落ちるかと
163名称未設定:2008/02/10(日) 22:44:37 ID:Fr8iJ/eI0
コンパイラでインライン化とかしてくれないの?
164名称未設定:2008/02/10(日) 23:28:22 ID:mNbPLIG00
>>162
そうなの?アクセサメソッドのコードを生成してくれるんじゃ
ないの。速度は変わらないと思ってたけど。
165名称未設定:2008/02/11(月) 00:04:13 ID:rw6fzeGL0
いずれにせよ、既存のアクセッサをわざわざ書き換える必要は無いという事でFA?
166名称未設定:2008/02/11(月) 00:14:36 ID:Mw0lyuru0
@property id value;
とか書かなくても、obj.valueなどのようなプロパティー構文は使えるよ。
ただ、Xcodeが入力を補完してくれないだけで。

167名称未設定:2008/02/11(月) 00:32:16 ID:WABBHTZZ0
でも、Obj-C 1.xのころは、アクセッサはスレッドセーフでも同値
チェックありでもなかったじゃない?
Obj-C 2.0はGC導入に伴い、いろいろ余計なことするようになった
分遅くなったと思うんだけど。
Obj-C 2で速度出すなら、アクセッサはきちんと書くか、少なくとも
属性書き足さないといけないのでは?
168名称未設定:2008/02/11(月) 02:32:07 ID:DHyabWpb0
誰かきちんと書いて速度比較してないのかな。
169名称未設定:2008/02/11(月) 09:51:52 ID:qHxPQa8p0
実際のところアプリの内容によって違う
俺のメインのプロジェクトのは書き換えたら遅くなったから使うのやめたよ
170名称未設定:2008/02/11(月) 09:52:35 ID:qHxPQa8p0
でも特殊なことしてない限り大丈夫だと思います
171名称未設定:2008/02/11(月) 13:01:17 ID:bv2jVL8f0
UI の NSTextField に NSNumberFormatter を設定して、
AppController 内の NSNumber のメンバにバインディングさせているのですが、
その NSTextField に一旦数字を入力し、その後それを削除してリターンを押すと、
どこからともなく「フォーマットエラー(変更内容を破棄)(OK)」というパネルが
現れ、NSTextField をブランクのままにすることが拒絶されます。

このとき、このパネルを表示させずに、NSTextField はブランクのまま、単純に
NSNumber に nil を設定するには、どうすれば良いでしょうか。
172名称未設定:2008/02/11(月) 15:34:22 ID:nf9aGNMi0
ヌル時の動作がバインディングのインスペクターで設定出来たような。
か、やはり空白時はヌルで更新するコードをかますか。
173名称未設定:2008/02/12(火) 04:19:53 ID:IXJXTrlG0
TigerでSafariStandの「メタルを除去」みたいなアピアランスって
どうすればできるんでしょうか
174名称未設定:2008/02/12(火) 04:29:29 ID:NDM2BdXw0
>>173
setBackgroundColor:
175名称未設定:2008/02/12(火) 16:17:32 ID:YacaCMuF0
UIKitにNSBrowserみたいな階層表示できるviewはつきますかね?
176名称未設定:2008/02/12(火) 16:30:21 ID:YacaCMuF0
誤爆スマソ
177名称未設定:2008/02/12(火) 18:52:09 ID:41YUEpKu0
秒をhh:mm:ssに変換するのって自力で書くしかないですかね。
178名称未設定:2008/02/12(火) 22:04:34 ID:n90Q8BNy0
[NSString stringWithFormat:@"%02d:%02d:%02d",(s / 3600),((s / 60) % 60),(s % 60)];
s は int として、こんな感じか?
179名称未設定:2008/02/12(火) 22:20:36 ID:OwQ15KHvO
それを自力で書くと言うんでは。
Formatterとか使いたいんじゃないの、何となくだけど。
180名称未設定:2008/02/12(火) 23:25:27 ID: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名称未設定:2008/02/12(火) 23:34:01 ID:SpY+Nhzt0
>>177
[NSDate descriptionWithCalendarFormat〜] なんかそうじゃないかな
ちらっとリファレンス探ってみただけで試したりしてないけど
dateコマンドと同じ様なのがBSDレベルでもありそうな気がするけど
182名称未設定:2008/02/13(水) 00:36:31 ID:hLcBAx030
>>177
俺以前NSCalendarDateでやったけど、NSDateと使いやすい方でやればいいと思う。
「Dates and Times Programming Topics for Cocoa」ってそのまんまの
ドキュメントがあるよ。
183名称未設定:2008/02/13(水) 12:30:50 ID:hWx8cVEU0
cocoaブラウザでマニュアルがうまく表示されない(最初のフォルダ名だけが表示される)ので
デベロッパツールを再インストールしようとしたのですが、エラーが起きてできません
そもそもデベロッパツールを以前インストールしたことはあったのか、よく思い出せませんが
Xcodeは使えています。エラー文の内容は「次のインストール手順に失敗しました。run preinstall
script for developer tools.」というものです。どう対処したら良いか分かる方教えてください
184名称未設定:2008/02/13(水) 13:11:25 ID:x4NhLgMt0
>>183
(Xcode3の前提で...)
Xcode3に付いてくるドキュメントはそれ以前のものとディレクトリ構造が違うから、
Cocoa Browserは使えないようだ(いま確認した)。

アンインストールは、OSX10.5DVDのMac OS X Install DVD/Optional Installs/Xcode Tools/About Xcode Tools.pdf を嫁。
終わりの辺りにアンインストール用のスクリプトが書いてる。

てか>>183はプログラム向いてない。
185名称未設定:2008/02/13(水) 15:00:44 ID:hWx8cVEU0
>>184
ありがとうございます。ちゃんと調べろ、って意味でしょうか
186名称未設定:2008/02/13(水) 15:55:50 ID:ElkTRkCf0
きっとプログラミング適性認定士の人なんだよ
187名称未設定:2008/02/13(水) 15:59:58 ID:zZkq+nSN0
プログラム以前のセンスがない。
なんせんすw
188名称未設定:2008/02/13(水) 22:55:05 ID:tq6qN3wO0
・ソフトウェアの名前を正確に書けない
・自分が使っているソフトウェアのバージョンを示せない
・Googleを使いこなせない
プログラム以前にこれだけの問題がある

Cocoa Browser Xcode 3.0 でググれば Cocoa Browser SN がトップヒットする
ソフト名とバージョンでググるのは、彼には難易度高いだろうが頑張れ
189名称未設定:2008/02/13(水) 23:09:49 ID:tOkhYQQF0
>>188
とどめを刺すなよ。wxのお人よりはマシなんだから、優しくしてあげなよ。
190名称未設定:2008/02/13(水) 23:57:16 ID:ZMdVQlot0
>>189
アイツは何の開発してんだろな。
周辺機器に付属するソフトらしいが...
フェリカ関連とかなら、Macユーザー皆ガッカリだな。
191名称未設定:2008/02/14(木) 00:03:45 ID:tNnS+0Fo0
>>183
"最初のフォルダ名"って、それフォルダ名じゃないですから。
フレームワーク名だよ。

最近はmkinoさんが入門書やセミナーでCocoaプログラミングの間口広げたりとか、
Objective-C 2.0でメモリ管理が楽になった関係で、初心者増えてんのかな??
ADCも翻訳ドキュメント増えてるし。
192名称未設定:2008/02/14(木) 00:25:34 ID:IHEpmM1b0
質問です。
finderのウィンドウをクリックするイベントを取得したいのですが、
どのようにすれば良いですか?
193名称未設定:2008/02/14(木) 01:14:05 ID:2vR2hRjj0
もうね・・・なんかね・・・
194名称未設定:2008/02/14(木) 01:54:17 ID:IHEpmM1b0
>>193
要するに解んないんでしょ?

なんだこれ、おもしれー
http://developer.apple.com/samplecode/UIElementInspector/index.html
195名称未設定:2008/02/14(木) 02:47:53 ID:4cuFCMDR0
こいつぁひどい
196名称未設定:2008/02/14(木) 06:40:30 ID:8cvrNmzT0
>>194 のサンプルはそのままだと日本語環境でクォートが文字化けするなあ。
このぐらいちゃんとしておいてほしいものだ > 中の人
197名称未設定:2008/02/14(木) 06:42:56 ID:6KCJ8+yd0
というかレパードなら /Developer/Applications/Utilities/Accessibility Tools/
に入っているんだが ...
198名称未設定:2008/02/14(木) 06:48:50 ID:Pdak6Ccy0
>>192
NSCoreServiceEventHandlerを探してみるといいことあるかもしれないよ
199名称未設定:2008/02/14(木) 12:03:41 ID:wuTSPo/K0
何か最近この板のプログラミング関係のスレで無礼な質問者が多いな
ほとんど一人なのか入門者が増えてるのか
200名称未設定:2008/02/14(木) 12:21:56 ID:+3rXw5770
すんません、俺です
201名称未設定:2008/02/14(木) 12:44:00 ID:lWs9KW2t0
入門者といえば俺もそうだけど、見ているだけだ。
まだ質問するようなレベルにも達していないぜ。
202名称未設定:2008/02/14(木) 14:31:21 ID:Clomt4Sp0

win系のプログラマでもここまで酷い質問をする人は多くない。
会社の中のダメなプログラマを割り当ててるんじゃない?
203名称未設定:2008/02/14(木) 15:47:35 ID:2GXMUdLz0
iPhoneのアプリってiPod touchでも使えるんだよね?
SDKの配布が開始されたら開発者増えるかな。
204名称未設定:2008/02/14(木) 19:16:05 ID:ksn/tePY0
すんません、全部俺です。
もうこれ以上皆さんに迷惑をかけたくないので
やっぱりMacでのアプリ開発は辞めます。

みなさん今まで本当にありがとうごさいました。
205名称未設定:2008/02/14(木) 19:32:32 ID:Lva4VeDJ0
みなさん有意義なスレにしましょう。
206名称未設定:2008/02/14(木) 21:22:43 ID:Y52audrL0
NSTableViewなどにドロップした時、acceptDropでYESを返す前にペーストボードから
大量の処理を行うと、しばらくカーソルのマークが+のままで気に入らないのですが、
YESを返したあとに処理を行うにはどうすれば良いでしょうか?

いったんペーストボードの情報を配列などに格納して、それから処理をすればいいと思うのですが、
acceptDropでYESが返されたかどうがの判定がわからないのです。
「配列の内容が変わったら」の通知でいけそうな気もしますがどう書けばいいのかわかりません。

よい知恵がありましたらお願いします。
207名称未設定:2008/02/14(木) 22:12:50 ID:nbubxl5h0
NSObjectのperformSelector: withObject: afterDelay:
でdelayを0にしてやれば、次のrunLoopでスケジュールされるよ
208名称未設定:2008/02/14(木) 22:22:10 ID:OnNeG9+L0
最初はみんな初心者なのにね。
macでプログラムしようなんて人はただでさえ少ないのに
なんでこう排他的なんだろう。
悲しくなるわ。
209名称未設定:2008/02/14(木) 22:39:37 ID:CZoJyT9b0
そりゃ、2ちゃんだから。
macとwindowsでプログラマの気質が違うとか論じても仕方ない。
ここはゴミ埋立処分場程度の認識だよ。S/N比低いし。
稀に良い情報も有るけど。
210名称未設定:2008/02/14(木) 22:42:21 ID:nbubxl5h0
mkinoさんのとこに以前あった掲示板とか使わせてもらって
すごく助かった覚えがあるなぁ
CocoaBindingの勉強、あそこが無かったらムリだった
いつか復活しないかな。
211名称未設定:2008/02/14(木) 22:54:55 ID:R6ifJKPT0
>>208
排他的かそうでないか以前に、礼儀というものがあるとおもう
初心者の質問にはたいてい答えがでてるんじゃない?
言葉は厳しいけど。質問が丁寧なら答えも丁寧だし、
質問がぶっきらぼうなら答えもぶっきらぼうなだけで。
212名称未設定:2008/02/14(木) 22:56:08 ID:vCknh0st0
そういやHMDTのBBSで初めてテーブルのバインディング方法を知ったな
213名称未設定:2008/02/14(木) 22:57:05 ID:D6AGxe9e0
別にぶっきらぼうに答えるのはいいと思うけど
時間があいた「悪い質問」に何人も嫌みを言うのはどうなのよとは思うね
214名称未設定:2008/02/14(木) 23:14:36 ID:sPMhCEuG0
プログラマとしての知識の多寡は問題じゃないでしょう
社会人としての常識に欠ける人が問題なだけで
答える側だって無償でやってるんだから、答えてあげても良いかな、と思わせるような質問をしないと
215名称未設定:2008/02/14(木) 23:23:30 ID:OnNeG9+L0
そうかもしれんが、掲示板の常だとは思うが(mixiのmacコミュでも)
よってたかってになると、ほかの初心者にとっても質問しづらい雰囲気になると思う。
それがマナーだと言われればそうなんだろうけど、なんかなぁ。
216名称未設定:2008/02/14(木) 23:33:41 ID:nbubxl5h0
>答える側だって無償でやってるんだから、答えてあげても良いかな、と思わせるような質問をしないと

こういうことは思ってても言わないのが大人だと思いますよ。
これでは上司が部下にいうような諭し方です。
217名称未設定:2008/02/14(木) 23:36:48 ID:2vR2hRjj0
ここでは言わないとダメだろ

つか無礼なのが問題であって初心者とか関係ないし
218名称未設定:2008/02/15(金) 00:10:46 ID:09i7oEa70
こういう話題でしかスレが伸びない現状
219名称未設定:2008/02/15(金) 01:56:30 ID:QR/oHBub0
wx の人はひどすぎだと思う。他の人は何も問題ないから、沢山質問してね !
220名称未設定:2008/02/15(金) 02:23:38 ID:TVIoFEHo0
ま、どうでもいいな
221名称未設定:2008/02/15(金) 09:50:37 ID:cdS73ETs0
Cocoaとか、プログラミング本体そのものは割と簡単。
ただ、一番最初にどこにコードを書いたらいいのかというとっかかりがちょこっと分かりにくい。
これはC言語系一般に共通する事ではあるのだが…。

実際にはClassフォルダか何かを右クリック、「追加→新規ファイル」で
適当に「Objective-Cの書類を追加」してそこに思い思いにコードを書き…

Resourceフォルダの中に入ってる***.nibフォルダでウィンドウなどのパーツを組み、
***.hの@interfaceのところに「IBOutlet」でプラグを形成し、***.nib側でそのプラグにリンクさせる。

みたいな手順を踏む。
こんな感じの開発の流れだったと思う。
222名称未設定:2008/02/15(金) 10:33:57 ID:DTymAYG50
>>207
ありがとうございます。
チャレンジしてみます。
223名称未設定:2008/02/15(金) 11:12:09 ID:cdS73ETs0
と言いつつも、自分もそんなに詳しいわけではないorz

エクセルのcolumn、rowの幅を変更する、とか選択のセルを広げるみたいなインターフェースを考えたとき、
どういう設計思想でまとめると具合がいいのか分からずにいる。

NSMatrixをベースに考えたらいいのか、NSMutableArrayをベースに考えたらいいのか
GUIと組み合わせた時に最適な設計の方向性はどのようなものが良さそうか。

設計思想の相談っぽくなるからスレ違いかな…
224名称未設定:2008/02/15(金) 20:36:24 ID:XEVibBPe0
>>178
遅くなりましたがありがとうございます。
こんな簡単に書けるんですね。
ただ、hourがない場合とminが10以下の場合は0を表示したくないので、
やっぱちまちまとif文で書く事にします^^;
225名称未設定:2008/02/15(金) 21:38:47 ID:oqE3Ixxq0
>>223
そういう特殊なViewは、NSMatrixなんかの既存のクラスをベースにするより、NSViewから直接サブクラスを作った方が楽にいくと思うよ。
Model側は、NSMutableArrayベースでよいと思います。
ただし、MVCパターンに忠実にViewを設計するなら、View内でModelデータを保持しないので、drawRect:内でModelのデータを読み出しつつViewを描画するのが、とりあえず楽かと思います。
226名称未設定:2008/02/16(土) 01:44:30 ID:4FH+FMZ+0
>>224
%02d を %d に変えると 0 が表示されなくなるよ。
ってこれは Cocoa じゃなくて単に C の話だけど。
printf のフォーマット文字列を適当に調べてね。
227名称未設定:2008/02/16(土) 01:54:34 ID:tPBsTPZz0
Xcode3でTiger以上で動作するのを目標にアプリ作ったんだが、
実際にTigerで動かしてみると落ちまくり・・
細かいところ結構違うのな・・
228名称未設定:2008/02/16(土) 10:11:49 ID:gZ6RBFi00
>>226
それだと数字が表示されなくなるだけで
結局コロン(というか区切り字)は表示されるから微妙な気がする
用途によるけど
229名称未設定:2008/02/16(土) 10:15:51 ID:Eyz/1BW40
>>227
>細かいところ結構違うのな・・

例えばどんなところ?
230名称未設定:2008/02/16(土) 11:36:23 ID:qbCe38+h0
>>227
SDKを設定していますか?
プロジェクトの情報からSDKを設定してください。

Objective-C 2.0 の機能を使っていませんか?
Leopardでしか動きません。使用を中止してください。

ガベージコレクションを有効にしていませんか?
Leopardでしか動きません(たぶん)。無効にしてください。

xib 3.0形式を使用していませんか?
Leopard以外だとなんかまずいらしいです。使用を中止してください。
231名称未設定:2008/02/16(土) 12:06:59 ID:Dd3xK0Kf0
優しいね
232名称未設定:2008/02/16(土) 16:51:22 ID:RPnk6eix0
NSTextField がいくつか貼り付けてあるウインドウがあって、
コード内から特定のフィールドを入力可能状態にしたいんですが、

[window makeFIrstResponder: textField];

とやると、textField のフォーカスリングは点灯するのですが、
一度そのフィールド内をクリックしてやらないとフィールド内に
カーソルが出ず、文字入力は受け付けてくれません。

最初から文字入力を受け付ける状態にするには、どう書けば
良いでしょうか。
233名称未設定:2008/02/16(土) 19:56:46 ID:/phORhcB0
[textField performClick:self];
とかは?
234名称未設定:2008/02/16(土) 21:28:53 ID:89DZUxew0
すいません。質問させてください。

”main”ウィンドウと”sub”ウィンドウを作りました。
”main”ウィンドウ上の”A”ボタンを押すと"sub"ウィンドウが現れるようにしました。

そこで、"sub"ウィンドウ上に作った”B”ボタンを押したときに”main”ウィンドウのコントローラのインスタンス変数にアクセスするにはどうすればいいのでしょうか?
235名称未設定:2008/02/16(土) 21:31:48 ID:QDIiUSUT0
一つのnibファイル上で、二つのウィンドウを作っているんだよね?
ならsubのコントローラからoutletをmainのコントローラに引くのはダメ?
236232:2008/02/16(土) 21:37:29 ID:RPnk6eix0
>>233
試してみましたが、だめでした。
NSTextField にバインディングを設定してるんですが、
それが悪さをしてるでしょうか‥
237名称未設定:2008/02/16(土) 21:50:03 ID:89DZUxew0
>>235
レスありがとうございます。
すいません。情報が少なすぎますよね。

http://www.macmacmac.mydns.jp/modules/tinyd0/index.php?id=14
を参考にして2つのウィンドウを扱うようにしたのでnibファイルは二つに分かれています。

上記サンプルと違うのは起動時に”main”ウィンドウは開くようにしています。

作ろうとしているのは
設定項目一覧用のウィンドウとしてNSTableViewを配した”main”ウィンドウ。
各Row設定項目を編集するための編集ウィンドウとして"sub"ウィンドウを作りました。

"sub"ウィンドウ側で編集した内容をデータソースに反映させるために
selectedRowを"sub"ウィンドウ側から取得したいという状況です。
238名称未設定:2008/02/16(土) 22:16:32 ID:y+1mOBUh0
>>237

サブウインドウを管理するのがWinController.h だよね
WinController サブクラスにインスタンス変数 NSTableView* tableView ;
を追加して、メソッド
-(void)setTableView:(NSTableView*)aTableView
{
tableView = [aTableView retain];
}
みたいにしてメインウインドウ中のテーブルを教えてあげればいい。

>>236
元々フォーカスが当っている text field が何らかの理由で first responder を resign しない、みたいな理由じゃないのかな。
239名称未設定:2008/02/16(土) 22:17:19 ID:y+1mOBUh0
>>238
>WinController サブクラス
じゃなくってWinControllerのクラスそのものだった
240名称未設定:2008/02/16(土) 22:30:14 ID:QDIiUSUT0
そのようにするなら、二つのWindowは一つのnibにおいて
ひとつのControllerで一緒に扱う方がよいのでは。

241名称未設定:2008/02/16(土) 22:30:23 ID:E6gXC2xw0
>>236
[window makeFirstResponder:textField];で十分なはずだけど、、

id fieldEditor = [window fieldEditor:YES forObject:textField];
[window makeFirstResponder:fieldEditor];
を追加してもダメですか?

242名称未設定:2008/02/16(土) 22:48:21 ID:mIBg0tCV0
>>237
それって、単純に2つのViewを1つのModelとBindすれば済む話じゃ?
243名称未設定:2008/02/16(土) 23:13:01 ID:E6gXC2xw0
>>237
Nibファイルの内と外との連絡をするのはFile’s Ownerです

参照したいオブジェクトをoutletなりインスタンス変数として
参照します

詳しくはAccessing the Contents of a Nib File
http://developer.apple.com/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/chapter_3_section_6.html#//apple_ref/doc/uid/10000051i-CH4-SW7
を見てください。

244237:2008/02/17(日) 02:34:43 ID:AR1yqRov0
たくさんのレスありがとうございます。
理解力がないのですべてを検証できていませんが、

>>238
[self setTableView:]
これの引数のNSTableViewはどこから取ってくればいいのでしょうか?

>>242
BindっていうのはCocoaBindingというやつでしょうか?
ちょっと難しそうですが試してみます。

>>235
>>240
1つのnibファイルでやる方法を適当な動作確認用アプリを作って試してみました。
この方法で希望の動作ができることが分かりました。

>>243
ちょうどFile'sOwnerって何だ?って思っていたところなので助かります。
ちょっと勉強してみます。
245名称未設定:2008/02/17(日) 11:12:02 ID:57jpes6V0
>>244

>[self setTableView:]

self じゃないよ。
メインのnib のオーナー(例えばMyDocument)はメインウインドウ上のNSTableView への
アウトレット(tableViewとする)を持つことができるでしょ?
MyDocument 上で、サブウインドウのコントローラオブジェクトを以下のように作成したあとで、参照を教えてあげる
WinController *windowController = [[ WinController alloc] init];
[windowController setTableView: tableView];

こうすれば、windowController 側から メインウインドウのテーブルにアクセスできる。
WinControllerには上のメソッドを予め作成しておく。
246237:2008/02/17(日) 12:27:44 ID:AR1yqRov0
>>245
おおおぉぉ!
教えていただいた様にしたらWinController側から
メインウインドウ上のNSTableViewのselectedRow がとれました。

勉強になりました。

本当にありがとうございました。
247名称未設定:2008/02/17(日) 21:07:52 ID:fWhtrPAi0
cocoa本のおすすめを教えて下さい。和書限定で
248名称未設定:2008/02/17(日) 21:13:40 ID:JpVHkWBN0
>>247
おすすめもなにも和書限定で今店頭にあるのなんて片手で数えられる位しかない
249名称未設定:2008/02/17(日) 21:43:17 ID:fWhtrPAi0
>>248
Leopardで使える内容ですか?
250名称未設定:2008/02/17(日) 22:40:24 ID:64Ai+vkJ0
NSTaskでunzipを利用してzipの中のファイルをpipeで読もうと試みています。

zip内に直接ファイルが格納されていれば引数 -p でpipeから普通に読めるのですが、
zip内にフォルダがあり、その中のファイルを読もうとするとフォルダ自身を読んでるみたいで
ファイルを読むことができません。-jをつけても駄目でした。

素直にzlib使えばいいんですが、unzip経由でメモリに解凍するいい方法はないでしょうか?
251名称未設定:2008/02/17(日) 23:27:08 ID:l+f0yW5L0
>>249
使えるといえば使える。Obj-C 1.0 が解説してあるから。
Obj-C 2.0, Xcode3, IB3 について解説した本って和書では出てないんじゃないかな。
252名称未設定:2008/02/18(月) 01:09:47 ID:ET+ouAJH0
そだな、まずは

HappyMacintoshDevelopingTime SecondEdition
木下誠(BNN)
Objective-C MacOSX プログラミング
荻原剛志(ソフバンクリエイティブ)

の2冊あたりか。上は開発ツール全体を含めたCocoa入門書。下はObj-CとCocoaの中のFoundationFrameworkについて詳しい。
ツールの使い方は脳内変換でいけるとおもうよ。ただ上が10.3、下が10.4くらいまでだ。あとヒレガス本の和訳だな。
253名称未設定:2008/02/18(月) 01:51:41 ID:XdaORCnz0
荻原本は正直初心者にはお薦めしない
すごく良い本で後々絶対役に立つけど、入門本だと思って買うとかなり違う
つうか>>247は質問が曖昧過ぎる
プログラミングはまったく未経験とか、JAVAやC、あるいはAppleScriptの経験はあるとか、
そういう情報を出せばお薦めする本も自ずと変わってくるのだが
俺のおすすめはまったくの初心者なら「たのしいCocoa」、
Cくらい知っているならMac OS X Cocoaプログラミング(いわゆるヒレガス本)かな
Leopard対応の和書はまだ一冊もないはず
254名称未設定:2008/02/18(月) 02:24:04 ID:GFrhSAXM0
>>253
和書、ではないけど、日本語版の解説なら ADC にあるよ。
http://developer.apple.com/jp/documentation/japanese.html
まあこれは C を知ってないとどうしようもないかも。

あとは、まあ、頑張って英語読もうね ...
いずれ細かい API を知りたくなったら API ドキュメントよまないと
しかたなくなるし、メソッド名の意味とかわからないとちんぷんかんぷんだろう。
255名称未設定:2008/02/18(月) 11:18:16 ID:k5a4KsxB0
PopUpButton とか ButtonCell とかのテキストの色を変えるには
どうすればいいですか。

HUD に置いた PopUpButton とかのテキストの色を灰色にしたいです。
256名称未設定:2008/02/18(月) 11:25:41 ID:ghv7Mcc/0
cocoa以前にまずは英語読めるようにならないとな。。
257名称未設定:2008/02/18(月) 11:27:23 ID:Q3IQLzZy0
MacでプログラミングしたいならJavaか旧態依然としたCUIアプリがいいよ。
まともなGUIアプリならWindows一択だね。
258名称未設定:2008/02/18(月) 11:31:41 ID:2WAXQd/x0
ん?
259名称未設定:2008/02/18(月) 11:34:40 ID:zir6Ss/g0
Java(笑)
260名称未設定:2008/02/18(月) 11:38:05 ID:XJKW4YwB0
荻原本の「14章:簡易ビューア」って、Leopard + Xcode 3.0環境だと
インスペクタパネルが表示されなかったりして、うまく動かないかも。
デリゲートについて学ぼうと思ったんだけどな。
261247:2008/02/18(月) 11:53:30 ID:fZjZ8B3L0
みなさん、ご回答ありがとうございます
>251
そうですね。まずはObjectiv-Cから始めます
>252
ありがとうございます。2冊目は取り寄せて読み始めています。1冊目も手配します
>253
すいません。C++は15年ほどやってます。Windowsメインの職業プログラマです。
やはり洋書取り寄せないとだめですかね。
>254
ありがとうございます。最近Windows開発ではぐぐればほぼ間違いなく日本人のサイトで資料入手できるんもんですからすっかり英語には腰が引けてました。少しがんばって読んでみます
>256
がんばります
>260
なるほど。気をつけます
262名称未設定:2008/02/18(月) 11:59:40 ID:GFrhSAXM0
247 さんがいろいろ理解したら頑張って日本語で情報発信してください
263名称未設定:2008/02/18(月) 12:47:53 ID:oRoDv33B0
>>250
HetimaZipBrowser0.1
264名称未設定:2008/02/18(月) 12:58:23 ID:/0xxfjv60
>>257
Appleのjava対応はやるきがあるのかないのかわからんから微妙。
265名称未設定:2008/02/18(月) 13:29:20 ID:m8SKGirC0
C++15年もやってるならCocoaは余裕だな。たぶん。
266名称未設定:2008/02/18(月) 13:55:34 ID:KOtA4sww0
何ヶ月か経ってようやく本を読むところにたどり着いたな
よかったな
267名称未設定:2008/02/18(月) 14:46:59 ID:WPvEcvLA0
なぜこれを勧めないの?

Cocoaアプリケーションチュートリアル
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial
268名称未設定:2008/02/18(月) 16:13:14 ID:LyOhXzC90
15年もやってて英語も読めないとは。
むしろwin書籍の充実ぶりに嫉妬。
269247:2008/02/18(月) 16:30:33 ID:fZjZ8B3L0
>262
へたれなわたしには無理だと思います
>265
そうだといいんですが
>266
なんか敵意を感じますね?
>267
ありがとうございます
>268
昔は読んでたんですよ(汗。
でも最近じゃSDKの日本語化も進んでて読む機会はめっきり減りました(言い訳
270名称未設定:2008/02/18(月) 17:10:47 ID:zOF+d4Tg0
>>255
- (void)setAttributedTitle:(NSAttributedString *)aString
271名称未設定:2008/02/18(月) 19:51:48 ID:CQ+uiWfh0
参考書の索引を見てもほとんどNしかないのが笑える。
272名称未設定:2008/02/18(月) 21:27:19 ID:1MdWeLOI0
>>271
ObjC3 ではパッケージの機能が導入されて全部プレフィックスがとれるとか...
さすがにないか(どっちも)。
そういや WebOjbects や Cocoa-Java でもとれてないし。
273名称未設定:2008/02/18(月) 23:46:48 ID:KNJFfC1w0
>>255
なぜ、そんなものの色を変えなければならない?

テキストの色を変えることと、
コントロールをDim化することとは違うよね。
274名称未設定:2008/02/18(月) 23:54:43 ID:GFrhSAXM0
というか IB でカラーパレットを開いて色をつけたらおしまいな気が ...
275名称未設定:2008/02/19(火) 00:08:28 ID:IqE+9f+W0
IB上でできるのはTextFieldとかだけじゃ
276255:2008/02/19(火) 00:19:51 ID:jYApbLZF0
>>270
ありがとうございます。NSMatrix 内の NSButtonCell はそれでできました。
NSPopUpButtonCell の方は、なぜかうまくいきません。

>>273
HUD 上で見やすくしたいからです。
NSPopUpButton で isBordered を NO にしていますが、
NSPopUpButtonCell のテキストの色が黒では読みにくいです。

>>274
ButtonCell のテキストの色も変えられるのでしょうか?
やってみたところ、変わりませんでしたが‥

>>274, 275
NSTextField と NSTextFieldCell は、IB のカラーパレットで
設定しました。
277名称未設定:2008/02/19(火) 00:31:06 ID:TJuG+yIv0
>>267
なんだか1940〜1950年代の新聞活字みたいで鬱だ。
今どきこのフォントを使っているのは中華か台湾?
278名称未設定:2008/02/19(火) 00:33:03 ID:jgjsXYjt0
>>276
テキストを持ってるのはNSPopUpButtonCellじゃなくない?

ついでに俺も聞きたいけど、Windowのタイトルの文字の色はどうやったら変えれますかね?
279名称未設定:2008/02/19(火) 00:39:51 ID:jgjsXYjt0
レパだったらIB上でいけた、、知らなかった。

ところでWindowのタイトルの文字色は
280252:2008/02/19(火) 00:47:28 ID:+CrHN9wS0
>>261
>最近Windows開発ではぐぐればほぼ間違いなく日本人のサイトで資料入手できる

Winてのはうらやましいな。こっちはすぐに英語だ。
は、言葉の話題はここでは禁句だったか?
281名称未設定:2008/02/19(火) 00:49:30 ID:lDXKyuLE0
>>276
270です
>NSPopUpButtonCell の方は、なぜかうまくいきません。

となると
- (void)drawTitleWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
を上書きしないといけないかな?

個人的にはHUDは癖のあるインターフェイスなので、使い方は
注意がいると思います。
Apple Human Interface Guidelinesにもいろいろ注意が
書いてあります。



282名称未設定:2008/02/19(火) 02:07:25 ID:fHYgawbi0
>>277
うちでは普通にヒラギノゴシックで表示されてるけど ...
CSS とかみても別になにもアジアフォントは設定してないぽいから、
そちらの設定がすこし変なのでは?
283名称未設定:2008/02/19(火) 02:08:38 ID:HFIoj9YG0
PDFのことを言ってるんだろう。
確かにあまり使わないフォントだと思う。
284名称未設定:2008/02/19(火) 03:49:03 ID:i8doDWTI0
中国語用のフォントかあ。翻訳はオフショアだったりして。
285名称未設定:2008/02/19(火) 04:59:33 ID:fHYgawbi0
AdobeSong と AdobeFangsong でした。
とりあえず ADC にヒラギノにしろとメールしておいた。
286名称未設定:2008/02/19(火) 10:41:12 ID:Zxra0/AhO
携帯から失礼します

NSScrollerをiTuensのようなマットな感じの外見に設定するにはどうしたらいいんでしょうか

サブクラスでやらないで出来た記憶があったのですが
よろしくお願いします
287名称未設定:2008/02/19(火) 10:59:14 ID:v8daFgbB0
無理です。
サブクラスでガシガシ書くしか。
288名称未設定:2008/02/19(火) 13:06:52 ID:hzk05mEx0
>>276
270です
試していませんが
iLife Controls; HUD windows and more
http://lipidity.com/apple/ilife-controls-hud-windows-and-more/
が使えるかもしれません
289名称未設定:2008/02/19(火) 16:41:48 ID:VsrKJ+jp0
mkinoさんが既にサブクラスを書いているから、それを流用すれば
290名称未設定:2008/02/19(火) 17:18:35 ID:H5jYyic70
>>288>>289
ライセンスはどうなるのでしょう?
商用で使いたい場合とか
291名称未設定:2008/02/19(火) 17:44:21 ID:sM/ABBA/0
>>290
それは自分で調べても見つからない情報なのか?
それとも見つけるのが面倒なだけか?
292名称未設定:2008/02/19(火) 17:54:51 ID:H5jYyic70
英語なのでなんとなくでしか理解できません
なんとなくで使ったらマズいと思いまして
293名称未設定:2008/02/19(火) 18:12:53 ID:kUKVxqT10
>>292
ここの住人もなんとなく答えるだけだぞ
294名称未設定:2008/02/19(火) 19:35:04 ID:le1+UQC40
英語以外で書かれてるライセンス文なんてほとんどないだろ
その二つは独自ライセンスじゃないはずだからググれば日本語訳出てくるし
295名称未設定:2008/02/19(火) 19:54:48 ID:MG1t/YlR0
コピペせずに心をこめて一文字ずつ打ち込みながら写せばオケだよ。
296名称未設定:2008/02/19(火) 20:16:22 ID:38n8l2Px0
なるほど!
297名称未設定:2008/02/19(火) 20:19:57 ID:38n8l2Px0
見てみたけどフレームワークになってるからソース丸写しできないね
298名称未設定:2008/02/19(火) 21:00:55 ID:06rHEn2a0
人の使って金儲けするなら自分が払いたいだけ払えよ
299286:2008/02/19(火) 21:04:38 ID:HqQvuBC60
>>287
どうやら記憶違いのようですね。
サブクラスでガシガシいく事にします。
ありがとうございました。
300名称未設定:2008/02/20(水) 00:14:54 ID:dEnuUZT20
心をこめて一ビットずつ打ち込みながら写せばオケだよ。
301名称未設定:2008/02/20(水) 08:09:15 ID:Ogg3DxTK0
>>277
しかし「直」とか「編」がすごいことになってるな...
まさに Han Unification。
302名称未設定:2008/02/21(木) 11:41:18 ID:6oO/Oi0X0
classicalなhfs path styleと、posix path styleの文字列変換は、やはり
CFURLを経由する以外によい方法がありますか。

CFURLRef myURL = CFURLCreateWithFileSystemPath(
kCFAllocatorDefault, (CFStringRef)file, kCFURLHFSPathStyle, FALSE);
CFStringRef cfPosixPath = (NSString*)CFURLCopyFileSystemPath(myURL, kCFURLPOSIXPathStyle);
NSString* posixPath = [NSString stringWithString:(NSString*)cfPosixPath];
CFRelease(myURL);

NSURL *myURL = [[NSURL alloc] initFileURLWithPath:posixPath ];
CFStringRef cfHfsPath = CFURLCopyFileSystemPath( (CFURLRef)myURL, kCFURLHFSPathStyle );
NSString* hfsPath = [NSString stringWithString:(NSString*)cfHfsPath];
[myURL release];

・・・なぜNSURLクラスにはその手のメソッドがないのでしょう・・・
303名称未設定:2008/02/21(木) 14:40:00 ID:Sr6oQjV90
カテゴリでそれを追加してしまえばしまいなのでは?
というか HFS style のパスを使わないといけない理由がわからん。
304名称未設定:2008/02/21(木) 17:53:27 ID:37Z0oxp90
質問させてください。

A = B
のような関係のデータ構造なら単純にDictionaryを使えばいいと思いますが、
A = B = C
のような関係のデータの固まりを複数扱いたいと思っています。

この場合は入れ子にしたDictionaryを使うしか方法はないでしょうか?
305名称未設定:2008/02/21(木) 18:06:58 ID:tzCzn6Lb0
1:1なのか1:nなのかどうか。
306名称未設定:2008/02/21(木) 19:38:45 ID:G1SNSGMl0
構造体だろ
307名称未設定:2008/02/21(木) 19:40:52 ID:Nds9kpbn0
1:*
308304:2008/02/21(木) 22:26:30 ID:37Z0oxp90
今はDictionaryを入れ子にしてやってみています。
最終的には例えばAからBの値もCの値も取得できるように、同様に
BからAの値もCの値も
CからAの値もBの値も取得できるようにしたいと思っています。
AーB
 ⊥C
のような構造で AからBの値とCの値は取得できるようになったのですが、
この構造でBないしCの値からAを取得するにはどうすればいいでしょうか?
309名称未設定:2008/02/21(木) 22:34:33 ID:QVBoRZyf0
sqliteつかえば?
310名称未設定:2008/02/21(木) 22:40:14 ID:xFLGoheh0
NSTreeControllerとか。使った事無いけど。
311名称未設定:2008/02/21(木) 22:50:33 ID:G1SNSGMl0
A, B, C のそれぞれをキーとする3つの配列を用意しちゃえば
312304:2008/02/21(木) 22:59:54 ID:37Z0oxp90
311さんの言うようにそれぞれで配列として持っていた方が楽そうですね。

その方向で試してみます。

ありがとうございました。
313名称未設定:2008/02/21(木) 23:35:50 ID:i/cNTguO0
core dataは?
314名称未設定:2008/02/22(金) 01:03:37 ID:M6ddHBVH0
「コア何たら」って聞くと、PCエンジンを思い出す。
315304:2008/02/22(金) 16:43:21 ID:D2aFBIG60
core dataも勉強してみて僕にも扱えそうな感じなら使ってみようと思います。
http://developer.apple.com/jp/documentation/japanese.html
ここの上級の資料とか見てみます。

ありがとうございます。

>314
コアグラフィックスとかですね。
316名称未設定:2008/02/22(金) 17:00:49 ID:ZUJx2x640
>>308

プロパティa,b,cを持ったHogeObject クラスを作り、そのインスタンスをarrayに入れる
arrayの中から、例えばA=@"test" を持ったhogeObjectを見つけるには 
[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"a = '%@' ",@"test"]]; とする

抽出されたhogeObjectからBやCの値を取り出す

っていうのは?
317304:2008/02/22(金) 21:58:39 ID:nT1kPM1k0
>>316
その方法がおもしろそうだったたのでやってみたのですが、うまくいきません。
たぶん、HogeObjectクラスの作り方が間違っているような気がします。
#import <Cocoa/Cocoa.h>
@interface Hoge : NSObject {
NSString* a;
NSString* b;
NSString* c;
}
- (id) initWithA: (NSString*) japanese B: (NSString*) english C:(NSString*) color;
-(void)setA:(NSString*)str;
-(void)setB:(NSString*)str;
-(void)setC:(NSString*)str;
-(NSString*)a;
-(NSString*)b;
-(NSString*)c;
@end
318304:2008/02/22(金) 22:12:01 ID:nT1kPM1k0
改行大杉で怒られたのでアップロードしてみました。

ttp://uproda11.2ch-library.com/src/1166672.zip.shtml

ご指導お願いします。
319名称未設定:2008/02/22(金) 22:33:42 ID:7TrfC7Z40
こんなんどう?
@interface Hoge: NSObject {
NSString *a, *b, *c, *key;
}
- (NSString *) key;
- (void) setKey: (NSString *) str; #この中でretain& release

んで、key - aHoge でNSMutableDictionary に登録。
key が重複してたら添字を付けて登録したら良いし。
BOOL registoring = YES;
NSString *key = [aHoge key];
while (registoring) {
if ([aDictionary valueForKey:key] == nil) {
[aDictionary setObject:aHoge forKey:key];
[aHoge setValue:key forKey:@"key"];
registoring = NO;
} else {
key = [key stringByAppendingString:@"Piyo"];
}
}
320名称未設定:2008/02/23(土) 00:02:47 ID:xwgRyVRe0
>>316
>[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"a = '%@' ",@"test"]]; とする

>>318
>NSArray* foo = [ary filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"c = '%@' ",@"黄"]];

おれには'%@'じゃなくて%@でいいようにおもえるが。
321304:2008/02/23(土) 11:25:56 ID:IL0FtBi30
当初していた想像と違ってましたがこんな感じになりました。

ttp://uproda11.2ch-library.com/src/1166857.zip.shtml
322名称未設定:2008/02/23(土) 22:15:50 ID:F2RRmD0H0
stringWithContentsOfFile:とかで得たいファイルの名前にスペースが入ってたら、
例えばpath = @"/hoge hoge.txt"だと、ファイルが得られないのだけど、
どうすればよいでしょうか?
323名称未設定:2008/02/23(土) 22:30:50 ID:d1QCGebM0
>>322
それはファイル名にスペースが入っている以外の理由で失敗している可能性は
ないのか?
324名称未設定:2008/02/23(土) 22:37:21 ID:NDvX0xwB0
NSFileManager の -fileSystemRepresentationWithPath を使ってC文字列を得るとか?
325名称未設定:2008/02/23(土) 22:52:41 ID:F2RRmD0H0
ただstringWithContentsOfFile:で読み込むにはサイズが大きすぎただけのようでした。
22M
どうもすみません、ありがとうございました。
326名称未設定:2008/02/23(土) 23:05:28 ID:d1QCGebM0
>>325
それはサイズが大きすぎる以外の理由で(以下同文)
327名称未設定:2008/02/24(日) 00:14:44 ID:Zc+7rTc30
>>322
/hogehoge.txt という / ではじまるファイルは、ルートディレクトリすなわち
ハードディスクのトップにあるものをさすというのは理解してるの?

ホームディレクトリの場合は
[@"~/hogehoge.txt" stringByExpandingTildeInPath]
としないといけないです。そうすると
~ が /Users/name に展開されます。
328名称未設定:2008/02/24(日) 00:26:35 ID:wCGcWFr10
NSWindowのタイトルバーの表示、非表示を切り替える方法はありませんか?
initWithContentRectの
styleMask:NSBorderlessWindowMaskで消すだけならできましたが、制御をしたいのです。
329名称未設定:2008/02/24(日) 00:31:17 ID:Zc+7rTc30
別に NSWindow をつくって、
[newWindow setContentView:[oldWindow contentView]]
するぐらいしか思いつきませんが、
でもそんな動作をするウインドウは見たことないので、
あまり変なことをするとユーザーが混乱するのでは?
奇抜な動作をすればいいというものではないべ。
330名称未設定:2008/02/24(日) 00:36:28 ID:18VIb9ze0
>>324
NSStringの -fileSystemRepresentation じゃ何か問題でもあるの?
331名称未設定:2008/02/24(日) 01:04:58 ID:wCGcWFr10
>>329
レスありがとうございます。
画像ビューワを作っているのですが、できるだけ表示領域をひろげたくて
NicePlayerみたいに邪魔なときは消せたらいいなぁと思ったんです。
NicePlayerはViewで疑似タイトルバーでやってるようです。
332名称未設定:2008/02/24(日) 01:16:17 ID:Zc+7rTc30
>NicePlayer
ダウンロードしてみましたが、
僕はこの window は耐えられませんね ...
あまりに他の OS X のソフトと見栄えがちがいますよ ...
まあ個人の趣味ですが。
Apple 謹製のソフトで表示領域を大きくする場合には、
たいてい全画面表示にすると思います。
そのときはウインドウタイトルどころかメニューバーやらドックもなくなります。
プレビューのスライドショーとか、iPhoto の編集モードとか。
333名称未設定:2008/02/24(日) 02:02:32 ID:lAYBe5A10
NSWindowのタイトルバーの文字の色を変えるにはどうしたらいいですか?
334304:2008/02/24(日) 02:53:52 ID:YsMKOfMQ0
また新たに別の問題がおこってしまいましたが
結局、A, B, C のそれぞれをキーとする3つの配列を作る方法で実装してみました。

みなさん、いろいろな方法を提案くださってありがとうございました。
335名称未設定:2008/02/24(日) 13:59:42 ID:Zc+7rTc30
>>333
変えちゃダメ。他にそんなことやってるソフト無いでしょ。
336名称未設定:2008/02/24(日) 15:18:43 ID:3kyIhWkK0
>>335
自分でHUD Windowみたいなのを作りたいのです。
iLife ControllerやHMBlkAppKitを使わずに
10.4以前に同じようなものを作りたいのです。
変えちゃだめってことは変えれるってことでしょうか?
337名称未設定:2008/02/24(日) 18:35:07 ID:o2kiR1n50
Zc+7rTc30がOSのスタンダードにこだわってるみたいだが、
変えるかどうかは>>333の自由だし、その固着した考えもどうかと思う。
俺はNicePlayerのウィンドウの邪魔な部分を消すというやり方はありだと思う。
338名称未設定:2008/02/24(日) 18:45:49 ID:tlAzS/zw0
HUD Windowを独力で作るのは結局、
iLife ControllやHMBlkAppKitがやっていることを自分でやることに
なる。NSWindow にタイトルバーの文字色を変えるメソッドとかは無い。

時間と労力が勿体ないから、素直にHMBlkAppKitとか使っちゃうのが
いいと思うけど。どうしても使えない事情とかあるの?>>336
339名称未設定:2008/02/24(日) 19:11:08 ID:cq2Iewp+0
自分がやるなら、ここを見て試してみることになるかな。

ダイナミックObjective-C
  ランタイムAPIでさらに動的に(5) - インスタンス変数に動的にアクセス
ttp://journal.mycom.co.jp/column/objc/031/index.html
340名称未設定:2008/02/24(日) 19:15:05 ID:A3mOmoyE0
質問です。
Interface Builderから設定できない項目ってありますよね。
コードを書くのが面倒なので、Bindでenabledやhiddenの設定
をしようと考えたのですが、YES/NOを簡単に指定する方法って無いですか?

shared defaultで設定しておくか、オーナーにYES/NOを
返すメソッドを置いとくくらいしか思いつきません。
341名称未設定:2008/02/25(月) 11:00:10 ID:mnsXjX6e0
>>340
自己レス。
NSValueTransformerの
NSIsNilTransformerName, NSIsNotNilTransformerName
で解決しました。
shared applicationのselfあたりにバインドしてどちらかを指定。
342名称未設定:2008/02/25(月) 14:43:03 ID:YpQkGaPU0
>>338
なるほど、ありがとうございます。
事情があるわけではなく自分で同じことをやってみたいという好奇心です。
NSWindowをいろいろいじってみたんですが。どうやって文字の色を変えてるのだろうと。
iLife Controlsってソース公開されてたんですね、知りませんでした。
343名称未設定:2008/02/25(月) 20:35:03 ID:pwL7RjRZ0
っていうか、Apple は自社アプリで使っているGUIパーツは
全てIBだけで使えるようにすべき。

まぁ、昔と比べてずいぶんカバーしてくれているが。
344名称未設定:2008/02/25(月) 22:31:41 ID:laJ9OY3b0
>>343
ジョブたんの気分次第で増えてく感じだよな。
Lookが変わるとサイズまで変わってしまうんだもんな。
ボタンの種類なんてもうカオス。
345名称未設定:2008/02/25(月) 22:48:18 ID:pwL7RjRZ0
せっかく黒いインスペクタウィンドウがIBで使えるように
なったんだから、その上にのっけたボタン類も同じデザインで
自動的に置かれてほしいな、と思ったり。
346名称未設定:2008/02/25(月) 23:57:55 ID:87djNpWj0
>>344
まあ、レパードで表面上は種類が減ったのでは ...
347名称未設定:2008/02/27(水) 13:10:28 ID:FMBNfT6X0
相対パスについて教えてください。
プロジェクトフォルダ直下に入れた画像ファイルを指定するのに、
いきなり画像ファイルのファイル名を指定してもうまくいきません。
(いちおうプロジェクトには組み込んで参照させてあります)

Xcodeで画像ファイルを「情報を見る」してプロジェクトフォルダからの
相対パスに設定したんですが、うまくいきません。

よろしくお願いします。
348名称未設定:2008/02/27(水) 14:03:45 ID:l3PTXfjd0
ヒント

NSBundle::pathForResource
NSImage::imageNamed
349名称未設定:2008/02/27(水) 14:08:35 ID:J130Im9L0
>>347
何をどうしたいのか、いまいち伝わってこないが、
必死なのは分かった。

Xcodeが認識してくれないの?
アプリケーションバンドルに入らないの?
入ってるけど取り出せないの?
350346:2008/02/27(水) 20:54:53 ID:eaB0ty3b0
>>348
たとえば、IBだけでNSImageで、プロジェクトに組み込んだ画像を
指定する場合は、IBでその画像の名前だけをインスペクタパネルに
入れればOKですよね。

で、コードからプロジェクトに組み込まれた画像を指定するには
どうしたらいいのですか、という質問です。
とりあえず、画像のファイル名(絶対パスではなくてファイル名のみ)
を指定してみましたが、ダメでした。

伝わらなくて、すみません...

よろしくお願いします。
351名称未設定:2008/02/27(水) 21:13:43 ID:leiNhL1N0
>>348さんのこと馬鹿にしてんのかお前>>350
352名称未設定:2008/02/27(水) 21:19:39 ID:nW263Zmv0
プロジェクトに追加した画像ファイルなら>>348の通りimageNamedでファイル名していすればできるよ。
353名称未設定:2008/02/27(水) 21:22:53 ID:leiNhL1N0
ごめん、カルシウム足りてなくてイラッときた
354346:2008/02/27(水) 21:47:01 ID:eaB0ty3b0
>>348
>>349
>>352
>>351

すみません。ありがとうございました。

>>353
申し訳ないです。
355348:2008/02/27(水) 21:50:13 ID:l3PTXfjd0
>>351
おれは怒ってないぞーw

Resourcesにcopyされてないんじゃまいか?
.appのパッケージの内容を表示で中身見てあるか確認
ダメなら一回プロジェクト作り直し
嫌ならコマンド + option + k押してターゲットをクリーニング
ダメなときは一からやり直してともかく動かす

話はそれから
356346:2008/02/27(水) 22:31:16 ID:eaB0ty3b0
>>355
ありがとうございます。これからやってみます!
357名称未設定:2008/02/27(水) 22:34:32 ID:YI2lm2t+0
なんだこの流れはw
358名称未設定:2008/02/27(水) 23:48:02 ID:it5OScRi0
半透明のウインドウのリサイズが遅いのはどうにもならないのだろうか・・
359346:2008/02/28(木) 01:26:58 ID:G8bXEyn+0
報告です。とりあえず、プロジェクトを作り直したら、
正常に動作しました。
申し訳ありませんでしたorz
360名称未設定:2008/02/28(木) 08:03:57 ID:BTWE97ROO
>>359
プロジェクトを作り直したの?
クリーニング&ビルドじゃなくて。
361名称未設定:2008/02/28(木) 15:44:15 ID:cMerTqn60
3時間で全部打ち直したんじゃね?
362名称未設定:2008/02/28(木) 16:22:23 ID:g8uMaOtR0
プロジェクトに追加したけどターゲットに追加してなかっただけでしょ、たぶん。
363名称未設定:2008/02/28(木) 22:02:52 ID:G8bXEyn+0
質問させてください。

CGDataProviderRef imageDataProvider = CGDataProviderCreateWithFilename([[NSBundle mainBundle] pathForImageResource:@"image"]);


とやって、Resouceフォルダの中のimage.tiff を読み込みたいのですが、
ポインタの型が違うと怒られます。何がおかしいんでしょうか。

364名称未設定:2008/02/28(木) 22:05:39 ID:b9dJN5/U0
ポインタの型が違うんだと思う。
365名称未設定:2008/02/28(木) 22:08:27 ID:a9uJIoJW0
NSString*とchar*は違う・・・
366名称未設定:2008/02/28(木) 22:11:37 ID:eN6Cd95u0
>>363
ポインタのキャストが必要です。
367名称未設定:2008/02/28(木) 22:19:34 ID:G8bXEyn+0
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithFilename([[[NSBundle mainBundle] pathForResource:@"image" ofType:@"tiff"] UTF8String]);



とやって解決しました。くだらないミスですみません。
>>364-366 ありがとうございました。
368名称未設定:2008/02/28(木) 23:03:47 ID:A6aYqvcq0
-UTF8Stringじゃなくって-fileSystemRepresentationだと思うんだがな。

つーか、そんな関数あったんだな。知らなかった。
369名称未設定:2008/02/28(木) 23:10:31 ID:HkDGaIuF0
お力を貸してください。

アプリのhogeControllerからパネル(←環境設定みたいなものです)を
モーダルで表示して終了したらパネルの設定を記憶するようにしています。

パネル内には5つのボタンと5つのテキストフィールドがあり、
ボタンのタイトルはバインディングで設定してあります。また、テキストフィールドの
値はNSUserdefaultの適切な値とバインディングしています。
このとき、NSObjectControllerのcontentをhogeControllerに設定してあります。

hogeControllerからパネルの表示を終了してアプリを閉じるときにhogeControllerを
保持しているmainController内にて[_hogeController release];としているのですが、
hogeControllerのdeallocが呼ばれません。

hogeControllerのretainCountを確認してみると、4になっているのですが、どこで
参照カウントがあがっているのかさっぱり分からない状態です。

mainControllerでは [[_hogeController alloc] init];をawakeFromNibにて行い、
終了時に[hogeController release];としているだけです。
どなたか解決策をご存知でしたら教えてください。
370名称未設定:2008/02/29(金) 00:31:50 ID:NTrNPfyU0
>>368
>-fileSystemRepresentation

よく調べてみたら、こっちのほうがオーソドックスみたいですね。ありがとうございます。
371名称未設定:2008/02/29(金) 10:08:15 ID:AvjDXGM30
>>369
ホゲコンを独立した形でIB上でインスタンス化するとか。
372名称未設定:2008/02/29(金) 10:48:20 ID:nuquRuJR0
確か、nibでインスタンス化したオブジェクトはFile's Owner が責任もってreleaseしてやらなくちゃならなかったはず。
373名称未設定:2008/02/29(金) 11:20:16 ID:A2LYQ/E+0
>>369
OSのバージョンは何ですか?
10.3だとNSWindowControllerのバグでretain cycleが
生じている可能性があります。
374名称未設定:2008/02/29(金) 15:22:05 ID:Jj0cAYoS0
>>369
[objectController setContent:nil];
375名称未設定:2008/03/01(土) 02:14:43 ID:UpRwlGMm0
特定のウィンドウやパネルをExposeやSpacesに持ってかれないようにするにはどのようにすればいいのでしょう?
画面に固定したいのですが。
376名称未設定:2008/03/01(土) 10:13:21 ID:PGIKvFSU0
377名称未設定:2008/03/01(土) 13:12:34 ID:pBDQ5XU50
Spaces に関してはNSWindow にメソッドが用意されている
378名称未設定:2008/03/01(土) 13:47:30 ID:C1APndUO0
なるほど、いろいろ調べてみましたがexposeの方は現状ではハックしかなさそうですね。
ありがとうございます、試してみます。
379名称未設定:2008/03/02(日) 10:45:13 ID:vHP/LU6H0
NSWindowで A,B,Cと3つのウィンドウがありCが最前面の場合、
残りAとBの前後関係を知るにはどうすればよろしいのでしょうか?
levelで比較しても同値ですし、キーウィンドウかどうかもできないですし。

お知恵をお貸し下さいませ。

380名称未設定:2008/03/02(日) 11:28:08 ID:hSV40TtT0
>>379
[NSApp orderedWindows];
[NSApp orderedDocuments];
381369:2008/03/02(日) 12:55:59 ID:mi0e2JN40
>>371,>>372,>>373,>>369

遅レスですみません。インフルエンザにかかって寝込んでます...orz
ちょっとだけ確認してみましたが、確かにバインディングをはずすと
[hogeContrller retainCount] = 1となり、deallocが呼ばれます。
再度バインディングを設定して、hogeController.hに

IBOutlet id _nsObjCtrl;

としてIBのNSObjectControllerに接続し、アプリ終了直前に
[hogeController releaseObjects]を呼び

-(void)releaseObject{
while([[_nsObjCtrl] retainCount]>1)
[[_nsObjCtrl content] release];
}

とすると、その後のmainController内で[hogeController release]にて
ちゃんとdeallocが呼ばれるようになりました。
これが作法として正しいかどうかは分かりませんが、熱が引いたらもうちょっと
試してみます。ありがとうございました。
382名称未設定:2008/03/02(日) 13:02:51 ID:CDTGwKCL0
ちょっと待て
インフルなのに起きてMacの前に座ってるなんて
命に関わるんじゃね?
383名称未設定:2008/03/02(日) 13:04:22 ID:zueJD3wX0
>>380
即レスありがとうございます。
さっそく試してみます。
384369:2008/03/02(日) 13:11:50 ID:mi0e2JN40
>>382

どうしても気になったものでw
ちょっと布団から抜け出してみましたww
でももう寝ます。ご心配かけてすみません。
おやすみなさい。
385名称未設定:2008/03/02(日) 15:00:09 ID:61s3PQ+i0
初歩的な質問なんですが、Interface Builderでアウトレットとアクションを接続する時の、
コントロールキーを押しながらドラッグする操作ができなくて困ってます。
参考書見ながらやっているのですが、線が伸びて接続するという風に書いているのですがその通りにできないです・・・。
何か設定しないといけないことがあるのでしょうか?
386名称未設定:2008/03/02(日) 16:08:02 ID:WlNHydXc0
ふつうに出来るよ ?
つなぎたいものの上にマウスを持っていって、
コントロールキーを押したまま、
マウスをしばらく動かすと線が伸びるはずだけど。
右クリックドラッグでもいいです。
387名称未設定:2008/03/02(日) 16:14:43 ID:3JYxwU8x0
独自コントローラーでアウトレットを作っていないに1票
参考書の通りにやってる?どこか読み落としてないかい
388名称未設定:2008/03/02(日) 16:34:04 ID:dah6mynL0
>>385
線が出てこないのか、線は繋げられるけど接続ができないのか、まずそれを書け。
389名称未設定:2008/03/02(日) 16:41:06 ID:qN7Y669I0
CoreAnimation についてご助言をお願いします。

プログラミングガイドのレイヤーツリー階層の項目を読むと、
スーパーレイヤにサブレイヤとしてレイヤを追加するという内容が
書いてあります。

ここで疑問に思ったのは、レイヤの順序はどのようになるかということです。
スーパーレイヤより、サブレイヤの方が上層にくることは分かりました。
では、サブレイヤ同士の上下関係はどのように管理するのでしょうか。

また、スーパーレイヤを複数作ることができるかということも疑問です。
つまり、レイヤを作るときは、ただ一つのスーパーレイヤから、どんどん
階層を作っていかなければならないのでしょうか。

よろしくお願いします。
390名称未設定:2008/03/02(日) 16:50:23 ID:61s3PQ+i0
>>386
Instancesタブの中にあるインスタンスしたアイコンの上でやってみたのですが、できないです・・・

>>387
たのしいcocoaプログラミングという本の初めのhelloworldアプリを作っています。
参考書通りにアウトレットとアクションを一個ずつクラスに作成しております。

>>388
線が出てこないです。

391名称未設定:2008/03/02(日) 18:32:25 ID:3JYxwU8x0
絶対ちゃんと参考書読んでないに1票
インスタンス化したNSObjectのクラスを設計したクラスに設定して
ウィンドウにボタンやテキストフィールドとか置けば線はつながるよ
392名称未設定:2008/03/02(日) 19:41:41 ID:dah6mynL0
線が出てこないならcontrolキーが壊れてるんじゃね?
393名称未設定:2008/03/02(日) 19:48:36 ID:ot1nyHJ50
>コントロールキーを押しながらドラッグする操作ができなくて困ってます。
ってことだから、片手が不自由なのではないだろうか?

システム環境設定のユニバーサルアクセスのキーボードで複合キーを入にしてください。
これで、コントロールキーを押したあとドラッグすればControl+ドラッグの動作になります。
394名称未設定:2008/03/02(日) 20:06:19 ID:lT2ZRyse0
>>390
cmdキーとctrlキー押し間違ってるとか

>>389
>ここで疑問に思ったのは、レイヤの順序はどのようになるかということです。
>スーパーレイヤより、サブレイヤの方が上層にくることは分かりました。
>では、サブレイヤ同士の上下関係はどのように管理するのでしょうか。
CALayerにあるzPositionってやつじゃない?
395名称未設定:2008/03/02(日) 20:07:02 ID:3JYxwU8x0
右クリックでドラッグすれば良し
396名称未設定:2008/03/02(日) 20:13:10 ID:61s3PQ+i0
385です。
マウスとキーボードの設定のキーボードの修飾キーで、controlキーにcommandを割り当てていました・・・。
そのためにコントロールキーを押しながらドラッグというのができませんでした。
レスをしてくれた方大変助かりました。
お騒がせしてごめんなさい。
397名称未設定:2008/03/02(日) 20:48:18 ID:dah6mynL0
ちゃんちゃん
398名称未設定:2008/03/03(月) 00:01:28 ID:CLptj8Qv0
あるメソッドをAのクラスに書くか、Bのクラスに書いてAから繋いで呼ぶか、
(もちろんBでも使う)悩ましいのですが、こういう時の指針って何かあるのでしょうか。
399名称未設定:2008/03/03(月) 00:08:29 ID:omK0f3mt0
やりやすければ適当でいいんじゃない?
後で拡張するときに楽になる方を選べば。
400名称未設定:2008/03/03(月) 00:13:37 ID:67uA4yRu0
一番関係あるクラスに書く
401名称未設定:2008/03/03(月) 00:17:01 ID:Qmzt7GH20
人それぞれだよね。
可読性と保守性があって、MVCがきちんと分離されていれば、
あとは適当に機能のまとまりでクラスにすればいいと思う。
402名称未設定:2008/03/03(月) 00:34:06 ID:IyX+GfuA0
こういうのは実例をあげないと正解的なものは答えようがないかもね。
403名称未設定:2008/03/04(火) 07:31:35 ID:cd3Ueok20
マウスオーバー時に出る黄色い矩形のテキストを出す方法ってcocoaで用意されています?
探しても全然見つからないんで自分で作るしかないんでしょうか...
404名称未設定:2008/03/04(火) 07:47:59 ID:483en0hZ0
- (void)setToolTip:(NSString *)string
405名称未設定:2008/03/04(火) 08:52:43 ID:mzfgZERp0
>>403
IB > Identity Inspector > Tool Tip
406403:2008/03/04(火) 09:30:50 ID:2TCXuN/70
>>404,405
お二方ともにありがとう!
ID変わってるでしょうが403です。
ToolTipという名前が出てきませんでした。お恥ずかしい。
407名称未設定:2008/03/04(火) 14:50:14 ID:S7wqDV1Y0
質問です。
画像のサムネイル表示を作るにはNSCell使って自分で作っていく
しかないのでしょうか?

動作としてはFinderのアイコン表示みたいな感じで
選択された画像はハイライト、ドラッグしたりして複数選択する。
って感じなんですが。

ネットで調べてみると、
10.5にはそれっぽいコントロールがあるけど、動作環境が10.4ため
使えず、NSTableViewだと各セルの選択方法が分からず断念しました。
Finderのアイコン表示ってCarbonでゴリゴリ書いてるんだろうか・・・。
408名称未設定:2008/03/04(火) 15:22:38 ID:OV6PaGCF0
Finderは知らんが、NStableViewだとセル表示が行われる時に呼び出されるメソッドがある。
(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row
409名称未設定:2008/03/04(火) 15:41:42 ID:hB9Picwm0
Finderのアイコン表示みたいなのを作りたいなら
UKDistributedView
ttp://www.zathras.de/angelweb/sourcecode.htm#UKDistributedView
ってのが使えそうだけど。使ったことはないので詳細はわからん。
410名称未設定:2008/03/04(火) 20:20:46 ID:+SnoCDKI0
>>409
407じゃないがいただいた
サードパーティのフレームワーク一覧にサイトとか無いのかなぁ
411名称未設定:2008/03/04(火) 20:21:11 ID:+SnoCDKI0
>>410
訂正
に→にした
412名称未設定:2008/03/04(火) 20:36:59 ID:Sykmwb7I0
仕事で作ったことないから分からないんですが
よそのフレームワークを使うのって結構普通なんですか?
413名称未設定:2008/03/04(火) 20:57:33 ID:Sykmwb7I0
よその、とはサードパーティのことです
414名称未設定:2008/03/04(火) 22:47:39 ID:JSV4VSBTO
ライセンス的に問題なければ。
415名称未設定:2008/03/05(水) 18:39:45 ID:tt+EJr5w0
ネットのサンプルプロジェクトでたまにフレームワークとか
パレットがリンク切れで開けないのは、そういうことか。
416名称未設定:2008/03/05(水) 20:35:25 ID:t0K2sayU0
Macプログラミング勉強中ですが、
ttp://www.nicovideo.jp/watch/sm1770546
を見て、似たようなものを作ってみたくなりました。

AppKitにはNSAnimationがありますし、Core Animationもあります。
(このあたりですでに勘違いしている可能性もありますが...)
どのように作るのがのが良いのでしょうか。10.5限定で良いです。

ちなみに私のレベルは、
・C言語は理解している
・AppleのCocoaセミナーを資料を見て一通りやった。
・旧版の萩原本を一通り読んだ(サンプルもほぼ一通り作った)。
・Cocoaはやっぱり!を一通りやった。

よろしくお願いします。
417名称未設定:2008/03/05(水) 20:55:37 ID:7i/6IWuN0
こういうアプリは数学とかの考え方が必要になりそうだな。
いきなり作るのもありだが、まずは普通のGUIアプリから作ったらどうだろうか。
418名称未設定:2008/03/05(水) 21:05:18 ID:7eImP8LF0
>>416
69 名前: 名称未設定 Mail: sage 投稿日: 2008/02/11(月) 22:39:51 ID: my5MjNWk0
こんなん見つけた。初心者でCocoaSeminar初級やってみたけど、
Xcode3.0と操作方法が違っててわかりません><な人向け。

Macでプログラムしよう!
ttp://www.nicovideo.jp/watch/sm1859014
419名称未設定:2008/03/05(水) 22:03:52 ID:LKSr6PdH0
昨年あたりからちまちまとCocoaをはじめて、ようやく自分の思い通りの
アプリを書けるようになってきた。

Cocoaは一年すぎたあたりから面白くなってくるね。
420名称未設定:2008/03/05(水) 22:40:29 ID:vzEZ3cLM0
>>417
数学というか物理というか。どういうアルゴリズムで時間発展させるかが重要かと。
すごく真面目にやるなら運動方程式を数値的に解くんだけど、
もっと楽なアリゴリズムもありそう。

描画はCore Animationで沢山レイヤーを使うとか? でも素朴にNSBezierPathで
四角や線を描くのも勉強になるかも。
421名称未設定:2008/03/06(木) 07:05:27 ID:DcFGi36n0
>>416です。
お返事ありがとうございます。

>>417
確かに、書籍のサンプル以外ほとんど自分で作ったことないです。
沢山アプリ作ったり、リファレンス読んだり、そういった慣れもまず必要でしょうね。

>>418
>>416の動画はそこから辿っていったものですが、Xcode3の使い方はだいたい分かって
いたのでスルーしていまいした。すごく参考になりそうです。

>>420
ブロックの動き自体は、はね回って近くの相手に向かって方向を変えるくらいなら
そんなに難しくないのかなと思っています。

ブロックを動かすのに、NSBezierPathで描いて消してを繰り返すのか、何かのアニ
メーション機能を使うのが良いのか...。
422名称未設定:2008/03/06(木) 09:11:35 ID:OX9pwPIp0
>>421
>ブロックの動き自体は、はね回って近くの相手に向かって方向を変えるくらいなら
>そんなに難しくないのかなと思っています。

まあ、それっぽく見えればいいだけだろうだから、てきとーにやればいいんだけどさ。
それでも、「それっぽく見える」にはある程度物理的なことも知っておく必要があるかも。

...と思うのは自分にはなまじ物理の経験があるからかもしれないけどな。
ま、とにかく何か作ってみればわかるでしょう。
いやー、ああいうのを見てると、エネルギーとか角運動量とか重心とか気になっちゃうん
だよねー。あれは散逸系かな、みたいな。
423名称未設定:2008/03/06(木) 10:22:01 ID:yTfeRDc50
424名称未設定:2008/03/06(木) 11:44:20 ID:ClqeEsY50
アルゴリズムじゃなくて描画の手段を尋ねてるんじゃないの?

NSBezierPath だと動画の最後くらいたくさん描画すると重くなる。
俺なら OpenGL を使う。
425名称未設定:2008/03/06(木) 11:59:59 ID:dO5xM4VY0
>>424
おっしゃるとおりです。
OpenGLですか。ネットで探すと色々と情報転がってますね。
ちょっと勉強してみます。

>>423
お、バウンディングよりおもしろそうです。
426名称未設定:2008/03/06(木) 12:01:37 ID:yTfeRDc50
Cocoaスレであれだけと、俺ならSDL(CocoaはGUI限定)かな...
427名称未設定:2008/03/06(木) 12:44:18 ID:w1g9foQc0
ガベージコレクションを有効にすると、static 宣言してない変数でも、
クラス内で共有できるようになったのですが、static宣言はちゃんとやったほうが
良いのでしょうか?
428名称未設定:2008/03/06(木) 13:48:07 ID:wqpBXVPH0
Obj-C にクラス static 変数なんてあったっけ ???
429名称未設定:2008/03/06(木) 16:19:07 ID:GL44wYwb0
>>424
>アルゴリズムじゃなくて描画の手段を尋ねてるんじゃないの?

>>420 で CA はどうかとちらっと書いた。
試しにすごく簡単なアニメーションをでっち上げてみたが、やっぱ CA いいかも。
ゴリゴリとアニメーションに必要な処理を書かなくていいしね。それにレイヤー増やしても
ほとんど重くならない。

で、こんなのはお膳立てされた API を使うだけなんで、
自分的には時間発展のアルゴリズムの方に興味が行ってたのだった。
430名称未設定:2008/03/06(木) 16:35:37 ID:dO5xM4VY0
>>429
度々どうも。
OpenGLで四角の移動を描いてみました。Cocoaの勉強も兼ねているので、Core
Animation ももう少しいじってみて、どれで行くか考えたいと思います。

ちなみに、CAは
ttp://journal.mycom.co.jp/special/2007/coreanimation/index.html
を見てやってみましたが、何故か地球のイメージが真っ白に....サンプルをダウン
ロードして試してみても同じでした。
431名称未設定:2008/03/06(木) 17:38:06 ID:w1g9foQc0
CoreAnimationなんてそんなに難しくないんだから、サンプル
が動かないなんて言わないで自分で一から作った方が早い罠。
432名称未設定:2008/03/06(木) 17:41:41 ID:dO5xM4VY0
>>431
難しいか簡単かも分からない状況ですw
和訳ガイドがあるのでとりあえずそれも読んでみます。
433名称未設定:2008/03/06(木) 18:44:42 ID:BLGOYNAq0
Core Animationって始点と終点がわからない動きは難しいと思うんだけど
434名称未設定:2008/03/07(金) 00:27:58 ID:aYCTFrpT0
>>433
たとえばどんな?
435名称未設定:2008/03/07(金) 00:39:44 ID:E3qtBVd20
>>434
416みたいなやつ。途中で他のものが干渉する動きは難しいと
436名称未設定:2008/03/07(金) 04:28:42 ID:Cy1QALny0
Core Animationは、新しい命令出すと前の動作が途中でもそこから次に向かってくれるよ。
プログラマが途中の処理を書く必要ない。

iPhone SDK free。Xcode+IB。Cocoa。
$99でiTunesから売れる。Developerの取り分は70%。freeもOK。
from todayだけどbeta。
437名称未設定:2008/03/07(金) 04:37:14 ID:0QNB2HGn0
438名称未設定:2008/03/07(金) 04:41:56 ID:Cy1QALny0
重くて開かん...
439名称未設定:2008/03/07(金) 04:43:07 ID:0QNB2HGn0
↑繋がりにくいな。
iFundて何するんだ?
http://www.kpcb.com/initiatives/ifund/index.html
440名称未設定:2008/03/07(金) 10:38:38 ID:6pB8sYlc0
>>437
これの影響か、
http://developer.apple.com/jp/documentation/
以下のページは全部404になってますね。
まさかホントにファイルがない訳ではないとは思うが。
441名称未設定:2008/03/07(金) 11:27:25 ID:gbj3Egm+0
IBでウィンドウを作ってそれようのNSWindowControllerのサブクラスを作った場合
これはFile's Ownerに結びつけるのと新規にNSObjectをNibファイルに作ってそれに
結びつけるのとどっちがいいんでしょうか?

サンプルとか見てると両方のパターンがあるみたいで場合分けの考え方が分からない
のですが...?
442名称未設定:2008/03/07(金) 12:00:36 ID:vhkbt9ap0
繋がったよ
2.1GB!
だがダウンロードは遅くない
443名称未設定:2008/03/07(金) 12:09:47 ID:5LaZ8yUF0
600MB あたりで止まった。

web でドキュメントはよめるようになったよ。
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/
444名称未設定:2008/03/07(金) 12:26:10 ID:5LaZ8yUF0
ADC on iTunes にビデオも一杯出てる。Online 会員で見れるよ
445名称未設定:2008/03/07(金) 13:34:45 ID:vhkbt9ap0
インスコ完了
iPhoneシムおもすれ〜
けど、くぱぁはどうすんだ?
446名称未設定:2008/03/07(金) 13:42:52 ID:5LaZ8yUF0
何回やっても 600MB あたりでとまります(涙)
プロバイダにとめられてるのかな?
447名称未設定:2008/03/07(金) 14:27:10 ID:vhkbt9ap0
オーガナイザでtouchに自作アプリ入れようとすると34のエラーになるのはなんでだ?
設定が足らんのか、まだ入れちゃダメなのか・・
448名称未設定:2008/03/07(金) 14:46:52 ID:5LaZ8yUF0
ファームウェア v2 が出ないと無理なんでは?
449名称未設定:2008/03/07(金) 14:49:44 ID:vhkbt9ap0
そかそか、そりゃそうだわな
450名称未設定:2008/03/07(金) 16:58:13 ID:+j3cJoBu0
>>447
ttp://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/DevelopmentEnvironmentOverview/chapter_4_section_5.html#//apple_ref/doc/uid/TP40007072-CH5-SW14

Designating a Device for Development
の手順を踏まないとダメなんじゃないか?この手順が通称のjail brakeにあたる
気がする。で、この手順を踏むにはCertificateが必要で、このCertificateは
$99のデベロッパ登録が必要で、それはまだ日本からはやってくれないと、、、

451名称未設定:2008/03/07(金) 17:15:37 ID:x/MNsQEt0
>>450
同じとこ見てた。
ここで言う、CSRファイルをうpするところがiPhoneDevCenterで
みつけられなくて途方に暮れていたんだが。$99のメンバーシップ持ってないと
駄目っつーことなのか。
452名称未設定:2008/03/07(金) 23:01:25 ID:aYCTFrpT0
質問させてください。

NSPoint から x 座標だけを int 型で取り出すには、
どうしたらいいのでしょうか。

あと、NSPoint とかは「関数」ですよね?
どうしてメソッドと関数が別々に存在するのか、よく分かりません('A`)

よろしくお願いします。
453名称未設定:2008/03/07(金) 23:05:28 ID:rpprbSl10
>>452
まずはCを覚えて下さい

NSPointは構造体
キャストすりゃintで取れる

ググり方はわかるだろ?
454名称未設定:2008/03/07(金) 23:16:22 ID:aYCTFrpT0
Cの知識が中途半端なままCocoaやってるのがいけないですね。 
構造体、キャストについては詳しく調べます。
ありがとうございました。
455名称未設定:2008/03/07(金) 23:44:19 ID:xpaY/lvn0
Objective-CをやるためにCを熟知する必要も無いけど
ここまで分かってない人には、ちと厳しい。
456名称未設定:2008/03/08(土) 01:44:56 ID:1GYGgbzP0
たった一行ですむところをグダグダ駄レス垂れて人を寄せ付けないのがMacクオリティ
457名称未設定:2008/03/08(土) 03:10:38 ID:7oU8e6yS0
>>456
.NET(笑)でもやってろよ
458名称未設定:2008/03/08(土) 05:47:15 ID:GTeywC3/0
>>456は煽り口調だけど実際問題門は狭いと感じる
単純に情報量が少ないのもあるけど
ド素人が気軽に質問できる場ってのがほとんどないんだよなあ
459名称未設定:2008/03/08(土) 06:01:05 ID:TjnYWOuM0
まーたしかに、無いね
460名称未設定:2008/03/08(土) 10:23:18 ID:EfFWQU2+0
Core Data のアプリで(document based じゃない方)、あるデータのエンティエィ
(Dataとします) があって、関連として
・mainData(to-many)
・subData(to-one)
を持っており、お互い逆関連に設定されています。

あるデータ群に対し、その中の最初の1つだけを mainData とし、残りはすべて
その mainData の subData として設定しながら、Core Data のエンティティを
作成していくメソッドとして、以下のようなものを書きました。

- 続く
461460:2008/03/08(土) 10:24:21 ID:EfFWQU2+0
- 続き


- (void) createAndSetMainData: (NSArray *) myDataArray
{
MyDataType * myData; // "Data" managed object (MO) にセットしたいデータが入ってる
NSManagedObject * mainDataMO == nil; // 最初は nil

for ( myData in myDataArray )
{
NSManagedObject * newDataMO = [self createADataMOAndFillMyData: myData];
// managed object を作成して myData 内のデータをセット

if ( mainDataMO == nil ) // nil なら最初のデータ → mainData
{
mainDataMO = newDataMO;
}
else // subData
{
[newDataMO setValue mainDataMO forKey: @"mainData"]; // 問題の行
}
}
}


- 続く
462460:2008/03/08(土) 10:24:57 ID:EfFWQU2+0
- 続き

これで思い通りに動いたのですが、一度データをファイルにセーブして
(NSSQLiteStoreType)、次にアプリを立ち上げると uncaught exception で
立ち上げと同時にクラッシュします。

// 問題の行 のところをコメントアウトするとクラッシュしなくはなりますが、
当然、subData 群に mainData が設定されません。

セーブしなければ問題なく動いているのですが、// 問題の行 のところは、
何が良くないでしょうか。


長文すみません
463名称未設定:2008/03/08(土) 16:00:18 ID:VHM+i6Ve0
亀レスで申し訳ないですが>>407です。
>>408 >>409 サンクス。
特に
ttp://www.zathras.de/angelweb/sourcecode.htm#UKDistributedView
はかなり使えた。

にしてもみんなどうやってこんなサイト見つけてるんだろ。
クラス名でググってもヒット数3件とかでて困る。
464名称未設定:2008/03/08(土) 16:36:53 ID:HDUoXXFz0
>>460
何がいけないのか解りませんが
NSMutableSet *subData = [mainDataMO mutableSetValueForKey:@"subData"];
[subData addObject:newDataMO];
としてもエラーが出ますか?

それから、文脈からしてone-to-many relationshipなのは
subDataの方ですよね。
465460:2008/03/08(土) 17:26:31 ID:EfFWQU2+0
>>464

> NSMutableSet *subData = [mainDataMO mutableSetValueForKey:@"subData"];
> [subData addObject:newDataMO];

上記でも同じでした。

[newDataMO setValue mainDataMO forKey: @"mainData"];

だけでもダメ、上記2行もダメ、両方書いて3行でもダメです。
セーブしなければ問題ないのですが、SQLite でセーブする前と後で、
何が変わるのでしょうか。

> それから、文脈からしてone-to-many relationshipなのは
> subDataの方ですよね。

その通りです。すみません、わかりにくい書き方でした。
mainData 1つに対して、subData が複数です。
466名称未設定:2008/03/08(土) 18:14:09 ID:HDUoXXFz0
>>465
464です
このようなrelationshipはoutlineViewのデータでよく使用していますが、
(parent, children)
こんなトラブルは経験がありません。
他の原因があるのではないでしょうか?
467名称未設定:2008/03/08(土) 23:23:00 ID:Io0PEr3a0
NSTableViewでcellがCheck Box Cellの時、
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
では何を返せば、Check BoxのTitleを変更できるでしょうか?
Selectedしか変更できない。
468名称未設定:2008/03/08(土) 23:25:26 ID:IW0HY8f30
>>467
dataSource がダメならデリゲートで、
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

で aCell の title を変更してみては。
469名称未設定:2008/03/09(日) 01:59:08 ID:GY3Lgh9g0
>>461
>NSManagedObject * mainDataMO == nil; // 最初は nil
==だからじゃねーかな。
470名称未設定:2008/03/09(日) 14:31:34 ID:DQPknXlz0
>>467
私がやってるのは
[tableColumn dataCell]でCellを拾ってきて
Titleを書き換えてるようです。
(初学者なんで正攻法かどうか分かりません)
471460:2008/03/09(日) 14:42:41 ID:Cu0DF2Ru0
>>469
すみません、ここにポストするときに書き損ねました。
ソースでは = になってます。

>>466
クラッシュさせているのは、このデータが NSArrayController 経由で
バインディングされている NSTableView のようなのですが、
よくわからないのは、データをセーブする前までは何ともないころです。

セーブ前とセーブ後で何かの状態が変わっているのだと思いますが、
セーブまわりは Core Data が自動的にやっている部分なので
何が起きているのか掴めません。
472名称未設定:2008/03/09(日) 17:41:30 ID:GY3Lgh9g0
>>471
ライブラリのApplication Supportフォルダにセーブデータが
あるからテキストエディタで開いて確認してみたら?
属性に一時を設定して保存されていないとかでは。
473名称未設定:2008/03/09(日) 21:08:06 ID:/Qh7Fzc50
>>471
484です
お話から類推するにcontextには問題なくて、
persistentStoreCoordinatorに問題があるのでしょう

SQLiteをxmlに変更してどうなるか見てみてはどうでしょうか?
474名称未設定:2008/03/09(日) 23:50:36 ID:EUKVyO1y0
クラス内でデータを保存しておきたくて、インスタンス変数を作ってそこに格納しました。
しかし、その変数にアクセスするためにインスタンスメソッドを呼ぶと、当たり前ですが初期化と
同時に変数のデータがリセットされてしまいました。
そこで、クラスメソッドにしてみましたが、これも当たり前ですがインスタンス変数には
アクセスできません。

アップルのObjective-Cのドキュメントを参照すると、
"インスタンス変数に対応する「クラス変数」はありません(中略)
クラスのすべてのインスタンスがデータを共有するには、何らかの外部変数が必要になります。"

とありますが、「何らかの外部変数」とはいったいどういう意味なのでしょうか。
static は推奨されないと書いてありました。

475名称未設定:2008/03/10(月) 00:31:42 ID:7PSG2vmy0
>>474
ドキュメントに書いて有る通り,クラスの外に変数が必要ということでしょ?
C++ の static メンバ変数とごっちゃにしてませんか?
C++ を理解しているなら Singleton を作って共有データを保持しとけば良いだけ.
476名称未設定:2008/03/10(月) 14:28:25 ID:DECUaAlT0
質問させて下さい

NSButtonCell のサブクラス MyButtonCell と、NSButton の サブクラス MyButton
からカスタムのボタンを作成しています。

MyButton のインスタンスを sizeToFIt した時に独自の大きさにしたいと考えています。
MyButton で sizeToFIt をオーバライドしてもいいのでしょうが、 MyButtonCell の何らかの
サイズ計算メソッドをオーバライドするのがより正しい方法と考えています。
MyButtonCell クラスで

- (NSRect)imageRectForBounds:(NSRect)theRect;
- (NSRect)titleRectForBounds:(NSRect)theRect;
- (NSRect)drawingRectForBounds:(NSRect)theRect;
- (NSSize)cellSize;
- (NSSize)cellSizeForBounds:(NSRect)aRect;

これらをオーバライドし、NSButtonCellとは異なる値を返してみたのですが、sizeToFIt の
結果にはまったく影響しませんでした。どのようにすべきでしょう?
477名称未設定:2008/03/10(月) 14:29:51 ID:DECUaAlT0
× オーバライド
◯ オーバーライド
478名称未設定:2008/03/10(月) 14:50:48 ID:DECUaAlT0
自己解決しましたです
(なんか最近2chで質問してしばらくすると自己解決する事が多いな・・・粘りが足りん)

上の方法でいいようです。
cellSize または cellSizeForBounds をオーバーライドすれば、sizeToFIt に影響してました。
MyButton をさらにサブクラス化していて、そこでの sizeToFIt のオーバーライドが
邪魔をしていただけでした。
479名称未設定:2008/03/10(月) 15:16:14 ID:NskRVeOH0
>>478
告白デバッグというやつだな。
480名称未設定:2008/03/10(月) 15:16:15 ID:PooR7Pns0
>>477
英語の発音をカタカナで書くのに間違いも正しいも無いだろう
481名称未設定:2008/03/10(月) 15:48:26 ID:48DvrBUu0
>>479
有言実行、かな。
482名称未設定:2008/03/10(月) 19:34:39 ID:GSP6fbie0
iPhoneSDKリリースでこのスレもさっぱりな人が大量発生の予感。
483名称未設定:2008/03/10(月) 20:43:42 ID:sqcI9fDe0
本当にさっぱりな人は、iPhone SDKって何?へぇそんなのもあるんだね
程度でここまで来ないと思われ。
少なくともCocoaってキーワードで検索しないんじゃね?
484名称未設定:2008/03/10(月) 20:59:40 ID:zuzCNJpg0
あらゆるものをiPhoneに移植しろと要求してくる馬鹿が大量発生するのは間違いない。
485名称未設定:2008/03/10(月) 22:25:34 ID:SgkU2d620
Xcode スレのほうが適切なのかもしれないですが、現状 Cocoa しか使っていないので
こちらでお聞きします。iPhone SDK に付属?しているという、Xcode 3.1 を使った方
いらっしゃったら、使用感をお聞かせ願えませんか?
486名称未設定:2008/03/10(月) 22:26:41 ID:8HoClUUJ0
>>474
>static は推奨されないと書いてありました。
すいませんがこの記述がある場所を教えてください。
487474:2008/03/10(月) 22:55:29 ID:sqcI9fDe0
>>475
おっしゃる通り、C++からのスイッチなので、混乱していますorz
もうちょっと研究してみます。

>>486
その記述は、私の誤読でしたorz すみません。
「static として宣言されていない外部変数を使用することもできますが、別々のオブジェクトにデータをカプセル化するには、静的な変数によって有効範囲を限定するほうが有効です」
の解釈を間違えてました。
488名称未設定:2008/03/10(月) 23:33:28 ID:oJZv+ycP0
>>485
グッと来る使用感になった。今すぐインストールするべき。
489名称未設定:2008/03/10(月) 23:36:50 ID:EUWBMSva0
>>485
3.1の新規プロジェクトとか見た目変わり過ぎワロタw
仕事で使ってる人には余計なストレスになるのでおすすめしない
490名称未設定:2008/03/10(月) 23:39:26 ID:EUWBMSva0
MightyMouseの下スクロールがきかなくなってるから
アイコン表示マジでイライラする
491名称未設定:2008/03/11(火) 00:24:00 ID:4wLW+73S0
>>488, 489
グッとくる使用感、ってどんなんですかw ゴテゴテした感じという事でしょうかね?
サブマシンに入れていじってみよう。どうもありがとうございました。
492名称未設定:2008/03/11(火) 00:40:00 ID:aQJCgUjF0
>>491
Release Note によると、3.0 を残したままでインストールすることも可能。

The default location for Xcode Developer Tools is /Developer. However, you
may install Xcode 3.1 on any volume in any location, and you can move or
rename the entire Developer directory after installation. The only
restriction is that the directory names of its subdirectories must not be
changed, nor moved within the developer directory; but the Developer
directory itself may be renamed and placed in any other directory or
volume, including servers and external drives.

This allows you to have multiple versions of Xcode tools installed on the
same system but running independently. The Xcode IDE will use the SDKs,
build tools, and auxiliary applications from the Developer directory it is
launched from whenever possible, rather than those from the root
system. To refer to those files in your own projects, use the new Relative
to Xcode Folder reference style, whose root path is $(DEVELOPER_DIR).


「新規」系メニューの改悪さえなければいい出来だと思うんだが…
493名称未設定:2008/03/11(火) 00:48:53 ID:4wLW+73S0
>>492
わぁ、どうもありがとうございます。共存可能なら、メインに入れるか…
494名称未設定:2008/03/11(火) 01:46:20 ID:Vh8rC2V30
え?3.1 ってMac用のCocoaアプリの開発にも
使えるってこと?
iPhoneとMacのXcodeって別物だと思ってた('A`)
495名称未設定:2008/03/11(火) 02:23:09 ID:EDetKQjU0
>>494
デフォルトのインストール先に入れると上書きされちゃうんじゃなかったかしら
ちなみにはっきりと「β」って書いてあるから仕事で使ってる人は別インストールを推奨
496名称未設定:2008/03/11(火) 03:19:44 ID:Ib5Wef5y0
ちょっとだれかさー作ってもらいたいものがあるんだけど
・ファインダーウィンドウのアイコン表示時(のみ)にアイコンとアイコンの
 スペースをダブルクリックすると、上(親ディレクトリ)の階層へ
・ファインダーウィンドウのタイトルをデフォルトでコマンドクリック
 (階層が表示される)
・windowsと同じようにバックスペース(delete キー)で上の階層へ

GPLで
あ、儲けたい人は儲けてどうぞ、需要の方は知りませんが
お願いします。
497名称未設定:2008/03/11(火) 08:31:02 ID:I553ZzBY0
>>494
XCode がかなり拡張されて、いろんな cpu に対して開発できるようになっただけだよ
かなり嘘だけど、64bit/32bit/ppc/intel だけじゃなくて、
iPhone 用にもコンパイルできるようになっただけだと思えばいいです

>>496
ふたつめは右クリックすればいいのでは?
ひとつめとみっつめは Unsanity が APE のレパード版を完成させれば
すぐできるはず。
498名称未設定:2008/03/11(火) 08:36:33 ID:I553ZzBY0
あと、階層行き来するのならカラムビューでいいのではと
個人的におもうんですが。
表示→パスバーを表示、でフルパスも下に表示できるし。
499名称未設定:2008/03/11(火) 15:17:26 ID:/IYxitYz0
iPhoneSDKやXcode3.1にはNDAがあるから
詳細を書いてはいけない希ガス
500名称未設定:2008/03/11(火) 18:27:29 ID:f8z1vQQ+0
Core Animation プログラミングガイド
ttp://developer.apple.com/jp/Documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html
サンプルのCore Animation Menuアプリケーション、ちょこちょこと手直しが必要なため
動かすのに苦労した。
動いたときはちょっとうれしかったので、プロジェクトをアップしときます。
ほしい人はどうぞ。
ttp://homepage2.nifty.com/pluto/CA_Menu.zip
501名称未設定:2008/03/11(火) 19:59:06 ID:Vh8rC2V30
>>500
もらった。ありがとう!!
502名称未設定:2008/03/11(火) 21:22:53 ID:CejYYiPS0
>>500
プロジェクトファイルをあげる時はビルドファイルを消した方がいいよ
まぁ光回線の世の中じゃあんま関係ないか

3.1の変更メモ(NDAに抵触しないよな?)
3.1でプロジェクトを作った時、StandardAboutPanelに作成者の名前が記載されない(アプリのアイコンと名称とバージョンのみ記載)
従来通りにするにはInfoPlist.stringsに
NSHumanReadableCopyright = " 文字列";
を自分で追加してやる必要がある。
503名称未設定:2008/03/11(火) 21:42:28 ID:7VENjfAw0
>>500

すげーな。これだけしか書かなくても動くのか。
504名称未設定:2008/03/11(火) 22:09:50 ID:wD84fN+S0
>>500
THANX
これだけで動くのか、すげ〜な。
505名称未設定:2008/03/11(火) 22:30:49 ID:TfmSl3dE0
>>502
ターゲットのクリーニングだけじゃだめなんですね。
アップし直しました。
506名称未設定:2008/03/11(火) 22:40:00 ID:TfmSl3dE0
>>500です。
背景はQuartz Composerのファイルなのでプログラムコードは書いていません。
ADCにあるCocoa Slideというサンプルから拝借したものです。
Coer AnimationはおろかCocoa自体勉強中なので、これだけで動くという
事がぴんと来ないですw
507名称未設定:2008/03/11(火) 22:56:33 ID:RBLAmCn20
あるある
508名称未設定:2008/03/11(火) 23:35:52 ID:I553ZzBY0
GC つかうと更に短くなる希ガス
509sage:2008/03/12(水) 09:01:59 ID:nqBscnd/O
NSScrollview内のコントロール(NSTextField)がアクティブになったタイミング
で、
自動的にそのコントロールが見えるようにスクロールさせる方法ってありますか?

実現させたいのは、以下のようなことです。
・NSScrollView内にNSTextFieldを5個置く。(名前はtextField#1,2,...とします)
 (このとき、一番下のTextField textField#5はNSScrollViewのスクロールバーを
動かさないと見えない位置にあります。)
・textField#1〜#5の順でtabキー遷移ができるように、nextKeyViewで接続する。
・アプリ実行後、textField#1をアクティブ(Iカーソルがあって編集できる状態)に
して、tabキーを数回押す。
・tabキーを押すごとに、 textField#1〜#5へと遷移する。

ここまではできましたが、以下のことができません。
・textField#5に遷移した段階で、自動的にスクロールが移動して、textField#5が見
えるようにする。

自分で調べたところでは、 autoscroll を使えばよさげな感じ、といったところまで
これたのですが、
それ以降はよくわかりませんでした。
できそうでできない状態で、歯がゆい思いです。orz
ご存じの方がいらっしゃいましたら、どうかご教授願います。


510509:2008/03/12(水) 09:03:52 ID:nqBscnd/O
orz
511名称未設定:2008/03/12(水) 09:40:29 ID:Q1HsIWk50
NSClipViewのScrolToPointで指定した座標までスクロールよ。
512名称未設定:2008/03/12(水) 11:59:00 ID:60uy/TBm0
NSButtonにsetKeyEquivalent:で矢印キー(NSLeftArrowFunctionKey)を設定、
実際に動かしてみると一度キーを押すだけで二度反応してしまうのですが
これは仕様なんでしょうか。
513名称未設定:2008/03/12(水) 19:45:22 ID:jZeE4+zn0
>>512
あ、それ俺もなった。
514名称未設定:2008/03/14(金) 15:04:07 ID:XQZPcYKG0
質問お願いします。
自作でポップアップするパネルを作りたいんですが、
(2ちゃんねるブラウザのスレ番ポップアップみたいな)
実装方法が分かりません。

タイトルバーのないパネルの作り方を教えてください。
よろしくお願いします。
515名称未設定:2008/03/14(金) 15:41:07 ID:L3H1Z/+J0
NSWindow* window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,128,128)
styleMask: NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];

ぐぐれば ToolTipWindow というコードがあるよ。
516名称未設定:2008/03/14(金) 17:13:03 ID:XQZPcYKG0
>>515
ありがとうございました。
とりあえずNSWindowとNSPanelのリファレンスは参照したんですが、
見落としていたようです。
517名称未設定:2008/03/14(金) 18:56:24 ID:7+f99PMo0
よく環境設定ウインドウでツールバーから設定カテゴリを選ぶと
項目の量に合わせてウインドウの大きさが変化するようなのがありますが、
あれはそれぞれのNSToolbarItemとかNSTabViewItemのidentifierごとに
コード内でウインドウサイズを決め打ちで保持しているんでしょうか?
518名称未設定:2008/03/14(金) 19:37:56 ID:FgGauQ6O0
>517
"DBPrefsWindowController"でググれ
519名称未設定:2008/03/14(金) 21:48:20 ID:7+f99PMo0
>>518
ありがとうございます。
なかなか面白そうですね、適当に弄ってみます。
520名称未設定:2008/03/15(土) 00:37:52 ID:dE2MmrEV0
>>416です
ひとまず、ttp://www.nicovideo.jp/watch/sm1859014 みたいなのを、
Core Animationを使って作って見ました。
ttp://homepage2.nifty.com/pluto/CA_Bounding.zip
200個に制限してありますが、クリックやドラッグでボールを沢山に増や
すと結構気持ち悪いです。ウィンドウはあまり大きくしない方が気持ち
悪いかもしれませんw

が、CAのアニメーション機能は使っていません。わざわざオフにしているくらいです。
別にCAを使わなくても良かったですね。onz

移動アニメーションが終わったタイミングで次の行き先を指定しなければならないけど、
それが分からなければちょっと難しそうです。
もしくは明示的なアニメーションで、開始と停止をコントロールしてやるか。
>>433さんが言うように、この手の動きにはCore Animationは向いていないような気が
してきました。

ちなみに、G4 1.67GHzだと100個くらいで目に見えてもたついてきます。

521名称未設定:2008/03/15(土) 01:29:29 ID:Ud88XN1T0
面白いね。銀のiMac 2GHz + Mem3GB + RADEON 2400で200個の状態でもたつきはありません。
522名称未設定:2008/03/15(土) 11:27:46 ID:Q2wKRYm50
>>520
確かに気持ち悪いですね。彼女に見せたら寝込んでしまいましたww
ソースですが、ボールクラスを作って自分の位置や形、色を保持しておくとプログラムが綺麗になりますよ。
あと、動きをコントロールするモーションコントローラーも別クラスにしておけば
動きを後から簡単に変更出来るようになります。
523名称未設定:2008/03/15(土) 13:45:30 ID:pgbuH1CZ0
SpriteWorldを思い出してしまった。
blitzの高速化のための巨大switch...w
524名称未設定:2008/03/15(土) 15:52:37 ID:psR/Irvj0
Cocoaバインディングについて質問させて下さい

NSTableViewとNSArrayControllerをCocoaバインディングするとテキストデータなどの管理・表示が
楽になりますが、扱うデータをアイコン付テキストなどのカスタムデータにすることは可能でしょうか?
通常カスタムデータはNSCellを継承して独自のクラスを作ってdrawInteriorWithFrameをオーバーライド
して描画すると思いますが、これをCocoaバインディングしたNSTableViewから呼ぶ方法はあるでしょうか?
525名称未設定:2008/03/15(土) 17:06:31 ID:isnlEsRm0
>>524
アイコン付テキストの場合にはCoreRecipesのように
NSAttributedStringをバインドするのが一番簡単でしょう。

一般的にはバインドできるオブジェクトはひとつだけなので、
アイコンとテキストのように複数のオブジェクトをバインドするには
NSDictionaryとかNSArrayの形でバインドすることになります。

モデルにアクセッサを書いて、NSCellのsetObjectValueを上書きすれば可能となります。
526名称未設定:2008/03/15(土) 19:01:29 ID:cF4/7CHf0
CoreData ってものがいまいちつかめないんですが。
モデルにあたる部分のコーディングを楽にするってことは分かるんですが。

たとえばAという配列とBという配列があって、Aの要素を一つBに移動したり、
交換したりといった動作は、コーディングなしでCoreDataで処理することが
できるんでしょうか。
527名称未設定:2008/03/15(土) 19:08:44 ID:en7em3SU0
>>524
IBのバインディングだけで完結させたいのか、そもそもNSTableView
のカラムに
アイコンつきテキストを表示させる方法が知りたいのかによりますが、
後者ならデータソースのクラスを作って対象のカラムをカスタムセルにして
処理を記述すればできます。
528名称未設定:2008/03/15(土) 19:48:13 ID:psR/Irvj0
>>524です
やりたいことはビットマップとテキストが混在したデータを一覧表示させることです
このデータ自体はディスク上のファイルにあります
このデータを表現する既存の型はないので独自のクラスに読み込んで
そのポインタをNSTableViewに渡して管理したいと思いました
で、管理はフレームワークに任せて描画するときだけ自前の処理で行えば効率的かと思いました
実際Windowsで同じものを作っていて、そこでは描画関数だけを書けば済んでいます

それで最初はいろいろ調べていて、NSCellとNSTableViewの両方をサブクラス化して必要な
メソッドをオーバライドすれば良いらしいと分かりました。しかし、それよりもCocoaバインディング
を使った方がデータの管理は効率的らしく、というかCocoaらしそうだったので>>524を書きました

どうもうまく説明できなくてすいません
その後もいろいろ調べていてこの場合はCocoaバインディング使わない方が手っ取り早いのかなと
思い始めました
529名称未設定:2008/03/15(土) 20:16:36 ID:dE2MmrEV0
>>512
200個で平気ですか。アニメーション機能は使っていないので、グラボより
CPUパワーの違いが出るんでしょうね。


>>522
彼女さんは元気になられたでしょうか(^-^;
アドバイスありがとうございます。手直ししてみます。

>>523
それ、どういうやつですか?
530名称未設定:2008/03/15(土) 21:30:05 ID:Ftzr6OvS0
>>528
テキストとビットマップを別のカラムに表示するってのじゃ駄目なのか?
531名称未設定:2008/03/15(土) 21:43:15 ID:psR/Irvj0
>>530
英単語を発音記号+ストレス符号付文字で表現したようなデータを一覧表示させたいんです
各セルごとに文字とビットマップがランダムに混在したデータが入るのでカラム別にはできないです
CocoaバインディングにこだわらなければNSCellとNSTableViewをサブクラス化すれば
書けそうなので明日その方向で試してみようかと思います
532名称未設定:2008/03/15(土) 21:50:40 ID:ouakLezg0
発音記号なら普通に Unicode にあるよ?
ビットマップをつかわないでも文字だけで済むとおもいます。
編集→特殊文字...
を開いてみてみてください。
533名称未設定:2008/03/15(土) 22:02:23 ID:psR/Irvj0
>>532
元データが独自にビットマップを持っていてそれに独自のIDが割り振られているので
どのビットマップがどの発音記号に該当するかは1つ1つ目で見て変換テーブルを作らない
とフォントに代替できないんです。また、アクセントの位置を符号化したビットマップとか
文字にはできない記号とかもあるんで...

というか要はアイコン付テキストと同じ考え方でアイコンの出現位置と数がテキスト内で
ランダムになるだけなのでそんなに難しい事ではないはずだと思います。どうもCocoa
バインディングにこだわりすぎて自分の中で難しくしてしまったみたいです
534名称未設定:2008/03/15(土) 22:32:14 ID:Ftzr6OvS0
>>533
それなら本質的な問題はNSTableViewのサブクラスで独自のビューを作ることだね。バインディングはその後考えればいい。
535名称未設定:2008/03/15(土) 22:42:06 ID:ouakLezg0
>>533
なるほど。

というか画像文字まじりのは NSAttributedString で出来るんでは?
まあ画像の積み上げとかやってるとだめだとおもいますが。
(発音記号の画像の上にアクセント記号の画像をおくとか。)

ただ、できるかぎりはフォントで済む部分は画像でなくてフォントにしたほうが
ソフトの出来上がりが綺麗になるとおもいます。
536名称未設定:2008/03/16(日) 00:10:26 ID:5qNs3rin0
>>533
とりあえず、NSCellのサブクラスを作り、-[NSCell objectValue]を参照しながら、文字と画像の混じりの描画を行う。
それを、-[NSTableView tableColumnWithIdentifier:@"hoge"]で取得したカラムに、-[NSTableColumn setDataCell:MyCell]とやってセットする。
あとは、テーブルカラムのvalueにバインドしてやれば、NSCellのobjectValueに「文字画像混じりオブジェクト」がセットされる。
という流れになると思うのだが。
537名称未設定:2008/03/16(日) 06:12:38 ID:nM97Vtir0
>>520
Core Animation をよく知らないけど、こういう壁で反射するだけの運動なら
壁といつ衝突するかは簡単に計算できる訳だから、それが始点と終点ということではないの?

いずれにせよ Core Animation が使いにくいなら、普通に(?) OpenGL とか?
大抵のOSで動くから、とりあえずサンプルはいろいろありそう。
538名称未設定:2008/03/16(日) 08:20:14 ID:abTCKw2t0
>>524です
昨日はたくさんの方からアドバイスいただきありがとうございました
今朝からいろいろ試してみたんですが、>>536さんのやり方でうまくいきそうです
CocoaバインディングしたNSArrayControllerはM-C-VのCにあたるものでMとVの橋渡しをしてくれるもので
Vの描画はデフォルトの動作になるだけなので描画自体はこちら側で自由にカスタマイズして構わないと分かりました
結果的にはAppControllerのawakeFromNibで
NSTableColumn* tableColumn = [myTableView tableColumnWithIdentifier:@"name"];
MyCell* my_cell = [[MyCell alloc] init]; //ガベージコレクションオンなのでautoreleaseはいれない
[tableColumn setDataCell:my_cell];
の3行を加えてやってあとはMyCellの
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView
メソッドを書くだけでうまくいきそうです
これなら当初考えていた描画だけは自前でやってデータ管理はフレームワークに任せてコーディング量を減らせることができます
みなさんありがとうございました
539名称未設定:2008/03/16(日) 08:56:09 ID:Ny1QM+Nx0
>>537
確かに壁の反射だけならCore Animationで大丈夫だけど、途中から他のオブジェクトが干渉する動きになってるじゃん
540名称未設定:2008/03/16(日) 11:13:04 ID:JE2IUdsR0
CATransactionを使うと、アニメーションを一時的にOFFにすることができます。

CALayerって、OpenGLのポリゴンとして実装されているっぽいので、OpenGLを直接使うよりは、CALayerを使った方が楽な気がします。

541名称未設定:2008/03/16(日) 11:21:18 ID:hMlWYnmk0
ファイルのアイコンを表示させる時に

NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"ファイルのパス"];
[iconImage setSize:NSMakeSize(16,16)];
[iconImage setScalesWhenResized:YES];

とやると、オリジナルファイルのアイコンまでリサイズされるのですか?
(されないとは思うのですが、なんか不安で^^;)


あと複数のビューで上記実装をすると、同じファイルのパスのアイコンを表示した時に落ちるのですが、

NSImage *iconImage = [[[NSWorkspace sharedWorkspace] iconForFile:@"ファイルのパス"] copy];
// 〜リサイズしてビューにiconImageをセットする処理
[iconImage release];

と書くと落ちませんが、この記述が正しいのかよくわかりません。
copyをretainにしてreleaseを書かなくてもうまく行きますが、消費メモリが増えるみたいです。



542名称未設定:2008/03/16(日) 15:41:11 ID:l9UoH/Od0
Core Data アプリで(ドキュメントベースじゃない方)、アプリを終了するとき
(データがセーブされるとき?)「(ある entity が持つ関連の名前)は有効ではありません。」
というアラートパネルが出てデータがセーブできません。

関連が「有効ではない」とは、どういう意味なのでしょうか。
どうすれば有効?にできるのでしょうか。
543名称未設定:2008/03/16(日) 21:37:41 ID:r765AxJR0
MVCのなんたるかを学ぶのに良いソースってありませんか?
ADCのチュートリアルでMVCそれぞれ一個ずつのパターンはわかったんですが
モデルやビューの数が増えた場合にコントローラをいくつ作るか、
どのように繋げるかといった部分がピンときません。
544名称未設定:2008/03/16(日) 21:48:11 ID:iJLWVTDd0
>>541
べつにアイコン本体はリサイズされません。その他の質問は、
retain / release をなにか間違っているのが原因だと思いますが、
もうすこしそのあたりのソースを書いてくれますか?
もしくはクラッシュしたときのスタックトレースとか。

545名称未設定:2008/03/16(日) 22:08:17 ID:FO/H1uNc0
>>541
なぜそれでクラッシュするのか
プロジェクトファイルを上げてみたらどうでしょう?
ちょうど自分もおととい同じくファイルのアイコン表示やってました。
546名称未設定:2008/03/16(日) 22:50:43 ID:JE2IUdsR0
>>543
ViewやModelの数が多くなると言う事は、それなりに規模の大きなアプリケーションであると想定されます。
そのようなものは、サンプルソースという形では、存在しないのではないかと思います。

Cocoaでは、nibファイルが1つのViewコンポーネントになります。
NSWindowControllerはnibファイルと1対1で対応しますので、nibファイルの数だけ作ってください。NSWindowControllerは常にnibファイルのfile's Ownerになります。
NSArrayControllerなどのNSControllerものは、nibファイル内に必要な数だけ設置してください。
Modelはいくつ存在しようと全てNSDocumentで管理します。そして、必要なものはView側から見えるようにアクセッサを書きましょう。
また、NSDocumentは同時にNSWindowControllerも管理しているため、ここでViewとModelがうまく繋がるようにしてください。

547名称未設定:2008/03/16(日) 22:54:19 ID:v0hBd3uH0
>>546
なんか、初めて知ることばっかりだw
コントローラとnibファイルが1対1で対応するなんて知らなかった('A`)
こういうことはAppleのドキュメントに書いてあるんでしょうか。
548名称未設定:2008/03/16(日) 23:35:58 ID:iJLWVTDd0
いや、べつに一対一にする必要もないと思うけど。
549名称未設定:2008/03/16(日) 23:47:41 ID:JE2IUdsR0
550名称未設定:2008/03/16(日) 23:59:19 ID:r765AxJR0
>>546
レスありがとうございます。
やっぱりそういうソースはなかなか無いですか。
いくつか有名なアプリのソース覗いてみましたが複雑過ぎてわかりませんでした。

NSWindowControllerのサブクラスを作るのとNSWindowそのもののサブクラスを作るのと
どう違うのかいまいちわかっていなかったんですが
NSWindowControllerが別nibファイルのFile's owerになることで
メインnibファイルからの橋渡し役になるといった感じなんでしょうか。
NSDocumentはまだ全く触れてないのでドキュメント読んでみます。
551名称未設定:2008/03/17(月) 01:14:49 ID:vHqE8yAu0
>>550
メインnibファイルって、MainMenu.nibの事ですよね?
MainMenu.nibには、その名のとおりメニューバーしかありません。小規模なアプリなら、そこにウインドウなど、もろもろを含めたりもしますが。
メニューバーは、言ってみれば階層化されたコマンドリストのようなもので、アプリ全体で共有するコマンド(アクション)を発行するだけの存在です。
そんな訳で、MVCのViewとは位置づけが違います。

NSWindowControllerが別nibファイルのFile's owerになることで、メインnibファイルからの橋渡し役になっている訳ではありません。

ドキュメント関連のメニューのTarget/Actionには、firstResponder宛のアクションを設定しておいて、
それを現在アクティブなウインドウを管理しているNSWindowControllerで受け取るようにしてください。

552名称未設定:2008/03/17(月) 01:29:26 ID:d3uQIIZr0
質問です。
ホットキーの処理をしようと思うのですが、
NSApplicationのsendEventで拾ったイベントを
NSApplicationのmainWindowで得られるウィンドウへ送りたいです。

しかし、アプリがactiveじゃないとmainWindowが返らないので
この辺りの処理は、自力でNSApplicationのwindowsあたりから
求めるしか無いのでしょうか?
553名称未設定:2008/03/17(月) 03:57:45 ID:YlVYmhb+0
常駐してキーイベントを取得したいってことでしょうか?
554名称未設定:2008/03/17(月) 04:51:06 ID:d3uQIIZr0
>>553
取得は出来てるんですが、それを、開いている最前面の(メイン)ウィンドウ
に送りたいんです。バックグランドの状態で
メインウィンドウを特定する方法ありますか?
555553:2008/03/17(月) 07:42:31 ID:ioyW7tx20
>>554
NSApplicatioinを見たら非アクティブ時はmainWindowを返さないって書いてありますね。
アプリが非アクティブになる時のノーティフィケーション NSApplicationWillResignActiveNotificationで
MyObjectにmainWindowを保持してやるのはどうでしょう?
それよりバックグラウンドでキーを取得する方法を教えてくださいw
556名称未設定:2008/03/17(月) 07:45:39 ID:JY9v+N3k0
Cocoa Hotkey
ぐぐれカス
557名称未設定:2008/03/17(月) 07:49:25 ID:ioyW7tx20
うわ、もう答えるのやめよ
558名称未設定:2008/03/17(月) 07:50:42 ID:Svvodx890
ぐぐれカスと言われただけで反応してしまう、そんなことでは
荒いインターネッツを渡っていけませんよ。
559名称未設定:2008/03/17(月) 08:05:22 ID:0SJ4dqDe0
ゆとりくせぇ
560名称未設定:2008/03/17(月) 08:24:58 ID:d3uQIIZr0
561名称未設定:2008/03/17(月) 21:27:55 ID:JRVvBDeU0
あーもうCocoaはまじでさっぱりだぜ
さっぱり過ぎてイライラしてきた

コーヒー飲んでくる
562名称未設定:2008/03/17(月) 21:54:15 ID:2j49Kzyi0
Javaもさっぱりw
563名称未設定:2008/03/17(月) 22:18:35 ID:0SJ4dqDe0
きれいさっぱりやめちまえ
564名称未設定:2008/03/17(月) 22:41:00 ID:Svvodx890
そういえば Cocoa はこってりしてるものであって
さっぱりというのは変だよね???
565名称未設定:2008/03/17(月) 22:59:50 ID:9LfCkT9Q0
日本語って難しいね
566名称未設定:2008/03/17(月) 23:13:53 ID:Qgm1wB6W0
Cocoaはやっぱり! からだと思うよ。
俺は、このスレ見たときちょっとウケた。
http://www.big.or.jp/~crane/cocoa/

そして、Cocoaはやっぱり! は、これかなやっぱり。
http://www.morinaga.co.jp/cocoa/milk/plagin/plagin.html
567名称未設定:2008/03/17(月) 23:42:41 ID:JRVvBDeU0
目的のアクションがFirst Responderのプロパティに無い
http://cocoawiki.aerial.st/?First%20Responder

やっと穴から抜け出せた
こんなん気付かないっての
568名称未設定:2008/03/18(火) 01:33:41 ID:0q7ZIMW90
First Responderは入門時のちょっとしたハードルだよね
解っちまえばなんて事はないんだが
569名称未設定:2008/03/18(火) 02:00:50 ID:EJDxaaux0
>>566
plaginって……。
570名称未設定:2008/03/18(火) 07:49:27 ID:Ka+Z8k+50
https://bugzilla.mozilla.org/show_bug.cgi?id=357670
もしかしてこのスレに解決できる人いたりする??
571名称未設定:2008/03/18(火) 23:42:19 ID:Pbz0L/oN0
>>544 >>545
遅くなりましたがレスありがとうございます。
クラッシュはコードミスのようでした。(retainせずにreleaseをかましていた)
572名称未設定:2008/03/19(水) 00:24:31 ID:2u7UcMMQ0
OS 10.5.2 Xcode3.1 IB3.1使用でwebKit.frameworkを使っています。
以前はIB上でwebViewを出しインスタンス化すれば、バインドするコントローラーの一覧にwebViewが表示され、
普通にバインディングできていたのですが、今はなぜかそれができなくなってしまっています。
バインドするコントローラーにwebViewがでなくなってしまっています。
どのようにすれば良いのでしょう、お助けください。
573名称未設定:2008/03/19(水) 01:06:49 ID:OxeGc8Ke0
>>570
それ Cocoa じゃなくて Carbon じゃね?

TSM まわりか... 大昔になんかやったな。
2.0で動いてるんならそのコードを3.0でも使えばいいとかそういう簡単な話じゃないのかね。
574名称未設定:2008/03/19(水) 03:51:26 ID:r5J3G60+0
モデルのインスタンス変数にビューをバインディングしている場合、
モデル自身がインスタンス変数を書き換える時に
_hoge = value;
だと変更がビューに適応されず、
[self setHoge:value];
だと適応されました。

バインディングに対応させつつ、外部から変更されたくない(-setHoge:を作りたくない)
インスタンス変数の場合はどのようにすればいいのでしょうか。
575名称未設定:2008/03/19(水) 07:32:40 ID:jXpGxGc90
>>574
Objective-C ではそんなことはできないです。
Binding 使ってる時点で外部から書き換えてるということだと思いますが ...
576名称未設定:2008/03/19(水) 07:58:38 ID:6SrUt3+f0
>>574
_hoge = value; の行を

[self willChangeValueForKey:@"hoge"];
[self didChangeValueForKey:@"hoge"];
ではさむ。
577名称未設定:2008/03/19(水) 11:59:14 ID:YsZYYm1u0
>>573
Firefox 2まではCarbon使ってたみたいなんだけど、
Firefox 3はCocoaベースらしい。
578名称未設定:2008/03/19(水) 12:40:52 ID:hNYu1h+e0
質問です。
アップルのDVDプレイヤーのコントローラのように引き出しを
開閉してボタン類を表示/非表示できるようにしたいのですが、
どのような実装方法があるでしょうか。
579名称未設定:2008/03/19(水) 13:51:57 ID:zCALDrQJ0
>>578
気合
580名称未設定:2008/03/19(水) 14:53:13 ID:LtiyT8bq0
>>578
気合いを入れながらグーグルで"cocoa drawer"と検索すると色々と出て来たけど。
これとは違うの?

不定形ウインドウでやりたいならば、もう少し気合いを入れてキーボードを叩くと
他にも出てくるかもよ。
581574:2008/03/19(水) 15:38:57 ID:r5J3G60+0
レスありがとうございます。

>>575
ネットワークからデータを継続的に受信(送信はできない)して
その状態を表示したかったのです。

>>576
おお、全く問題なくうまくいきました。
ありがとうございます。
582名称未設定:2008/03/19(水) 16:47:21 ID:hNYu1h+e0
>>578,>>579
なにかうまい方法はないかと思って質問しました。
とりあえず気合いと不定形ウィンドウで、全く同じ
外観・挙動を再現できました。
ありがとうございました。
583名称未設定:2008/03/19(水) 18:39:41 ID:TjSVC8tf0
追加したい機能がこれ以上無いのですが、
どうすればよろしいのでしょうか。

もちろんネタですよ^^
584名称未設定:2008/03/19(水) 19:55:37 ID:JPY96AeA0
>>583
最終バージョンを出して開発終了を宣言すればいいとおも
585名称未設定:2008/03/19(水) 20:11:32 ID:JM+VrnTM0
追加したい機能じゃなくて追加して欲しい機能をつければいいかと
586名称未設定:2008/03/19(水) 20:53:35 ID:QA0Ieyl10
そういえばDVD プレーヤーはCarbonアプリだよね?
587304:2008/03/19(水) 23:59:30 ID:cvsOWou+0
すいません質問させて下さい。

OptionキーのKeyUpを取得したいのですが方法はありませんでしょうか?

KeyDownに関しては
NSFlagsChangedで修飾キーのイベントを取得して
[theEvent modifierFlags] & NSAlternateKeyMask でOptionキーかどうかの判定はできています。

目的としてはOptionキーを押されている間のマウスイベントに対して処理をして
Optionキーが離されたでメソッドを発火させたいのです。

ご教授おねがいします。
588名称未設定:2008/03/20(木) 00:06:22 ID:jXpGxGc90
>>581
_hoge というインスタンス変数を作った段階で、
[obj setValue: ... forKey: @"hoge" ]
という KVC は出来る、というかそれがあるので Binding も働いているので、
setHoge: を書こうが書くまいが外部に _hoge はバレていると思うんですが。
589574:2008/03/20(木) 01:21:11 ID:ZJ4slusJ0
>>588
それについては+accessInstanceVariablesDirectlyでNOを返して、
アクセッサメソッドなしのキーはバインドできないようにしました。
590名称未設定:2008/03/20(木) 01:32:12 ID:xNm+fBqj0
NSMenuItemにアイコン(Resoucesに登録した)を表示させるのですが、
サブクラスでコードを書かずにI.Bのバインディングから表示させる方法はありますでしょうか?
バインディング項目に「image」があるのですが使い方がいまいちさっぱりで。


591名称未設定:2008/03/20(木) 14:27:54 ID:15Vd/Jbn0
考えた末にNSImageを返すメソッドを記述したクラスを作り、
インスタンス化してIBのバインディンクのキーパスにそのメソッドを書くようにしました。

新たなアイコンを表示させたい場合は、
前述のクラスにメソッドを追加してバインドさせる。

こんなローテクな方法でいいのかしらん。
592名称未設定:2008/03/20(木) 17:00:18 ID:2OwqXvN50
イメージが固定なのなら、インスペクタのバインディングじゃなくて
普通の設定画面のところで image を設定してしまえばいいんでは?
593かけだしCocoaプログラマー:2008/03/20(木) 22:24:31 ID:Nr+20M9t0
今日はHMDTの”Cocoaセミナーグラフィックス編”をやろうとおもったんだが…

http://imepita.jp/20080320/805070
594名称未設定:2008/03/20(木) 22:31:44 ID:vXaeiU1q0
>>593
ワロタ
595名称未設定:2008/03/21(金) 00:18:24 ID:2ArjEdd20
>>593
なんてこったいw
596名称未設定:2008/03/21(金) 00:51:07 ID:LX/gvIbU0
>>593
素敵だ
597名称未設定:2008/03/21(金) 01:28:36 ID:V8QBDzt90
>>593
アホスw
598名称未設定:2008/03/21(金) 01:57:35 ID:o5LRJLp00
>>593
それに気づいただけでなく、アップしてみんなに見せようという精神に惚れたwwww
599名称未設定:2008/03/21(金) 11:41:13 ID:kwhCZJGqP
>>587
CarbonのInstallApplicationEventHandler()でgEventRowKeyModifiersChangedな
イベントハンドラを登録する、ってところじゃないか。

あと「ご教示」の方が普通。
600名称未設定:2008/03/21(金) 12:09:55 ID:vJyPXVm30
>>599
CarbonっていうことはCですよね。
調べてみます。

ご教示ありがとうございました。
601名称未設定:2008/03/21(金) 16:43:56 ID:RYo3aYNz0
>>600
順応性高いなW
602名称未設定:2008/03/21(金) 16:55:44 ID:DNSgU9qe0
Document-BasedでWIndowのCloseをオーバーライドするときは
どこを変更するのが適切ですかね
603名称未設定:2008/03/21(金) 17:06:23 ID:JKoiaZjv0
すごく初歩的なことかも知れませんが、
[NSString stringWithFormat:@"???", hoge];
で数値hogeが一桁でも二桁でも二桁表示させるにはどうしたらいいでしょうか?
例えば数字が5の時は05と表示させたいのですが
604名称未設定:2008/03/21(金) 17:10:08 ID:JKoiaZjv0
すません自己解決しました
@"%.2d", intHoge でした
605名称未設定:2008/03/21(金) 18:35:18 ID:o5LRJLp00
CoreAnimation関係で質問お願いします。
あるアニメーションを実行後、そのアニメーションが終了後に、新たなアニメーションをさせる
方法を模索しているのですが、ヒントを下さい。

NSThread でやろうとしましたが、
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
で次のアニメーションまで待機させようとすると、あたりまえですが現在やっている
アニメーションもとまってしまいます。
606名称未設定:2008/03/21(金) 18:50:29 ID:RCdqjOKq0
>>605
CAAnimationのデリゲートにanimationDidStop:finished:あるよ
607名称未設定:2008/03/21(金) 19:09:38 ID:o5LRJLp00
>>606
早速的確なレス、ありがとうございました。
調べ方が足りなくて申し訳ないですorz
608名称未設定:2008/03/21(金) 19:24:17 ID:o5LRJLp00
ついでといってはなんなのですが、
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
のように完全に動作をとめてしまうのではなくて、
一定時間イベントループをまわしながら一定時間待機し、その後に次の処理を行うという方法はあるのでしょうか。
NSRunLoop関連をあさってみてもそれっぽいメソッドが見つかりません。
609名称未設定:2008/03/21(金) 20:00:57 ID:kwhCZJGqP
>>608
つ performSelector:withObject:afterDelay:
610名称未設定:2008/03/21(金) 20:10:04 ID:RCdqjOKq0
>>608
つ NSTimer
611かけだしCocoaプログラマー:2008/03/21(金) 20:12:31 ID:Or+ym4vS0
ちょっとした疑問を2つばかり質問させてください
くだらないですが

1.Cocoaでhogeに変わる代名詞みたいなのはないですか?
2.Webで配られてる各種ドキュメント、htmlとpdfがある場合皆さんはどちらで読みますか?(印刷という選択肢もあるかも)
612名称未設定:2008/03/21(金) 20:13:10 ID:Or+ym4vS0
あ、コテすんません。昨日は叩かれるかと思ったら
思いのほかの反響で気を良くしましたw
613名称未設定:2008/03/21(金) 20:20:50 ID:o5LRJLp00
>>609,610
まさに、こういう的確なメソッドがあるんですねorz

Cocoa入門したての者にとっては、オブジェクト指向や
Cocoaの流儀を身につけるという壁を通り越しても、
経験不足で必要なメソッドがどのクラスにあるのかを
探すのに一苦労です。
614名称未設定:2008/03/21(金) 21:25:58 ID:uufxW9uu0
メソッドが沢山ありすぎてみつからないのは
僕もいつまでたってもそうな気がします。
暇なときに、自分のいまやっているプログラムとは関係なくても、
色んなクラスのクラスリファレンスをざっと眺めて、どんなクラスに
どんな機能があるかを知っておくといいと思います。
615名称未設定:2008/03/21(金) 21:44:42 ID:RYo3aYNz0
入門したて+CoreAnimation=iPhonSDK ってところか?
616名称未設定:2008/03/22(土) 00:38:43 ID:U1zy9GEC0
>>615
いや、違います。ふつうのMac用の開発ですw
617名称未設定:2008/03/22(土) 12:14:12 ID:Cd3PC9Cy0
NSDateで年日時秒まで取得できますが、millisecondまで取得するにはどうしたらいいでしょうか?
618名称未設定:2008/03/22(土) 13:22:10 ID:lcpIJJHd0
>> 602
普通にwinodwのdelegateをNSDocumentサブクラスあたりに指定して
windowWillClose:, windowShouldClose:を実装すればいいんじゃないの?
もちっと言うと,NSDocumentは,ひとつのドキュメントが複数のウインドウ
(というかNSWindowController) を持つようなデザインもできるから,
ウインドウを閉じる==書類を閉じる,とは限らない。
だから,NSDocument自体にはウインドウを閉じることに対するメソッドはないのだと思う。
>> 617
確かに明示的なメソッドはないようだね。
NSTimeIntervalはdouble型だから,その少数部分を使うしかないのかな?
619名称未設定:2008/03/22(土) 13:46:58 ID:dAI5dUl90
620名称未設定:2008/03/22(土) 17:46:42 ID:DQfkC0HV0
カードゲームを作っているのですが、設計についてアドバイスを
いただきたいので、お願いします。

作っているカードゲームは、数十枚のカードで構成されたデッキ
を使います。デッキに含まれるカードは手札・墓地などに移動する
ことがあります。カードの数が多いので、NSArray で管理したいと
思っています。また、Viewに関しては一枚一枚のカードを1対1で
CoreAnimation のレイヤーに対応させて表示することにします。

まず考えた設計が、デッキ・手札・墓地などにそれぞれの配列を
用意し、たとえばデッキから手札にカードが移動する場合は、
デッキの配列から要素をひとつ手札の配列にもっていく
というようなものです。
しかし、ViewであるCoreAnimation レイヤーを
一枚一枚のカードに1対1で対応させたいのですが、この設計だとViewが
一枚一枚のカードを追えなくなるという問題があります。


そこで、全てのカードをひとつの配列にいれ、それぞれのカードについて
「デッキ・手札・墓地のうちどこに存在するのか」という情報を
持たせ、View (CoreAnimation) がその情報を問い合わせて、
存在する場所に応じてレイヤーの表示位置を決める
(たとえばあるカードが墓地にあるという情報をもらったら、墓地のある
場所にそのカードのレイヤーを動かす)という設計を考えました。
この方法は、デッキや手札の枚数を数えるのが面倒というような問題が
あります。

どっちもどっちという設計なのですが、どんなことでも良いので、
何かアイディアがありましたらご教示お願いします。
621名称未設定:2008/03/22(土) 18:12:02 ID:j0dJ8sd10
こんな感じではどうだろう

カードに相当するオブジェクト(のサブクラス)を作り、
そのクラスのインスタンスをカードの数だけ作成する。
インスタンス自体が、自分のステイタス(どの場所にいるかなど)を管理する。
また、このインスタンスが、自らのステイタスの変更に応じて自分自身のアニメーションを管理。

さらに全部のカードを管理する管理手段を用意する。(NSArrayそのものよりも、全カードが登録されたNSArrayを有する
NSObject のサブクラス…例えばsharedCardController みたいな感じで作る。)

ある特定条件(あるプレイヤーの手札等)に合致するカード群を得たいときには、sharedCardController に問い合わせ、
NSArray から抽出されたカード群を得るようにする。

NSArray から特定条件のオブジェクト(カード)を抽出するには、filteredArrayUsingPredicate を使えば簡単。
622名称未設定:2008/03/22(土) 20:45:23 ID:osUpCFYp0
>>620
配列で考えてしまうのは手続き型プログラミングに慣れた人の悪い癖かな。
>>621のように個々のオブジェクトを作り動作をするようにしないと
(特にゲームでは)大変になるよ。
623620:2008/03/22(土) 22:10:33 ID:U1zy9GEC0
>>621
>>622さんのおっしゃる通り、今まで手続き型言語で
やっていたので、本当に目から鱗です。
ありがとうございました。参考になりました

カードの情報はNSDictionary で持つというのがオーソドックス
でしょうか。
624名称未設定:2008/03/22(土) 22:15:33 ID:RY2IPzvt0
Dictionary でもいいけど、小さなクラスを自分で書いても良いかも知れません。
625名称未設定:2008/03/23(日) 14:18:56 ID:aM2iHDIs0
>>619
ありがとうございます!できました。
626名称未設定:2008/03/23(日) 17:10:46 ID:WzjVZI4V0
最近導入されたガベージコレクションって特定のポインタだけコレクションから除外することって
できないんでしょうか?
627名称未設定:2008/03/23(日) 17:38:04 ID:XbjPbT2T0
>>626
staticにして参照を持続させればいいんじゃない?
628名称未設定:2008/03/23(日) 20:05:13 ID:8E4Zc9S+0
テキストを編集し終えたら(リターンキーで)特定の処理をし、次のTextFieldにフォーカスを移したいのですが…
以下のようにNSTextFieldのサブクラスとして書くと、フォーカスは移るのですが
フォーカスリングが残留…

- (void)textDidEndEditing:(NSNotification*)aNotification
{
(処理)
[super textDidEndEditing: aNotification];
[myWindow makeFirstResponder: nextField];
}

逆にこう書くと、フォーカスリングが移らない…
- (void)textDidEndEditing:(NSNotification*)aNotification
{
(処理)
[myWindow makeFirstResponder: nextField];
[super textDidEndEditing: aNotification];
}

フォーカスリングを奇麗さっぱり消し去って、次のテキストフィールドに気持ちよくフォーカスを移す
方法はあるのでしょうか。
629名称未設定:2008/03/23(日) 20:11:29 ID:IRBC2lH20
>>626
-[NSGarbageCollector disableCollectorForPointer:]
630名称未設定:2008/03/23(日) 20:33:46 ID:ZtRxy6bU0
>>628
[myWindow performSelector:@selector(makeFirstResponder:)
withObject:nextField
afterDelay:0.0];
使った事無いけど、これで少しだけフォーカスを動かすのを遅らせて実行してみるのは
どうでしょう?
631名称未設定:2008/03/23(日) 20:48:30 ID:WzjVZI4V0
>>629
どうもありがとうございます
632名称未設定:2008/03/23(日) 20:54:50 ID:PZymx9F80
みんなGC使っているの?
Cocoa-Javaであったような変なバグはなさそうですか?
633名称未設定:2008/03/24(月) 01:03:50 ID:WyrRZb9k0
>>630
おおおおおおおおおおっ!
なんと目から鱗…確かにこれでできる。
ありがとうございましたm(..)m
634名称未設定:2008/03/24(月) 04:23:51 ID:tx+hpjrD0
処理の最後に
[myWindow display];
とかでは駄目なんですかね。試してないけど。
635名称未設定:2008/03/24(月) 10:29:47 ID:30sON1PI0
デバッグ用に入れてたNSLog(@"ほげほげ");みたいなのを消し忘れて
配布してしまったら客先でもこのメッセージ見ることできちゃうでしょうか?
636名称未設定:2008/03/24(月) 10:35:00 ID:7gxHf5/+0
はい
637名称未設定:2008/03/24(月) 10:42:04 ID:30sON1PI0
向こうが開発ツールインストールしてなければ大丈夫でしょうか?
638名称未設定:2008/03/24(月) 10:57:34 ID:6M+LSOMP0
>>637
アプリケーション>ユーティリティ>コンソールで見れそうな気がする
試してないからわからんが
639名称未設定:2008/03/24(月) 11:06:46 ID:e9YAvDG20
たしかにコンソールで出力みれるね。
640名称未設定:2008/03/24(月) 11:07:21 ID:ORYHapWU0
Framworkの作り方とかIBのパレットの作り方を解説してるサイトはありませんか?
日本語ならなお良いのですが、、
641名称未設定:2008/03/24(月) 11:08:25 ID:30sON1PI0
ほんとだ、しかも起動していない間のも全部表示される...
642名称未設定:2008/03/24(月) 11:32:39 ID:7gxHf5/+0
>>641
ありえないから(w
643名称未設定:2008/03/24(月) 11:41:02 ID:30sON1PI0
>>642
コンソール.appを起動していない時に別のアプリがNSLog()で出力したメッセージを
後からコンソール.appを起動して見ることができるっていう意味です
コンソール.appを起動してみるとクラッシュレポーターとかソフトウェアアップデートのログとか見れますよ
644名称未設定:2008/03/24(月) 11:44:57 ID:7gxHf5/+0
consoleとかsyslogの仕組みが分かってなかったのか。

コンソール.appはログファイルの閲覧ソフトで、
実際のログは各アプリ等が随時ログファイルに出力してるんだよ。
コンソール.appがログを収集してるわけではないです。
645名称未設定:2008/03/24(月) 11:51:02 ID:PQmKZTnh0
ID:30sON1PI0は別に勘違いしてるようには見えないが
646名称未設定:2008/03/24(月) 11:54:54 ID:yq2FKLng0
>>640
http://www.bignerdranch.com/palettes/index.html
http://wwwa.dcns.ne.jp/~nito/OSPT/Palette.html
ここらへんか?
IB3からはがらりと変わるが、考え方は同じ。
647名称未設定:2008/03/25(火) 00:20:14 ID:oGnMEO7s0
>>643
誰でも知っとるがなw
648名称未設定:2008/03/25(火) 00:47:43 ID:xIvc7Wix0
>>642が訳わからん対応したからだろう
いちいち人を見下したい人間が多くてかなわんなここは
649名称未設定:2008/03/25(火) 01:13:10 ID:orjrxt6j0
Xcode 3.1betaだけどさ、新規プロジェクト作製でRegacy Appのためのプロジェクトがリストから無くなったような?
650名称未設定:2008/03/25(火) 01:30:36 ID:ws66GuJV0
俺は>>642>>644の対応の意図は分かるがなぁ。
結果的に捉え違いだっただけであって、そう受け取るのも無理はない。
見下したことになっててカワイソス
651名称未設定:2008/03/25(火) 08:33:45 ID:j9yfRVIu0
俺も捉え違えてて何言ってるんだろう、、て思った
652名称未設定:2008/03/25(火) 09:02:57 ID:N/b8Flu70
>>642のとらえ違いを>>643で説明されて一件落着にすればよかったものを
気恥ずかしさのせいか自分のとらえ違いを認められずに>>644で相手を無知だ
とバカにしてごまかして終わろうとしたのがセコイ
653名称未設定:2008/03/25(火) 09:10:05 ID:CPjelZsm0
ここらで終わりにしようか単発IDさん
654名称未設定:2008/03/25(火) 09:28:20 ID:N/b8Flu70
気に入らない書き込みが複数あると1人がいろいろなIPで自演してるように思いたく
なることってあるよねw
655名称未設定:2008/03/25(火) 11:23:44 ID:GULb0EbA0
質問お願いします。
ふつう、乱数を発生させるとき、Cの関数を使って

int hoge;
srand(time(nil)); //時刻により乱数を初期化
hoge = rand() %x;

とやりますよね。この方法で乱数を発生させてログを出力すると、
こんなふうになりました。

2008-03-25 11:20:56.587 6
2008-03-25 11:20:56.827 6
2008-03-25 11:20:57.027 1
2008-03-25 11:20:57.187 1
2008-03-25 11:20:57.803 1
2008-03-25 11:20:57.963 1
2008-03-25 11:20:58.107 2
2008-03-25 11:20:58.267 2
2008-03-25 11:20:58.595 2
2008-03-25 11:20:58.755 2

明らかに、秒が変わるまでは同じ値が発生してしまいます。
Cocoaできちんとした乱数を発生させるメソッドなどは
存在するのでしょうか?

656名称未設定:2008/03/25(火) 11:24:12 ID:NL8rB6oh0
他所でやれ、このうすらハゲ
657名称未設定:2008/03/25(火) 11:27:02 ID:nKQFEaaU0
srandでシードを毎回初期化してたら
種が同じ以上同じ結果が出ると思うんだけど
658名称未設定:2008/03/25(火) 11:31:15 ID:GULb0EbA0
>>657
あ、確かにそうでしたorz
修正してみます。ありがとうございます。
659名称未設定:2008/03/25(火) 11:59:22 ID:ccV76MEE0
乱数を何に使うか知らないけど,数値計算に使うなら
メルセンヌツイスターを使う方がよい.
660名称未設定:2008/03/25(火) 12:08:36 ID:GULb0EbA0
>>659
サイコロを振る機能のために使います。
統計的に正しく目がでるのが目標です。
メルセンスツイスターについては調べてみます。ありがとうございました。
661名称未設定:2008/03/25(火) 13:26:07 ID:hfM3EUe40
メルセンヌツイスター

相手は死ぬ
662名称未設定:2008/03/25(火) 15:47:14 ID:1Dtues1N0
ダイスを作成するのに
hoge = rand() %x;
するのはカルドセプトサーガのプログラマー並みの阿呆のすること。
もしかしたらOSX(=FreeBSD?)のrand(3)は下位ビットまでランダムかもしらんが。
663名称未設定:2008/03/25(火) 16:10:05 ID:Y5ONulS70
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/srand.3.html
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/random.3.html

とりあえずこのへん参照。
rand() は精度がわるいから、random() をつかえということに
OS X ではなってます。というか BSD の時点で。
664名称未設定:2008/03/25(火) 16:21:39 ID:5/YrTxQU0
man -a rand
bad random number generator

man 3 random
better random number generator

...man 3 RANDだと出ないし、man 3 randだと違うのが出る。
RAND(3)はどうすりゃ一発ででるんだろ。
665名称未設定:2008/03/25(火) 17:25:18 ID:Y5ONulS70
man 3 srand

666名称未設定:2008/03/25(火) 23:09:58 ID:XBnGiDPv0
>>646
遅くなりました、ありがとうございます。今必死に英語を読んでいます。

整数値のランダムはScreenSaver.frameworkにSSRandomIntBetweenというのがありますよ
667名称未設定:2008/03/25(火) 23:15:56 ID:WxYsW0/Z0
Hello Worldが終わって、次はサイコロでも作ろうと
NSRandomなんちゃらがあるんだろうとリファレンスを探しまくった日々……
668名称未設定:2008/03/26(水) 01:56:25 ID:Fh3watAI0
どなたか教えてください。
これからCocoaを勉強しようと思うのですが、先に身につけておいた方が良い知識には何が有るでしょうか?
スレをざっと読んだところではC言語くらい出来てないと駄目みたいな印象を受けるのですが・・・。
C言語もどこまで理解できればいいのやら・・・。
ちなみにプログラミングの経験は全くのゼロです。
669名称未設定:2008/03/26(水) 02:05:52 ID:TRoZfAHo0
>>668
下手に寄り道するよりこれを嫁。
「たのしいcocoaプログラミング」に匹敵すると俺は思う
http://homepage.mac.com/nsekine/SYW/SYWSoft/learnCocoa/bexcoder.html
670名称未設定:2008/03/26(水) 02:07:26 ID:BjCvcuqh0
(自分で見てみて)スーパー簡単そうなC言語入門本を買って
それなりにやったらCocoaをやるべし
Cocoa本はたのしいCocoaでいいんじゃまいか
671名称未設定:2008/03/26(水) 04:02:26 ID:uEjN//nU0
>>662-667
ありがとうございました。
いただいた情報をもとにさらに勉強します。

672名称未設定:2008/03/26(水) 09:44:43 ID:Lf3LYf5Y0
うーむ、プログラミング知識なしでいきなりココアかいな。
変数とか配列とかの基礎知識もないまま突入すると玉砕しそう。
強烈に作りたい何かがないと大変かな。

がんばれ。
673名称未設定:2008/03/26(水) 10:05:53 ID:4f6bzT0P0
>強烈に作りたい何かがないと大変かな。

でもこれに勝るものはないよな〜
674名称未設定:2008/03/26(水) 12:20:29 ID:Dus3Jm7g0
自分は一応Java,Javascript,Perl,Applescriptはできるんだが
なんかObjective-CとかCocoaって難しそうなイメージがある
675名称未設定:2008/03/26(水) 13:14:03 ID:TRoZfAHo0
>>672
最近の教本はその辺も比較的手厚いよ
676名称未設定:2008/03/26(水) 13:25:53 ID:YaGvBisq0
>>674
それだけ出来るんだったら Obj-C は何も問題ないと思うが。
メモリ管理もレパードで GC まかせにできるようになったし。
677名称未設定:2008/03/26(水) 13:51:27 ID:V0uK7QIb0
Java がわかって Obj-C がわからんことは絶対にないよね
678名称未設定:2008/03/26(水) 14:33:33 ID:Dus3Jm7g0
>>676-677
そうなのか…
がんばってみようかな
CocoaはなんかInterface Builderが壁になってる
バインディングとかよくわからなくて
けど慣れたらこれ便利なんだろうなぁ
679名称未設定:2008/03/26(水) 14:37:43 ID:ZvLGgE/d0
>>677
だな.そもそも言語の系統が
Smalltalk -> Objective-C -> Java
だもんな.
680名称未設定:2008/03/26(水) 15:29:22 ID:29Rhmany0
>>678
IBの操作なら(それ以外もだけど)、↓のCocoaセミナーが参考になるよ。
ttp://developer.apple.com/jp/documentation/japanese.html
681名称未設定:2008/03/26(水) 15:36:57 ID:Dus3Jm7g0
>>680
ありがとうございます。見てみます。
682名称未設定:2008/03/26(水) 16:04:05 ID:Dus3Jm7g0
[AdsenseWebView takeStringURLFrom:@"http://google.com/"];
は無理か…
WebViewにページを表示させるにはどうしたらいいんだろ
683名称未設定:2008/03/26(水) 17:03:20 ID:/nMcS7mv0
IB起因のバグはエラー表示みてもピント来ないから困る。
その辺どうにかならないかなぁ。
684名称未設定:2008/03/26(水) 17:32:14 ID:29Rhmany0
>>683
Objective-Cのダイナミズムに由来するものでしょ。慣れるしか。
685名称未設定:2008/03/26(水) 19:30:02 ID:ltBg2xNg0
バインディング名が間違ってたりすると、間違っている箇所を探すのが困難。
バインディング設定のコピーが困難。
686名称未設定:2008/03/26(水) 19:53:42 ID:Dus3Jm7g0
どうしよ
挫折しそうだorz

>>682について
いろいろググってWebViewからURLを取得する方法はわかったが指定したURLをWebViewに表示する方法がわからんorz
WebViewあきらめて他いろいろ試すかな…
687名称未設定:2008/03/26(水) 20:01:31 ID:YaGvBisq0
http://developer.apple.com/documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html

setMainFrameURL: では?
ググるよりなにより ADC のレファレンスを読もうね。
688名称未設定:2008/03/26(水) 20:02:44 ID:9uCTvEbf0
>>686
>指定したURLをWebViewに表示する方法

setMainFrameURLでできるんじゃないかな?
689名称未設定:2008/03/26(水) 20:05:05 ID:Dus3Jm7g0
>>687-688
ありがとうございますm(_ _)m
リファレンス英語だからと避けてましたがやっぱり読まないとだめか…
690名称未設定:2008/03/26(水) 20:16:59 ID:fmlM2gNgO
Macで開発するのに英語は不可避。
691名称未設定:2008/03/26(水) 20:45:59 ID:pRYgUDTv0
>>685
禿堂
バインディングのエラーは本当に頭が痛い
おかしい場所を探し当てるのにものすごく苦労する
MVCという意味ではバインディングを使った方がいいと思うが、
生産性に関しては、使わない方が良い気がしてる
692668:2008/03/26(水) 20:52:43 ID:V4kJA3iF0
>>669
>>670
助言ありがとうございます。
色々やってみようとおもいます。

>>672
自分用にカスタマイズしたメモ帳が作りたくて・・・。
頑張ります。
693名称未設定:2008/03/26(水) 20:54:46 ID:q+vNZ+gQ0
バインディングは結構慣れだよ。最初のうちはわからずに色々バインディングしたくなるけど、下手にバインディングすると逆に動かないから気をつけた方がいいよ。
694名称未設定:2008/03/26(水) 20:58:18 ID:fmlM2gNgO
生産性を上げる(定型的な繋ぎコードを書く時間を他のことに使う)ためのものなんだけどな。
695691:2008/03/26(水) 21:07:39 ID:pRYgUDTv0
>>694
「生産性」にはデバッグのし易さも含まれる。

繋ぎコードを書く時間 > バインディングのデバッグ時間
とは限らない。

むしろ逆のケースが多いと思っている。
696名称未設定:2008/03/27(木) 16:57:28 ID:2lU4qwrN0
cocoaで内部的にIB actionのメソッドを叩くことがあるけど、
そのメソッドがsenderを使う場合と、無視してる場合がある。

やっぱり呼び出し元でsenderも一応用意した方がいいんでしょうかね?
それとも気にしないで、適当なobjectでも渡しておきますか。
697名称未設定:2008/03/27(木) 17:51:32 ID:hJlJV+s30
sender情報がいらないならnilでも渡しとけば。
698名称未設定:2008/03/27(木) 21:38:35 ID:xrWakgsG0
便乗ですみませんが、>>696のように内部のメソッドで
senderに値(intやstring)をセットするにはどうすればよいのでしょうか。
699名称未設定:2008/03/27(木) 21:51:30 ID:lMYLREM30
intならNSNumber使うよろし
stringって?
700名称未設定:2008/03/27(木) 22:34:45 ID:a+jkObxj0
std::string とか?

NSString* なら id にそのまま渡せるけど、
IBAction の sender にそのまま NSString を渡すのはなにか変な気がする
701名称未設定:2008/03/27(木) 23:02:48 ID:qJBldE3u0
NSStringなら渡せるべ
702名称未設定:2008/03/28(金) 00:22:48 ID:Q/pibkmJ0
とりあえずselfを渡しとけばいいんでないかい?
インスタンス変数の取得や変更はアクセッサで対応。
703名称未設定:2008/03/28(金) 20:14:06 ID:UD2Wl/tj0
具体的なコードがさっぱりなんです。
例えば複数の変数を渡したい場合とか(辞書にして渡すんですかね)。
704名称未設定:2008/03/28(金) 20:24:05 ID:7FojMQQe0
それは Obj-C 一般の問題?
それとも本当に IBAction に複数変数を渡したいばあい?
前者ならとりあえず
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html
を読むこと。
後者なら ... う〜ん、IBAction はそういうことにつかうものではないので、
別の方法を考えてください。
705名称未設定:2008/03/28(金) 21:05:06 ID:Q/pibkmJ0
>>703
具体的な質問をしない→具体的な回答が得られない→具体的なコードがサッパリ

のループ
706名称未設定:2008/03/28(金) 23:47:16 ID:HRFh0B/+0
ここでデルフォイの神託↓
707名称未設定:2008/03/29(土) 17:59:44 ID:pthSyDXZ0
すいませんちょっと教えてください
サンプルソースコードを見ていたら#pragma markという行がありました
デフォルトで茶色く表示されていて、特に意味はないというかコメントアウトされている
ようにも見えます。#からはじめると茶色いコードになるのですが、これはどういう文法なんでしょう。
708名称未設定:2008/03/29(土) 18:06:29 ID:tFrxc/KV0
Xcode のエディタ画面の中で、ツールバーと本文との間に細いバーがあるでしょ。
そこのポップアップ中に見出しが付きます。
709名称未設定:2008/03/29(土) 18:42:33 ID:pthSyDXZ0
>>708
本当だ…ありがとうございます。
これは名前はpragma markで良いんでしょうか?自力で調べた際、マニュアル、googleなどを
検索したのですが引っかかってくれませんでした。自力で調べるにはどういう所を見たら良かったのでしょう…
710名称未設定:2008/03/29(土) 20:07:40 ID:u+FJ7Dui0
c言語の仕様の方を調べた方が良いかと。
"C言語 pragma"で出てくるけど?
711名称未設定:2008/03/29(土) 20:46:49 ID:pthSyDXZ0
>>710
Cのほうだったんですね
pragma markで調べたのがいけなかったみたいです。もっと
検索結果を辿るようにしますね
712名称未設定:2008/03/29(土) 23:07:22 ID:fh2Kw5/j0
#pragmaってのはCのコンパイラディレクティブで、その中身についてはCの仕様では定められていない(C99除く)ので、コンパイラなどの開発者が自由に使える。
で、#pragma markってのはXcodeでコードナビゲートのために使われるようになってる。

今気づいたんだけど、CotEditorも#pragma mark認識してくれるんだね。
713名称未設定:2008/03/29(土) 23:19:36 ID:ybcJXnIv0
Xcodeでは見えないのですが、他のエディターで開いたら
キャラクターコード0X0Bの文字?がちらほら点在していました。

別に害は無さそうなのですが気持ち悪いので置換で消していきました。

これは何なのでしょうか?
714名称未設定:2008/03/29(土) 23:36:13 ID:nkexAG6m0
#pragma mark ってCodeWarriorのときから使ってたから一般的なのもだと思ってた。
昔はメニューのセパレートアイテムがキャプションが-の普通のメニューアイテムだったから、
#pragma mark -
もためらいもなく使ってたし。
715名称未設定:2008/03/30(日) 17:16:10 ID:u8YBSmaQ0
質問させてください。
CoreAnimation のレイヤーをマウスでクリックしたりドラッグしたりと
いったマウスイベントをつかまえるには、どのような実装方法がある
でしょうか。

Apple のドキュメントや、GeekBoardGame というApple のサンプルコードを
のぞいてみましたが、どうしても分かりません。
よろしくお願いします。
716名称未設定:2008/03/30(日) 22:05:17 ID:2sWOwdrZ0
Core Data アプリ(non document based)で、あるエンティティの属性 (double)
の値を変えたとき、テーブルに表示中のその値はアップデートされているのですが、
一旦アプリを終了して再び立ち上げると、その値がアップデート前の値に戻って
います。

non document based でテンプレート通りなので、アプリ終了時に変更があった
オブジェクトが save されているはずと思うのですが(NSSQLiteStoreType)、
特にエラーメッセージも出ずに終了しているにも関わらず、上記の現象が起きます。

アプリ終了前にメニューから save をしても同じです。

エラーメッセージも無いので、どこをどう調べれば良いのか見当がつきません。
同じような現象が起きた方はいるでしょうか。
717名称未設定:2008/03/30(日) 22:18:28 ID:czG3gy6y0
単に property が transcient になっているのでは?
718716:2008/03/30(日) 22:28:45 ID:2sWOwdrZ0
transient ではないです。
transient だとアップデートする以前の値も無くなりますが、
最初にオブジェクトを作成して値を設定したときの値は残っています。
719名称未設定:2008/03/30(日) 22:29:07 ID:P6vlUqGx0
終了する前にアレイコントローラーの中身をログにダンプするとか。
720716:2008/03/30(日) 22:34:09 ID:2sWOwdrZ0
アレイコントローラの中身はテーブルに表示しているので、
アレイコントローラーの中(というか managedObjectContext の中)は
アップデートされていると思うのですが、それを SQLite にセーブして
くれてないような気がします。

アップデートした mangedObject の isUpdated は、アップデート後に
ちゃんと YES になっているのですが‥
721716:2008/03/31(月) 10:17:28 ID:HMoNdkog0
716=720です。
720 の isUpdated は、YES ではなく NO でした。失礼しました。

いろいろ試したところ、

アップデートしたい NSManagedObject * = UpdatingObject
アップデートしたい属性 = attrName
アップデート後の値 = newValue として、

[UpdatingObject setValue: newValue forKey: @"attrName"];

とすると、[UpdatingObject isUpdated] = NO で 716 の不具合が起き、

[UpdatingObject willChangeValueForKey: @"attrName"];
[UpdatingObject setValue: newValue forKey: @"attrName"];
[UpdatingObject didChangeValueForKey: @"attrName"];

とすると、[UpdatingObject isUpdated] = YES で動作するようになりました。

ただ、[UpdatingObject setValue: newValue forKey: @"attrName"];
だけではダメな理由がわかりません。
722名称未設定:2008/03/31(月) 12:49:08 ID:tw5a8Ttq0
>>721
>アップデートしたい NSManagedObject * = UpdatingObject

データモデルを作成すると、Xcodeのファイル作成メニューから
設計ー管理オブジェクトクラスというファイルが作成できる
ようになる。
ここからクラスファイル(MyUpdatingObject.m/.h)を作成すると
アクセッサを自動生成してくれる。中身は>>721の記述通り。
MyUpdatingObject *UpdatingObject;

[UpdatingObject setAttrName:newValue];

って感じで記述できるよ。
なんでか?Managedだからじゃねーかな。

723名称未設定:2008/03/31(月) 22:49:48 ID:rGDOmSZV0
サーバーの自作cgi(リクエストを受けると文字列を返す)と連携してリクエストをなげ、
受け取ったらローカルのファイルに書き出すとか簡単にできてしまいのですが、
危なくないですか?

こういうことをしないのは暗黙の了解というか作者の善意を信じるしかないのかな。
724名称未設定:2008/03/31(月) 23:06:51 ID:p7HEBNDt0
>>723
誤爆?
725名称未設定:2008/04/01(火) 19:22:21 ID:GBWhnfph0
いや、誤爆でもないんですけど。
そういう悪さが簡単に作れるなあと。
ファイルマネージャとか使えばさっくり消すこととか出来そうだし。
726名称未設定:2008/04/01(火) 20:12:11 ID:Yn+xP8iA0
???
そもそも Cocoa と関係ないし。ファイルマネージャって何?
旧 Mac の Toolbox の File Manager のことを言ってる?
727名称未設定:2008/04/01(火) 21:53:00 ID:3igSZGd/0
NSFileManagerだべ
728名称未設定:2008/04/01(火) 22:19:15 ID:eXrA1oFt0
???
NSFileManager つかったらファイルの削除ができるのはあたりまえでは?
もちろんユーザ権限だったらそのユーザのファイルしか消せないけども、
ホームディレクトリ以下を全削除するコードなんか一瞬で書けるし、
かけて当たり前なのでは?
729名称未設定:2008/04/01(火) 22:26:44 ID:jR83I/kp0
>>723
日本語でおk
730名称未設定:2008/04/01(火) 22:43:42 ID:1fF/yTEl0
cgiのくだりもわからない。なんの話なのだろう。
731名称未設定:2008/04/02(水) 01:07:11 ID:oGnR8u+90
一度開いたらシステムオワタなアプリなら作れる
ダウンロードして開かなきゃ発動しないけど
732名称未設定:2008/04/02(水) 09:07:28 ID:0/6aE/N0O
>>731
ユーザによる権限昇格もせずに?

と思ったけど、起動出来なくするぐらいなら出来るか。
733名称未設定:2008/04/02(水) 12:36:09 ID:6v8Mex7Q0
ユーザーとの対話なしにローカルファイルの読み書きや
webへのアクセスが出来てしまうのが
当たり前と言えば当たり前ですが、恐いと言えば恐いかなと。
734名称未設定:2008/04/02(水) 12:56:05 ID:yfTxC+5o0
>>733
何が言いたいのだ?
web へのアクセスをユーザにさせたくなきゃ,
フィルタリングでカットすればいいだけだろ?
ローカルファイルも権限があるから勝手に読み書きできないよ.
セキュリティを良く分かってないんじゃないか?
735名称未設定:2008/04/02(水) 13:20:21 ID:S1IGWmHn0
そんなのCocoaに限らずコンピュータプログラム全般に言えることじゃないかと
アプリがファイル読み書きやらネットワークアクセスの度に
ダイアログ出てきたら鬱陶しくて実用にならない
Leopardなら初回だけネットワークの許可ダイアログでてくるけど
736名称未設定:2008/04/02(水) 15:16:06 ID:sidBbuG/0
なにかもう一つしっくり来ないな。
>733は自分が思っていることを正しく伝えられてない気がする。
737名称未設定:2008/04/02(水) 15:52:56 ID:tcfMAI1p0
いずれにせよCocoaとは関係のない話だな。
738名称未設定:2008/04/02(水) 19:58:47 ID:Akvr86Ga0
cocoa というより C の文法の問題かもしれませんが、
探しても出てこないので教えてください

if( hoge ) {
}

のように条件式なしで単純に変数が条件になっているのは、
どのような条件なのでしょうか?
739名称未設定:2008/04/02(水) 20:16:40 ID:tcfMAI1p0
if( hoge ) { }

if(hoge!=0) { }
はまず等価。
740名称未設定:2008/04/02(水) 20:17:21 ID:+bRTpxfj0
0 が偽 それ以外が真。
大抵は hoge がオブジェクトで、それが存在するかを調べる時に使う。
hoge == NULL
ならその条件式は偽です。

NSString *hoge = [NSString stringWithContentsOfFile:@"hoge"];
if(!hoge) return NO;
とかする。
でも、
int length = [hoge length];
if(!length) return NO;
とはせず、
if(length == 0) return NO;
とする。
俺は。
741名称未設定:2008/04/02(水) 20:25:20 ID:S1IGWmHn0
if (ここに書かれた式の"結果"が真か偽かが条件判定されるだけで式の形は問わない)

0かnilなら偽、それ以外は真
逆に言うと普段使ってる hoge == 10 みたいなのは
実際はこの式全体が真か偽かを返してる
つまり

int hoge = 10;
if (hoge == 10) {
}

これと

int hoge = 10;
BOOL result = (hoge == 10);
if (result) {
}

これは同じ
742名称未設定:2008/04/02(水) 21:26:11 ID:dNRbq4FU0
そういえばCでは
if(a==0)ではなく
if(0==a)と書くのが流儀なんですかね?

if(0<a)なんて直感的にすごく分かりにくいのですが。
743名称未設定:2008/04/02(水) 21:32:00 ID:FSuKVIs40
>>742
そんな流儀はじめて聞いた
自分に分かりやすい方でいいんじゃないの?
744737:2008/04/02(水) 21:33:46 ID:Akvr86Ga0
>>738-740
ていねいかつ分かりやすい説明、ありがとうございました。
勉強になりました。
745名称未設定:2008/04/02(水) 21:34:28 ID:7R9AhKh80
>>742
定数を左辺に書くのはどちらかというと痛い書き方。
746名称未設定:2008/04/02(水) 21:42:19 ID:vRQV2HU10
>>742
if (a=0)
と書きまちがえるとaに代入されてしまい
意図した動作にならないのを嫌って、定数を左辺とすることを推奨する人たちがいます。
仕事やなんやで指定されない限りは、(a==0)で問題ありません。
747名称未設定:2008/04/02(水) 21:43:42 ID:+bRTpxfj0
>>742
if(0==a)
のつもりで
if(0=a)
としてしまうとエラーになるから、間違えない。
という主張の方々の作法。
これに同調するなら使いましょう。って感じ。
ただし、たまに「でなければならない。おまえらこの通りにしろ。」という方もいる。
そういう人は確かに痛い。
748名称未設定:2008/04/02(水) 21:47:40 ID:w0ZmM/ml0
1〜10の範囲は
if ((1 <= a) and (a <= 10))
と書くのが数直線のイメージとも一致して自然だと思う。
749名称未設定:2008/04/02(水) 21:58:35 ID:RS/f+MuZ0
最初
if (self = [super init]) {}

if (self == [super init]) {}

と勘違いして小一時間悩んだのを思い出した。
750名称未設定:2008/04/03(木) 16:23:37 ID:1jV0CkCd0
return [self なんたら];
っていうのは普通?

慣れてくると、
return [self なんたら:[self こうたら:[self うんたら:[self ちんたら]]]];
とか書いて、訳分かんないけどw
751名称未設定:2008/04/03(木) 17:11:17 ID:3DcvdVmn0
CICropって切り抜いたあとの画像に1px幅の黒枠が入る様な気がするな・・・。
752名称未設定:2008/04/03(木) 22:40:16 ID:2SfSkV4V0
>>749
ワロタwwww
753名称未設定:2008/04/04(金) 00:15:33 ID:XKzIgRMV0
すいません、Xcodeスレから来たのですが、告知させて下さい
ADCのリファレンスを日本語化しようというwikiサイトをこの度立ち上げました
Cocoa以外のドキュメントも扱っています。ページ作成のテンプレも用意したのでデベロッパの方々に
気の向いた時に参加していただけると嬉しいです。ここ数日で仕上げたので不備も多かろうと思いますが
ご意見あればお願いします。ちなみにまだGoogle検索では引っかかりません

Cocoaリファレンス日本語化計画(CRJP)トップ
http://www11.atwiki.jp/cocoareferencejp
資料ページ作成の手順
http://www11.atwiki.jp/cocoareferencejp/pages/13.html
ディスカッションボード
http://www11.atwiki.jp/cocoareferencejp/pages/22.html
754名称未設定:2008/04/04(金) 02:09:19 ID:XiP7FG7p0
MOSAで活動すればいいのでは?
権利関係は?
755753:2008/04/04(金) 02:39:22 ID:XKzIgRMV0
MOSAは確か会員登録が必要だし、登録は有料だと思ってました
wikipediaみたいな感じで誰でも編集できるこの形式の方が良いかと思いまして
Appleの公認はとってません。ひっそりやっていって怒られたら非公開形式かな、
というつもりでした。

大したことは書いてませんが、こっちで話を振っていました
Xcode part6
http://pc11.2ch.net/test/read.cgi/mac/1201693264/373
756名称未設定:2008/04/04(金) 15:07:34 ID:prN6n9yx0
757名称未設定:2008/04/04(金) 15:51:58 ID:Jkegj/2g0
>>756
私もそこを利用しています。

なので、>>753 のやつは、リファレンス和訳に加えて、
Tips や サンプルコードなんかをみんなで持ち寄って、
リファレンス以上に使える Wiki にすればいいんじゃないでしょうか?
758名称未設定:2008/04/04(金) 15:59:39 ID:uwaesjVF0
つかリファレンス程度の英文なんてそのまま読んだ方が正確に情報が伝わるし、
それが前提だと思うんだけどなあ。
必要なのはAPIこまかい動作やふるまいに関する情報だと思うよ。
759名称未設定:2008/04/04(金) 16:18:59 ID:l0Z2BlMo0
オプションクリックっていってすぐ分かる人も居れば、
オプションキーの位置まで説明しないといけない人も居る。
欲しがってる情報も人それぞれだ。

それに、その勝手な前提を廃しようって動きでしょ、これは。
760名称未設定:2008/04/04(金) 19:11:54 ID:/NxtDvi20
まあまあ。
参加したいひとは参加するスタイルでいいでしょう。
参加しない人は文句を言わないこと。
761名称未設定:2008/04/04(金) 21:16:00 ID:vKak/UUC0
今760がいいこと言った
762753:2008/04/04(金) 23:04:20 ID:XKzIgRMV0
皆さん意見ありがとうございます。私見を述べさせてもらうと
>>756のようなサイトがあればwikiにどんどんリンクを作って、その結果
ただのリンク集となっても資料の整備と言う意味ではある程度役立つwikiに
なるのかな、なんて思っています。もちろんリファレンス以外で存在しない和訳も
ありますし。
>Tips や サンプルコードなんかをみんなで持ち寄って
個人的にはありかなと思ってます。ただ、「じゃあこのタイトルじゃなくて良い」と
言われればそれまでなのでwikiの位置づけをどこまで拡張するかなどなど議論になりそうかと

Cocoaに限りませんが、Mac環境の日本語ドキュメントの少なさにしょんぼりされたことの
ある方は多いんじゃ無いかと思っています。私の場合リファレンスを読む時もある程度頭の中で和訳されて
いるので、せっかくだから残しておこうという発想で作ってみました。興味をもってくれた方は専用スレを
たてたのでたまにのぞいてみて下さい。おもいっきり宣伝ですいませんでした

Cocoaリファレンス日本語化計画
http://pc11.2ch.net/test/read.cgi/mac/1207312910/
763名称未設定:2008/04/05(土) 02:13:32 ID:xuMvYKd50
spotlightのようにボタンを押すとNSSearchFieldが表示されるような
仕組みを実装したいのですが、どうすれば良いのでしょうか?

なかなか難しそうな気がしますが、お知恵を拝借できればと。
764名称未設定:2008/04/05(土) 12:41:31 ID:OQL0ZhO70
Leopardからはメニューアイテムにビューを設定できるようになったから、それを使えばできると思う。

メニューじゃなくて普通のボタンを押したらってことなら、
タイトルバーなしのウインドウを作ってそれをボタンの下に表示させればいいと思う。
765名称未設定:2008/04/05(土) 14:41:54 ID:Jtj5sLxQ0
NSSearchField の isHidden に、その spotlight 風のボタンを
バインディングさせればいいんじゃない?
766名称未設定:2008/04/05(土) 15:13:29 ID:ukfQWxvp0
お知恵提供ありがとうございます。
やはり別途ウインドウを作る方法が正攻法ですかね。(10.4互換にしたいので)
hiddenの表示切り換えも試してみます。
767名称未設定:2008/04/05(土) 15:26:45 ID:VhLW+d8P0
ついでに質問しますが、OSX の mail とか バチスカの右下の
プルダウンするボタンは、>>764 のようにタイトルバーなしの
ウィンドウを出現させてるだけですよね。
面倒だなー...
768名称未設定:2008/04/05(土) 17:27:01 ID:ExPL2bEA0
もっと簡単ですよ。
ボタンのサブクラスを作ってNSMenuを表示させてるだけ。
どっかにコードがあったはずだけど失念。
769名称未設定:2008/04/05(土) 20:24:44 ID:Y9HuUKt0P
mkinoさんあたりが書いてた気がする
770名称未設定:2008/04/05(土) 20:46:11 ID:OQL0ZhO70
771767:2008/04/05(土) 22:46:12 ID:VhLW+d8P0
>>768-770
URLまで張っていただいて感謝です。
ありがとうございました。
772名称未設定:2008/04/08(火) 23:05:59 ID:+rnkpamp0
すみません、いまいちメモリ管理が理解できなくて試行錯誤しております。
retain/release/autoreleaseで、この書き方は正しいでしょうか?
sampleMethodでretain/rekeaseは不要なのでしょうか?

- (void)sampleMethod
{
NSMutableArray *array = [[self createMutableArray] retain];

// arrayでいろいろ処理する

[array release]; // 下のmutableArrayも解放される?
}

- (NSMutableArray*)createMutableArray
{
NSMutableArray *mutableArray = [[[NSMutableArray alloc] init] autorelease];
int i;
for(i = 0 i < 10; i++){
[mutableArray addObject:[NSNumber numberWithInt:i]];
}
return mutableArray;
}
773名称未設定:2008/04/08(火) 23:08:22 ID:GYQua+Y+0
> sampleMethodでretain/rekeaseは不要なのでしょうか?
その通りです。
774名称未設定:2008/04/09(水) 00:23:26 ID:ymQ4vGb/0
下のmutableArrayは
NSMutableArray *mutableArray = [NSMutableArray array]; で良くね?
775名称未設定:2008/04/09(水) 00:39:40 ID:cZrt3QD80
create〜っていう名前だと、retain されたオブジェクトが返ってくるような感じがする。
776名称未設定:2008/04/09(水) 00:57:57 ID:tXkLT69P0
ありがとうございます。
>>773
やっぱり入らないんですね。

>>774
まだ10.4なんですが、そうするといつreleaseされるのですか?
(10.5なら不要っぽい気もしますが)

>>775
名前は適当に考えたのでご勘弁を。
777名称未設定:2008/04/09(水) 01:03:44 ID:sa4g27di0
>>776
その時の NSAutoreleasePool が破棄されるときじゃね?
ttp://wwwa.dcns.ne.jp/~nito/CocoaClub/article03.html
読んで解らなかったらまた
778名称未設定:2008/04/09(水) 07:53:51 ID:Ji3vsIov0
>>776
>名前は適当に考えたのでご勘弁を。
じゃなくて、Cocoa / CoreFoundation はメソッドの名前で
autorelease されたものが返されるか retain されたものが
返されるかきまってるので。

Cocoa なら initほげほげ、copyほげほげ は retain されたものがかえる、
それ以外は autorelease されたものがかえる。
CF なら CF...Create... や CF...Copy... なら retain されたものが、
CF...Get... なら relase する必要のないものが返ってきます。

だから自分でメソッド名をつくるときもそれに従っておいたほうがいいです。

うえの [NSMutableArray array] の例では、
メソッドの名前に init / copy がないので、
autorelease されたものがかえってきます。
多分内部では [NSMutableArray array] は
[[[NSMutableArray alloc] init] autorelease]
と一緒だと思います。
779名称未設定:2008/04/09(水) 09:20:43 ID:HThbF4Ur0
返ってくるっていうか、
返る事が期待されてるって事じゃなかったっけ?
create〜とかmake〜とかの場合はオーナーシップがそのメソッドにあって、
そのなかでちゃんと保持されてる設計にしないといけないとか、
そういうデザインパターンじゃなかったか?
780名称未設定:2008/04/09(水) 09:56:58 ID:ZyjRh5vH0
プロジェクトが完全に10.5以降でもプロパティやガベージ使ってない人まだ多いと思う
781名称未設定:2008/04/09(水) 10:05:07 ID:EGmyqCDB0
設定変更が面倒なので10.4(Universal)用のプロジェクトテンプレート作った。
782名称未設定:2008/04/09(水) 10:25:47 ID:Ji3vsIov0
>>779
>返ってくるっていうか、
>返る事が期待されてるって事じゃなかったっけ?
失礼、返ってくる、とかいたのは、Apple が提供してる API に関して言ったので、
自分の書くメソッドに関しては、返ってくるのが期待されてるので、
期待されてるのを返すようにする、ということでした。
どうもすいません。
783名称未設定:2008/04/09(水) 11:03:07 ID:n76cDqoa0
initなんたらってautoReleaseだろ?
784名称未設定:2008/04/09(水) 11:09:52 ID:HThbF4Ur0
>>782
OK了解した☆
785名称未設定:2008/04/09(水) 11:11:14 ID:HThbF4Ur0
>>783
autoreleaseなのはクラスメソッドのほうだよ。
786名称未設定:2008/04/09(水) 11:45:13 ID:EGmyqCDB0
init... はretainCount 触らない。
alloc... はretainCount 1で返す。
クラスファクトリメソッドはautoreleaseして返す。
と考えて使う。
787名称未設定:2008/04/10(木) 16:43:38 ID:2oHsbtx+0
カーソルより手前にウインドウを表示する事は出来ませんか?
788名称未設定:2008/04/10(木) 16:45:33 ID:TIILIpRc0
そうきたか。w

最終目的を書くべきだな。
自分が思いついた手段ではなく。
789名称未設定:2008/04/10(木) 17:13:22 ID:6tlrdF1I0
カーソルのイメージを空画像にしたらどうだろう
790名称未設定:2008/04/10(木) 17:56:29 ID:pB6w3fGx0
単に隠すだけなら[NSCursor hide]あたりだろうけど、
質問が「カーソルより手前にウインドウを表示する事は出来ませんか?」だからなぁ
791名称未設定:2008/04/10(木) 18:12:04 ID:3s39qoSK0
- (void)setLevel:(int)newLevel;

じゃダメ?
792名称未設定:2008/04/10(木) 18:19:37 ID:vD+kIgyu0
試してないけど、ヘッダを見ると
kCGCursorWindowLevel がレベル2000で、最大はLONG_MAXだな
793787:2008/04/10(木) 20:58:20 ID:2oHsbtx+0
レスありがとうございました。>皆様
特定の領域でカーソルより手前に画像を表示させたかったのですが
ウインドウレベルをいくつに指定してもカーソルより手前にはならないみたいです。
出来ない=やるな、という事かも知れませんので、他の方法を探してみます。
794名称未設定:2008/04/10(木) 21:44:34 ID:HMBiSycw0
>>793
いや、だから、>>790 にもあるように、
その画像のまえにきたらカーソルを消せばいいのでは?
795787:2008/04/10(木) 23:13:03 ID:2oHsbtx+0
>>794
その画像が半透明なので、薄ら見えているけど消えないという感じにしたいと思いまして。
796名称未設定:2008/04/11(金) 00:00:27 ID:HMBiSycw0
NSCursor に自前で半透明の image をセットしたら?
自分でやってみずに言うのでできなかったらスマンけど、
OS X のことだから NSCursor だけアルファチャンネルが効かないということもあるまい
797名称未設定:2008/04/11(金) 00:45:25 ID:gwbAHAgd0
そうそう、画像を半透明するかわりにカーソルを半透明にすればいいよね
798名称未設定:2008/04/11(金) 20:36:42 ID:Rl7AGzq/0
半透明な画像の奥にカーソルがあるのと、半透明な画像の手前に半透明なカーソルがあるのとでは、得られる画像効果が違うと思います。
その前に、なぜそんな特殊なことをする必要があるのか疑問ですが。。。

その画像エリアにカーソルが入ったら、カーソルを消して、自前でカーソルを半透明に描画して画像と重ねるのが良いかと。
799名称未設定:2008/04/11(金) 20:38:00 ID:G5tvyV890
君は何を言っているのかね
800名称未設定:2008/04/11(金) 20:54:31 ID:kIdkqYBw0
カーソルが手前のウィンドウの境界に来た時に、カーソルを一部半透明、一部不透明と描写できるよう計算するように。
801名称未設定:2008/04/11(金) 21:14:50 ID:+UtpCNPd0
そんなことをしても開発者の自己満足で、
利用者からすればウザイ効果でしかないかと。
802名称未設定:2008/04/11(金) 21:42:05 ID:ihvQSy990
試してみたらウィンドウのレベルをカーソルより高くしてもカーソルが一番上に表示されました。
なのでたぶん、カーソルがウィンドウに入ったらカーソルを消して
カーソルの画像を貼付けた別の枠無し透明ウィンドウをウィンドウの裏に置いてマウスの動きに併せて移動させる。
っていう、枠無し透明ウィンドウをインスタンスに持つカスタムウィンドウを作ればいけるんじゃないですかね。
もちろんマウスイベントをどう処理するかとかも考えて。めんどくてやる気にはなりませんが。
803名称未設定:2008/04/11(金) 23:40:04 ID:ICrYO6hE0
昔、FLASHを用いたコンテンツで、
そういったカーソルの使い方、
たくさんあったね。
ここの反応をみると、普通のアプリケーションでは珍しいってことね。
804名称未設定:2008/04/11(金) 23:47:19 ID:7VVhxwB20
そういうことをする状況ってのがわからない。ただの演出?
Flash ではよくあるの?どういう状況?
805名称未設定:2008/04/13(日) 14:50:31 ID:NAkghPa20
みなさんはどんなアプリを作ってらっしゃるのですか。
詳しい回答とか来るので素人ではない人も多そうですが。
806名称未設定:2008/04/13(日) 18:39:38 ID:NOrk0tDZ0
家計簿アプリを作ってます。最近はコードに手つけてませんけどね。
807名称未設定:2008/04/14(月) 03:06:21 ID:eVlSOFQq0
16〜128pxまで持っている.icnsから、64pxのデータだけ取り出して
TIFFで保存したいんだけれど、良い方法ありますか?
808807:2008/04/14(月) 03:58:34 ID:eVlSOFQq0
ごめん
解決しました。
809名称未設定:2008/04/14(月) 04:58:38 ID:jigo+5U80
>>808
折角なので、どうやったら解決したかも教えてください><
810807:2008/04/14(月) 05:16:16 ID:eVlSOFQq0
newImage = [[NSImage alloc] initWithSize:NSMakeSize(64, 64)];
[newImage lockFocus];
[oldImage compositeToPoint:NSZeroPoint operation:NSCompositeCopy];
[newImage unlockFocus];
[oldImage release];

data = [newImage TIFFRepresentation];
[data writeToFile:path atomically:YES];

dataはNSDataね
まぁもっと良い方法が有るかもしれなけれど、取りあえずは解決。
811名称未設定:2008/04/14(月) 19:53:51 ID:b0/4C/qo0
「たのしいcocoaプログラミング」
レパード対応版はまだでないのですか?
812名称未設定:2008/04/14(月) 20:16:43 ID:nTw3Y+hu0
そんな予定はありません
813名称未設定:2008/04/14(月) 21:37:49 ID:rj1x9F1k0
たのしいcocoaプログラミング

っていいの?
814名称未設定:2008/04/14(月) 21:39:51 ID:Ogsz7wUg0
>>813
度素人向けには、唯一の選択肢。
815名称未設定:2008/04/14(月) 21:40:29 ID:3Zup1m6P0
俺が最初に買ったのは柴田さんの本
816名称未設定:2008/04/15(火) 07:27:25 ID:eKvbdOse0
iPhone本はどの辺がどういうメンツで出してくるんだろね
817名称未設定:2008/04/15(火) 15:41:46 ID:oJTFVe1u0
取得したファイル名の拡張子を取り除くのはどうすれば一番簡単でしょうか?
.で区切った配列の0からラスト-1番目までを.で結合?
818名称未設定:2008/04/15(火) 15:44:23 ID:Dmq8L+1e0
man 3 basename
819名称未設定:2008/04/15(火) 16:21:55 ID:0oj35k/r0
NSLog("%@", [@"/foo/bar/buz.tiff" stringByDeletingPathExtension]);
820名称未設定:2008/04/15(火) 16:22:22 ID:iOoFa9Jh0
-[NSString stringByDeletingPathExtension]だろ常識で考えて。
821名称未設定:2008/04/15(火) 16:22:53 ID:iOoFa9Jh0
かぶったスマソ
822名称未設定:2008/04/15(火) 17:45:23 ID:0oj35k/r0
ObjCでメソッド名を伝える時はどうすれば良いでしょうか?

C++だと例えば
NSString::stringByDeletingPathExtension()
として伝えますよね。

ObjCだと
[NSString stringByDeletingPathExtension]
と伝えると、クラスメソッドの時は、すんなり通るけど、インスタンスメソッドだと
なんか嫌。

メッセージと考えて
@selector(stringByDeletingPathExtension)
こんな風にすると引数の型が判らないし、どのクラスのメソッドかも判らない。

どうすれば良いんでしょうか?

823名称未設定:2008/04/15(火) 17:53:55 ID:dDNf2+y10
2でいいじゃん
てかメソッド名だけでもリファレンス検索ですぐ詳細わかるから
その辺はどうでもいいような
824名称未設定:2008/04/15(火) 18:03:48 ID:S1k7ee7c0
普通
+[NSString string]
-[NSString stringByDeletingPathExtension]
ってします。
Appleのドキュメントでは上のに加えて [] を省略してたりする。
僕は[]なしには違和感を覚えるのでそれは使わないです。
825名称未設定:2008/04/15(火) 18:40:25 ID:0oj35k/r0
>>823, 824
ありがとう、参考になる。行頭の"+/-"で判断すれば良いと。
ドキュメントを書かなければならない時に参考にさせていただきます。
826名称未設定:2008/04/15(火) 22:18:08 ID:TXo52gSI0
>>819>>820
ありがとうごさいます。
クラスリファレンスでpathCompornentやpathExtensionまでは
目に入っていたのですが見落としてました。
お恥ずかしい限りで。
827名称未設定:2008/04/16(水) 04:44:16 ID:u/mR24nP0
こういう、xxをしたいんだけど、どうすればいい?
という疑問があった場合に引ける逆引きリファレンスみたいなのが
欲しいよね。
828名称未設定:2008/04/16(水) 12:24:54 ID:dfULm9rV0
ケータイ動画などのQuickTimeの動画を回転(90度)させたいと思っているのですが、
どのように実装すればいいのでしょうか?
829名称未設定:2008/04/16(水) 14:02:48 ID:r+wGhOwr0
首を90度かたむければいいんでねえの
830名称未設定:2008/04/16(水) 14:03:08 ID:fBaqeLs30
>>827
言い出しっぺの法則発動!
831名称未設定:2008/04/16(水) 14:25:58 ID:/WVd0mVL0
>>829
俺だったらディスプレーを90度傾けるね。クビを曲げるのはバカっぽいし。
832名称未設定:2008/04/16(水) 15:32:52 ID:BEbEwGfI0
movie matrix
833名称未設定:2008/04/18(金) 12:16:46 ID:yjp/rVhu0
NSTextViewで、内容をバインディングのattributedStringを
指定して表示してます。
attributedStringはNSString,NSColor,NSFontから生成してますが、
これらの要素が変更されたとき、attributedStringを
更新するための仕組みをバインディングで実現できますか?

NSColorとかは自アプリの環境設定と連動している
わけですが。
834名称未設定:2008/04/18(金) 12:48:50 ID:Li5XGbKm0
NSString,NSColor,NSFontのsetter内にattributedStringの更新を入れとくんじゃダメなの?
setKeys:triggerChangeNotificationsForDependentKey:
こんなのもあるみたいだけど
835名称未設定:2008/04/18(金) 13:52:03 ID:yjp/rVhu0
>>834
NSStringにはsetterがあるのですが、NSColor,NSFontは
NSDefaultsから取ってくる状態なんです。

setKeys:triggerChangeN〜はちょっと敷居が高そうですが
検討してみます。
836名称未設定:2008/04/18(金) 15:11:48 ID:G0d9ll0b0
よくわからないんですけど、NSUserDefaultsControllerでは駄目なのでしょうか?
http://developer.apple.com/cocoa/cocoabindings.html←こんなかんじで
837名称未設定:2008/04/18(金) 16:52:02 ID:LYBRF8yE0
Cocoa Programming for Mac OS X: Aaron Hillegass
http://www.amazon.co.jp/dp/0321503619

ヒレガス本出るんだ(既出だったらごめん)

ずっとCocoaやりたいと思っているけど、俺みたいな頭の硬直化したオッサンにはキツイわ。
確かに簡単なサンプルをやるとその通りできて、おお簡単じゃんと思うけど
変わったことをしようとするとすぐに分からなくなる。

ほとんどコードを書かなくてもGUIができちゃうということは、
誰がそれをやっているか、nibなんだろうけど、それがわからないから
手の平の上で躍らされている感じがすごく強いし
入門書もその辺は説明を避けていて、こうすればできますよという結果だけ書いてある感じ。
838名称未設定:2008/04/18(金) 17:55:26 ID:9/uqIIpw0
>>833
NSTextView全体のfont, colorをNSUserDefaultで設定するのならば
attributedStringではなくて value, textColor等を別個にbindすればよいでしょう

複雑なattributedStringの場合には少しコードを書く必要が出てきます。

839名称未設定:2008/04/18(金) 18:20:07 ID:ZM0j7YsA0
>>828
なんか前にもこんな質問あった気がするけど、10.5以降ならQTMovieLayer使うとできると思う。
840名称未設定:2008/04/18(金) 18:37:53 ID:Ny9nrUPt0
>>837
ネットやpdfの英語のドキュメントは読むけど、英語の書籍を読むのは躊躇する
せっかく金だして買うのに英語ってのがなぁ
841名称未設定:2008/04/18(金) 19:23:06 ID:4Fq5gPPw0
>>837
確かにほとんど何もしなくてもアウトプットが出来てしまうのは
入り始めの人には入りやすいかなと。(私自信そうだし)

問題は次のステップから、一通り理解して楽しくなるまでの間が辛いかな。
「どうすればできるんだ」「なんでできないんだ」とひたすらトライ&エラーを繰り返す苦行が始まる。
842名称未設定:2008/04/18(金) 21:07:56 ID:ZX8DO6F40
>>837
うそだろ、買っちゃったよ
と思ったらなんだ英語か
843名称未設定:2008/04/18(金) 22:37:31 ID:JO3U47IL0
customViewにNSBezierPathなどでパスを描画した後、そのView全体をTIFF (というかビットマップ画像) で保存したい場合はどのようにすれば良いのでしょうか。
PDFで保存するのは簡単なのですが…。
844名称未設定:2008/04/18(金) 22:48:10 ID:gE+uDWOS0
>>843
NSBitmapImageRep の initWithFocusedViewRect
845843:2008/04/19(土) 00:49:00 ID:IJRK5kOO0
>>844
ありがとう。バッチリできました。
NSBitmapImageRepのオブジェクトが作れれば良さそうっていうのは何となく分かってたんだけど、こんなに簡単に作れたのね。半日探しても見つけられなかったのに…(・ω・;

ちなみにPNGで書き出すことにしました。
846828:2008/04/19(土) 01:20:24 ID:FxxAWEm50
>>832
頂いたキーワードでググってみたんですがそれらしいのが見つけられませんでした。

>>839
これでmovieを描画してこのレイヤーごと回転させてやれば良いと言うことですね。
理想としては回転させた状態で保存もしたいのですが、とりあえず見るぶんには大丈夫そうですね。
ありがとうございます。

Dumpstarでmatrixの数字を書き換えたら回転させられるという情報は見つけたんですが、
それと同じ事をプログラム側からできればいいと思ったのですがそれらしいのが見つからないですね。
847名称未設定:2008/04/19(土) 03:00:43 ID:EjAdhRac0
QTProでできるんだしQucikTime弄ればできるでしょう
Carbonだけど
848名称未設定:2008/04/19(土) 10:29:41 ID:W7DVTgpQ0
QuickTimeはCarbonでは無い。SetMovieMatrix()。
849名称未設定:2008/04/19(土) 13:15:09 ID:FxxAWEm50
>>848
ありがとうございます。
SetMovieMatrix()ですね。
C言語はよくわかりませんが、ググりながら適当にやってみます。
850名称未設定:2008/04/21(月) 17:16:20 ID:YsSmzhHi0
何も入力されていない状態のNSTextViewにスタイルを指定する事は可能でしょうか?
851名称未設定:2008/04/21(月) 22:16:13 ID:3KHOhc720
スタイルってボーダースタイルのこと?
852名称未設定:2008/04/21(月) 23:15:10 ID:OGY02Qf30
>>850
NSAttributedStringでググれ。

>>851
NSInterfaceStyleが好きだな。

853名称未設定:2008/04/22(火) 20:10:17 ID:ogsohpXu0
コアデータ(XMLファイル)のカラムにNSArrayやNSDictionaryを
保存したいのですが、出来ますでしょうか。
デスクリプションで文字列として保存してみましたが、戻しかたがわからず。
854名称未設定:2008/04/22(火) 23:35:52 ID:EIQ6oRLs0
人に聞く前にもうちょっと勉強してみましょう。
とりあえずドキュメントを読みましょう。
855名称未設定:2008/04/23(水) 21:22:35 ID:TVGerQ0Y0
開発環境:OS X 10.5 XCode3.1
動作環境:10.4 10.5

NSTableViewのセルに画像とテキストを同時に表示させ、さらにそのテキストの文字色を変えたいです。
それらを実現させる為に、DataCellにNSBrawserCellを設定してsetTextColorしたのですがエラー(?)が出ます。

だもんで、NSCellを継承したクラスを作ってDataCellに設定したのですが上記と同じでsetTextColorでエラーが出てしまいます。

上記の様な事を実現したいのですがどうすれば実現できますでしょうか。
よろしくお願い致します。
856名称未設定:2008/04/23(水) 21:34:10 ID:za8tRBJ+0
NSBrowserCellは使ったことがないので分かりませんが、
少なくともsetTextColor は存在しません。
setTextColorが実装されているのはNSTextFieldCellです。
ImageAndTextCell というのがXcode のサンプルのどこかにある
と思うので、参考にするとよいと思います。
857名称未設定:2008/04/23(水) 21:47:24 ID:TVGerQ0Y0
やはりsetTextColorは存在しないのですね…
NSCellを継承してて、いけるのかと思っていたのですが…
ImageAndTextCell、一度拝見してみたいと思います。

ありがとうございました。
858名称未設定:2008/04/24(木) 00:28:34 ID:NUMASU0M0
>>852
に便乗した質問なんですが、NSTableViewのセルにNSViewをセット
するメソッドがどうしても見つからないんですが、やはり自前で描画を
行いたい場合は、NSCellをオーバーライドするしかないんでしょうか。
859名称未設定:2008/04/24(木) 01:37:04 ID:dIFNKKht0
>>855
NSCellを継承しなくてもいいよ。
NSTableViewのデータソース内で、NSTextFieldCellをセットするだけ。
色を変えたい場合は、
[cell setTextColor:[NSColor whiteColor]];
とか...
>>858も、同じやり方で、ImageViewをセットしたらいけるんじゃないかな?NSViewは試したこと無いので、解りませぬが。
860名称未設定:2008/04/24(木) 03:00:55 ID:FzT8a42h0
NSView直接は無理でしょうよ
861名称未設定:2008/04/24(木) 08:30:03 ID:r6/OTCN10
ID:dIFNKKht0 はたぶん何も分かってない
862名称未設定:2008/04/24(木) 08:50:51 ID:crG04gDJ0
まぁまぁ
Cellが何をしてるかってことなんだけどね
ControlとかViewとかとの関係も含めね
863名称未設定:2008/04/24(木) 10:15:26 ID:E/j5PqMr0
Windowを半透明にすると中のパーツや画像まで半透明になってしまいます。
中のパーツは不透明にするにはどうすれば良いか教えて下さい。
864名称未設定:2008/04/24(木) 11:41:41 ID:MPmWf1y70
ウインドウをテクスチャ付き属性にして、テクスチャ(backgroundColor)
を半透明にすれば部品は不透明のままになるけど、この方法がベストかどうかはワカンネ
865名称未設定:2008/04/24(木) 20:04:17 ID:XXVT8K2w0
普通にsetBackgroundColor:でいいと思うけど
>>863の言うWindowの半透明化って別の方法でやってるんじゃない?
866名称未設定:2008/04/26(土) 09:14:28 ID:xVbrPtte0
CoreData DocumentBased Application について疑問があります。
疑問1:ドキュメントクラス(NSPersistentDocumentクラスのサブクラス)と
    それが必要とするモデル(xcdatamodel)はどのように結びついているのでしょうか?
    例えば、モデルデータの名称を変更しても、ドキュメントクラスから
    -managedObjectModelで呼び出すと取り出せます。ということは、ドキュメントクラス名
    と同じ名前のモデルデータを結びつけている訳ではないようです。    
疑問2:もしアプリケーションが複数種類のドキュメントクラスを持つとき、
    それぞれが必要とするモデルをそれぞれのドキュメントに対応させる
    ことを考えた場合、どのようにすればよいでしょうか?
    
疑問2はNSPersistentDocumentクラスの-managedObjectModelもしくは
-configurePersistentStoreCoodinatorForURLなんちゃらをオーバーライドすれば
出来そうな気もしますが、そもそもモデルデータとNSPersistentDocumentクラス
(のサブクラス)の結び付き方が良く分かっていないので、ご教示いただければ有り難いです。
867名称未設定:2008/04/26(土) 16:46:33 ID:ZsdZ/vTl0
ドキュメントの NSPersistentDocument - managedObjectModel の項目を読めば
全てこたいが出てる様な希ガス。
868866:2008/04/27(日) 08:26:27 ID:d3QjrQNU0
>>867
レスありがとうございます。

>>ドキュメントの NSPersistentDocument - managedObjectModel の項目を読めば
>>全てこたいが出てる様な希ガス
うーん、あれだとモデルデータをパス指定しているので、例えばNSPersistentDocumentクラスで
同じことをやっていると仮定すると、結びつけるモデルファイル名が必要になると思います。
もしそうであれば、何もしないならそのファイル名はNSPersistentDocumentのサブクラス名と
同じにでもしないと結びつけられないのではないかなあと愚考しました。
そこで866の疑問1にある通りモデルファイル名を変更してコンパイルして
-managedObjectModelを実行すると、それでもキチンと意図したモデルを返してきたので
不思議だなあと思った次第です。
そんな訳で、例えば単純に-managedObjectModelをオーバーライドしてしまうと、
もしそのドキュメントクラスに先に別のモデルファイルが結びついているとメモリリークしてしまうのでは?
など予期せぬことがいろいろありそうなので、その辺の仕組みというか使い方を知っておきたいなと思いました。
しかし残念ながら、その辺のことがNSPersistentDocumentのリファレンスを読む限り、うまく読み取れませんでした。
(自分の英語力不足が。。。涙)
869名称未設定:2008/04/27(日) 09:25:41 ID:mRoS9Ouw0
デフォルトでは、コアデータフレームワークは、アプリとフレームワーク中にある
全部のモデルを探し、それらを統合したものを作る。だからクラス名とか
ファイル名とかは関係ない。

特定のパーシステントストアを指定する場合、NSPersistentDocument の
managedObjectModelメソッドをオーバーライドする。
つまり mom ファイル(xcdatamodelがコンパイルされたもの)を指定し、
パーシステントドキュメント毎にインスタンスを作成する。

もし、全てのパーシステントドキュメントが同じモデルを共有する場合には、一つの
モデルインスタンスを共有すれば、メモリ効率が向上する。
870名称未設定:2008/04/27(日) 09:32:07 ID:mvHQHg7J0
nibで初期化されるNSImageViewのサブクラスを作成したのですが
- (id)initWithFrame:(NSRect)frame が呼び出されません。
このようなオブジェクトはawakeFromNibで初期化すれば良いのでしょうか?
871名称未設定:2008/04/27(日) 10:09:06 ID:EPg2Fzpo0
>>870
Apple によれば、
nib ファイルは、GUI のつくりかたを指示したファイルじゃなくて、
Interface Builder で作った GUI のオブジェクトをフリーズドライしたようなものです。
IB で作るときは、パレットを自作していないカスタムクラスの場合、
IB の知っているベースクラスの init... をつかって初期化した状態になっています。
だから、読み込み時には initWith... とかは呼ばれません。
awakeFromNib で初期化してください。
872名称未設定:2008/04/27(日) 15:09:10 ID:f/y7kpGl0
- (id)initWithCoder:(NSCoder *)decoder
873名称未設定:2008/04/27(日) 18:41:22 ID:70Gkfaou0
Core Data で、特定のオブジェクト(entity 全体ではなく)だけセーブしない
ようにする、ということは可能でしょうか。

属性として数値を持っている entity があって、それらのオブジェクトの
平均値や合計など、計算で出せる値を持つオブジェクトを同じ entity の
NSManagedObject としてアプリ内で生成しているのですが、その属性は
計算すれば値が出てくるので、ファイルにセーブする必要がありません。

なので同じ entity でも、平均値や合計などのオブジェクトは、アプリ終了時に
セーブせずに破棄したいのです。
874名称未設定:2008/04/27(日) 18:47:14 ID:qlzSxNz10
カラムの属性を「一時的」にするとメモリ内だけで使用できるよ。
875873:2008/04/27(日) 19:36:28 ID:70Gkfaou0
>>874
属性ではなく entity を一時にしたいのです。
それにデータモデルで「一時」を指定すると
すべてのオブジェクトに適用されてしまうので、
セーブしたいデータまでセーブされなくなってしまいます。
876名称未設定:2008/04/27(日) 20:18:59 ID:ewlZNafK0
>>873
entityのpersistent storeをNSInMemoryStoreTypeにすれば保存はされません。

entityのサブクラスを作って@avg,@countを使ったアクセッサを実装した方が簡単なように思いますが?

877873:2008/04/27(日) 20:27:16 ID:70Gkfaou0
>>876
persistent store は entity の全オブジェクトに適用されると
思いましたが違いましたでしょうか。

同じ entity でセーブしたいオブジェクトとセーブしたくない
オブジェクトがある場合、オブジェクトごとに persistent store
を変えることができる、ということでしょうか。

そのやり方を教えていただけると助かります。

あと、他の複数のオブジェクトの平均や合計などは、1つの
オブジェクト内では完結しないので、サブクラスではできないと
思います。
878866:2008/04/27(日) 20:31:41 ID:lKozO5hA0
>>869
レスありがとうございます。

>>全部のモデルを探し、それらを統合したものを作る。だからクラス名とか
>>ファイル名とかは関係ない。
そうか!そういえばどこかでそんな記述を見た気が。。(でもその時は意味がよくわからなかった)
でも今、なにやら少し分かった気がします。もう少し資料を読み込んでみます。
ありがとうございます。
879名称未設定:2008/04/27(日) 21:16:45 ID:ewlZNafK0
>>877
CoreRecipes
http://developer.apple.com/samplecode/CoreRecipes/index.html#//apple_ref/doc/uid/DTS10003664
のコードを見ましょう
NSManagedObjectContext
- (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store

すいませんが、後半の意味が理解できません。

880名称未設定:2008/04/27(日) 23:34:05 ID:mj/WZUyt0
ヒレガス本を読んでチャレンジ問題を解いているのですが質問させて下さい
103ページの「入力した文字数を数えて表示する」アプリを作って
いるのですが、起動はするもののボタンを押しても表示がされません。
アクション自体は動いているようなので各メソッドの基本的な使い方を
間違えてるんだと思うのですが、リファレンスでは間違いに気付けませんでした。
以下実装ファイルの中身です


#import "controller.h"


@implementation controller

-(IBAction)countLetter:(id)sender
{
 [enterField setStringValue:text];
 int charaCount = [text length];
 resultField = [NSString stringWithFormat:@"%@ is %d letters.",text,charaCount];
}
@end
881名称未設定:2008/04/27(日) 23:38:50 ID:mj/WZUyt0
age忘れましたすみません
882名称未設定:2008/04/27(日) 23:41:37 ID:EPg2Fzpo0
まず、NSTextField から文字列を取るのは stringValue 、
NSTextField 「に」文字列を設定するのが setStringValue 。 

また、resultField= [NSString ... ] では、
resultField が NSTextField だったのが NSString になっちゃいますよ。
そうじゃなくて、NSTextField に、文字列を表示させたいんでしょう?
883名称未設定:2008/04/27(日) 23:47:54 ID:mj/WZUyt0
>>882
ありがとうございました。ご指摘のようにNSStringとNSTextFieldをごっちゃにしていた
ようです。このように書き直したら希望通りの動きをしました。

text = [textField stringValue];
int charaCount = [text length];
NSString* aResult = [NSString stringWithFormat:@"%@ is %d letters.",text,charaCount];
[resultField setStringValue:aResult];
884名称未設定:2008/04/29(火) 17:51:36 ID:AdWKI4cK0
Core Data アプリで(ドキュメントベースではない方)、アプリ終了時に
"entity required" というコンソールへのメッセージと、「保存操作は完了できませんでした」
というアラートパネルが出て、データが保存できません。

"entity required" というメッセージは、どういう状態のときに出るメッセージ
なのでしょうか。

「何が」「どの」entity を必要としているかがわからないので、どこから手を付ければ
いいのかさっぱりです。
885名称未設定:2008/04/29(火) 21:28:13 ID:ZJ2+mWOF0
想像ですが、
・coredataのXMLファイルが壊れている/排他がかかっている
・coredataのentityのカラム定義を削除したが前の状態が残っている
・entityにmanagedObjectContextが関連付いていない

一度、coredataのXMLファイルをリネーム/削除、
プロジェクトをクリーン(build配下を削除)なりして見たら?

886名称未設定:2008/04/30(水) 14:08:52 ID:5TrBc9DU0
>>884
Managed Objectがきちんと保持されてないと出てた。
releaseが多めだったからだけど。
887名称未設定:2008/04/30(水) 14:31:33 ID:XPdDR7a50
単にエンティティ同士の関連が壊れてるんでしょ?
A<=>B
って関連作ってるのにBを生成してないとか。
888名称未設定:2008/04/30(水) 14:37:45 ID:5TrBc9DU0
>>887
ああ、それかもね。オレは関連全部とっぱらって
自前で管理することにしてたよ。
889名称未設定:2008/05/01(木) 00:13:06 ID:ngZwcOFz0
質問させて下さい。表で項目が選択されている時だけ削除ボタンを有効にしようとして以下のメソッドを
書いたのですが、微妙に思った通りに動きません。一度項目を選択してそれを解除した場合削除ボタンが
無効にならないという状況です。使ってるメソッド自体おかしいのかもしれませんがアドバイスお願いします。

-(void)tableViewSelectionDidChange:(NSNotification*)n
{
 [deleteButton setEnabled:YES];
}
890名称未設定:2008/05/01(木) 00:26:03 ID:ngZwcOFz0
すみません自己解決しました。

[deleteButton setEnabled:([tableView selectedRow] >=0 )];

でいけました。
891名称未設定:2008/05/01(木) 00:35:17 ID:quU+k2WQ0
それで良いのだが
なんだか釈然としないコードだ
892名称未設定:2008/05/01(木) 05:48:13 ID:VMLqZfhR0
おもしろい書き方するんですね
893名称未設定:2008/05/01(木) 21:09:21 ID:Mfw72kWF0
アプリケーションを立ち上げるときドック内でアイコンがバウンスし、
立ち上がると止まりますが、これはアプリケーションが内部的にどういう
状態のときにバウンスし、どういう状態になったときにバウンスが止まる
のでしょうか。

アプリケーション立ち上げ時のバウンスする回数を減らしたいのですが、
どこを直せばいいのか知りたいです。
894名称未設定:2008/05/01(木) 21:11:41 ID:G2H0XP870
起動時間を短くしたら?
895名称未設定:2008/05/01(木) 21:18:39 ID:Mfw72kWF0
どうすれば起動時間を短くできますか?
896名称未設定:2008/05/01(木) 21:51:11 ID:N7kVmzvx0
起動時に確実に存在するインスタンスはnib内に置いておくとか
有効なんじゃないっけ?
897名称未設定:2008/05/01(木) 22:41:38 ID:4aripvU+0
Nib内にものをたくさん置かなければいいんじゃないでしょうか
898名称未設定:2008/05/01(木) 22:45:01 ID:reKOV4jG0
プログラムを書かなければ良いんじゃないでしょうか
899名称未設定:2008/05/02(金) 01:04:19 ID:7sVJlQ5g0
>>893
http://developer.apple.com/documentation/Performance/Conceptual/LaunchTime/LaunchTime.html
というまさにそのためのドキュメントが ADC にあるので読んでね。
900名称未設定:2008/05/02(金) 01:33:41 ID:DJdVJ3d30
調べて見た。
アイコンは、NSApplicationのインスタンスが生成されたタイミングで、バウンドを開始して、
applicationDidFinishLaunching:が呼ばれた時点で、バウンドが停止します。

ちなみに、applicationDidFinishLaunching:の中でMainMenu.nibをロードしたら、メニューバーの表示が変になるのでやめましょう。
901名称未設定:2008/05/02(金) 05:38:45 ID:mZbQ+HPx0
902名称未設定:2008/05/03(土) 19:13:31 ID:1RMtZljt0
NSManagedObjectContext の registeredObjects についてですが、
NSManagedObjectContext に register されるオブジェクトというのは、
具体的にどういうオブジェクトでしょうか。

insert (create) されたオブジェクトと、NSSQLiteStoreType のときは
fetch されたオブジェクト、ということでしょうか。
903名称未設定:2008/05/04(日) 10:31:09 ID:I5vqDFiv0
独自の記号などが入ったフォントで文字列を描画しようとしていて
NSStringのstringWithCString:encoding:で文字コードを入れて
drawInRectで描画したいのですがencodingの指定がうまくいかず文字化けしてしまいます
ドキュメントを見るとNSProprietaryStringEncodingを指定すればよさそうなのですが
10.5のSDKのNSString.hでは10.5以降ではこれが使えなくなっているようです
10.5でNSProprietaryStringEncodingのかわりになるものってあるんでしょうか?
904名称未設定:2008/05/04(日) 11:52:41 ID:c8/Gl85+0
フォントのほうがいじれるのであれば unicode にしてしまって、
NSString の stringWithUTF8String をつかえばいいと思いますが、
そうはいかないでしょうか。
905名称未設定:2008/05/04(日) 12:57:27 ID:I5vqDFiv0
>>904
フォントはこちらで作っているものではないので変更するのはちょっと避けたいです
906名称未設定:2008/05/04(日) 14:36:47 ID:I5vqDFiv0
すいませんいろいろ調べていたらNSProprietaryStringEncodingはもともと使われていなかったので
廃止になったと書いてありました。従ってかわりを探しても見つからないようです。

しょうがないのでとりあえず順にいろいろな定数を入れてみたところNSMacOSRomanStringEncoding
でいいようでした。
907名称未設定:2008/05/05(月) 06:13:38 ID:WUGvxwpY0
作成したプログラムを「ビルドして実行」を選択し、実行したところ、

An uncaught exception was raised
-[NSCFArray objectAtIndex:]: index (-1( or possibly larger)) beyond bounds (1)
Terminating app due to uncaught exception 'NSRangeException', reason: '
-[NSCFArray objectAtIndex:]: index (-1( or possibly larger)) beyond bounds (1)'

というエラーメッセージがコンソールに出力され起動できませんでした。
このエラーはawakeFromNibの前に出てきているので
プログラム中のコードは関係ないような気がするのですが、何が原因か分かる方はいらっしゃいますか?
908名称未設定:2008/05/05(月) 14:05:13 ID:iyf/db9L0
>>907
Cocoaバインディング使ってます?
909名称未設定:2008/05/05(月) 14:13:22 ID:g5BqTO7b0
ぽいね
バインドミスでしょう
910907:2008/05/05(月) 15:37:18 ID:uZpd4Du20
>>908,909
してます。。。
bindingミスですか。チェックしてみます。ありがとうございます。
911名称未設定:2008/05/05(月) 15:52:55 ID:g5BqTO7b0
バインドした先で実装されてないとか。
自分も、対応するアクセッサメソッドやインスタンスがなくてよくそのエラー出します。
912名称未設定:2008/05/05(月) 22:22:54 ID:K+pkfCxI0
NSSortDescriptorで、文字列の場合で数字の並び(0..9,10...)の順にソートするには
どうすればよろしいのでしょうか?
クラスリファレンスを見たのですが、なんかやり方は書いてあるのですが、
具体的にコード例がないとさっぱりです。

913名称未設定:2008/05/06(火) 06:41:31 ID:WVMfp2hi0
文字列(NSString)の、compare: に相当するもの(eg caseInsensitiveCompare:)を自分で書いて、
initWithKey:ascending:selector: のselector に、
initWithKey:@"key" ascending:YES selector:@selector(caseInsensitiveCompare:)
としてそのセレクタを指定するんだと思う。多分。

914名称未設定:2008/05/06(火) 08:36:16 ID:3EDEFttz0
日本語入力/英語入力をアプリの中から切り替えるには、
どういう風にコード書けばいいですか?
915名称未設定:2008/05/06(火) 22:51:36 ID:DwlLrNNQ0
10.5 以降なら
http://developer.apple.com/documentation/TextFonts/Reference/TextInputSourcesReference/Reference/reference.html
をつかってください。具体的には、
TISInputSourceRef tis = TISCopyCurrentASCIICapableKeyboardInputSource();
で英語キーボード、
TISInputSourceRef tis=TISCopyInputSourceForLanguage([NSLocale canonicalLocaleIdentifierFromString:@"ja"]);
で日本語インプットメソッドが返ってくるので、
TISSelectInputSource(tis);
でそれを選択。あとは CFRelease(tis); を忘れずに。

あと、日本語入力を使っていない人のばあいは、tis に nil が返ってきたりして、
ソフトがクラッシュしかねないので、エラーチェックはきちんとしましょう。
916名称未設定:2008/05/06(火) 23:49:20 ID:3EDEFttz0
Cocoaではできないんでしょうか
917名称未設定:2008/05/07(水) 01:25:03 ID:CMfyE7AE0
Cocoa では僕の知る限り出来ません。

CoreFoundation 系APIでできるだけでも儲け物だと思ってください。
あれはほとんど Cocoa なので。retain <---> CFRetain
release <---> CFRelease とか対応がありますし、
CFStringRef と NSString*, CFArrayRef と NSArray* は同じものだったり。

OS9起源の古い Carbon API はぼくもさっぱりわかりません。
918名称未設定:2008/05/07(水) 03:42:55 ID:5gsClvIj0
Core Foundationは食わず嫌いしなければ
文法が違うだけのCocoaみたいな感じだよね
どうしてもCocoaでできない部分だけつなぎで書くだけでいいし
919名称未設定:2008/05/07(水) 08:34:32 ID:coBrXLAs0
モダンCarbonを嫌がる理由がわからんなー
920名称未設定:2008/05/07(水) 08:52:30 ID:CMfyE7AE0
TISCopyInputSourceForLanguage( ... );
なら
[TIS copyInputSourceForLanguage: ... ];
と読み替えておけばほとんど何も変わらないしね。
autorelease が無いのだけはまあ気になるが、
Leopard でガベジコレクション使うなら CF 系オブジェクトも
NSMakeCollectable しておけばいいだけだし。
921名称未設定:2008/05/07(水) 09:25:49 ID:8naSQJhE0
toll-free bridged でない CFObject についても autorelease していい?
できそうな気もするけど、書いてあるところが見付けられなかった…
922名称未設定:2008/05/07(水) 16:17:44 ID:WRxnjbwI0
>>919

モダンでも将来が無いから。
923名称未設定:2008/05/07(水) 23:15:04 ID:suKBaKoM0
いや、でも、うえにあがってる TextInputSource まわりは
モダン Carbon で導入されたのは 10.5 だよ???
Apple が何考えて Cocoa でなくて CF にしてるのかは判らんが ...
924名称未設定:2008/05/07(水) 23:20:52 ID:i4YHvYrc0
へぇモダンCarbonて初めて知った
925名称未設定:2008/05/07(水) 23:37:54 ID:Qh1PhVTc0
IntelコンパイラがObjective-C喰ってくれないからなー
926名称未設定:2008/05/08(木) 18:29:58 ID:hE8NfP2u0
CoreDataのプロパティの属性から、値を取り出そうとしています。
OSは、10.5です。
HMDT Third Editionを読みながら格闘していますが、サッパリ判りません。

やりたい事
エンティティの属性には、日付とINT32のデータがあるとします。
また、エンティティは、一つのみとします。
この条件で
日付をキーとして、INT32のデータをプログラムで読み出したいと思います。


HMDT 3th の P333 「プロパティの取得」までは出来たのですが、そこから先に進めません。
もしかして、P340の「管理オブジェクトの生成」とかしないといけないのでしょうか?
でも、10.5では、「管理オブジェクトの生成」を作成する項目が削除されています。

何方か、教えて下さいませんか?
927名称未設定:2008/05/08(木) 19:21:04 ID:TCYS/HmF0
日付で取得したオブジェクトを配列に格納するなりしてアクセサメソッドを呼び出す。
928名称未設定:2008/05/08(木) 21:38:56 ID:/6e6sYWv0
ヒレガス本でencodeとdecodeについて勉強しているのですが、つまづいた所が
あるので教えて下さい。以下のコードを追加したところNSObject not respond to "~"
などの警告がでます。これってencodeWithCoder:メソッドがもう使われなくなったとかですか?
前にもこんな事があったのですが(NSEnumeratorのselectedRowEnumeratorメソッドが使われなくなってた)
ヒレガス本って今からやるには古すぎるんでしょうか…

-(void)encodeWithCoder:(NSString*)coder
{
[super encodeWithCoder:coder];
[coder encodeObject:personName];
[coder encodeValueOfObjCType:@encode(float) at:&expectedRaise];
}
929名称未設定:2008/05/08(木) 21:46:14 ID:iNFdN07J0
Carbon て 64-bit には対応しないんじゃなかったっけ?
だとすると今さら手を出しにくい

>>926
日付の predicate を作って fetch して、valueForKey で呼び出せばいい気がする
930名称未設定:2008/05/08(木) 22:56:54 ID:x0tM1m/R0
一部が対応しないだけ。
931名称未設定:2008/05/08(木) 23:02:00 ID:EqCKYgkP0
>>928
NSObjectはNSCodingを実装してないよ。

932名称未設定:2008/05/08(木) 23:17:16 ID:BP7jjS4s0
>>928 /6e6s さん、
XCode スレでみてたけど、NSEnumerator の仕様変更なんてあったっけ???
とおもったら、NSTableView の selectedRowEnumerator のこと?
それは NSEnumerator の仕様変更じゃなくて、NSTableView の仕様変更だよね。

> (NSEnumeratorのselectedRowEnumeratorメソッドが使われなくなってた)
selectedRowEnumerator 自体は NSEnumerator のメソッドじゃなくて、
NSTableView のメソッドで NSEnumerator を返すだけだし...

ことばのあげあしとりみたいで申しわけないけど、
なるべく普通の言い回しを使ったほうが伝わりやすいと思います。

あと、XCode に付属の API ドキュメントをみるようにしましょう。
あるメソッドが使われなくなったかどうかは、該当ページをひらいて、
そのメソッドのところに赤字で deprecated in OS X 10.? とか
書いてあるかどうかで判定してください。10.? から使用を推奨しないということ。
実際 NSTableView の selectedRowEnumerator をみると
10.3 からダメと書いてある。

encodeWithCoder もみてみればわかりますが、別に deprecate されてないです。
とりあえず
-(void)encodeWithCoder:(NSString*)coder
じゃなくて
-(void)encodeWithCoder:(NSCoder*)coder
なんじゃないかな ...
933名称未設定:2008/05/08(木) 23:19:09 ID:BP7jjS4s0
あと、
>[coder encodeValueOfObjCType:@encode(float) at:&expectedRaise];
はできません。Obj-C は、NS...* というのはオブジェクトだけど、
float とかはオブジェクトじゃないので。
(最近の純粋オブジェクト指向言語とは違います。)
XCode なり、ADC なりでNSCoder のクラスリファレンスをみると、
encodeFloatForKey:
encodeDoubleForKey:
というのがあるのでそちらを使ってください。
934名称未設定:2008/05/08(木) 23:26:11 ID:qSh4VS8R0
>>933
そこは多分あってます。

問題はおそらく>>931で指摘されている通り、このオブジェクトのスーパークラス(多分NSObject)
がNSCodingに適合していないってことだと思います。
なので
 [super encodeWithCoder:coder];
は必要ありません。
935名称未設定:2008/05/08(木) 23:42:15 ID:/6e6sYWv0
ありがとうございました。
とりあえず[super ...]の一文を消して
NSCoder*に書き直しました。まだエラーが消えませんが
もう少し自力で頑張ってみます
936名称未設定:2008/05/09(金) 03:18:46 ID:y3A5HaB90
CoreDataでの質問です。

1対多の関連を二回以上続けた先のEntityを複数のデータストアに分けたいのですが、
保存時に
「ストアを開くためのモデル構成が、ストアの作成
に使用されたモデルの設定と互換性がありません。」
と、警告が出て保存ができません。

間の関連をとって連続二回未満にすれば保存ができることはわかったのですが、
二回以上で保存する方法はないでしょうか?

わかりにくいので、一応サンプルをあげておきます。
ttp://www11.axfc.net/uploader/20/so/He_98690.zip
Pass:coredata
937名称未設定:2008/05/09(金) 10:47:09 ID:80X2weVT0
アプリケーション終了時に内部的にいくつか処理をしてから terminate してるのですが、
その終了時の処理に結構時間がかかっています。

せめてそれをユーザーからは見えないようにしようと思い、アプリを hide してから
終了処理をしようと、

- (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) sender {
[NSApp hide: nil];
[self finalizeApp]; // 時間がかかる処理
return NSTerminateNow;
}

としたのですが、うまくいかず、やはりアプリがフォアグラウンドにあるまま
完全に終了するまで待たされてしまいます。

アプリ終了時のパフォーマンスを速く見せる良い方法はあるでしょうか。
938名称未設定:2008/05/09(金) 11:27:45 ID:Opu2HJ/L0
>>926
私も3rd読みながら格闘中なんで、
主題の解決策に対してはサッパリなんですが、

>10.5では、「管理オブジェクトの生成」を作成する項目が削除されています。

これは、モデリングツールを最前面に出して新規ファイル...する、もしくは
プロジェクトウィンドウ(ていうのかな、ファイルなんかの一覧なやつ)で
モデルファイルを選択した状態で新規ファイル...する、と
一覧の一番下の方に「管理オブジェクトクラス」の項目が
出てくるようです。
939名称未設定:2008/05/09(金) 18:02:50 ID:UYBo6rbJ0
>>937
どうしても終了時でなきゃいけない処理以外は
別のタイミングで処理しておく
940名称未設定:2008/05/09(金) 19:06:00 ID:TcWuqsN40
プログレスバーや乳揺れ画像の一つでも見せれば少しは気が紛れるよ。
941名称未設定:2008/05/09(金) 19:15:30 ID:EdKmWeTA0
Virtual PC では、終了時にバックグラウンドで時間が掛かる後処理やってる。
それと同じようなことをしたいんだと思うけど。

applicationShouldTerminate だと、終了していいかどうかをデリゲートに聞いている
返事待ち状態なわけだから、そのかわりに、
applicationWillTerminate とか NSApplicationWillTerminateNotification をつかったら、
どう?
942936:2008/05/10(土) 04:26:03 ID:xbVxHxNF0
CoreDataでは異なるストア間の参照はサポートしていないみたいですね。
サンプルを落とした方、汚いサンプルですみませんでした。
スレ汚し失礼しました。
943名称未設定:2008/05/10(土) 12:49:53 ID:pME4zqtw0
Objective-C2.0で導入されたプロパティについて質問があります。

MyObj.h
@interface
{
MyObj obj_;
}
@property (retain) MyObj obj; // プロパティ
-(void)methodA; // メソッド
@end

MyObj.m
@implementation
@synthesize obj = obj_; // 見たいに書いて、例えば
-(void)methodA // メソッド
{
....
self.obj = otherObj;
}
@end
としたとき、合成されるobjのsetterは
-(void)setObj:(MyObj*)anObj
{
if( obj_ != anObj ) [obj_ release];
obj_ = anObj;
}
のように前のインスタンスを解放すると考えておりますが、実際に試したところ
自分で上のようなsetterを実装しないと、単に代入されて上書きされ、
メモリリークしていました。その理由が分かりません。何か勘違いしているのでしょうか?
944名称未設定:2008/05/10(土) 13:33:21 ID:6+POqPq50
>>943
retain属性なら
-(void)setObj:(MyObj*)anObj
{
. if( obj_ != anObj ){
.  [obj_ release];
.  obj_ = [anObj retain];
. }
}
とすべき。で、otherObjを他で参照しないなら
. self.obj = otherObj; // のあとに
. [otherObj release]; // または [otherObj autorelease];
としておけばいい。
945943:2008/05/10(土) 13:47:59 ID:pME4zqtw0
>> 944
レスありがとうございます。

うーん、何といいますか、自分としてはretain属性のプロパティでご指摘のようなsetterが勝手に
合成されることを期待しているのです。要するに自分でいちいちsetterを実装したくないので。。。
946名称未設定:2008/05/10(土) 14:19:32 ID:XJmL41040
>>943
ほんとうに -release が呼ばれていないことを確認したの?

単に、 retain/release のバランスがどこかで崩れていて、
leak してるというオチじゃないかと思うんだけど。
947943:2008/05/10(土) 15:04:30 ID:pME4zqtw0
>>946
レスありがとうございます。

えーと、最初自分でsetteerの実装をせずに、@property (retain)と@synthesize
の宣言を行った後、self.obj = otherObjなどしていました。
その際、MallocDebugツールでリークを調べていて、インスタンスの解放タイミングや
retainカウントをデバックしているうちに、リークが見つかり、その原因を追っていくうちに
上記のような現象にたどり着きました。
で、次に自分でsetterの実装をして検証したところ、解放タイミングおよびretainカウントとも
想定どおりで、且つMallocDebugツールでもリークがなくなったことを確認したのですが。。。

やっぱ変ですかね? ><;
948944:2008/05/10(土) 15:47:19 ID:6+POqPq50
>>943
試しにretainじゃなくてassign属性で走らせてみて、
それで期待通りの動きをしたら、
-(void)methodAの中でotherObjがきちんと開放されてないからだと思うんだが。
949名称未設定:2008/05/10(土) 16:09:14 ID:XJmL41040
ごめん、>>946 は斜めよみでざっと書いてしまった。


Cocoa のメモリ管理作法を正しく理解できていないようなので、
コードを書くのはいったん止めて、
http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
をきちんと読みかえしましょう。


>>943 であなたが出した、「これを実装するとリークせずに動作する」setObject: は、
新しいほうの object を retain していません。
これは、Cocoa のメモリ管理作法から逸脱した、ようするに間違ったものです。

synthesize + retain な property が自動作成する setObject: は、
>>944 にあるものと同じふるまいをします。これが正しい実装で、
あなたの間違った実装より retain が一回分多いのです。

つまり、「間違った setObject: の実装ではリークしない」コードは、
正しい setObject: と一緒に使った場合、release が一回分少ないことになり、
そのためにリークしているわけです。
950943:2008/05/10(土) 17:00:36 ID:2nbg5muC0
>>949
レスありがとうございます。

> synthesize + retain な property が自動作成する setObject: は、
> >>944 にあるものと同じふるまいをします。これが正しい実装で、
> あなたの間違った実装より retain が一回分多いのです。
 なるほど!っていうか、そりゃそうだ、なんで気がつかなかったんだ!?

>Cocoa のメモリ管理作法を正しく理解できていないようなので、
>コードを書くのはいったん止めて
 すっかり基本を失念していた。多分間違った我流作法でソース書いてた。
 ヴァカすぐる。もいっかい管理作法を読み返して、ソース全部見直さなきゃ。orz

でもまだ間に合う。的確なアドバイスありがとうございます。
951名称未設定:2008/05/10(土) 19:47:48 ID:fcdWzzL20
16進数の数値を表す文字列を10進数で表された文字列に変換するにはどうしたらいいでしょうか?
具体的にやりたいことは、NSData内に数値の情報を示すバイト値の列があって、
それをGUIに表示したいのですが、
[NSString initWithData:data encoding:encoding] で試してみたところ変な文字列になってしまいうまくいきません。
エンコードはNSUTF8StringEncodingやNSASCIIStringEncodingなどを試してみました。

例えば16進数のバイト列 d6560500を10進数の数値の変換したい場合はどうすればいいのでしょうか?
952名称未設定:2008/05/10(土) 20:19:55 ID:JIRYjIAd0
バイナリデータ=16進数と勘違いしてない?
バイナリエディタ等で16進表記されてるのはただの人間の利便性の都合だから
あの文字列が内部的にデータとして入ってる訳じゃないよ

NSDataのgetBytes:あたり使えば後はどうにでもなると思う
953名称未設定:2008/05/10(土) 21:12:31 ID:fcdWzzL20
ちなみに>>951のコードで
NSString* string = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
NSLog(string);
とした時に、文字列の情報は正しく取得できるのですが、
数値の情報をもってこようとするとうまくいかないということでした。

これをgetByteに変えてやってみました。
unsigned char buffer[0];
[data getBytes:buffer];
NSLog(@"%s", buffer);
同様に文字列は正しく取得できるのですが、やはり数値の情報の取得がうまくいきません。

int buffer[0];
[data getBytes:buffer];
NSLog(@"%d", buffer);
と試してもしてみましたがうまくいきません、、。
954名称未設定:2008/05/10(土) 21:25:46 ID:JIRYjIAd0
根本的に文字列と数値の違いも解ってないんジャマイカ
指摘にも上の空っぽいからもうつっこまないけど
955名称未設定:2008/05/10(土) 21:48:43 ID:fcdWzzL20
どう違うか説明しろと言われるとできませんね、、。
文字列の数値と数値が違うってぐらいの基本は分かっているつもりですが、
おっしゃる通り理解が足りないと思います。
非常に煮詰まっていてご指摘に対してちゃんと返答できていませんでした。すみません。
956名称未設定:2008/05/10(土) 22:31:57 ID:XJmL41040
> unsigned char buffer[0];
> [data getBytes:buffer];

これはひどい。
957名称未設定:2008/05/10(土) 23:01:12 ID:fcdWzzL20
ここ読んでやってみたんですがどのへんがおかしいのでしょう、、。
http://developer.apple.com/documentation/Cocoa/Conceptual/BinaryData/Tasks/WorkingBinaryData.html
958名称未設定:2008/05/10(土) 23:10:48 ID:nR40SzFm0
沖林式?
959名称未設定:2008/05/11(日) 00:11:11 ID:iL9wa7af0
俺も基本も分かってない気がするが答えてみる。

必要な処理は、
・文字列→数値
・16進数→10進数
・数値→文字列
の3つじゃないの?
960名称未設定:2008/05/11(日) 09:06:32 ID:ZBQfRAO80
>>950
プロパティつかって Leopard でしかうごかなくしちゃうんだったら、
GC オンにしてしまえばいいんではないかと思いますが ...

iPhone / iPod touch 用でやっているなら仕方ないけど。
961名称未設定:2008/05/11(日) 10:58:32 ID:ZxJ0jefQ0
>>957
>>956の部分に関しては、配列の大きさが0なのが悪い気がする
でも大きさ0にするとどうなるんだろうか
962名称未設定:2008/05/11(日) 12:02:00 ID:3pkc7KiT0
0でも正しく表示されてしまうんですよね、、。
今は一応1でやってみてますが。

>>959
文字列→数値はNSDataに変換すればいいのですよね?
16進数→10進数のやり方が分かってないのですが、
数値→文字列は今のところバイト値から求めたい文字列を正しく表示できているので、たぶんできているのだと思います。
963名称未設定:2008/05/11(日) 12:09:28 ID:3pkc7KiT0
すいませんいろいろ勘違いしてるみたいで、どこもかしこもちゃんとできていない気がしてきました。
出直してきます。
964名称未設定:2008/05/11(日) 16:56:40 ID:s+FH5Jdv0
strtolやらstrtoulやらをつかえばいいのに
965名称未設定:2008/05/11(日) 17:51:30 ID:SttJKJAU0
>>962
> 0でも正しく表示されてしまうんですよね、、。
> 今は一応1でやってみてますが。

それは、単純にバッファオーバーフローを起こしてます。
ただ、運良くメモリ破壊の影響が少なくて、うまく動作しているように見えるだけです。

ところで、今回の話は、NSDataの中身を10進数文字列にしたいのですよね?
NSDataのサイズは何バイトですか?
また、10進数の数値は何バイト表現にしますか?(int型なら4バイトとか)
それから、
NSString* str = [NSString stringWithFormat:@"%i", value];
とかって、やるとint型の数値の10進数文字列表現が得られるのは知ってますか?
966名称未設定:2008/05/11(日) 18:25:05 ID:2m0C7blv0
IBで、Window上にあるNSButtonに、InspectorのKeyEquiv:でF1キーを割り当てて
いるのですが、F1キーを押すとNSButtonのActionに2つ連続してActionが飛んで
きて、処理が二重に動作してしまって困っています。

F1以外のFunctionキーに変えても同じように二重にActionが飛んできますし、
試しに英字キーのAを割り当ててaを押すとActionは一つのみで、また
F1のKey Mod:にcommandキーを割当ててF1+commandと押すとActionは一つのみでした。
このように別のキーや、commandキーとの組み合わせでは発生しないので、
Actionが二重に飛ぶのはキーボードのチャタリングとは考えにくいです。
環境は、iBookG4, Mac OS X 10.4.11, Xcode 2.5, IB 2.5.6 です。

これはNSButtonのInspectorでの設定のやりかたが悪いのでしょうか、
もしくはFunctionキーを押すとActionが二重に飛んでくるのは仕様なのでしょうか。
わたしのMacだけの問題なのでしょうか。
どなかた情報をお持ちの方がいらしたらアドバイスをお願いします。
967名称未設定:2008/05/11(日) 20:43:19 ID:beZqNfs70
>>966
俺も同じ症状で>>512で書き込んだけど結局わからない。
968名称未設定:2008/05/11(日) 23:19:09 ID:HbOBQd9C0
私もカーソルキー割り当てで二重実行するのに悩まされた。
結局あきらめたけど。
969名称未設定:2008/05/12(月) 01:58:27 ID:kaoonKig0
>>966-968
つか、、
ttp://developer.apple.com/documentation/Cocoa/Conceptual/Button/Tasks/SettingButtonKeyEquiv.html

このへんIB2.5はちゃんと対応しきれてないんかね?IB3だと問題なかったような気がするんだけど、、
970名称未設定:2008/05/12(月) 11:21:39 ID:19lg0Wdi0
素朴な疑問。
NSDictonaryなんですけど、任意のkeyが存在してるかどうかを知るのって、
allKeyで全部取り出してfor等で回していちいち調べなきゃだめですかね。
他に一発で結果がわかるような簡潔なメソッドって用意されてないんでしょうか。
971名称未設定:2008/05/12(月) 11:43:41 ID:fGDuhclh0
いや、objectForKey: で nil が返ってくるか調べればいいだけだと思うが ...
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html
にもそう書いてあるよ
972970:2008/05/12(月) 11:49:54 ID:19lg0Wdi0
>>971
ああ・・・。俺が間抜けだった。
ありがとう。
973名称未設定:2008/05/12(月) 19:42:03 ID:a9NhLGkc0
NSColorってコアデータのエンティティに保存できますか?
テーブルビューの表示データ行にラベルをつけてみたいのですが。
974名称未設定:2008/05/12(月) 19:45:24 ID:Tlh3z2/U0
>>937
NSDataに変換して保存。
開く時はNSDataからNSColorに変換すればok
975名称未設定:2008/05/12(月) 22:19:21 ID:Ti+PWmoX0
ありがとうこざいます、チャレンジしてみます。
カラムの属性はバイナリってことですかね?
コアデータの実体ってXMLファイルなんですけど、
どんなふうに記録されるのか不思議です。
976名称未設定:2008/05/12(月) 23:16:47 ID:dCLOmrfN0
>>975
>どんなふうに記録される

こんなふう
<key>lineColor</key>
<data>
BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2Jq
ZWN0AIWEAWMDhAJmZgABhg==
</data>


977名称未設定:2008/05/13(火) 22:10:44 ID:5qSiOIyE0
NSBundleを利用してAboutというnibファイルのロードを行いたいのですが、以下の
方法だとmakeKeyAndOrderFront:メソッドが無効だよ、と言われます。エラーには
+makeKeyAndOrderFrontと書かれていたのですがこれはインスタンスメソッドですし
もうお手上げです。どの辺で勘違いしているんでしょう、どなたかご教授ください。


AboutController.m
BOOL successful = [NSBundle loadNibNamed:@"About" owner:self];
if(successful){
  [self makeKeyAndOrderFront:self];
}
978名称未設定:2008/05/13(火) 22:32:18 ID:uOTw9HiH0
>>977
selfが指すのはAboutController でしょ。
AboutControllerがNSWindowから派生したクラスじゃないのでは?
(makeKeyAndOrderFront:って事は、"自身" を画面の前面に持ってきて
KeyWindowにしろって命令だから、NSWindowかそのサブクラスが
応答するのが自然)。名前からして違うような気がするけど。
979名称未設定:2008/05/13(火) 23:16:46 ID:BBqTH8+e0
loadNibNamed: owner: は、owner: で渡したオブジェクトが、
Interface Builder で見える File's Owner になるので、
nib 内の window はそこからたどってください。
owner で渡すオブジェクトに IBOutlet をつくっておいて、
window を IBOutlet に結びつけておくのが簡単だと思いますが ...
980名称未設定:2008/05/14(水) 23:33:28 ID:1xwGe7jL0
966です。>>967-969 のみなさん、情報ありがとうございます。
10.5を持っている方にお願いして差分を調べてもらいました。
Xcode2.5でビルドして10.4で実行→×
Xcode2.5でビルドして10.5で実行→×
Xcode3.0でCross-Develop Using Target SDK 10.4でビルドして10.5で実行→×
Xcode3.0でCross-Develop Using Target SDK 10.5でビルドして10.5で実行→○
という結果になり、10.4ではダメなのであきらめるしかないようです。
981名称未設定:2008/05/14(水) 23:44:07 ID:nznoHqtZ0
>>980
そうですか、調査ありがとうございます。
NSWindowのサブクラスやデリゲートを作りkeyDownで処理するしかない感じですかね?

NSArrayControllerで特定のカラム(例.title)の値が変更されたのを通知するにはどうすれば良いでしょうか?
[NSArrayController addObserver:self forKeyPath:@"arrangedObjects.title" options:0 context:nil];
でもいけたんですが、ソート順を変えても通知されるので困っています。
forKeyPathの値に何かうまくいく記述があるのでしょうか?
982名称未設定:2008/05/15(木) 00:02:51 ID:Hj4Sp0Hh0
>>981
[NSArrayController content]にaddObserverすればいいんじゃないか?
983名称未設定:2008/05/15(木) 03:18:56 ID:sZ8n+PBv0
>>981
古いデータと比較して、変化なかったら無視すればいいのでは?
984977:2008/05/15(木) 09:29:57 ID:4ZUv1Sit0
>>978
>>979
お礼が遅れて済みません。
AboutControllerはNSObjectのサブクラスなので大丈夫かなと
思ったのですが…あと試しに宣言だけNSWindowの派生クラスにしてみても
エラー内容が変わらないんです。owner:に渡す値がまだよくわかって
ないのですが、もう少しやってみます。ありがとうございました
985名称未設定:2008/05/15(木) 16:21:36 ID:z8/U92080
>>984
なにか勘違いしてるとおもうんだけど、makeKeyAndOrderFront: させたい
window は nib の中にあるオブジェクトなわけでしょ?
それをまず取り出さないといけません。

あと、owner: で渡したオブジェクトは、nib 側からは File's Owner になります。
owner: で渡したオブジェクトがマジカルに欲しい window オブジェクトになるわけじゃないですよ。

それに、そのあたりがよくわかってなかったら、
そもそも別の nib にしないで、main.nib に window を追加して、
それへの outlet を controller に持っておくのが簡単だとおもうんだけど。
986名称未設定:2008/05/16(金) 01:07:41 ID:aklscQef0
>>984
たぶん基本的なところが弱いかな〜。

>AboutControllerはNSObjectのサブクラスなので大丈夫かなと
NSObjectは、決して万能のクラス(どんなメッセージにも応答できる
スペシャルなクラス)ではないよ。その逆で、retain、initといった、
クラスとして最も基本的な事しかできないものだと考えればいい。

makeKeyAndOrderFront:はウインドウに対して送るメッセージだから、
最低限「Window的」な振る舞いを持つクラスでなければ応答できない。
だから、これはNSWindowのサブクラスである必要がある。

>宣言だけNSWindowの派生クラスにしてみても
たぶん無理矢理
@interface AboutController : NSWindow
としたんだろうけれど、きちんとヘッダファイルに
- (void)makeKeyAndOrderFront:(id)sender;
とか書いて、そのメソッドも定義すれば、とりあえずエラー自体は
出なくなるはず。AboutController=ウインドウだから、
応答しても意味ないけどね。
987986:2008/05/16(金) 01:08:42 ID:aklscQef0
訂正。最後から二行目、
NSWindow ≠ ウインドウ
の間違い。
988名称未設定:2008/05/16(金) 02:36:49 ID:CgZkNnSkP
いまさらなのかもしれないけど、Xcode3.0あたりから
付属のAPIリファレンスはオンラインを参照するようになった?
常時接続じゃないからちょっと不便…
989名称未設定:2008/05/16(金) 04:55:45 ID:UsfNj5B40
HDDのマークがついてる奴はオフラインだよ。
990名称未設定:2008/05/16(金) 08:30:33 ID:CwHjLP1I0
>>988
3.1かららしいよ
991名称未設定:2008/05/16(金) 10:57:49 ID:P4K/1j2x0
3.1 でもローカルにあるけど。
RSS みたいになってて、自動でアップデートがかかるようになってるのと、
XCode のパッケージにはドキュメントついてないので、はじめて立ちあげたときに
アップデートかけないといけないだけです。
992名称未設定
>>989-991
情報thx
Core Libraryにsubscribeしてアップデートしたらできたよ