- 初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。
前スレ
Cocoaはさっぱり!!! version.8
http://pc11.2ch.net/test/read.cgi/mac/1179498292/
- 2?
- 今日は寒いから、ラム入りココア!
- なぜMacプログラミングはこんなに寂れてしまっているのか
http://www.vector.co.jp/vpack/whats/
- Macに限らずWindowsでもだが、Vectorはもう見限られてる。
- ダウンロードにたどり着くまでにエロゲの広告が一杯出るからなあ
- vectorの存在忘れてた
昔は便利だったのだろうが、昨今ではどうだろうね
- Vector は掲載を申し込んでから実際に掲載されるまでに1ヶ月かかるんだよ。
アップデート時も同様。
MacUpdate とか Version Tracker は数時間なのに。
- どこから登録したらいいか、すぐ分からなかったのでやめた。
登録させたくないとしか。
- M女史ですら登録できてるのに
- NSOutlineViewで階層表示、ドラッグ&ドロップで並び替えの
良いサンプルはないでしょうか?
機能を実現するための考え方というか仕組みが分からず
苦労しています。
NSTableViewでのドラッグ&ドロップで並び替えはわかったのですが。
- >>11
LeopardならAppleのsample codeのAbstractTree、SourceView
Leopardより前なら古いけれどDragNDropOutlineViewが
Developer/Examples/AppKit/DragNDropOutlineView
にあります
- なんか日本でcocoaのプログラマーって10人いないような気がする。
- すげーな
お前も俺もレアモノだぜ
- いくらなんでも希少種と呼ばれる麻薬取締官より少ないってことはあるまい。
- それはないw
- Javaだったら、Socketとか、SocketChannelを使うケースって、
Cocoaだと、どうするのですか。
Cを使う必要があるのでしょうか。
- Cを使った方が間違いないと思うよ
むかーし、CocoaだけでXMLやSocketを実現しようとしたけど、
バグっぽくて嫌になったorz
C++のライブラリを使ったObjC++がおすすめ
- >>13
「Cocoaで食ってるプロ」なら10人いないかも
- >>17
client も server もCocoa だけで済むなら、Distributed Objects つかうと
めちゃめちゃ簡単ですよ。
- http://developer.apple.com/documentation/Cocoa/Conceptual/DistrObjects/DistrObjects.html
のへんとか。
- Cocoaだけで完結するプロジェクトなんてないでしょう
- ええっと僕に言われてるのだとすると、
Cocoa だけ、と書いたのは、プロジェクトが全部ココアだけ、
ということではなくて、
Client も Server も Cocoa つかったソフトで良ければ、ということです。
実際に、案外のフリーウェアでサポートされてる LinkBack とか Growl とかは
Cocoa の Distributed Objects で実装されてるけど、
Carbon app とかスクリプトからも使えます
- 暇だから日本人のCocoaプログラマを知ってるだけあげてみるか。
mkinoさん、荻原さん、nakamuxuさん
まだまだいるはずだけどぱっと出てこないもんだなあ。もっとあげられる暇な人いる?
- Digitalians' Alchemyの人。
- 俺
- 10人どころか5人もいねえw
- hetimaさん俺
- 名取り、さわっち、まさき
- プログラミングする気がないなら無理に来なくていいんだよ
- 松本さんとか永野さんとか
- 俺俺、俺だよ、俺
- IBでボタンにリターンキーを割り当てると、
テキストフィールド上で文字の決定でリターンキーを押した時にもボタンが反応してしまいます。
どうやって回避したらいいんでしょうか?
あと、矢印キーに至ってはボタンに割り当ててしまうと
テキストフィールドで矢印キーでの操作がまったくできなくなってしまう始末です。
- ボタンにキーを割り当てるのは良くない気がする。
NSWindow サブクラス化とかでキーイベントひろって、ターゲットを呼び出せば?
- >>33
そりゃサブクラスのファーストレスポンダあたりの設定がおかしいんじゃまいか。
変換決定のリターンキーではデフォルトボタンは反応しないよ。
- NSなんたらviewのサブクラスを作って右クリックでコンテキストメニューを
表示させているのですが、10.4だと表示されて10.5だと表示されません。
なにか仕様が違うのでしょうか?
- また仕様ですか君か。
違っているから、自分で調べなさい。
- >>33は変換確定ではなくて改行の事を言っているのでは?
NSTextFieldじゃなくてNSTextViewを使えばどう?
- 37はMSMVP工作員
- >>34
key EquivだとIB上でできるので楽だと思ったのですが、あまり良くないのですね;
>>35
変換決定でなくてアクションを送るためにリターンキーで決定する時、ということでした。
>>38
NSTextViewを使ったことがなかったので、勉強してみます。
みなさんありがとうございました。
で、問題だった部分ですが、
テキストフィールドにアクションのターゲットを設定してやれば解決しました。
ターゲットがあればそちらにレスポンダチェインが走って(?)
ターゲット先でなんらかのアクションが起きてチェインが終了、他のボタンにはチェインは送られない
ということなのかなと、とりあえずは解釈しました。
- あ、ちなみに矢印キーをボタンにセットすると
NSTextFieldとNSTextViewどちらでも矢印キーが使えなくなってしまうみたいです。
- LeopardにしたらsetControlTint:NSGraphiteControlTintが効かんようになっとるじゃないか
- アレイコントローラーにデータがロードされた直後に
一回だけ処理をしたいのですがさっぱりです。
- Windowを最前面に固定するのってどうするの?
- CALayer の contents に登録してある CGImageRef から
CIImage に変換したいんだけど,
CIImage *image = [CIImage imageWithCGImage: layer.contents]
であってますかね?
やりたいことは,CoreAnimation の2つのレイヤーから画像をとり出して,
CIFilter かまして,CoreAnimation の結果格納用レイヤーに画像をはめ込みたいのです.
- やっと直った。Xcode3+IB3
Cocoaアプリケーションチュートリアル
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial
- >44
// スクリンセーバーよりも前に出せ
[theWindow setLevel:9999];
- >>46
しかし、なんだこの中華なフォントは?
- 国際化って奴だろ。
- >47
ありがとう。
最前面のちっちゃいメモがあればいいと思ってたので助かった
- 自己解決しました.キャストがないだけだった orz
CIImage *image = [CIImage imageWithCGImage: (CGImageRef)layer.contents]
- >>46
やっと直ったじゃなくて、リンク切れてたから
おとといぐらい ADC に連絡したんだけど。
24時間ぐらいで直したよ、って返事来てたよ。
というわけで皆さんも ADC にじゃんじゃん連絡しましょう。
- HMDTつならがない...
- つながるけど?
>>52
ADCって日本語スタッフいるの?直接本家ADCに連絡すればいいんすか?
- 直接本家に言ったら直してくれたよ。
- サンクス、積極的に連絡してきます
たまにリンク切れとかあるんすよね
- NSOpenpanel について質問させて下さい。
何か開くと、ポップアップメニューの「最近使った場所」に自動的に追加されますが、
この情報はどこに保存されているのでしょう?
~/Library/Preferences/(BundleIdentifier).plist には含まれていないようなのです。
OS 10.4.11 Xcode 2.5
- NSRecentDocumentRecords?
- >>58
それはファイルメニューの「最近使った項目」のほうですよね。
僕が言ってるのはNSOpenPanelのタイトルバー下にあるポップアップメニューのです。
で、自己レスですが、色々試してたら気付きました。この情報は全てのアプリで共通なんですね。
~/Library/Preferences/.GlobalPreferences.plist の NSNavRecentPlaces にありました。
自分で編集できないかと思ったんですが、他のアプリと共通なら
(NSUserDefaultでできるのかもしれませんが)すべきでないんでしょうね。
- Cocoaというか、プログラミング自体初めてなんだけど難し過ぎて挫折したw
サイト参考にして簡単な計算やHelloworld、
簡単なGUI作ってボタン押したら数字がtextviewに表示されるのとかやったけど、
ファイル読み込んでそれを表示させたり、編集できるようにしたり、とかなると、
もう訳分からない単語ばかり出てきて頭が痛くなったw
とりあえず、IBでGUIだけでも完成系に近いものを組み立ててそのままにしてる。
プログラミングできる人、本当に尊敬するわ。
- >>60
俺も全くわからなかったが、ヒレガス本読んだらかなりできるようになった。
プログラミング初めてならCからやった方がいいね。
- まずは住所録ぐらいから始めてみては?
いきなり目指すアプリを作るのは大変ですよ。
普通(タイトルバーや左上にボタンがついた)のNSWindowを
フルスクリーンにしたり元のWindowに戻したりするには
どうすれば良いのでしょうか?
ネットで探すと別途でNSWindowをallocして初期化でボーダレスに
したりしているのが多いのですが、そうではなくて例えばプレビューで表示させている
ウインドウをそのままフルスクリーンにしたいのです。
どうかよろしくお願いします。
- レパードなら NSView の
enterFullScreenMode:withOptions:
で出来ますが、レパード以前だと別途 alloc しか仕方がないと思います。
別途 alloc でもそんなに面倒くさくないですよ。
[newWindow setContentView:[oldWindow contentView]]
とかするとオッケーだったと思います。
- レスサンクスです。
>>61
C言語ですか、、、。道のりはかなり長そうですね、、。
ヒレガス、、ちょっとググって見ますね。
ありがとうございます。
>>62
住所録ではないですが、
TableViewを使って、左側に名前、右側に収入を入力(記録)できるものは作ってみました。
ビデオをチュートリアルを参考にしたんですけどね、、。
作りながら各文がどういった動作をさせているのか
説明を聞きながら理解しようとして作成しましたが、やはり初めて一週間ちょっとだと
難しいですね。ややこしいというか。これがパッと分かって簡単だと感じる人ってすごいです。
ちなみに参考にした動画はこれです。
ttp://revver.com/u/masna/
ここのNSArrayController & Cocoa Bindings Tutorialというビデオです。
ほかにもいろいろ動画がありました。
- 俺も最近Cocoa始めたけど
NSなんたらController系が逆にわかりにくくて
手書きでちまちまコントローラを書いてしまう
- 手書きで書いてしまうということは、
プログラミングに関する知識はあったということなんですかね。
やっぱり最初からCocoaに飛び込むのは無謀だったか、、w
- いやー最初の絶望感は自分も味わったからわかるw
Cocoaの初心者向けサイトって見てもあんまり噛み砕いた説明してないよね。
プログラミング自体完全に初めてなんだったらいきなりGUI付きのアプリより
Terminalで動かすCUI専用のツールをCで書いてみるとかから始めてみたらどうだろう。
- >>65
ありすぎて困る
- アップルのセミナー、全部取れた!
有給使って行ってくるよ!
- Leopardになってから何かXcode壮絶に変化した気がする。
Tigerの時はOSをさかのぼっても10.3止まりだったのが
OSX10.1用にコンパイルできたり、カスタマイズがやりやすくなってる印象。
Interface Builderあたりも結構、仕様が変わったのねぇ
- 楽しいcocoaプログラミングを読みながら基本的な用語を理解しようとしてる
んだが、俺の理解&例えが正しいかちょっとおまいら見てみてください
[メソッド(インスタンスメソッド)]を使って[インスタンス変数]を[クラス]という設計図の
中に書く(定義する)。これをインスタンス化してできるものが[インスタンス]。
↓
[英語]を使って[文章]を[原稿]の中に書く。
これをプリントアウトしてできるものが[本]
- >>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:をお好みに応じて。
- >>71
さっぱり分からん例えだ…オブジェクト指向言語の入門書を読んだ方が良いかも。
クラス:工場ラインと設計図
インスタンス:カスタマイズド製品
クラスメソッド:インスタンス化(製品製造)したり廃棄とか…
インスタンス変数:カスタマイズ項目
インスタンスメソッド:入出力系(カスタマイズ状態によって応答を変えることができる)
みたいな感じかな?補完修正よろ
- >>73
私の理解はこうです。
クラス:たいやきの型
インスタンス:たいやき
クラスメソッド:たいやきの型の火加減調整
インスタンス変数:たいやきのあんこの量
インスタンスメソッド:たいやきのあんこの量調整
- >>74
たいやきをたこ焼きに変えただけで俺のイメージと全く同じで笑った
- クラス:ロボットの設計図
インスタンス:完成したロボット
クラスメソッド:ロボットの生産命令
インスタンス変数:ロボット各部の部品
インスタンスメソッド:ロボットの動作の定義(前ボタンを押したら前進、下ボタンでしゃがむ、とか)
- OOのたとえ話なんて何のたしにもならん。
言葉遊びしてる暇があったらリファレンス読みこなせ。
- 言葉遊びとは違うでしょ
触り始めに知識ばっか詰め込んでも
その知識の使い方がわからないんじゃ意味がない
もちろん量を読むのは大事だけれど
- 複数のロボットが共同してひとつの仕事をこなす。
- 比喩で解った気になってるとな、後でなぁ。
- >>78
>>73, >>76
言葉遊びしてるが。
- メモリがリークするってのは、食いきれないたい焼きがどんどん増えていって、
地球上がたい焼きで溢れかえる、と言う認識でよろしかったでしょうか
- だめだろ
- 初めは解った「気」になるのも大事だと思うがね
- 最初は自分の納得出来る形で覚えるのがいいよ。
進んで行くうちに修正すればいい。
私の場合、ロールプレイングゲームのモンスターをイメージしてたし(笑
メンバ変数:名前や体力とかマジックポイント
IBアクション:攻撃を受けたとか
メソッド:体力を減らすとか0になったら死亡フラグが立つとか
モンスターが10匹現れたら上記のインスタンスを10個立てて
それぞれのインスタンスに攻撃すれば、それぞれで勝手に処理してくれる。
みたいな。
- >>82
バイバイン乙
そして、仕事でVBを使うことになった俺orz
- 皆さんマジレスどうもです
たぶん自分の理解は外れてないけどものすごく浅いってことだろうと
解釈しました。分かった気にはなれませんでしたが、もうちょっと読みこなして
リファレンスももっと見ていこうと思います
- なぜかIDが変わりましたが、>>71でした
- プログラムは実践あるのみです
- >>63
>>72
できました、ありがとうございます。
Leopardは直接フルスクリーンにできるんですね。
まだ、10.4なんです。
>>72のやり方だとウィンドウのステータスバーが残るんですね。
仕方ないのでウィンドウ内のビューサイズをウィンドウに合わせて回避しました。
- NSWindowにステータスバーなんてあったっけ?
まぁいずれにせよconstrainFrameRect:で返してるNSRectがウィンドウのrectになるってだけなので、
result.size.height+=(ステータスバーの高さ);
result.origin.y-=(ステータスバーの高さ);
とかしたらうまくいくんじゃないでしょうか
- >>80
大間違いな解釈していると後で大変だよな。
あるケースで奈落の底に・・・
- >>91
勘違いしてました。
ステータスバーと言うのはないですね。
単にウインドウ内部のビューが小さかっただけです。
- テーブルビューで、ヘッダーのところをクリックするとデータが
並べ替えられますが、クリックしても何も起きないようにするには
どうすればいいでしょうか。
- >>67
レスサンクスdです。ID:JVdTTK6m0 です。
CUI版ですかぁ。あまり親しみがないんですよね。
cui版mplayerを時々使ってるくらいかな。
最初からGUI物に飛び込むのは無謀なんですかね。
今はC言語のサイトを見つけて読んでるところです。
>>74
わかりやすいですね。
ほかの方が「わかった気になってるだけ」とおっしゃっていましたが、
個人的に、最初にそこでたくさん出てくる横文字でつまずき、挫折するよりかは、
少しでもわかりやすい例えで理解して前に進んだ方がいいと思っています。
"なんとなく"でも把握していれば、やっていくうちに、もっとはっきりと
どういったものなのか分かってくるかなと。初心者の自分がいうのもなんですがw
プログラミングではなく、自分が習ってきたほかの物のことを考えるとそうなんで。
>>94
自分は、始めて1週間ちょっとくらいしか経っていないので
確かではないのですが、
TableViewを選択した状態で、インスペクターのAttributesを表示し、
「Allow: 」って所の「Column Ordering」っていうのからチェックを外したらどうなるでしょうか?
実際に使ったことがないのですが、名前からして、チェックがついてると「並び替えを許可」っぽい感じなんですが。
- >>94
>>95に書いたのは、
Interface Builderでの操作です。
- >>95, 96
私は IB3 を使ってるんですが、NSTableView の Attributes -
Columns の "Reordering" のことでしょうか。
これは column の位置を変えられるようにするかどうか
(1列目と2列目を入れ替える、など)のようです。
- >>97
名前は違いますが、Column Oderingと同じ機能っぽいですね。
確かにそうかもしれませんね、、すみませんm(_)m
あとは、TableViewを一つのコラムを選択した状態で
Attributesを選択。その時に表示される、Sort Key、Sort Selector、Sort Order
っていうのは何か関係あるんですかね。
Sortというのは整頓という意味ですし、もしかしたら、、
と思ったので一応書いておきます。
- 自動でソートが効くってことはアレイコントローラを使っているんだと思うけど、
[arrayController setSortDescriptor:nil];
とかしてみればいいんじゃなかろうか
- >>99
おっしゃる通り、NSArrayController(と Core Data + Cocoa Bindings)
を使っています。
で、sortDescriptor を NSArrayController に設定して使っているのですが、
テーブルのヘッダをクリックすると勝手に並べ替えられてしまって、
設定した sortDescriptorとは違う順序になってしまい困っています。
- クリックしたときに何も起きないようにしたいんじゃなくて、
自分で設定したsort descriptor を動作させたい、てこと?
- >>101
sortDescriptor は立ち上げ時に一度設定するだけなのですが、
それを変更できないようにしたい、ということです。
- それだったら アレイコントローラにsort descriptor は設定しておかないで、立ち上げ時に
手動でアレイコントローラのコンテントをsortUsingDescriptorsをつかってソートすれば
いいかな
あるいは、NSTableHeaderView のmouseDown: を横取りしてマウスクリックを受け付けなくするとか
もっとスマートな方法があるかもしれないけど
- >>102
[tableView unbind@"sortDescriptors"]
- 昇順←→降順の切替をユーザにさせたくなくて、常に昇順に保持しておきたい場合、降順ソートできないように
書き換えた sort descriptor サブクラス…
- (id)reversedSortDescriptor
が単に自分のコピーを返す…
を作って置き換えるとか??
- カラムのソートデスクリプタはIBで設定せず、
コードでプログラム起動時に一回だけ動くように記述する。
あと、ヘッダーカラムをクリックした時の記述があったはず。
- たくさんレスいただきありがとうございます。
>>102, 106
sortDescriptor そのものはバインディングはせず、コード内で立ち上げ時に
一度 arrayController にセットしています。
テーブルに表示される Core Data のデータの方だけ、バインディングしています。
>>103, 105
データそのものは追加されていくものなので、できれば sortDescriptor だけで
済ませたいのですが‥
arrayController の content を手動でセットする場合、立ち上げ時はいつ
Core Data のデータのフェッチが終了するのかがよくわかりません。
データの順番は、表示されているデータそのものの昇順、降順ではなく、
表示には使っていない attribute をキーにしているのですが、ヘッダーセルを
クリックすると、表示されているデータを昇順、降順に並べ替えてしまう
ようです。
やはり mouseDown の上書きしかないでしょうか‥
- >>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の順序を記録する用途で当方でも使っていますので、同じ状況だと思いますが?
- >>104
ありがとうございます、できました!
>>104 の unbnd を arrayController unbind: と勘違いし、
うまくいかないと思ってしまいました。すみません。
さらに欲を言うと、ヘッダをクリックしたときヘッダの色が
青になりますが、この色も変化させないようにすることは
できるでしょうか?
- >>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が多くてすいません
- QuickTimeムービーのプロパティでサウンドトラックの低音/高音の音量を個別に設定できますが
あれをQTMovieに対して設定する事は可能なんでしょうか?
- アトリビュートなんたらを洗えばあるんでないかい?
ADCのクラスリファレンスに一覧があるよ。
- あるビューにサブクラスを2つ以上実装したい場合はどうすればよろしいのでしょうか?
例えば、NSImageViewのパーツを置いてカスタムクラスにMyImageViewを設定するのですが、
もう一つMyImageView2もカスタムクラスにしたいのです。
よろしくおねがいします。
- ええっと、オブジェクトというのは一つのクラスにしかなりえないから、
ひとつの ImageView をふたつのクラスにするのは無理だよ
単に
@class MyImageView : NSImageView
としてから、
@class MyImageView2 : MyImageView
として、カスタムクラスを MyImageView2 にすれば?
そうすると MyImageView2 からは MyImageView のメソッドも
NSImageView のメソッドも使えるよ。
- 委譲させたら?
- 質問なんですが、ボタンを押した時に特定のコントロールにキーのフォーカスを移動させたいんですが、どうやればいいんですか?
NSWindowにselectKeyViewFollowingViewみたいなのはあるんですが、渡すView自体を選択してくれるメソッドが見つかりません。
- NSWindow の makeFirstResponder:
- >>117
ありがとうございます。できました!
- 数年ぶりに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
- 試しにターミナルで次のコマンドを実行しました。
ln -s Test.jpg TestAlias
これはシンボリックリンクを作るはずですが、やはり、出来上がったTestAliasはエイリアスのように振る舞います。
Test.jpgを移動しても、名前を変えても追跡してくれるみたいです。
ということは、私の環境ではもはやシンボリックリンクという概念は存在せず、エイリアスだけに
なってしまったのでしょうか。
- なぜマニュアルを読まないのかさっぱり分からないが
HFS+ だと Alias も Symlink もサポートされる.
UFS だと Symlink のみ.
- cocoaアプリ側からそのシステムがcore image使用可能かどうかって、
どうやって知るのかな・・・。
- >>120
てもとで ln -s やってみたけど、
うちの 10.4.11, 10.5.1 ではそんなことにならないよ。
alias と symlink にはまだ区別があるみたいだけど。
- /tmp ディレクトリは起動時に空にされますが、ホームフォルダ以下で
ログイン時(または起動時)に自動的に空にされるディレクトリってないんでしょうか?
- >>124
CarbonのFindFolder()とか、CocoaのNSTemporaryDirectoryとかで
userドメインのTemporaryフォルダは取得できる。
これで取ったフォルダの中身は再起動時に空になるけど、
ゴミ箱の中のRecoverd Filesに化けるな。
- >>121
マニュアルってなんですか。
Xcodeヘルプから見れるReference Libraryのこと?
- >>126
Finderが勝手にシンボリックにエイリアス情報を
追加書きしているように見えるけど。
ターミナルからopen TestAliasとやれば追跡できないし。
- 書類をアプリにドラッグして開けるようにするには
ターゲット>プロパティ>書類のタイプ
で指定するわけですが、
フォルダだけを開きたい場合はどうすれば良いんでしょうか?
拡張子に*を指定するとフォルダも含め何でも開けてしまうんですが、
フォルダ「だけ」、の場合は何を指定するんでしょう?
- 質問です。
カーソルのイメージをQuickDrawの関数を使って取得してるんですが、
虹色カーソル(spinning wait cursor)が表示されているのに標準の矢印カーソルのイメージを
取得してしまいます。
虹色カーソルが表示中って分かるイベントフラグみたいのってあるのでしょうか。
欲を言えば、虹色カーソルが取得出来ればベストなんですけど(この場合はアニメーションなくて1フレーム目の画像のみでも・・)
- >>128
OSTypeを'fold'にする。拡張子とかは空欄でいいんじゃないか。
UTIも空で動くけど、"public.folder"を指定するのが正しいと思う。
- Core DataはIBを使わないで使うと、結構良いフレームワークだという事に気づいた
その後IBを使ったCore Dataは快適になった
つうことでみなさん、コードでゴリゴリ書いた方が理解が早いかも
- ついでに>>129
CGSGetGlobalCursorData()なら取れるかもしれないけど、
プライベートフレームワークだから無保証。
関数名でぐぐるとちょっと情報みつかるよ。
- >>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
- >>132
情報ありがとうございます。
CGSGetGlobalCursorDataの方が一度にたくさん情報取れるのでいいですね。
でも、虹色カーソルのとき標準矢印カーソルとなってしまいます・・・。
やっぱり何かイベントが発生していると思うんだけどなぁ。
CarbonEventのコントロール系はイベント返ってこないし、打つ手なしかな??
- >>130
ありがとうございます
あとで試してみます
- NSSlider *slideVolumeと定義して
float volume = [slideVolume floatValue];
NSLog(@"volume=%f", slideVolume);
とやったらvolumeの値がめちゃくちゃだった。
30分ハマって、slideVolume->slideVolに変更したら直った。
こんなのあり??
10.4.11 Xcode2.5
- >>136
何処から突っ込めばいいの?
- >>136
NSLog(@"volume=%f", slideVolume);
にしてたらlogに吐かれるのはvolumeの値なんかじゃないから
こんなのあり?っていうかそうにしかならない
- >>136
slideVolでなぜ直るのかかなり疑問
- >>137
すんません。
NSLogの引数はslideVolumeじゃなくてvolumeでした。
しかし本当に不思議なんですよ。
クリーンとかかけたり再起動したりしてもおかしいまま。
- >>140
NSSliderオブジェクトを生成もしくは取得してない、なんてオチではないだろうな?
- >>141
あーありそう.ありそう.
ポインタ宣言したら実体まで確保されてるとか思うんだよね.
初心者って
- float volume = [slideVolume floatValue];
の返り値は正しかったのか?
>>141
slideVolumeがnilだったらvolumeは常に0になると思うけど
- >>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も同様だったきがするが良く覚えてない。
なんかドキュメントが原文と日本語版でグチャグチャだったのを覚えてる。
# 以前のドキュメント参照って書いておきながら以前のドキュメントが見つからないのは気のせい。
-
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 というメンバがあるのが理解できない
- おお、これだ、これ。
IntelだとOKでPPCだとNGだったか。
まあ、俺は怖くて使わ(え)ないけど。
- >>143
NSSlider *slideVolume = nil;
としたとは書いてないから、ポインタ値がめちゃくちゃな値になってる可能性もあるんじゃない?
でも、それならメッセージ送ったときに落ちるか。該当部分のコード全部晒してくれないとわからんな。
- 親クラスで volume インスタンス変数が定義されているとか。
- ローカル変数のスコープが優先されるだろ。
- オカルト方面の議論に似ておる
- すみません、教えて下さい。
QTMovieView内のQTMovieをフリップ、回転させたいのですが
どうすればいいのかわかりません。
サブクラスのdrawRectでNSAffineTransformを使うような気がするのですが、
具体的にどう書けばいいのかさっぱりです。
よろしくおねがいします。
- View自体を回せばいいんじゃないの?
- QuickTimeにNSAffineTransformってきくのかな?
ここは、CoreAnimationのQTMovieLayerを使うのが楽だと思います。
- QTMovie自体のMatrixを書き換えるってのはなしか。
- View 自体をaffin transform で回すことについて…不確かな記憶だけど、Tiger では拡大縮小は効くが、回転はできない
Leopard では回転も拡大縮小も効かない
と思った。
- ボタンとか回転できた記憶があるけど。
- みなさん、ご意見ありがとうございます。
いろいろ漁ってみたのですが、QTMovieView(NSView)自体の回転は敷居が高そうですね。
拡大、縮小はsizeの変更でうまくいったのですが。
>>152
View自体を回す方法もいろいろ試しているのですが、枠が回転したりなかなかうまくいきません。
>>153
まだ10.4なんです。CoreAnimationならここら辺が簡単なんですよねえ。
>>154
QTMovieのMatrixを書き換えるという方法があるのでしょうか?
- >>157
QuartzComposerを使うのはダメ?
- NSBoxに入れてQTMovieViewを回転させたらいいんじゃないかな。
- OpenGL textureにして回すとか
http://developer.apple.com/samplecode/QTQuartzPlayer/index.html
ぐりぐり回るよ;-)
- Objective-C 2.0 の property って、コードの量が減る以外に
何かメリットありますか?(例えばパフォーマンスとか)
既存のコードを property で書き換えるか悩み中‥
- たしかパフォーマンスは落ちるかと
- コンパイラでインライン化とかしてくれないの?
- >>162
そうなの?アクセサメソッドのコードを生成してくれるんじゃ
ないの。速度は変わらないと思ってたけど。
- いずれにせよ、既存のアクセッサをわざわざ書き換える必要は無いという事でFA?
- @property id value;
とか書かなくても、obj.valueなどのようなプロパティー構文は使えるよ。
ただ、Xcodeが入力を補完してくれないだけで。
- でも、Obj-C 1.xのころは、アクセッサはスレッドセーフでも同値
チェックありでもなかったじゃない?
Obj-C 2.0はGC導入に伴い、いろいろ余計なことするようになった
分遅くなったと思うんだけど。
Obj-C 2で速度出すなら、アクセッサはきちんと書くか、少なくとも
属性書き足さないといけないのでは?
- 誰かきちんと書いて速度比較してないのかな。
- 実際のところアプリの内容によって違う
俺のメインのプロジェクトのは書き換えたら遅くなったから使うのやめたよ
- でも特殊なことしてない限り大丈夫だと思います
- UI の NSTextField に NSNumberFormatter を設定して、
AppController 内の NSNumber のメンバにバインディングさせているのですが、
その NSTextField に一旦数字を入力し、その後それを削除してリターンを押すと、
どこからともなく「フォーマットエラー(変更内容を破棄)(OK)」というパネルが
現れ、NSTextField をブランクのままにすることが拒絶されます。
このとき、このパネルを表示させずに、NSTextField はブランクのまま、単純に
NSNumber に nil を設定するには、どうすれば良いでしょうか。
- ヌル時の動作がバインディングのインスペクターで設定出来たような。
か、やはり空白時はヌルで更新するコードをかますか。
- TigerでSafariStandの「メタルを除去」みたいなアピアランスって
どうすればできるんでしょうか
- >>173
setBackgroundColor:
- UIKitにNSBrowserみたいな階層表示できるviewはつきますかね?
- 誤爆スマソ
- 秒をhh:mm:ssに変換するのって自力で書くしかないですかね。
- [NSString stringWithFormat:@"%02d:%02d:%02d",(s / 3600),((s / 60) % 60),(s % 60)];
s は int として、こんな感じか?
- それを自力で書くと言うんでは。
Formatterとか使いたいんじゃないの、何となくだけど。
- >>161
Objective-C2.0のプロパティーのパフォーマンスについて調べてみました。
まず、
obj,value = @"hello";
a = obj.value;
は、単純に
[obj setValue:@"hello"];
a = [obj value];
に変換されるだけで、パフォーマンス的な問題は発生しません。
次に、@synthesizeが生成するアクセッサのコードは、@propertyの属性が、
assignのものはパフォーマンス的に全く影響のないコードが生成されます。ただし、GC前提ということになりますが。
copyとretainは、基本的にスレッドセーフなコードが生成されます。つまり、内部でspin_lockの処理が行われます。それ以外は、特にパフォーマンスに影響する部分はなさそうです。
- >>177
[NSDate descriptionWithCalendarFormat~] なんかそうじゃないかな
ちらっとリファレンス探ってみただけで試したりしてないけど
dateコマンドと同じ様なのがBSDレベルでもありそうな気がするけど
- >>177
俺以前NSCalendarDateでやったけど、NSDateと使いやすい方でやればいいと思う。
「Dates and Times Programming Topics for Cocoa」ってそのまんまの
ドキュメントがあるよ。
- cocoaブラウザでマニュアルがうまく表示されない(最初のフォルダ名だけが表示される)ので
デベロッパツールを再インストールしようとしたのですが、エラーが起きてできません
そもそもデベロッパツールを以前インストールしたことはあったのか、よく思い出せませんが
Xcodeは使えています。エラー文の内容は「次のインストール手順に失敗しました。run preinstall
script for developer tools.」というものです。どう対処したら良いか分かる方教えてください
- >>183
(Xcode3の前提で...)
Xcode3に付いてくるドキュメントはそれ以前のものとディレクトリ構造が違うから、
Cocoa Browserは使えないようだ(いま確認した)。
アンインストールは、OSX10.5DVDのMac OS X Install DVD/Optional Installs/Xcode Tools/About Xcode Tools.pdf を嫁。
終わりの辺りにアンインストール用のスクリプトが書いてる。
てか>>183はプログラム向いてない。
- >>184
ありがとうございます。ちゃんと調べろ、って意味でしょうか
- きっとプログラミング適性認定士の人なんだよ
- プログラム以前のセンスがない。
なんせんすw
- ・ソフトウェアの名前を正確に書けない
・自分が使っているソフトウェアのバージョンを示せない
・Googleを使いこなせない
プログラム以前にこれだけの問題がある
Cocoa Browser Xcode 3.0 でググれば Cocoa Browser SN がトップヒットする
ソフト名とバージョンでググるのは、彼には難易度高いだろうが頑張れ
- >>188
とどめを刺すなよ。wxのお人よりはマシなんだから、優しくしてあげなよ。
- >>189
アイツは何の開発してんだろな。
周辺機器に付属するソフトらしいが...
フェリカ関連とかなら、Macユーザー皆ガッカリだな。
- >>183
"最初のフォルダ名"って、それフォルダ名じゃないですから。
フレームワーク名だよ。
最近はmkinoさんが入門書やセミナーでCocoaプログラミングの間口広げたりとか、
Objective-C 2.0でメモリ管理が楽になった関係で、初心者増えてんのかな??
ADCも翻訳ドキュメント増えてるし。
- 質問です。
finderのウィンドウをクリックするイベントを取得したいのですが、
どのようにすれば良いですか?
- もうね・・・なんかね・・・
- >>193
要するに解んないんでしょ?
なんだこれ、おもしれー
http://developer.apple.com/samplecode/UIElementInspector/index.html
- こいつぁひどい
- >>194 のサンプルはそのままだと日本語環境でクォートが文字化けするなあ。
このぐらいちゃんとしておいてほしいものだ > 中の人
- というかレパードなら /Developer/Applications/Utilities/Accessibility Tools/
に入っているんだが ...
- >>192
NSCoreServiceEventHandlerを探してみるといいことあるかもしれないよ
- 何か最近この板のプログラミング関係のスレで無礼な質問者が多いな
ほとんど一人なのか入門者が増えてるのか
- すんません、俺です
- 入門者といえば俺もそうだけど、見ているだけだ。
まだ質問するようなレベルにも達していないぜ。
-
win系のプログラマでもここまで酷い質問をする人は多くない。
会社の中のダメなプログラマを割り当ててるんじゃない?
- iPhoneのアプリってiPod touchでも使えるんだよね?
SDKの配布が開始されたら開発者増えるかな。
- すんません、全部俺です。
もうこれ以上皆さんに迷惑をかけたくないので
やっぱりMacでのアプリ開発は辞めます。
みなさん今まで本当にありがとうごさいました。
- みなさん有意義なスレにしましょう。
- NSTableViewなどにドロップした時、acceptDropでYESを返す前にペーストボードから
大量の処理を行うと、しばらくカーソルのマークが+のままで気に入らないのですが、
YESを返したあとに処理を行うにはどうすれば良いでしょうか?
いったんペーストボードの情報を配列などに格納して、それから処理をすればいいと思うのですが、
acceptDropでYESが返されたかどうがの判定がわからないのです。
「配列の内容が変わったら」の通知でいけそうな気もしますがどう書けばいいのかわかりません。
よい知恵がありましたらお願いします。
- NSObjectのperformSelector: withObject: afterDelay:
でdelayを0にしてやれば、次のrunLoopでスケジュールされるよ
- 最初はみんな初心者なのにね。
macでプログラムしようなんて人はただでさえ少ないのに
なんでこう排他的なんだろう。
悲しくなるわ。
- そりゃ、2ちゃんだから。
macとwindowsでプログラマの気質が違うとか論じても仕方ない。
ここはゴミ埋立処分場程度の認識だよ。S/N比低いし。
稀に良い情報も有るけど。
- mkinoさんのとこに以前あった掲示板とか使わせてもらって
すごく助かった覚えがあるなぁ
CocoaBindingの勉強、あそこが無かったらムリだった
いつか復活しないかな。
- >>208
排他的かそうでないか以前に、礼儀というものがあるとおもう
初心者の質問にはたいてい答えがでてるんじゃない?
言葉は厳しいけど。質問が丁寧なら答えも丁寧だし、
質問がぶっきらぼうなら答えもぶっきらぼうなだけで。
- そういやHMDTのBBSで初めてテーブルのバインディング方法を知ったな
- 別にぶっきらぼうに答えるのはいいと思うけど
時間があいた「悪い質問」に何人も嫌みを言うのはどうなのよとは思うね
- プログラマとしての知識の多寡は問題じゃないでしょう
社会人としての常識に欠ける人が問題なだけで
答える側だって無償でやってるんだから、答えてあげても良いかな、と思わせるような質問をしないと
- そうかもしれんが、掲示板の常だとは思うが(mixiのmacコミュでも)
よってたかってになると、ほかの初心者にとっても質問しづらい雰囲気になると思う。
それがマナーだと言われればそうなんだろうけど、なんかなぁ。
- >答える側だって無償でやってるんだから、答えてあげても良いかな、と思わせるような質問をしないと
こういうことは思ってても言わないのが大人だと思いますよ。
これでは上司が部下にいうような諭し方です。
- ここでは言わないとダメだろ
つか無礼なのが問題であって初心者とか関係ないし
- こういう話題でしかスレが伸びない現状
- wx の人はひどすぎだと思う。他の人は何も問題ないから、沢山質問してね !
- ま、どうでもいいな
- Cocoaとか、プログラミング本体そのものは割と簡単。
ただ、一番最初にどこにコードを書いたらいいのかというとっかかりがちょこっと分かりにくい。
これはC言語系一般に共通する事ではあるのだが…。
実際にはClassフォルダか何かを右クリック、「追加→新規ファイル」で
適当に「Objective-Cの書類を追加」してそこに思い思いにコードを書き…
Resourceフォルダの中に入ってる***.nibフォルダでウィンドウなどのパーツを組み、
***.hの@interfaceのところに「IBOutlet」でプラグを形成し、***.nib側でそのプラグにリンクさせる。
みたいな手順を踏む。
こんな感じの開発の流れだったと思う。
- >>207
ありがとうございます。
チャレンジしてみます。
- と言いつつも、自分もそんなに詳しいわけではないorz
エクセルのcolumn、rowの幅を変更する、とか選択のセルを広げるみたいなインターフェースを考えたとき、
どういう設計思想でまとめると具合がいいのか分からずにいる。
NSMatrixをベースに考えたらいいのか、NSMutableArrayをベースに考えたらいいのか
GUIと組み合わせた時に最適な設計の方向性はどのようなものが良さそうか。
設計思想の相談っぽくなるからスレ違いかな…
- >>178
遅くなりましたがありがとうございます。
こんな簡単に書けるんですね。
ただ、hourがない場合とminが10以下の場合は0を表示したくないので、
やっぱちまちまとif文で書く事にします^^;
- >>223
そういう特殊なViewは、NSMatrixなんかの既存のクラスをベースにするより、NSViewから直接サブクラスを作った方が楽にいくと思うよ。
Model側は、NSMutableArrayベースでよいと思います。
ただし、MVCパターンに忠実にViewを設計するなら、View内でModelデータを保持しないので、drawRect:内でModelのデータを読み出しつつViewを描画するのが、とりあえず楽かと思います。
- >>224
%02d を %d に変えると 0 が表示されなくなるよ。
ってこれは Cocoa じゃなくて単に C の話だけど。
printf のフォーマット文字列を適当に調べてね。
- Xcode3でTiger以上で動作するのを目標にアプリ作ったんだが、
実際にTigerで動かしてみると落ちまくり・・
細かいところ結構違うのな・・
- >>226
それだと数字が表示されなくなるだけで
結局コロン(というか区切り字)は表示されるから微妙な気がする
用途によるけど
- >>227
>細かいところ結構違うのな・・
例えばどんなところ?
- >>227
SDKを設定していますか?
プロジェクトの情報からSDKを設定してください。
Objective-C 2.0 の機能を使っていませんか?
Leopardでしか動きません。使用を中止してください。
ガベージコレクションを有効にしていませんか?
Leopardでしか動きません(たぶん)。無効にしてください。
xib 3.0形式を使用していませんか?
Leopard以外だとなんかまずいらしいです。使用を中止してください。
- 優しいね
- NSTextField がいくつか貼り付けてあるウインドウがあって、
コード内から特定のフィールドを入力可能状態にしたいんですが、
[window makeFIrstResponder: textField];
とやると、textField のフォーカスリングは点灯するのですが、
一度そのフィールド内をクリックしてやらないとフィールド内に
カーソルが出ず、文字入力は受け付けてくれません。
最初から文字入力を受け付ける状態にするには、どう書けば
良いでしょうか。
- [textField performClick:self];
とかは?
- すいません。質問させてください。
”main”ウィンドウと”sub”ウィンドウを作りました。
”main”ウィンドウ上の”A”ボタンを押すと"sub"ウィンドウが現れるようにしました。
そこで、"sub"ウィンドウ上に作った”B”ボタンを押したときに”main”ウィンドウのコントローラのインスタンス変数にアクセスするにはどうすればいいのでしょうか?
- 一つのnibファイル上で、二つのウィンドウを作っているんだよね?
ならsubのコントローラからoutletをmainのコントローラに引くのはダメ?
- >>233
試してみましたが、だめでした。
NSTextField にバインディングを設定してるんですが、
それが悪さをしてるでしょうか‥
- >>235
レスありがとうございます。
すいません。情報が少なすぎますよね。
http://www.macmacmac.mydns.jp/modules/tinyd0/index.php?id=14
を参考にして2つのウィンドウを扱うようにしたのでnibファイルは二つに分かれています。
上記サンプルと違うのは起動時に”main”ウィンドウは開くようにしています。
作ろうとしているのは
設定項目一覧用のウィンドウとしてNSTableViewを配した”main”ウィンドウ。
各Row設定項目を編集するための編集ウィンドウとして"sub"ウィンドウを作りました。
"sub"ウィンドウ側で編集した内容をデータソースに反映させるために
selectedRowを"sub"ウィンドウ側から取得したいという状況です。
- >>237
サブウインドウを管理するのがWinController.h だよね
WinController サブクラスにインスタンス変数 NSTableView* tableView ;
を追加して、メソッド
-(void)setTableView:(NSTableView*)aTableView
{
tableView = [aTableView retain];
}
みたいにしてメインウインドウ中のテーブルを教えてあげればいい。
>>236
元々フォーカスが当っている text field が何らかの理由で first responder を resign しない、みたいな理由じゃないのかな。
- >>238
>WinController サブクラス
じゃなくってWinControllerのクラスそのものだった
- そのようにするなら、二つのWindowは一つのnibにおいて
ひとつのControllerで一緒に扱う方がよいのでは。
- >>236
[window makeFirstResponder:textField];で十分なはずだけど、、
id fieldEditor = [window fieldEditor:YES forObject:textField];
[window makeFirstResponder:fieldEditor];
を追加してもダメですか?
- >>237
それって、単純に2つのViewを1つのModelとBindすれば済む話じゃ?
- >>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
を見てください。
- たくさんのレスありがとうございます。
理解力がないのですべてを検証できていませんが、
>>238
[self setTableView:]
これの引数のNSTableViewはどこから取ってくればいいのでしょうか?
>>242
BindっていうのはCocoaBindingというやつでしょうか?
ちょっと難しそうですが試してみます。
>>235
>>240
1つのnibファイルでやる方法を適当な動作確認用アプリを作って試してみました。
この方法で希望の動作ができることが分かりました。
>>243
ちょうどFile'sOwnerって何だ?って思っていたところなので助かります。
ちょっと勉強してみます。
- >>244
>[self setTableView:]
self じゃないよ。
メインのnib のオーナー(例えばMyDocument)はメインウインドウ上のNSTableView への
アウトレット(tableViewとする)を持つことができるでしょ?
MyDocument 上で、サブウインドウのコントローラオブジェクトを以下のように作成したあとで、参照を教えてあげる
WinController *windowController = [[ WinController alloc] init];
[windowController setTableView: tableView];
こうすれば、windowController 側から メインウインドウのテーブルにアクセスできる。
WinControllerには上のメソッドを予め作成しておく。
- >>245
おおおぉぉ!
教えていただいた様にしたらWinController側から
メインウインドウ上のNSTableViewのselectedRow がとれました。
勉強になりました。
本当にありがとうございました。
- cocoa本のおすすめを教えて下さい。和書限定で
- >>247
おすすめもなにも和書限定で今店頭にあるのなんて片手で数えられる位しかない
- >>248
Leopardで使える内容ですか?
- NSTaskでunzipを利用してzipの中のファイルをpipeで読もうと試みています。
zip内に直接ファイルが格納されていれば引数 -p でpipeから普通に読めるのですが、
zip内にフォルダがあり、その中のファイルを読もうとするとフォルダ自身を読んでるみたいで
ファイルを読むことができません。-jをつけても駄目でした。
素直にzlib使えばいいんですが、unzip経由でメモリに解凍するいい方法はないでしょうか?
- >>249
使えるといえば使える。Obj-C 1.0 が解説してあるから。
Obj-C 2.0, Xcode3, IB3 について解説した本って和書では出てないんじゃないかな。
- そだな、まずは
HappyMacintoshDevelopingTime SecondEdition
木下誠(BNN)
Objective-C MacOSX プログラミング
荻原剛志(ソフバンクリエイティブ)
の2冊あたりか。上は開発ツール全体を含めたCocoa入門書。下はObj-CとCocoaの中のFoundationFrameworkについて詳しい。
ツールの使い方は脳内変換でいけるとおもうよ。ただ上が10.3、下が10.4くらいまでだ。あとヒレガス本の和訳だな。
- 荻原本は正直初心者にはお薦めしない
すごく良い本で後々絶対役に立つけど、入門本だと思って買うとかなり違う
つうか>>247は質問が曖昧過ぎる
プログラミングはまったく未経験とか、JAVAやC、あるいはAppleScriptの経験はあるとか、
そういう情報を出せばお薦めする本も自ずと変わってくるのだが
俺のおすすめはまったくの初心者なら「たのしいCocoa」、
Cくらい知っているならMac OS X Cocoaプログラミング(いわゆるヒレガス本)かな
Leopard対応の和書はまだ一冊もないはず
- >>253
和書、ではないけど、日本語版の解説なら ADC にあるよ。
http://developer.apple.com/jp/documentation/japanese.html
まあこれは C を知ってないとどうしようもないかも。
あとは、まあ、頑張って英語読もうね ...
いずれ細かい API を知りたくなったら API ドキュメントよまないと
しかたなくなるし、メソッド名の意味とかわからないとちんぷんかんぷんだろう。
- PopUpButton とか ButtonCell とかのテキストの色を変えるには
どうすればいいですか。
HUD に置いた PopUpButton とかのテキストの色を灰色にしたいです。
- cocoa以前にまずは英語読めるようにならないとな。。
- MacでプログラミングしたいならJavaか旧態依然としたCUIアプリがいいよ。
まともなGUIアプリならWindows一択だね。
- ん?
- Java(笑)
- 荻原本の「14章:簡易ビューア」って、Leopard + Xcode 3.0環境だと
インスペクタパネルが表示されなかったりして、うまく動かないかも。
デリゲートについて学ぼうと思ったんだけどな。
- みなさん、ご回答ありがとうございます
>251
そうですね。まずはObjectiv-Cから始めます
>252
ありがとうございます。2冊目は取り寄せて読み始めています。1冊目も手配します
>253
すいません。C++は15年ほどやってます。Windowsメインの職業プログラマです。
やはり洋書取り寄せないとだめですかね。
>254
ありがとうございます。最近Windows開発ではぐぐればほぼ間違いなく日本人のサイトで資料入手できるんもんですからすっかり英語には腰が引けてました。少しがんばって読んでみます
>256
がんばります
>260
なるほど。気をつけます
- 247 さんがいろいろ理解したら頑張って日本語で情報発信してください
- >>250
HetimaZipBrowser0.1
- >>257
Appleのjava対応はやるきがあるのかないのかわからんから微妙。
- C++15年もやってるならCocoaは余裕だな。たぶん。
- 何ヶ月か経ってようやく本を読むところにたどり着いたな
よかったな
- なぜこれを勧めないの?
Cocoaアプリケーションチュートリアル
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial
- 15年もやってて英語も読めないとは。
むしろwin書籍の充実ぶりに嫉妬。
- >262
へたれなわたしには無理だと思います
>265
そうだといいんですが
>266
なんか敵意を感じますね?
>267
ありがとうございます
>268
昔は読んでたんですよ(汗。
でも最近じゃSDKの日本語化も進んでて読む機会はめっきり減りました(言い訳
- >>255
- (void)setAttributedTitle:(NSAttributedString *)aString
- 参考書の索引を見てもほとんどNしかないのが笑える。
- >>271
ObjC3 ではパッケージの機能が導入されて全部プレフィックスがとれるとか...
さすがにないか(どっちも)。
そういや WebOjbects や Cocoa-Java でもとれてないし。
- >>255
なぜ、そんなものの色を変えなければならない?
テキストの色を変えることと、
コントロールをDim化することとは違うよね。
- というか IB でカラーパレットを開いて色をつけたらおしまいな気が ...
- IB上でできるのはTextFieldとかだけじゃ
- >>270
ありがとうございます。NSMatrix 内の NSButtonCell はそれでできました。
NSPopUpButtonCell の方は、なぜかうまくいきません。
>>273
HUD 上で見やすくしたいからです。
NSPopUpButton で isBordered を NO にしていますが、
NSPopUpButtonCell のテキストの色が黒では読みにくいです。
>>274
ButtonCell のテキストの色も変えられるのでしょうか?
やってみたところ、変わりませんでしたが‥
>>274, 275
NSTextField と NSTextFieldCell は、IB のカラーパレットで
設定しました。
- >>267
なんだか1940~1950年代の新聞活字みたいで鬱だ。
今どきこのフォントを使っているのは中華か台湾?
- >>276
テキストを持ってるのはNSPopUpButtonCellじゃなくない?
ついでに俺も聞きたいけど、Windowのタイトルの文字の色はどうやったら変えれますかね?
- レパだったらIB上でいけた、、知らなかった。
ところでWindowのタイトルの文字色は
- >>261
>最近Windows開発ではぐぐればほぼ間違いなく日本人のサイトで資料入手できる
Winてのはうらやましいな。こっちはすぐに英語だ。
は、言葉の話題はここでは禁句だったか?
- >>276
270です
>NSPopUpButtonCell の方は、なぜかうまくいきません。
となると
- (void)drawTitleWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
を上書きしないといけないかな?
個人的にはHUDは癖のあるインターフェイスなので、使い方は
注意がいると思います。
Apple Human Interface Guidelinesにもいろいろ注意が
書いてあります。
- >>277
うちでは普通にヒラギノゴシックで表示されてるけど ...
CSS とかみても別になにもアジアフォントは設定してないぽいから、
そちらの設定がすこし変なのでは?
- PDFのことを言ってるんだろう。
確かにあまり使わないフォントだと思う。
- 中国語用のフォントかあ。翻訳はオフショアだったりして。
- AdobeSong と AdobeFangsong でした。
とりあえず ADC にヒラギノにしろとメールしておいた。
- 携帯から失礼します
NSScrollerをiTuensのようなマットな感じの外見に設定するにはどうしたらいいんでしょうか
サブクラスでやらないで出来た記憶があったのですが
よろしくお願いします
- 無理です。
サブクラスでガシガシ書くしか。
- >>276
270です
試していませんが
iLife Controls; HUD windows and more
http://lipidity.com/apple/ilife-controls-hud-windows-and-more/
が使えるかもしれません
- mkinoさんが既にサブクラスを書いているから、それを流用すれば
- >>288>>289
ライセンスはどうなるのでしょう?
商用で使いたい場合とか
- >>290
それは自分で調べても見つからない情報なのか?
それとも見つけるのが面倒なだけか?
- 英語なのでなんとなくでしか理解できません
なんとなくで使ったらマズいと思いまして
- >>292
ここの住人もなんとなく答えるだけだぞ
- 英語以外で書かれてるライセンス文なんてほとんどないだろ
その二つは独自ライセンスじゃないはずだからググれば日本語訳出てくるし
- コピペせずに心をこめて一文字ずつ打ち込みながら写せばオケだよ。
- なるほど!
- 見てみたけどフレームワークになってるからソース丸写しできないね
- 人の使って金儲けするなら自分が払いたいだけ払えよ
- >>287
どうやら記憶違いのようですね。
サブクラスでガシガシいく事にします。
ありがとうございました。
- 心をこめて一ビットずつ打ち込みながら写せばオケだよ。
- >>277
しかし「直」とか「編」がすごいことになってるな...
まさに Han Unification。
- 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クラスにはその手のメソッドがないのでしょう・・・
- カテゴリでそれを追加してしまえばしまいなのでは?
というか HFS style のパスを使わないといけない理由がわからん。
- 質問させてください。
A = B
のような関係のデータ構造なら単純にDictionaryを使えばいいと思いますが、
A = B = C
のような関係のデータの固まりを複数扱いたいと思っています。
この場合は入れ子にしたDictionaryを使うしか方法はないでしょうか?
- 1:1なのか1:nなのかどうか。
- 構造体だろ
- 1:*
- 今はDictionaryを入れ子にしてやってみています。
最終的には例えばAからBの値もCの値も取得できるように、同様に
BからAの値もCの値も
CからAの値もBの値も取得できるようにしたいと思っています。
AーB
⊥C
のような構造で AからBの値とCの値は取得できるようになったのですが、
この構造でBないしCの値からAを取得するにはどうすればいいでしょうか?
- sqliteつかえば?
- NSTreeControllerとか。使った事無いけど。
- A, B, C のそれぞれをキーとする3つの配列を用意しちゃえば
- 311さんの言うようにそれぞれで配列として持っていた方が楽そうですね。
その方向で試してみます。
ありがとうございました。
- core dataは?
- 「コア何たら」って聞くと、PCエンジンを思い出す。
- core dataも勉強してみて僕にも扱えそうな感じなら使ってみようと思います。
http://developer.apple.com/jp/documentation/japanese.html
ここの上級の資料とか見てみます。
ありがとうございます。
>314
コアグラフィックスとかですね。
- >>308
プロパティa,b,cを持ったHogeObject クラスを作り、そのインスタンスをarrayに入れる
arrayの中から、例えばA=@"test" を持ったhogeObjectを見つけるには
[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"a = '%@' ",@"test"]]; とする
抽出されたhogeObjectからBやCの値を取り出す
っていうのは?
- >>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
- 改行大杉で怒られたのでアップロードしてみました。
ttp://uproda11.2ch-library.com/src/1166672.zip.shtml
ご指導お願いします。
- こんなんどう?
@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"];
}
}
- >>316
>[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"a = '%@' ",@"test"]]; とする
>>318
>NSArray* foo = [ary filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"c = '%@' ",@"黄"]];
おれには'%@'じゃなくて%@でいいようにおもえるが。
- 当初していた想像と違ってましたがこんな感じになりました。
ttp://uproda11.2ch-library.com/src/1166857.zip.shtml
- stringWithContentsOfFile:とかで得たいファイルの名前にスペースが入ってたら、
例えばpath = @"/hoge hoge.txt"だと、ファイルが得られないのだけど、
どうすればよいでしょうか?
- >>322
それはファイル名にスペースが入っている以外の理由で失敗している可能性は
ないのか?
- NSFileManager の -fileSystemRepresentationWithPath を使ってC文字列を得るとか?
- ただstringWithContentsOfFile:で読み込むにはサイズが大きすぎただけのようでした。
22M
どうもすみません、ありがとうございました。
- >>325
それはサイズが大きすぎる以外の理由で(以下同文)
- >>322
/hogehoge.txt という / ではじまるファイルは、ルートディレクトリすなわち
ハードディスクのトップにあるものをさすというのは理解してるの?
ホームディレクトリの場合は
[@"~/hogehoge.txt" stringByExpandingTildeInPath]
としないといけないです。そうすると
~ が /Users/name に展開されます。
- NSWindowのタイトルバーの表示、非表示を切り替える方法はありませんか?
initWithContentRectの
styleMask:NSBorderlessWindowMaskで消すだけならできましたが、制御をしたいのです。
- 別に NSWindow をつくって、
[newWindow setContentView:[oldWindow contentView]]
するぐらいしか思いつきませんが、
でもそんな動作をするウインドウは見たことないので、
あまり変なことをするとユーザーが混乱するのでは?
奇抜な動作をすればいいというものではないべ。
- >>324
NSStringの -fileSystemRepresentation じゃ何か問題でもあるの?
- >>329
レスありがとうございます。
画像ビューワを作っているのですが、できるだけ表示領域をひろげたくて
NicePlayerみたいに邪魔なときは消せたらいいなぁと思ったんです。
NicePlayerはViewで疑似タイトルバーでやってるようです。
- >NicePlayer
ダウンロードしてみましたが、
僕はこの window は耐えられませんね ...
あまりに他の OS X のソフトと見栄えがちがいますよ ...
まあ個人の趣味ですが。
Apple 謹製のソフトで表示領域を大きくする場合には、
たいてい全画面表示にすると思います。
そのときはウインドウタイトルどころかメニューバーやらドックもなくなります。
プレビューのスライドショーとか、iPhoto の編集モードとか。
- NSWindowのタイトルバーの文字の色を変えるにはどうしたらいいですか?
- また新たに別の問題がおこってしまいましたが
結局、A, B, C のそれぞれをキーとする3つの配列を作る方法で実装してみました。
みなさん、いろいろな方法を提案くださってありがとうございました。
- >>333
変えちゃダメ。他にそんなことやってるソフト無いでしょ。
- >>335
自分でHUD Windowみたいなのを作りたいのです。
iLife ControllerやHMBlkAppKitを使わずに
10.4以前に同じようなものを作りたいのです。
変えちゃだめってことは変えれるってことでしょうか?
- Zc+7rTc30がOSのスタンダードにこだわってるみたいだが、
変えるかどうかは>>333の自由だし、その固着した考えもどうかと思う。
俺はNicePlayerのウィンドウの邪魔な部分を消すというやり方はありだと思う。
- HUD Windowを独力で作るのは結局、
iLife ControllやHMBlkAppKitがやっていることを自分でやることに
なる。NSWindow にタイトルバーの文字色を変えるメソッドとかは無い。
時間と労力が勿体ないから、素直にHMBlkAppKitとか使っちゃうのが
いいと思うけど。どうしても使えない事情とかあるの?>>336
- 自分がやるなら、ここを見て試してみることになるかな。
ダイナミックObjective-C
ランタイムAPIでさらに動的に(5) - インスタンス変数に動的にアクセス
ttp://journal.mycom.co.jp/column/objc/031/index.html
- 質問です。
Interface Builderから設定できない項目ってありますよね。
コードを書くのが面倒なので、Bindでenabledやhiddenの設定
をしようと考えたのですが、YES/NOを簡単に指定する方法って無いですか?
shared defaultで設定しておくか、オーナーにYES/NOを
返すメソッドを置いとくくらいしか思いつきません。
- >>340
自己レス。
NSValueTransformerの
NSIsNilTransformerName, NSIsNotNilTransformerName
で解決しました。
shared applicationのselfあたりにバインドしてどちらかを指定。
- >>338
なるほど、ありがとうございます。
事情があるわけではなく自分で同じことをやってみたいという好奇心です。
NSWindowをいろいろいじってみたんですが。どうやって文字の色を変えてるのだろうと。
iLife Controlsってソース公開されてたんですね、知りませんでした。
- っていうか、Apple は自社アプリで使っているGUIパーツは
全てIBだけで使えるようにすべき。
まぁ、昔と比べてずいぶんカバーしてくれているが。
- >>343
ジョブたんの気分次第で増えてく感じだよな。
Lookが変わるとサイズまで変わってしまうんだもんな。
ボタンの種類なんてもうカオス。
- せっかく黒いインスペクタウィンドウがIBで使えるように
なったんだから、その上にのっけたボタン類も同じデザインで
自動的に置かれてほしいな、と思ったり。
- >>344
まあ、レパードで表面上は種類が減ったのでは ...
- 相対パスについて教えてください。
プロジェクトフォルダ直下に入れた画像ファイルを指定するのに、
いきなり画像ファイルのファイル名を指定してもうまくいきません。
(いちおうプロジェクトには組み込んで参照させてあります)
Xcodeで画像ファイルを「情報を見る」してプロジェクトフォルダからの
相対パスに設定したんですが、うまくいきません。
よろしくお願いします。
- ヒント
NSBundle::pathForResource
NSImage::imageNamed
- >>347
何をどうしたいのか、いまいち伝わってこないが、
必死なのは分かった。
Xcodeが認識してくれないの?
アプリケーションバンドルに入らないの?
入ってるけど取り出せないの?
- >>348
たとえば、IBだけでNSImageで、プロジェクトに組み込んだ画像を
指定する場合は、IBでその画像の名前だけをインスペクタパネルに
入れればOKですよね。
で、コードからプロジェクトに組み込まれた画像を指定するには
どうしたらいいのですか、という質問です。
とりあえず、画像のファイル名(絶対パスではなくてファイル名のみ)
を指定してみましたが、ダメでした。
伝わらなくて、すみません...
よろしくお願いします。
- >>348さんのこと馬鹿にしてんのかお前>>350
- プロジェクトに追加した画像ファイルなら>>348の通りimageNamedでファイル名していすればできるよ。
- ごめん、カルシウム足りてなくてイラッときた
- >>348
>>349
>>352
>>351
すみません。ありがとうございました。
>>353
申し訳ないです。
- >>351
おれは怒ってないぞーw
Resourcesにcopyされてないんじゃまいか?
.appのパッケージの内容を表示で中身見てあるか確認
ダメなら一回プロジェクト作り直し
嫌ならコマンド + option + k押してターゲットをクリーニング
ダメなときは一からやり直してともかく動かす
話はそれから
- >>355
ありがとうございます。これからやってみます!
- なんだこの流れはw
- 半透明のウインドウのリサイズが遅いのはどうにもならないのだろうか・・
- 報告です。とりあえず、プロジェクトを作り直したら、
正常に動作しました。
申し訳ありませんでしたorz
- >>359
プロジェクトを作り直したの?
クリーニング&ビルドじゃなくて。
- 3時間で全部打ち直したんじゃね?
- プロジェクトに追加したけどターゲットに追加してなかっただけでしょ、たぶん。
- 質問させてください。
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithFilename([[NSBundle mainBundle] pathForImageResource:@"image"]);
とやって、Resouceフォルダの中のimage.tiff を読み込みたいのですが、
ポインタの型が違うと怒られます。何がおかしいんでしょうか。
- ポインタの型が違うんだと思う。
- NSString*とchar*は違う・・・
- >>363
ポインタのキャストが必要です。
- CGDataProviderRef imageDataProvider = CGDataProviderCreateWithFilename([[[NSBundle mainBundle] pathForResource:@"image" ofType:@"tiff"] UTF8String]);
とやって解決しました。くだらないミスですみません。
>>364-366 ありがとうございました。
- -UTF8Stringじゃなくって-fileSystemRepresentationだと思うんだがな。
つーか、そんな関数あったんだな。知らなかった。
- お力を貸してください。
アプリのhogeControllerからパネル(←環境設定みたいなものです)を
モーダルで表示して終了したらパネルの設定を記憶するようにしています。
パネル内には5つのボタンと5つのテキストフィールドがあり、
ボタンのタイトルはバインディングで設定してあります。また、テキストフィールドの
値はNSUserdefaultの適切な値とバインディングしています。
このとき、NSObjectControllerのcontentをhogeControllerに設定してあります。
hogeControllerからパネルの表示を終了してアプリを閉じるときにhogeControllerを
保持しているmainController内にて[_hogeController release];としているのですが、
hogeControllerのdeallocが呼ばれません。
hogeControllerのretainCountを確認してみると、4になっているのですが、どこで
参照カウントがあがっているのかさっぱり分からない状態です。
mainControllerでは [[_hogeController alloc] init];をawakeFromNibにて行い、
終了時に[hogeController release];としているだけです。
どなたか解決策をご存知でしたら教えてください。
- >>368
>-fileSystemRepresentation
よく調べてみたら、こっちのほうがオーソドックスみたいですね。ありがとうございます。
- >>369
ホゲコンを独立した形でIB上でインスタンス化するとか。
- 確か、nibでインスタンス化したオブジェクトはFile's Owner が責任もってreleaseしてやらなくちゃならなかったはず。
- >>369
OSのバージョンは何ですか?
10.3だとNSWindowControllerのバグでretain cycleが
生じている可能性があります。
- >>369
[objectController setContent:nil];
- 特定のウィンドウやパネルをExposeやSpacesに持ってかれないようにするにはどのようにすればいいのでしょう?
画面に固定したいのですが。
- >>375
ttp://cocoawiki.aerial.st/?Expose%20%A4%B7%A4%CA%A4%A4%A5%A6%A5%A4%A5%F3%A5%C9%A5%A6
- Spaces に関してはNSWindow にメソッドが用意されている
- なるほど、いろいろ調べてみましたがexposeの方は現状ではハックしかなさそうですね。
ありがとうございます、試してみます。
- NSWindowで A,B,Cと3つのウィンドウがありCが最前面の場合、
残りAとBの前後関係を知るにはどうすればよろしいのでしょうか?
levelで比較しても同値ですし、キーウィンドウかどうかもできないですし。
お知恵をお貸し下さいませ。
- >>379
[NSApp orderedWindows];
[NSApp orderedDocuments];
- >>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が呼ばれるようになりました。
これが作法として正しいかどうかは分かりませんが、熱が引いたらもうちょっと
試してみます。ありがとうございました。
- ちょっと待て
インフルなのに起きてMacの前に座ってるなんて
命に関わるんじゃね?
- >>380
即レスありがとうございます。
さっそく試してみます。
- >>382
どうしても気になったものでw
ちょっと布団から抜け出してみましたww
でももう寝ます。ご心配かけてすみません。
おやすみなさい。
- 初歩的な質問なんですが、Interface Builderでアウトレットとアクションを接続する時の、
コントロールキーを押しながらドラッグする操作ができなくて困ってます。
参考書見ながらやっているのですが、線が伸びて接続するという風に書いているのですがその通りにできないです・・・。
何か設定しないといけないことがあるのでしょうか?
- ふつうに出来るよ ?
つなぎたいものの上にマウスを持っていって、
コントロールキーを押したまま、
マウスをしばらく動かすと線が伸びるはずだけど。
右クリックドラッグでもいいです。
- 独自コントローラーでアウトレットを作っていないに1票
参考書の通りにやってる?どこか読み落としてないかい
- >>385
線が出てこないのか、線は繋げられるけど接続ができないのか、まずそれを書け。
- CoreAnimation についてご助言をお願いします。
プログラミングガイドのレイヤーツリー階層の項目を読むと、
スーパーレイヤにサブレイヤとしてレイヤを追加するという内容が
書いてあります。
ここで疑問に思ったのは、レイヤの順序はどのようになるかということです。
スーパーレイヤより、サブレイヤの方が上層にくることは分かりました。
では、サブレイヤ同士の上下関係はどのように管理するのでしょうか。
また、スーパーレイヤを複数作ることができるかということも疑問です。
つまり、レイヤを作るときは、ただ一つのスーパーレイヤから、どんどん
階層を作っていかなければならないのでしょうか。
よろしくお願いします。
- >>386
Instancesタブの中にあるインスタンスしたアイコンの上でやってみたのですが、できないです・・・
>>387
たのしいcocoaプログラミングという本の初めのhelloworldアプリを作っています。
参考書通りにアウトレットとアクションを一個ずつクラスに作成しております。
>>388
線が出てこないです。
- 絶対ちゃんと参考書読んでないに1票
インスタンス化したNSObjectのクラスを設計したクラスに設定して
ウィンドウにボタンやテキストフィールドとか置けば線はつながるよ
- 線が出てこないならcontrolキーが壊れてるんじゃね?
- >コントロールキーを押しながらドラッグする操作ができなくて困ってます。
ってことだから、片手が不自由なのではないだろうか?
システム環境設定のユニバーサルアクセスのキーボードで複合キーを入にしてください。
これで、コントロールキーを押したあとドラッグすればControl+ドラッグの動作になります。
- >>390
cmdキーとctrlキー押し間違ってるとか
>>389
>ここで疑問に思ったのは、レイヤの順序はどのようになるかということです。
>スーパーレイヤより、サブレイヤの方が上層にくることは分かりました。
>では、サブレイヤ同士の上下関係はどのように管理するのでしょうか。
CALayerにあるzPositionってやつじゃない?
- 右クリックでドラッグすれば良し
- 385です。
マウスとキーボードの設定のキーボードの修飾キーで、controlキーにcommandを割り当てていました・・・。
そのためにコントロールキーを押しながらドラッグというのができませんでした。
レスをしてくれた方大変助かりました。
お騒がせしてごめんなさい。
- ちゃんちゃん
- あるメソッドをAのクラスに書くか、Bのクラスに書いてAから繋いで呼ぶか、
(もちろんBでも使う)悩ましいのですが、こういう時の指針って何かあるのでしょうか。
- やりやすければ適当でいいんじゃない?
後で拡張するときに楽になる方を選べば。
- 一番関係あるクラスに書く
- 人それぞれだよね。
可読性と保守性があって、MVCがきちんと分離されていれば、
あとは適当に機能のまとまりでクラスにすればいいと思う。
- こういうのは実例をあげないと正解的なものは答えようがないかもね。
- マウスオーバー時に出る黄色い矩形のテキストを出す方法ってcocoaで用意されています?
探しても全然見つからないんで自分で作るしかないんでしょうか...
- - (void)setToolTip:(NSString *)string
- >>403
IB > Identity Inspector > Tool Tip
- >>404,405
お二方ともにありがとう!
ID変わってるでしょうが403です。
ToolTipという名前が出てきませんでした。お恥ずかしい。
- 質問です。
画像のサムネイル表示を作るにはNSCell使って自分で作っていく
しかないのでしょうか?
動作としてはFinderのアイコン表示みたいな感じで
選択された画像はハイライト、ドラッグしたりして複数選択する。
って感じなんですが。
ネットで調べてみると、
10.5にはそれっぽいコントロールがあるけど、動作環境が10.4ため
使えず、NSTableViewだと各セルの選択方法が分からず断念しました。
Finderのアイコン表示ってCarbonでゴリゴリ書いてるんだろうか・・・。
- Finderは知らんが、NStableViewだとセル表示が行われる時に呼び出されるメソッドがある。
(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row
- Finderのアイコン表示みたいなのを作りたいなら
UKDistributedView
ttp://www.zathras.de/angelweb/sourcecode.htm#UKDistributedView
ってのが使えそうだけど。使ったことはないので詳細はわからん。
- >>409
407じゃないがいただいた
サードパーティのフレームワーク一覧にサイトとか無いのかなぁ
- >>410
訂正
に→にした
- 仕事で作ったことないから分からないんですが
よそのフレームワークを使うのって結構普通なんですか?
- よその、とはサードパーティのことです
- ライセンス的に問題なければ。
- ネットのサンプルプロジェクトでたまにフレームワークとか
パレットがリンク切れで開けないのは、そういうことか。
- Macプログラミング勉強中ですが、
ttp://www.nicovideo.jp/watch/sm1770546
を見て、似たようなものを作ってみたくなりました。
AppKitにはNSAnimationがありますし、Core Animationもあります。
(このあたりですでに勘違いしている可能性もありますが...)
どのように作るのがのが良いのでしょうか。10.5限定で良いです。
ちなみに私のレベルは、
・C言語は理解している
・AppleのCocoaセミナーを資料を見て一通りやった。
・旧版の萩原本を一通り読んだ(サンプルもほぼ一通り作った)。
・Cocoaはやっぱり!を一通りやった。
よろしくお願いします。
- こういうアプリは数学とかの考え方が必要になりそうだな。
いきなり作るのもありだが、まずは普通のGUIアプリから作ったらどうだろうか。
- >>416
69 名前: 名称未設定 Mail: sage 投稿日: 2008/02/11(月) 22:39:51 ID: my5MjNWk0
こんなん見つけた。初心者でCocoaSeminar初級やってみたけど、
Xcode3.0と操作方法が違っててわかりません><な人向け。
Macでプログラムしよう!
ttp://www.nicovideo.jp/watch/sm1859014
- 昨年あたりからちまちまとCocoaをはじめて、ようやく自分の思い通りの
アプリを書けるようになってきた。
Cocoaは一年すぎたあたりから面白くなってくるね。
- >>417
数学というか物理というか。どういうアルゴリズムで時間発展させるかが重要かと。
すごく真面目にやるなら運動方程式を数値的に解くんだけど、
もっと楽なアリゴリズムもありそう。
描画はCore Animationで沢山レイヤーを使うとか? でも素朴にNSBezierPathで
四角や線を描くのも勉強になるかも。
- >>416です。
お返事ありがとうございます。
>>417
確かに、書籍のサンプル以外ほとんど自分で作ったことないです。
沢山アプリ作ったり、リファレンス読んだり、そういった慣れもまず必要でしょうね。
>>418
>>416の動画はそこから辿っていったものですが、Xcode3の使い方はだいたい分かって
いたのでスルーしていまいした。すごく参考になりそうです。
>>420
ブロックの動き自体は、はね回って近くの相手に向かって方向を変えるくらいなら
そんなに難しくないのかなと思っています。
ブロックを動かすのに、NSBezierPathで描いて消してを繰り返すのか、何かのアニ
メーション機能を使うのが良いのか...。
- >>421
>ブロックの動き自体は、はね回って近くの相手に向かって方向を変えるくらいなら
>そんなに難しくないのかなと思っています。
まあ、それっぽく見えればいいだけだろうだから、てきとーにやればいいんだけどさ。
それでも、「それっぽく見える」にはある程度物理的なことも知っておく必要があるかも。
...と思うのは自分にはなまじ物理の経験があるからかもしれないけどな。
ま、とにかく何か作ってみればわかるでしょう。
いやー、ああいうのを見てると、エネルギーとか角運動量とか重心とか気になっちゃうん
だよねー。あれは散逸系かな、みたいな。
- boidでググったら
ttp://tpot.jpn.ph/t-pot/program/101_boid1/index.html
- アルゴリズムじゃなくて描画の手段を尋ねてるんじゃないの?
NSBezierPath だと動画の最後くらいたくさん描画すると重くなる。
俺なら OpenGL を使う。
- >>424
おっしゃるとおりです。
OpenGLですか。ネットで探すと色々と情報転がってますね。
ちょっと勉強してみます。
>>423
お、バウンディングよりおもしろそうです。
- Cocoaスレであれだけと、俺ならSDL(CocoaはGUI限定)かな...
- ガベージコレクションを有効にすると、static 宣言してない変数でも、
クラス内で共有できるようになったのですが、static宣言はちゃんとやったほうが
良いのでしょうか?
- Obj-C にクラス static 変数なんてあったっけ ???
- >>424
>アルゴリズムじゃなくて描画の手段を尋ねてるんじゃないの?
>>420 で CA はどうかとちらっと書いた。
試しにすごく簡単なアニメーションをでっち上げてみたが、やっぱ CA いいかも。
ゴリゴリとアニメーションに必要な処理を書かなくていいしね。それにレイヤー増やしても
ほとんど重くならない。
で、こんなのはお膳立てされた API を使うだけなんで、
自分的には時間発展のアルゴリズムの方に興味が行ってたのだった。
- >>429
度々どうも。
OpenGLで四角の移動を描いてみました。Cocoaの勉強も兼ねているので、Core
Animation ももう少しいじってみて、どれで行くか考えたいと思います。
ちなみに、CAは
ttp://journal.mycom.co.jp/special/2007/coreanimation/index.html
を見てやってみましたが、何故か地球のイメージが真っ白に....サンプルをダウン
ロードして試してみても同じでした。
- CoreAnimationなんてそんなに難しくないんだから、サンプル
が動かないなんて言わないで自分で一から作った方が早い罠。
- >>431
難しいか簡単かも分からない状況ですw
和訳ガイドがあるのでとりあえずそれも読んでみます。
- Core Animationって始点と終点がわからない動きは難しいと思うんだけど
- >>433
たとえばどんな?
- >>434
416みたいなやつ。途中で他のものが干渉する動きは難しいと
- Core Animationは、新しい命令出すと前の動作が途中でもそこから次に向かってくれるよ。
プログラマが途中の処理を書く必要ない。
iPhone SDK free。Xcode+IB。Cocoa。
$99でiTunesから売れる。Developerの取り分は70%。freeもOK。
from todayだけどbeta。
- http://developer.apple.com/iphone/program/
- 重くて開かん...
- ↑繋がりにくいな。
iFundて何するんだ?
http://www.kpcb.com/initiatives/ifund/index.html
- >>437
これの影響か、
http://developer.apple.com/jp/documentation/
以下のページは全部404になってますね。
まさかホントにファイルがない訳ではないとは思うが。
- IBでウィンドウを作ってそれようのNSWindowControllerのサブクラスを作った場合
これはFile's Ownerに結びつけるのと新規にNSObjectをNibファイルに作ってそれに
結びつけるのとどっちがいいんでしょうか?
サンプルとか見てると両方のパターンがあるみたいで場合分けの考え方が分からない
のですが...?
- 繋がったよ
2.1GB!
だがダウンロードは遅くない
- 600MB あたりで止まった。
web でドキュメントはよめるようになったよ。
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/
- ADC on iTunes にビデオも一杯出てる。Online 会員で見れるよ
- インスコ完了
iPhoneシムおもすれ~
けど、くぱぁはどうすんだ?
- 何回やっても 600MB あたりでとまります(涙)
プロバイダにとめられてるのかな?
- オーガナイザでtouchに自作アプリ入れようとすると34のエラーになるのはなんでだ?
設定が足らんのか、まだ入れちゃダメなのか・・
- ファームウェア v2 が出ないと無理なんでは?
- そかそか、そりゃそうだわな
- >>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のデベロッパ登録が必要で、それはまだ日本からはやってくれないと、、、
- >>450
同じとこ見てた。
ここで言う、CSRファイルをうpするところがiPhoneDevCenterで
みつけられなくて途方に暮れていたんだが。$99のメンバーシップ持ってないと
駄目っつーことなのか。
- 質問させてください。
NSPoint から x 座標だけを int 型で取り出すには、
どうしたらいいのでしょうか。
あと、NSPoint とかは「関数」ですよね?
どうしてメソッドと関数が別々に存在するのか、よく分かりません('A`)
よろしくお願いします。
- >>452
まずはCを覚えて下さい
NSPointは構造体
キャストすりゃintで取れる
ググり方はわかるだろ?
- Cの知識が中途半端なままCocoaやってるのがいけないですね。
構造体、キャストについては詳しく調べます。
ありがとうございました。
- Objective-CをやるためにCを熟知する必要も無いけど
ここまで分かってない人には、ちと厳しい。
- たった一行ですむところをグダグダ駄レス垂れて人を寄せ付けないのがMacクオリティ
- >>456
.NET(笑)でもやってろよ
- >>456は煽り口調だけど実際問題門は狭いと感じる
単純に情報量が少ないのもあるけど
ド素人が気軽に質問できる場ってのがほとんどないんだよなあ
- まーたしかに、無いね
- Core Data のアプリで(document based じゃない方)、あるデータのエンティエィ
(Dataとします) があって、関連として
・mainData(to-many)
・subData(to-one)
を持っており、お互い逆関連に設定されています。
あるデータ群に対し、その中の最初の1つだけを mainData とし、残りはすべて
その mainData の subData として設定しながら、Core Data のエンティティを
作成していくメソッドとして、以下のようなものを書きました。
- 続く
- - 続き
- (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"]; // 問題の行
}
}
}
- 続く
- - 続き
これで思い通りに動いたのですが、一度データをファイルにセーブして
(NSSQLiteStoreType)、次にアプリを立ち上げると uncaught exception で
立ち上げと同時にクラッシュします。
// 問題の行 のところをコメントアウトするとクラッシュしなくはなりますが、
当然、subData 群に mainData が設定されません。
セーブしなければ問題なく動いているのですが、// 問題の行 のところは、
何が良くないでしょうか。
長文すみません
- 亀レスで申し訳ないですが>>407です。
>>408 >>409 サンクス。
特に
ttp://www.zathras.de/angelweb/sourcecode.htm#UKDistributedView
はかなり使えた。
にしてもみんなどうやってこんなサイト見つけてるんだろ。
クラス名でググってもヒット数3件とかでて困る。
- >>460
何がいけないのか解りませんが
NSMutableSet *subData = [mainDataMO mutableSetValueForKey:@"subData"];
[subData addObject:newDataMO];
としてもエラーが出ますか?
それから、文脈からしてone-to-many relationshipなのは
subDataの方ですよね。
- >>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 が複数です。
- >>465
464です
このようなrelationshipはoutlineViewのデータでよく使用していますが、
(parent, children)
こんなトラブルは経験がありません。
他の原因があるのではないでしょうか?
- NSTableViewでcellがCheck Box Cellの時、
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
では何を返せば、Check BoxのTitleを変更できるでしょうか?
Selectedしか変更できない。
- >>467
dataSource がダメならデリゲートで、
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
で aCell の title を変更してみては。
- >>461
>NSManagedObject * mainDataMO == nil; // 最初は nil
==だからじゃねーかな。
- >>467
私がやってるのは
[tableColumn dataCell]でCellを拾ってきて
Titleを書き換えてるようです。
(初学者なんで正攻法かどうか分かりません)
- >>469
すみません、ここにポストするときに書き損ねました。
ソースでは = になってます。
>>466
クラッシュさせているのは、このデータが NSArrayController 経由で
バインディングされている NSTableView のようなのですが、
よくわからないのは、データをセーブする前までは何ともないころです。
セーブ前とセーブ後で何かの状態が変わっているのだと思いますが、
セーブまわりは Core Data が自動的にやっている部分なので
何が起きているのか掴めません。
- >>471
ライブラリのApplication Supportフォルダにセーブデータが
あるからテキストエディタで開いて確認してみたら?
属性に一時を設定して保存されていないとかでは。
- >>471
484です
お話から類推するにcontextには問題なくて、
persistentStoreCoordinatorに問題があるのでしょう
SQLiteをxmlに変更してどうなるか見てみてはどうでしょうか?
- クラス内でデータを保存しておきたくて、インスタンス変数を作ってそこに格納しました。
しかし、その変数にアクセスするためにインスタンスメソッドを呼ぶと、当たり前ですが初期化と
同時に変数のデータがリセットされてしまいました。
そこで、クラスメソッドにしてみましたが、これも当たり前ですがインスタンス変数には
アクセスできません。
アップルのObjective-Cのドキュメントを参照すると、
"インスタンス変数に対応する「クラス変数」はありません(中略)
クラスのすべてのインスタンスがデータを共有するには、何らかの外部変数が必要になります。"
とありますが、「何らかの外部変数」とはいったいどういう意味なのでしょうか。
static は推奨されないと書いてありました。
- >>474
ドキュメントに書いて有る通り,クラスの外に変数が必要ということでしょ?
C++ の static メンバ変数とごっちゃにしてませんか?
C++ を理解しているなら Singleton を作って共有データを保持しとけば良いだけ.
- 質問させて下さい
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 の
結果にはまったく影響しませんでした。どのようにすべきでしょう?
- × オーバライド
◯ オーバーライド
- 自己解決しましたです
(なんか最近2chで質問してしばらくすると自己解決する事が多いな・・・粘りが足りん)
上の方法でいいようです。
cellSize または cellSizeForBounds をオーバーライドすれば、sizeToFIt に影響してました。
MyButton をさらにサブクラス化していて、そこでの sizeToFIt のオーバーライドが
邪魔をしていただけでした。
- >>478
告白デバッグというやつだな。
- >>477
英語の発音をカタカナで書くのに間違いも正しいも無いだろう
- >>479
有言実行、かな。
- iPhoneSDKリリースでこのスレもさっぱりな人が大量発生の予感。
- 本当にさっぱりな人は、iPhone SDKって何?へぇそんなのもあるんだね
程度でここまで来ないと思われ。
少なくともCocoaってキーワードで検索しないんじゃね?
- あらゆるものをiPhoneに移植しろと要求してくる馬鹿が大量発生するのは間違いない。
- Xcode スレのほうが適切なのかもしれないですが、現状 Cocoa しか使っていないので
こちらでお聞きします。iPhone SDK に付属?しているという、Xcode 3.1 を使った方
いらっしゃったら、使用感をお聞かせ願えませんか?
- >>474
>static は推奨されないと書いてありました。
すいませんがこの記述がある場所を教えてください。
- >>475
おっしゃる通り、C++からのスイッチなので、混乱していますorz
もうちょっと研究してみます。
>>486
その記述は、私の誤読でしたorz すみません。
「static として宣言されていない外部変数を使用することもできますが、別々のオブジェクトにデータをカプセル化するには、静的な変数によって有効範囲を限定するほうが有効です」
の解釈を間違えてました。
- >>485
グッと来る使用感になった。今すぐインストールするべき。
- >>485
3.1の新規プロジェクトとか見た目変わり過ぎワロタw
仕事で使ってる人には余計なストレスになるのでおすすめしない
- MightyMouseの下スクロールがきかなくなってるから
アイコン表示マジでイライラする
- >>488, 489
グッとくる使用感、ってどんなんですかw ゴテゴテした感じという事でしょうかね?
サブマシンに入れていじってみよう。どうもありがとうございました。
- >>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).
「新規」系メニューの改悪さえなければいい出来だと思うんだが…
- >>492
わぁ、どうもありがとうございます。共存可能なら、メインに入れるか…
- え?3.1 ってMac用のCocoaアプリの開発にも
使えるってこと?
iPhoneとMacのXcodeって別物だと思ってた('A`)
- >>494
デフォルトのインストール先に入れると上書きされちゃうんじゃなかったかしら
ちなみにはっきりと「β」って書いてあるから仕事で使ってる人は別インストールを推奨
- ちょっとだれかさー作ってもらいたいものがあるんだけど
・ファインダーウィンドウのアイコン表示時(のみ)にアイコンとアイコンの
スペースをダブルクリックすると、上(親ディレクトリ)の階層へ
・ファインダーウィンドウのタイトルをデフォルトでコマンドクリック
(階層が表示される)
・windowsと同じようにバックスペース(delete キー)で上の階層へ
GPLで
あ、儲けたい人は儲けてどうぞ、需要の方は知りませんが
お願いします。
- >>494
XCode がかなり拡張されて、いろんな cpu に対して開発できるようになっただけだよ
かなり嘘だけど、64bit/32bit/ppc/intel だけじゃなくて、
iPhone 用にもコンパイルできるようになっただけだと思えばいいです
>>496
ふたつめは右クリックすればいいのでは?
ひとつめとみっつめは Unsanity が APE のレパード版を完成させれば
すぐできるはず。
- あと、階層行き来するのならカラムビューでいいのではと
個人的におもうんですが。
表示→パスバーを表示、でフルパスも下に表示できるし。
- iPhoneSDKやXcode3.1にはNDAがあるから
詳細を書いてはいけない希ガス
- 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
- >>500
もらった。ありがとう!!
- >>500
プロジェクトファイルをあげる時はビルドファイルを消した方がいいよ
まぁ光回線の世の中じゃあんま関係ないか
3.1の変更メモ(NDAに抵触しないよな?)
3.1でプロジェクトを作った時、StandardAboutPanelに作成者の名前が記載されない(アプリのアイコンと名称とバージョンのみ記載)
従来通りにするにはInfoPlist.stringsに
NSHumanReadableCopyright = " 文字列";
を自分で追加してやる必要がある。
- >>500
すげーな。これだけしか書かなくても動くのか。
- >>500
THANX
これだけで動くのか、すげ~な。
- >>502
ターゲットのクリーニングだけじゃだめなんですね。
アップし直しました。
- >>500です。
背景はQuartz Composerのファイルなのでプログラムコードは書いていません。
ADCにあるCocoa Slideというサンプルから拝借したものです。
Coer AnimationはおろかCocoa自体勉強中なので、これだけで動くという
事がぴんと来ないですw
- あるある
- GC つかうと更に短くなる希ガス
- 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
ご存じの方がいらっしゃいましたら、どうかご教授願います。
- orz
- NSClipViewのScrolToPointで指定した座標までスクロールよ。
- NSButtonにsetKeyEquivalent:で矢印キー(NSLeftArrowFunctionKey)を設定、
実際に動かしてみると一度キーを押すだけで二度反応してしまうのですが
これは仕様なんでしょうか。
- >>512
あ、それ俺もなった。
- 質問お願いします。
自作でポップアップするパネルを作りたいんですが、
(2ちゃんねるブラウザのスレ番ポップアップみたいな)
実装方法が分かりません。
タイトルバーのないパネルの作り方を教えてください。
よろしくお願いします。
- NSWindow* window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,128,128)
styleMask: NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
ぐぐれば ToolTipWindow というコードがあるよ。
- >>515
ありがとうございました。
とりあえずNSWindowとNSPanelのリファレンスは参照したんですが、
見落としていたようです。
- よく環境設定ウインドウでツールバーから設定カテゴリを選ぶと
項目の量に合わせてウインドウの大きさが変化するようなのがありますが、
あれはそれぞれのNSToolbarItemとかNSTabViewItemのidentifierごとに
コード内でウインドウサイズを決め打ちで保持しているんでしょうか?
- >517
"DBPrefsWindowController"でググれ
- >>518
ありがとうございます。
なかなか面白そうですね、適当に弄ってみます。
- >>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個くらいで目に見えてもたついてきます。
- 面白いね。銀のiMac 2GHz + Mem3GB + RADEON 2400で200個の状態でもたつきはありません。
- >>520
確かに気持ち悪いですね。彼女に見せたら寝込んでしまいましたww
ソースですが、ボールクラスを作って自分の位置や形、色を保持しておくとプログラムが綺麗になりますよ。
あと、動きをコントロールするモーションコントローラーも別クラスにしておけば
動きを後から簡単に変更出来るようになります。
- SpriteWorldを思い出してしまった。
blitzの高速化のための巨大switch...w
- Cocoaバインディングについて質問させて下さい
NSTableViewとNSArrayControllerをCocoaバインディングするとテキストデータなどの管理・表示が
楽になりますが、扱うデータをアイコン付テキストなどのカスタムデータにすることは可能でしょうか?
通常カスタムデータはNSCellを継承して独自のクラスを作ってdrawInteriorWithFrameをオーバーライド
して描画すると思いますが、これをCocoaバインディングしたNSTableViewから呼ぶ方法はあるでしょうか?
- >>524
アイコン付テキストの場合にはCoreRecipesのように
NSAttributedStringをバインドするのが一番簡単でしょう。
一般的にはバインドできるオブジェクトはひとつだけなので、
アイコンとテキストのように複数のオブジェクトをバインドするには
NSDictionaryとかNSArrayの形でバインドすることになります。
モデルにアクセッサを書いて、NSCellのsetObjectValueを上書きすれば可能となります。
- CoreData ってものがいまいちつかめないんですが。
モデルにあたる部分のコーディングを楽にするってことは分かるんですが。
たとえばAという配列とBという配列があって、Aの要素を一つBに移動したり、
交換したりといった動作は、コーディングなしでCoreDataで処理することが
できるんでしょうか。
- >>524
IBのバインディングだけで完結させたいのか、そもそもNSTableView
のカラムに
アイコンつきテキストを表示させる方法が知りたいのかによりますが、
後者ならデータソースのクラスを作って対象のカラムをカスタムセルにして
処理を記述すればできます。
- >>524です
やりたいことはビットマップとテキストが混在したデータを一覧表示させることです
このデータ自体はディスク上のファイルにあります
このデータを表現する既存の型はないので独自のクラスに読み込んで
そのポインタをNSTableViewに渡して管理したいと思いました
で、管理はフレームワークに任せて描画するときだけ自前の処理で行えば効率的かと思いました
実際Windowsで同じものを作っていて、そこでは描画関数だけを書けば済んでいます
それで最初はいろいろ調べていて、NSCellとNSTableViewの両方をサブクラス化して必要な
メソッドをオーバライドすれば良いらしいと分かりました。しかし、それよりもCocoaバインディング
を使った方がデータの管理は効率的らしく、というかCocoaらしそうだったので>>524を書きました
どうもうまく説明できなくてすいません
その後もいろいろ調べていてこの場合はCocoaバインディング使わない方が手っ取り早いのかなと
思い始めました
- >>512
200個で平気ですか。アニメーション機能は使っていないので、グラボより
CPUパワーの違いが出るんでしょうね。
>>522
彼女さんは元気になられたでしょうか(^-^;
アドバイスありがとうございます。手直ししてみます。
>>523
それ、どういうやつですか?
- >>528
テキストとビットマップを別のカラムに表示するってのじゃ駄目なのか?
- >>530
英単語を発音記号+ストレス符号付文字で表現したようなデータを一覧表示させたいんです
各セルごとに文字とビットマップがランダムに混在したデータが入るのでカラム別にはできないです
CocoaバインディングにこだわらなければNSCellとNSTableViewをサブクラス化すれば
書けそうなので明日その方向で試してみようかと思います
- 発音記号なら普通に Unicode にあるよ?
ビットマップをつかわないでも文字だけで済むとおもいます。
編集→特殊文字...
を開いてみてみてください。
- >>532
元データが独自にビットマップを持っていてそれに独自のIDが割り振られているので
どのビットマップがどの発音記号に該当するかは1つ1つ目で見て変換テーブルを作らない
とフォントに代替できないんです。また、アクセントの位置を符号化したビットマップとか
文字にはできない記号とかもあるんで...
というか要はアイコン付テキストと同じ考え方でアイコンの出現位置と数がテキスト内で
ランダムになるだけなのでそんなに難しい事ではないはずだと思います。どうもCocoa
バインディングにこだわりすぎて自分の中で難しくしてしまったみたいです
- >>533
それなら本質的な問題はNSTableViewのサブクラスで独自のビューを作ることだね。バインディングはその後考えればいい。
- >>533
なるほど。
というか画像文字まじりのは NSAttributedString で出来るんでは?
まあ画像の積み上げとかやってるとだめだとおもいますが。
(発音記号の画像の上にアクセント記号の画像をおくとか。)
ただ、できるかぎりはフォントで済む部分は画像でなくてフォントにしたほうが
ソフトの出来上がりが綺麗になるとおもいます。
- >>533
とりあえず、NSCellのサブクラスを作り、-[NSCell objectValue]を参照しながら、文字と画像の混じりの描画を行う。
それを、-[NSTableView tableColumnWithIdentifier:@"hoge"]で取得したカラムに、-[NSTableColumn setDataCell:MyCell]とやってセットする。
あとは、テーブルカラムのvalueにバインドしてやれば、NSCellのobjectValueに「文字画像混じりオブジェクト」がセットされる。
という流れになると思うのだが。
- >>520
Core Animation をよく知らないけど、こういう壁で反射するだけの運動なら
壁といつ衝突するかは簡単に計算できる訳だから、それが始点と終点ということではないの?
いずれにせよ Core Animation が使いにくいなら、普通に(?) OpenGL とか?
大抵のOSで動くから、とりあえずサンプルはいろいろありそう。
- >>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
メソッドを書くだけでうまくいきそうです
これなら当初考えていた描画だけは自前でやってデータ管理はフレームワークに任せてコーディング量を減らせることができます
みなさんありがとうございました
- >>537
確かに壁の反射だけならCore Animationで大丈夫だけど、途中から他のオブジェクトが干渉する動きになってるじゃん
- CATransactionを使うと、アニメーションを一時的にOFFにすることができます。
CALayerって、OpenGLのポリゴンとして実装されているっぽいので、OpenGLを直接使うよりは、CALayerを使った方が楽な気がします。
- ファイルのアイコンを表示させる時に
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を書かなくてもうまく行きますが、消費メモリが増えるみたいです。
- Core Data アプリで(ドキュメントベースじゃない方)、アプリを終了するとき
(データがセーブされるとき?)「(ある entity が持つ関連の名前)は有効ではありません。」
というアラートパネルが出てデータがセーブできません。
関連が「有効ではない」とは、どういう意味なのでしょうか。
どうすれば有効?にできるのでしょうか。
- MVCのなんたるかを学ぶのに良いソースってありませんか?
ADCのチュートリアルでMVCそれぞれ一個ずつのパターンはわかったんですが
モデルやビューの数が増えた場合にコントローラをいくつ作るか、
どのように繋げるかといった部分がピンときません。
- >>541
べつにアイコン本体はリサイズされません。その他の質問は、
retain / release をなにか間違っているのが原因だと思いますが、
もうすこしそのあたりのソースを書いてくれますか?
もしくはクラッシュしたときのスタックトレースとか。
- >>541
なぜそれでクラッシュするのか
プロジェクトファイルを上げてみたらどうでしょう?
ちょうど自分もおととい同じくファイルのアイコン表示やってました。
- >>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がうまく繋がるようにしてください。
- >>546
なんか、初めて知ることばっかりだw
コントローラとnibファイルが1対1で対応するなんて知らなかった('A`)
こういうことはAppleのドキュメントに書いてあるんでしょうか。
- いや、べつに一対一にする必要もないと思うけど。
- >>548
ttp://www.stripe-net.jp/cocoa/program/blog20071110.html
ttp://www013.upp.so-net.ne.jp/tanken/Tanken/no4_PitfallOfNib.html
ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/OtherArchitectures/chapter_8_section_2.html
1対1にしないと、思わぬ落とし穴にハマるらしい。。
- >>546
レスありがとうございます。
やっぱりそういうソースはなかなか無いですか。
いくつか有名なアプリのソース覗いてみましたが複雑過ぎてわかりませんでした。
NSWindowControllerのサブクラスを作るのとNSWindowそのもののサブクラスを作るのと
どう違うのかいまいちわかっていなかったんですが
NSWindowControllerが別nibファイルのFile's owerになることで
メインnibファイルからの橋渡し役になるといった感じなんでしょうか。
NSDocumentはまだ全く触れてないのでドキュメント読んでみます。
- >>550
メインnibファイルって、MainMenu.nibの事ですよね?
MainMenu.nibには、その名のとおりメニューバーしかありません。小規模なアプリなら、そこにウインドウなど、もろもろを含めたりもしますが。
メニューバーは、言ってみれば階層化されたコマンドリストのようなもので、アプリ全体で共有するコマンド(アクション)を発行するだけの存在です。
そんな訳で、MVCのViewとは位置づけが違います。
NSWindowControllerが別nibファイルのFile's owerになることで、メインnibファイルからの橋渡し役になっている訳ではありません。
ドキュメント関連のメニューのTarget/Actionには、firstResponder宛のアクションを設定しておいて、
それを現在アクティブなウインドウを管理しているNSWindowControllerで受け取るようにしてください。
- 質問です。
ホットキーの処理をしようと思うのですが、
NSApplicationのsendEventで拾ったイベントを
NSApplicationのmainWindowで得られるウィンドウへ送りたいです。
しかし、アプリがactiveじゃないとmainWindowが返らないので
この辺りの処理は、自力でNSApplicationのwindowsあたりから
求めるしか無いのでしょうか?
- 常駐してキーイベントを取得したいってことでしょうか?
- >>553
取得は出来てるんですが、それを、開いている最前面の(メイン)ウィンドウ
に送りたいんです。バックグランドの状態で
メインウィンドウを特定する方法ありますか?
- >>554
NSApplicatioinを見たら非アクティブ時はmainWindowを返さないって書いてありますね。
アプリが非アクティブになる時のノーティフィケーション NSApplicationWillResignActiveNotificationで
MyObjectにmainWindowを保持してやるのはどうでしょう?
それよりバックグラウンドでキーを取得する方法を教えてくださいw
- Cocoa Hotkey
ぐぐれカス
- うわ、もう答えるのやめよ
- ぐぐれカスと言われただけで反応してしまう、そんなことでは
荒いインターネッツを渡っていけませんよ。
- ゆとりくせぇ
- >>555
やはり、そうなりますか。
ttp://homepage.mac.com/mkino2//cocoaProg/Carbon/CarbonEvent/CarbonEvent.html#registerHotKey
- あーもうCocoaはまじでさっぱりだぜ
さっぱり過ぎてイライラしてきた
コーヒー飲んでくる
- Javaもさっぱりw
- きれいさっぱりやめちまえ
- そういえば Cocoa はこってりしてるものであって
さっぱりというのは変だよね???
- 日本語って難しいね
- Cocoaはやっぱり! からだと思うよ。
俺は、このスレ見たときちょっとウケた。
http://www.big.or.jp/~crane/cocoa/
そして、Cocoaはやっぱり! は、これかなやっぱり。
http://www.morinaga.co.jp/cocoa/milk/plagin/plagin.html
- 目的のアクションがFirst Responderのプロパティに無い
http://cocoawiki.aerial.st/?First%20Responder
やっと穴から抜け出せた
こんなん気付かないっての
- First Responderは入門時のちょっとしたハードルだよね
解っちまえばなんて事はないんだが
- >>566
plaginって……。
- https://bugzilla.mozilla.org/show_bug.cgi?id=357670
もしかしてこのスレに解決できる人いたりする??
- >>544 >>545
遅くなりましたがレスありがとうございます。
クラッシュはコードミスのようでした。(retainせずにreleaseをかましていた)
- OS 10.5.2 Xcode3.1 IB3.1使用でwebKit.frameworkを使っています。
以前はIB上でwebViewを出しインスタンス化すれば、バインドするコントローラーの一覧にwebViewが表示され、
普通にバインディングできていたのですが、今はなぜかそれができなくなってしまっています。
バインドするコントローラーにwebViewがでなくなってしまっています。
どのようにすれば良いのでしょう、お助けください。
- >>570
それ Cocoa じゃなくて Carbon じゃね?
TSM まわりか... 大昔になんかやったな。
2.0で動いてるんならそのコードを3.0でも使えばいいとかそういう簡単な話じゃないのかね。
- モデルのインスタンス変数にビューをバインディングしている場合、
モデル自身がインスタンス変数を書き換える時に
_hoge = value;
だと変更がビューに適応されず、
[self setHoge:value];
だと適応されました。
バインディングに対応させつつ、外部から変更されたくない(-setHoge:を作りたくない)
インスタンス変数の場合はどのようにすればいいのでしょうか。
- >>574
Objective-C ではそんなことはできないです。
Binding 使ってる時点で外部から書き換えてるということだと思いますが ...
- >>574
_hoge = value; の行を
[self willChangeValueForKey:@"hoge"];
[self didChangeValueForKey:@"hoge"];
ではさむ。
- >>573
Firefox 2まではCarbon使ってたみたいなんだけど、
Firefox 3はCocoaベースらしい。
- 質問です。
アップルのDVDプレイヤーのコントローラのように引き出しを
開閉してボタン類を表示/非表示できるようにしたいのですが、
どのような実装方法があるでしょうか。
- >>578
気合
- >>578
気合いを入れながらグーグルで"cocoa drawer"と検索すると色々と出て来たけど。
これとは違うの?
不定形ウインドウでやりたいならば、もう少し気合いを入れてキーボードを叩くと
他にも出てくるかもよ。
- レスありがとうございます。
>>575
ネットワークからデータを継続的に受信(送信はできない)して
その状態を表示したかったのです。
>>576
おお、全く問題なくうまくいきました。
ありがとうございます。
- >>578,>>579
なにかうまい方法はないかと思って質問しました。
とりあえず気合いと不定形ウィンドウで、全く同じ
外観・挙動を再現できました。
ありがとうございました。
- 追加したい機能がこれ以上無いのですが、
どうすればよろしいのでしょうか。
もちろんネタですよ^^
- >>583
最終バージョンを出して開発終了を宣言すればいいとおも
- 追加したい機能じゃなくて追加して欲しい機能をつければいいかと
- そういえばDVD プレーヤーはCarbonアプリだよね?
- すいません質問させて下さい。
OptionキーのKeyUpを取得したいのですが方法はありませんでしょうか?
KeyDownに関しては
NSFlagsChangedで修飾キーのイベントを取得して
[theEvent modifierFlags] & NSAlternateKeyMask でOptionキーかどうかの判定はできています。
目的としてはOptionキーを押されている間のマウスイベントに対して処理をして
Optionキーが離されたでメソッドを発火させたいのです。
ご教授おねがいします。
- >>581
_hoge というインスタンス変数を作った段階で、
[obj setValue: ... forKey: @"hoge" ]
という KVC は出来る、というかそれがあるので Binding も働いているので、
setHoge: を書こうが書くまいが外部に _hoge はバレていると思うんですが。
- >>588
それについては+accessInstanceVariablesDirectlyでNOを返して、
アクセッサメソッドなしのキーはバインドできないようにしました。
- NSMenuItemにアイコン(Resoucesに登録した)を表示させるのですが、
サブクラスでコードを書かずにI.Bのバインディングから表示させる方法はありますでしょうか?
バインディング項目に「image」があるのですが使い方がいまいちさっぱりで。
- 考えた末にNSImageを返すメソッドを記述したクラスを作り、
インスタンス化してIBのバインディンクのキーパスにそのメソッドを書くようにしました。
新たなアイコンを表示させたい場合は、
前述のクラスにメソッドを追加してバインドさせる。
こんなローテクな方法でいいのかしらん。
- イメージが固定なのなら、インスペクタのバインディングじゃなくて
普通の設定画面のところで image を設定してしまえばいいんでは?
- 今日はHMDTの”Cocoaセミナーグラフィックス編”をやろうとおもったんだが…
http://imepita.jp/20080320/805070
- >>593
ワロタ
- >>593
なんてこったいw
- >>593
素敵だ
- >>593
アホスw
- >>593
それに気づいただけでなく、アップしてみんなに見せようという精神に惚れたwwww
- >>587
CarbonのInstallApplicationEventHandler()でgEventRowKeyModifiersChangedな
イベントハンドラを登録する、ってところじゃないか。
あと「ご教示」の方が普通。
- >>599
CarbonっていうことはCですよね。
調べてみます。
ご教示ありがとうございました。
- >>600
順応性高いなW
- Document-BasedでWIndowのCloseをオーバーライドするときは
どこを変更するのが適切ですかね
- すごく初歩的なことかも知れませんが、
[NSString stringWithFormat:@"???", hoge];
で数値hogeが一桁でも二桁でも二桁表示させるにはどうしたらいいでしょうか?
例えば数字が5の時は05と表示させたいのですが
- すません自己解決しました
@"%.2d", intHoge でした
- CoreAnimation関係で質問お願いします。
あるアニメーションを実行後、そのアニメーションが終了後に、新たなアニメーションをさせる
方法を模索しているのですが、ヒントを下さい。
NSThread でやろうとしましたが、
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
で次のアニメーションまで待機させようとすると、あたりまえですが現在やっている
アニメーションもとまってしまいます。
- >>605
CAAnimationのデリゲートにanimationDidStop:finished:あるよ
- >>606
早速的確なレス、ありがとうございました。
調べ方が足りなくて申し訳ないですorz
- ついでといってはなんなのですが、
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
のように完全に動作をとめてしまうのではなくて、
一定時間イベントループをまわしながら一定時間待機し、その後に次の処理を行うという方法はあるのでしょうか。
NSRunLoop関連をあさってみてもそれっぽいメソッドが見つかりません。
- >>608
つ performSelector:withObject:afterDelay:
- >>608
つ NSTimer
- ちょっとした疑問を2つばかり質問させてください
くだらないですが
1.Cocoaでhogeに変わる代名詞みたいなのはないですか?
2.Webで配られてる各種ドキュメント、htmlとpdfがある場合皆さんはどちらで読みますか?(印刷という選択肢もあるかも)
- あ、コテすんません。昨日は叩かれるかと思ったら
思いのほかの反響で気を良くしましたw
- >>609,610
まさに、こういう的確なメソッドがあるんですねorz
Cocoa入門したての者にとっては、オブジェクト指向や
Cocoaの流儀を身につけるという壁を通り越しても、
経験不足で必要なメソッドがどのクラスにあるのかを
探すのに一苦労です。
- メソッドが沢山ありすぎてみつからないのは
僕もいつまでたってもそうな気がします。
暇なときに、自分のいまやっているプログラムとは関係なくても、
色んなクラスのクラスリファレンスをざっと眺めて、どんなクラスに
どんな機能があるかを知っておくといいと思います。
- 入門したて+CoreAnimation=iPhonSDK ってところか?
- >>615
いや、違います。ふつうのMac用の開発ですw
- NSDateで年日時秒まで取得できますが、millisecondまで取得するにはどうしたらいいでしょうか?
- >> 602
普通にwinodwのdelegateをNSDocumentサブクラスあたりに指定して
windowWillClose:, windowShouldClose:を実装すればいいんじゃないの?
もちっと言うと,NSDocumentは,ひとつのドキュメントが複数のウインドウ
(というかNSWindowController) を持つようなデザインもできるから,
ウインドウを閉じる==書類を閉じる,とは限らない。
だから,NSDocument自体にはウインドウを閉じることに対するメソッドはないのだと思う。
>> 617
確かに明示的なメソッドはないようだね。
NSTimeIntervalはdouble型だから,その少数部分を使うしかないのかな?
- http://developer.apple.com/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtDatesToStrings.html#
- カードゲームを作っているのですが、設計についてアドバイスを
いただきたいので、お願いします。
作っているカードゲームは、数十枚のカードで構成されたデッキ
を使います。デッキに含まれるカードは手札・墓地などに移動する
ことがあります。カードの数が多いので、NSArray で管理したいと
思っています。また、Viewに関しては一枚一枚のカードを1対1で
CoreAnimation のレイヤーに対応させて表示することにします。
まず考えた設計が、デッキ・手札・墓地などにそれぞれの配列を
用意し、たとえばデッキから手札にカードが移動する場合は、
デッキの配列から要素をひとつ手札の配列にもっていく
というようなものです。
しかし、ViewであるCoreAnimation レイヤーを
一枚一枚のカードに1対1で対応させたいのですが、この設計だとViewが
一枚一枚のカードを追えなくなるという問題があります。
そこで、全てのカードをひとつの配列にいれ、それぞれのカードについて
「デッキ・手札・墓地のうちどこに存在するのか」という情報を
持たせ、View (CoreAnimation) がその情報を問い合わせて、
存在する場所に応じてレイヤーの表示位置を決める
(たとえばあるカードが墓地にあるという情報をもらったら、墓地のある
場所にそのカードのレイヤーを動かす)という設計を考えました。
この方法は、デッキや手札の枚数を数えるのが面倒というような問題が
あります。
どっちもどっちという設計なのですが、どんなことでも良いので、
何かアイディアがありましたらご教示お願いします。
- こんな感じではどうだろう
カードに相当するオブジェクト(のサブクラス)を作り、
そのクラスのインスタンスをカードの数だけ作成する。
インスタンス自体が、自分のステイタス(どの場所にいるかなど)を管理する。
また、このインスタンスが、自らのステイタスの変更に応じて自分自身のアニメーションを管理。
さらに全部のカードを管理する管理手段を用意する。(NSArrayそのものよりも、全カードが登録されたNSArrayを有する
NSObject のサブクラス…例えばsharedCardController みたいな感じで作る。)
ある特定条件(あるプレイヤーの手札等)に合致するカード群を得たいときには、sharedCardController に問い合わせ、
NSArray から抽出されたカード群を得るようにする。
NSArray から特定条件のオブジェクト(カード)を抽出するには、filteredArrayUsingPredicate を使えば簡単。
- >>620
配列で考えてしまうのは手続き型プログラミングに慣れた人の悪い癖かな。
>>621のように個々のオブジェクトを作り動作をするようにしないと
(特にゲームでは)大変になるよ。
- >>621
>>622さんのおっしゃる通り、今まで手続き型言語で
やっていたので、本当に目から鱗です。
ありがとうございました。参考になりました
カードの情報はNSDictionary で持つというのがオーソドックス
でしょうか。
- Dictionary でもいいけど、小さなクラスを自分で書いても良いかも知れません。
- >>619
ありがとうございます!できました。
- 最近導入されたガベージコレクションって特定のポインタだけコレクションから除外することって
できないんでしょうか?
- >>626
staticにして参照を持続させればいいんじゃない?
- テキストを編集し終えたら(リターンキーで)特定の処理をし、次のTextFieldにフォーカスを移したいのですが…
以下のようにNSTextFieldのサブクラスとして書くと、フォーカスは移るのですが
フォーカスリングが残留…
- (void)textDidEndEditing:(NSNotification*)aNotification
{
(処理)
[super textDidEndEditing: aNotification];
[myWindow makeFirstResponder: nextField];
}
逆にこう書くと、フォーカスリングが移らない…
- (void)textDidEndEditing:(NSNotification*)aNotification
{
(処理)
[myWindow makeFirstResponder: nextField];
[super textDidEndEditing: aNotification];
}
フォーカスリングを奇麗さっぱり消し去って、次のテキストフィールドに気持ちよくフォーカスを移す
方法はあるのでしょうか。
- >>626
-[NSGarbageCollector disableCollectorForPointer:]
- >>628
[myWindow performSelector:@selector(makeFirstResponder:)
withObject:nextField
afterDelay:0.0];
使った事無いけど、これで少しだけフォーカスを動かすのを遅らせて実行してみるのは
どうでしょう?
- >>629
どうもありがとうございます
- みんなGC使っているの?
Cocoa-Javaであったような変なバグはなさそうですか?
- >>630
おおおおおおおおおおっ!
なんと目から鱗…確かにこれでできる。
ありがとうございましたm(..)m
- 処理の最後に
[myWindow display];
とかでは駄目なんですかね。試してないけど。
- デバッグ用に入れてたNSLog(@"ほげほげ");みたいなのを消し忘れて
配布してしまったら客先でもこのメッセージ見ることできちゃうでしょうか?
- はい
- 向こうが開発ツールインストールしてなければ大丈夫でしょうか?
- >>637
アプリケーション>ユーティリティ>コンソールで見れそうな気がする
試してないからわからんが
- たしかにコンソールで出力みれるね。
- Framworkの作り方とかIBのパレットの作り方を解説してるサイトはありませんか?
日本語ならなお良いのですが、、
- ほんとだ、しかも起動していない間のも全部表示される...
- >>641
ありえないから(w
- >>642
コンソール.appを起動していない時に別のアプリがNSLog()で出力したメッセージを
後からコンソール.appを起動して見ることができるっていう意味です
コンソール.appを起動してみるとクラッシュレポーターとかソフトウェアアップデートのログとか見れますよ
- consoleとかsyslogの仕組みが分かってなかったのか。
コンソール.appはログファイルの閲覧ソフトで、
実際のログは各アプリ等が随時ログファイルに出力してるんだよ。
コンソール.appがログを収集してるわけではないです。
- ID:30sON1PI0は別に勘違いしてるようには見えないが
- >>640
http://www.bignerdranch.com/palettes/index.html
http://wwwa.dcns.ne.jp/~nito/OSPT/Palette.html
ここらへんか?
IB3からはがらりと変わるが、考え方は同じ。
- >>643
誰でも知っとるがなw
- >>642が訳わからん対応したからだろう
いちいち人を見下したい人間が多くてかなわんなここは
- Xcode 3.1betaだけどさ、新規プロジェクト作製でRegacy Appのためのプロジェクトがリストから無くなったような?
- 俺は>>642や>>644の対応の意図は分かるがなぁ。
結果的に捉え違いだっただけであって、そう受け取るのも無理はない。
見下したことになっててカワイソス
- 俺も捉え違えてて何言ってるんだろう、、て思った
- >>642のとらえ違いを>>643で説明されて一件落着にすればよかったものを
気恥ずかしさのせいか自分のとらえ違いを認められずに>>644で相手を無知だ
とバカにしてごまかして終わろうとしたのがセコイ
- ここらで終わりにしようか単発IDさん
- 気に入らない書き込みが複数あると1人がいろいろなIPで自演してるように思いたく
なることってあるよねw
- 質問お願いします。
ふつう、乱数を発生させるとき、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できちんとした乱数を発生させるメソッドなどは
存在するのでしょうか?
- 他所でやれ、このうすらハゲ
- srandでシードを毎回初期化してたら
種が同じ以上同じ結果が出ると思うんだけど
- >>657
あ、確かにそうでしたorz
修正してみます。ありがとうございます。
- 乱数を何に使うか知らないけど,数値計算に使うなら
メルセンヌツイスターを使う方がよい.
- >>659
サイコロを振る機能のために使います。
統計的に正しく目がでるのが目標です。
メルセンスツイスターについては調べてみます。ありがとうございました。
- メルセンヌツイスター
相手は死ぬ
- ダイスを作成するのに
hoge = rand() %x;
するのはカルドセプトサーガのプログラマー並みの阿呆のすること。
もしかしたらOSX(=FreeBSD?)のrand(3)は下位ビットまでランダムかもしらんが。
- 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 の時点で。
- man -a rand
bad random number generator
man 3 random
better random number generator
...man 3 RANDだと出ないし、man 3 randだと違うのが出る。
RAND(3)はどうすりゃ一発ででるんだろ。
- man 3 srand
- >>646
遅くなりました、ありがとうございます。今必死に英語を読んでいます。
整数値のランダムはScreenSaver.frameworkにSSRandomIntBetweenというのがありますよ
- Hello Worldが終わって、次はサイコロでも作ろうと
NSRandomなんちゃらがあるんだろうとリファレンスを探しまくった日々……
- どなたか教えてください。
これからCocoaを勉強しようと思うのですが、先に身につけておいた方が良い知識には何が有るでしょうか?
スレをざっと読んだところではC言語くらい出来てないと駄目みたいな印象を受けるのですが・・・。
C言語もどこまで理解できればいいのやら・・・。
ちなみにプログラミングの経験は全くのゼロです。
- >>668
下手に寄り道するよりこれを嫁。
「たのしいcocoaプログラミング」に匹敵すると俺は思う
http://homepage.mac.com/nsekine/SYW/SYWSoft/learnCocoa/bexcoder.html
- (自分で見てみて)スーパー簡単そうなC言語入門本を買って
それなりにやったらCocoaをやるべし
Cocoa本はたのしいCocoaでいいんじゃまいか
- >>662-667
ありがとうございました。
いただいた情報をもとにさらに勉強します。
- うーむ、プログラミング知識なしでいきなりココアかいな。
変数とか配列とかの基礎知識もないまま突入すると玉砕しそう。
強烈に作りたい何かがないと大変かな。
がんばれ。
- >強烈に作りたい何かがないと大変かな。
でもこれに勝るものはないよな~
- 自分は一応Java,Javascript,Perl,Applescriptはできるんだが
なんかObjective-CとかCocoaって難しそうなイメージがある
- >>672
最近の教本はその辺も比較的手厚いよ
- >>674
それだけ出来るんだったら Obj-C は何も問題ないと思うが。
メモリ管理もレパードで GC まかせにできるようになったし。
- Java がわかって Obj-C がわからんことは絶対にないよね
- >>676-677
そうなのか…
がんばってみようかな
CocoaはなんかInterface Builderが壁になってる
バインディングとかよくわからなくて
けど慣れたらこれ便利なんだろうなぁ
- >>677
だな.そもそも言語の系統が
Smalltalk -> Objective-C -> Java
だもんな.
- >>678
IBの操作なら(それ以外もだけど)、↓のCocoaセミナーが参考になるよ。
ttp://developer.apple.com/jp/documentation/japanese.html
- >>680
ありがとうございます。見てみます。
- [AdsenseWebView takeStringURLFrom:@"http://google.com/"];
は無理か…
WebViewにページを表示させるにはどうしたらいいんだろ
- IB起因のバグはエラー表示みてもピント来ないから困る。
その辺どうにかならないかなぁ。
- >>683
Objective-Cのダイナミズムに由来するものでしょ。慣れるしか。
- バインディング名が間違ってたりすると、間違っている箇所を探すのが困難。
バインディング設定のコピーが困難。
- どうしよ
挫折しそうだorz
>>682について
いろいろググってWebViewからURLを取得する方法はわかったが指定したURLをWebViewに表示する方法がわからんorz
WebViewあきらめて他いろいろ試すかな…
- http://developer.apple.com/documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html
setMainFrameURL: では?
ググるよりなにより ADC のレファレンスを読もうね。
- >>686
>指定したURLをWebViewに表示する方法
setMainFrameURLでできるんじゃないかな?
- >>687-688
ありがとうございますm(_ _)m
リファレンス英語だからと避けてましたがやっぱり読まないとだめか…
- Macで開発するのに英語は不可避。
- >>685
禿堂
バインディングのエラーは本当に頭が痛い
おかしい場所を探し当てるのにものすごく苦労する
MVCという意味ではバインディングを使った方がいいと思うが、
生産性に関しては、使わない方が良い気がしてる
- >>669
>>670
助言ありがとうございます。
色々やってみようとおもいます。
>>672
自分用にカスタマイズしたメモ帳が作りたくて・・・。
頑張ります。
- バインディングは結構慣れだよ。最初のうちはわからずに色々バインディングしたくなるけど、下手にバインディングすると逆に動かないから気をつけた方がいいよ。
- 生産性を上げる(定型的な繋ぎコードを書く時間を他のことに使う)ためのものなんだけどな。
- >>694
「生産性」にはデバッグのし易さも含まれる。
繋ぎコードを書く時間 > バインディングのデバッグ時間
とは限らない。
むしろ逆のケースが多いと思っている。
- cocoaで内部的にIB actionのメソッドを叩くことがあるけど、
そのメソッドがsenderを使う場合と、無視してる場合がある。
やっぱり呼び出し元でsenderも一応用意した方がいいんでしょうかね?
それとも気にしないで、適当なobjectでも渡しておきますか。
- sender情報がいらないならnilでも渡しとけば。
- 便乗ですみませんが、>>696のように内部のメソッドで
senderに値(intやstring)をセットするにはどうすればよいのでしょうか。
- intならNSNumber使うよろし
stringって?
- std::string とか?
NSString* なら id にそのまま渡せるけど、
IBAction の sender にそのまま NSString を渡すのはなにか変な気がする
- NSStringなら渡せるべ
- とりあえずselfを渡しとけばいいんでないかい?
インスタンス変数の取得や変更はアクセッサで対応。
- 具体的なコードがさっぱりなんです。
例えば複数の変数を渡したい場合とか(辞書にして渡すんですかね)。
- それは Obj-C 一般の問題?
それとも本当に IBAction に複数変数を渡したいばあい?
前者ならとりあえず
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html
を読むこと。
後者なら ... う~ん、IBAction はそういうことにつかうものではないので、
別の方法を考えてください。
- >>703
具体的な質問をしない→具体的な回答が得られない→具体的なコードがサッパリ
のループ
- ここでデルフォイの神託↓
- すいませんちょっと教えてください
サンプルソースコードを見ていたら#pragma markという行がありました
デフォルトで茶色く表示されていて、特に意味はないというかコメントアウトされている
ようにも見えます。#からはじめると茶色いコードになるのですが、これはどういう文法なんでしょう。
- Xcode のエディタ画面の中で、ツールバーと本文との間に細いバーがあるでしょ。
そこのポップアップ中に見出しが付きます。
- >>708
本当だ…ありがとうございます。
これは名前はpragma markで良いんでしょうか?自力で調べた際、マニュアル、googleなどを
検索したのですが引っかかってくれませんでした。自力で調べるにはどういう所を見たら良かったのでしょう…
- c言語の仕様の方を調べた方が良いかと。
"C言語 pragma"で出てくるけど?
- >>710
Cのほうだったんですね
pragma markで調べたのがいけなかったみたいです。もっと
検索結果を辿るようにしますね
- #pragmaってのはCのコンパイラディレクティブで、その中身についてはCの仕様では定められていない(C99除く)ので、コンパイラなどの開発者が自由に使える。
で、#pragma markってのはXcodeでコードナビゲートのために使われるようになってる。
今気づいたんだけど、CotEditorも#pragma mark認識してくれるんだね。
- Xcodeでは見えないのですが、他のエディターで開いたら
キャラクターコード0X0Bの文字?がちらほら点在していました。
別に害は無さそうなのですが気持ち悪いので置換で消していきました。
これは何なのでしょうか?
- #pragma mark ってCodeWarriorのときから使ってたから一般的なのもだと思ってた。
昔はメニューのセパレートアイテムがキャプションが-の普通のメニューアイテムだったから、
#pragma mark -
もためらいもなく使ってたし。
- 質問させてください。
CoreAnimation のレイヤーをマウスでクリックしたりドラッグしたりと
いったマウスイベントをつかまえるには、どのような実装方法がある
でしょうか。
Apple のドキュメントや、GeekBoardGame というApple のサンプルコードを
のぞいてみましたが、どうしても分かりません。
よろしくお願いします。
- Core Data アプリ(non document based)で、あるエンティティの属性 (double)
の値を変えたとき、テーブルに表示中のその値はアップデートされているのですが、
一旦アプリを終了して再び立ち上げると、その値がアップデート前の値に戻って
います。
non document based でテンプレート通りなので、アプリ終了時に変更があった
オブジェクトが save されているはずと思うのですが(NSSQLiteStoreType)、
特にエラーメッセージも出ずに終了しているにも関わらず、上記の現象が起きます。
アプリ終了前にメニューから save をしても同じです。
エラーメッセージも無いので、どこをどう調べれば良いのか見当がつきません。
同じような現象が起きた方はいるでしょうか。
- 単に property が transcient になっているのでは?
- transient ではないです。
transient だとアップデートする以前の値も無くなりますが、
最初にオブジェクトを作成して値を設定したときの値は残っています。
- 終了する前にアレイコントローラーの中身をログにダンプするとか。
- アレイコントローラの中身はテーブルに表示しているので、
アレイコントローラーの中(というか managedObjectContext の中)は
アップデートされていると思うのですが、それを SQLite にセーブして
くれてないような気がします。
アップデートした mangedObject の isUpdated は、アップデート後に
ちゃんと YES になっているのですが‥
- 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"];
だけではダメな理由がわかりません。
- >>721
>アップデートしたい NSManagedObject * = UpdatingObject
データモデルを作成すると、Xcodeのファイル作成メニューから
設計ー管理オブジェクトクラスというファイルが作成できる
ようになる。
ここからクラスファイル(MyUpdatingObject.m/.h)を作成すると
アクセッサを自動生成してくれる。中身は>>721の記述通り。
MyUpdatingObject *UpdatingObject;
[UpdatingObject setAttrName:newValue];
って感じで記述できるよ。
なんでか?Managedだからじゃねーかな。
- サーバーの自作cgi(リクエストを受けると文字列を返す)と連携してリクエストをなげ、
受け取ったらローカルのファイルに書き出すとか簡単にできてしまいのですが、
危なくないですか?
こういうことをしないのは暗黙の了解というか作者の善意を信じるしかないのかな。
- >>723
誤爆?
- いや、誤爆でもないんですけど。
そういう悪さが簡単に作れるなあと。
ファイルマネージャとか使えばさっくり消すこととか出来そうだし。
- ???
そもそも Cocoa と関係ないし。ファイルマネージャって何?
旧 Mac の Toolbox の File Manager のことを言ってる?
- NSFileManagerだべ
- ???
NSFileManager つかったらファイルの削除ができるのはあたりまえでは?
もちろんユーザ権限だったらそのユーザのファイルしか消せないけども、
ホームディレクトリ以下を全削除するコードなんか一瞬で書けるし、
かけて当たり前なのでは?
- >>723
日本語でおk
- cgiのくだりもわからない。なんの話なのだろう。
- 一度開いたらシステムオワタなアプリなら作れる
ダウンロードして開かなきゃ発動しないけど
- >>731
ユーザによる権限昇格もせずに?
と思ったけど、起動出来なくするぐらいなら出来るか。
- ユーザーとの対話なしにローカルファイルの読み書きや
webへのアクセスが出来てしまうのが
当たり前と言えば当たり前ですが、恐いと言えば恐いかなと。
- >>733
何が言いたいのだ?
web へのアクセスをユーザにさせたくなきゃ,
フィルタリングでカットすればいいだけだろ?
ローカルファイルも権限があるから勝手に読み書きできないよ.
セキュリティを良く分かってないんじゃないか?
- そんなのCocoaに限らずコンピュータプログラム全般に言えることじゃないかと
アプリがファイル読み書きやらネットワークアクセスの度に
ダイアログ出てきたら鬱陶しくて実用にならない
Leopardなら初回だけネットワークの許可ダイアログでてくるけど
- なにかもう一つしっくり来ないな。
>733は自分が思っていることを正しく伝えられてない気がする。
- いずれにせよCocoaとは関係のない話だな。
- cocoa というより C の文法の問題かもしれませんが、
探しても出てこないので教えてください
if( hoge ) {
}
のように条件式なしで単純に変数が条件になっているのは、
どのような条件なのでしょうか?
- if( hoge ) { }
と
if(hoge!=0) { }
はまず等価。
- 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;
とする。
俺は。
- if (ここに書かれた式の"結果"が真か偽かが条件判定されるだけで式の形は問わない)
0かnilなら偽、それ以外は真
逆に言うと普段使ってる hoge == 10 みたいなのは
実際はこの式全体が真か偽かを返してる
つまり
int hoge = 10;
if (hoge == 10) {
}
これと
int hoge = 10;
BOOL result = (hoge == 10);
if (result) {
}
これは同じ
- そういえばCでは
if(a==0)ではなく
if(0==a)と書くのが流儀なんですかね?
if(0<a)なんて直感的にすごく分かりにくいのですが。
- >>742
そんな流儀はじめて聞いた
自分に分かりやすい方でいいんじゃないの?
- >>738-740
ていねいかつ分かりやすい説明、ありがとうございました。
勉強になりました。
- >>742
定数を左辺に書くのはどちらかというと痛い書き方。
- >>742
if (a=0)
と書きまちがえるとaに代入されてしまい
意図した動作にならないのを嫌って、定数を左辺とすることを推奨する人たちがいます。
仕事やなんやで指定されない限りは、(a==0)で問題ありません。
- >>742
if(0==a)
のつもりで
if(0=a)
としてしまうとエラーになるから、間違えない。
という主張の方々の作法。
これに同調するなら使いましょう。って感じ。
ただし、たまに「でなければならない。おまえらこの通りにしろ。」という方もいる。
そういう人は確かに痛い。
- 1~10の範囲は
if ((1 <= a) and (a <= 10))
と書くのが数直線のイメージとも一致して自然だと思う。
- 最初
if (self = [super init]) {}
を
if (self == [super init]) {}
と勘違いして小一時間悩んだのを思い出した。
- return [self なんたら];
っていうのは普通?
慣れてくると、
return [self なんたら:[self こうたら:[self うんたら:[self ちんたら]]]];
とか書いて、訳分かんないけどw
- CICropって切り抜いたあとの画像に1px幅の黒枠が入る様な気がするな・・・。
- >>749
ワロタwwww
- すいません、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
- MOSAで活動すればいいのでは?
権利関係は?
- MOSAは確か会員登録が必要だし、登録は有料だと思ってました
wikipediaみたいな感じで誰でも編集できるこの形式の方が良いかと思いまして
Appleの公認はとってません。ひっそりやっていって怒られたら非公開形式かな、
というつもりでした。
大したことは書いてませんが、こっちで話を振っていました
Xcode part6
http://pc11.2ch.net/test/read.cgi/mac/1201693264/373
- >>755
つ ttp://www.oomori.com/cocodesu/index.html
- >>756
私もそこを利用しています。
なので、>>753 のやつは、リファレンス和訳に加えて、
Tips や サンプルコードなんかをみんなで持ち寄って、
リファレンス以上に使える Wiki にすればいいんじゃないでしょうか?
- つかリファレンス程度の英文なんてそのまま読んだ方が正確に情報が伝わるし、
それが前提だと思うんだけどなあ。
必要なのはAPIこまかい動作やふるまいに関する情報だと思うよ。
- オプションクリックっていってすぐ分かる人も居れば、
オプションキーの位置まで説明しないといけない人も居る。
欲しがってる情報も人それぞれだ。
それに、その勝手な前提を廃しようって動きでしょ、これは。
- まあまあ。
参加したいひとは参加するスタイルでいいでしょう。
参加しない人は文句を言わないこと。
- 今760がいいこと言った
- 皆さん意見ありがとうございます。私見を述べさせてもらうと
>>756のようなサイトがあればwikiにどんどんリンクを作って、その結果
ただのリンク集となっても資料の整備と言う意味ではある程度役立つwikiに
なるのかな、なんて思っています。もちろんリファレンス以外で存在しない和訳も
ありますし。
>Tips や サンプルコードなんかをみんなで持ち寄って
個人的にはありかなと思ってます。ただ、「じゃあこのタイトルじゃなくて良い」と
言われればそれまでなのでwikiの位置づけをどこまで拡張するかなどなど議論になりそうかと
Cocoaに限りませんが、Mac環境の日本語ドキュメントの少なさにしょんぼりされたことの
ある方は多いんじゃ無いかと思っています。私の場合リファレンスを読む時もある程度頭の中で和訳されて
いるので、せっかくだから残しておこうという発想で作ってみました。興味をもってくれた方は専用スレを
たてたのでたまにのぞいてみて下さい。おもいっきり宣伝ですいませんでした
Cocoaリファレンス日本語化計画
http://pc11.2ch.net/test/read.cgi/mac/1207312910/
- spotlightのようにボタンを押すとNSSearchFieldが表示されるような
仕組みを実装したいのですが、どうすれば良いのでしょうか?
なかなか難しそうな気がしますが、お知恵を拝借できればと。
- Leopardからはメニューアイテムにビューを設定できるようになったから、それを使えばできると思う。
メニューじゃなくて普通のボタンを押したらってことなら、
タイトルバーなしのウインドウを作ってそれをボタンの下に表示させればいいと思う。
- NSSearchField の isHidden に、その spotlight 風のボタンを
バインディングさせればいいんじゃない?
- お知恵提供ありがとうございます。
やはり別途ウインドウを作る方法が正攻法ですかね。(10.4互換にしたいので)
hiddenの表示切り換えも試してみます。
- ついでに質問しますが、OSX の mail とか バチスカの右下の
プルダウンするボタンは、>>764 のようにタイトルバーなしの
ウィンドウを出現させてるだけですよね。
面倒だなー...
- もっと簡単ですよ。
ボタンのサブクラスを作ってNSMenuを表示させてるだけ。
どっかにコードがあったはずだけど失念。
- mkinoさんあたりが書いてた気がする
- これかな?
http://blog.cocoa-study.com/?eid=292168
- >>768-770
URLまで張っていただいて感謝です。
ありがとうございました。
- すみません、いまいちメモリ管理が理解できなくて試行錯誤しております。
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;
}
- > sampleMethodでretain/rekeaseは不要なのでしょうか?
その通りです。
- 下のmutableArrayは
NSMutableArray *mutableArray = [NSMutableArray array]; で良くね?
- create~っていう名前だと、retain されたオブジェクトが返ってくるような感じがする。
- ありがとうございます。
>>773
やっぱり入らないんですね。
>>774
まだ10.4なんですが、そうするといつreleaseされるのですか?
(10.5なら不要っぽい気もしますが)
>>775
名前は適当に考えたのでご勘弁を。
- >>776
その時の NSAutoreleasePool が破棄されるときじゃね?
ttp://wwwa.dcns.ne.jp/~nito/CocoaClub/article03.html
読んで解らなかったらまた
- >>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]
と一緒だと思います。
- 返ってくるっていうか、
返る事が期待されてるって事じゃなかったっけ?
create~とかmake~とかの場合はオーナーシップがそのメソッドにあって、
そのなかでちゃんと保持されてる設計にしないといけないとか、
そういうデザインパターンじゃなかったか?