名称未設定<>sage<>2008/01/24(木) 01:47:00 ID:/Ae+OMPn0<> 初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。
前スレ
Cocoaはさっぱり!!! version.8
http://pc11.2ch.net/test/read.cgi/mac/1179498292/ <>Cocoaはさっぱり!!! version.9
名称未設定<>sage<>2008/01/24(木) 02:06:19 ID:zBsL8SS+0<> 2?
<>
名称未設定<><>2008/01/24(木) 09:31:19 ID:s+4xNGMC0<> 今日は寒いから、ラム入りココア! <>
名称未設定<>sage<>2008/01/24(木) 09:38:09 ID:yVuwS2iA0<> なぜMacプログラミングはこんなに寂れてしまっているのか
http://www.vector.co.jp/vpack/whats/ <>
名称未設定<>sage<>2008/01/24(木) 09:41:49 ID:T1Kwwqvq0<> Macに限らずWindowsでもだが、Vectorはもう見限られてる。 <>
名称未設定<>sage<>2008/01/24(木) 10:00:53 ID:uLUkYs720<> ダウンロードにたどり着くまでにエロゲの広告が一杯出るからなあ <>
名称未設定<>sage<>2008/01/24(木) 10:41:24 ID:vV8dED/00<> vectorの存在忘れてた
昔は便利だったのだろうが、昨今ではどうだろうね <>
名称未設定<>sage<>2008/01/24(木) 11:47:27 ID:/Xbx9Tjk0<> Vector は掲載を申し込んでから実際に掲載されるまでに1ヶ月かかるんだよ。
アップデート時も同様。
MacUpdate とか Version Tracker は数時間なのに。 <>
名称未設定<><>2008/01/24(木) 19:42:14 ID:4xv9sIsr0<> どこから登録したらいいか、すぐ分からなかったのでやめた。
登録させたくないとしか。 <>
名称未設定<><>2008/01/24(木) 20:12:29 ID:nQjPjB6N0<> M女史ですら登録できてるのに <>
名称未設定<>sage<>2008/01/24(木) 20:51:54 ID:e2gLsBWo0<> NSOutlineViewで階層表示、ドラッグ&ドロップで並び替えの
良いサンプルはないでしょうか?
機能を実現するための考え方というか仕組みが分からず
苦労しています。
NSTableViewでのドラッグ&ドロップで並び替えはわかったのですが。 <>
名称未設定<>sage<>2008/01/24(木) 22:52:54 ID:Cl70dvtl0<> >>11
LeopardならAppleのsample codeのAbstractTree、SourceView
Leopardより前なら古いけれどDragNDropOutlineViewが
Developer/Examples/AppKit/DragNDropOutlineView
にあります
<>
名称未設定<>sage<>2008/01/25(金) 19:40:32 ID:S+ZRut250<> なんか日本でcocoaのプログラマーって10人いないような気がする。 <>
名称未設定<>sage<>2008/01/25(金) 19:55:32 ID:FluJhFso0<> すげーな
お前も俺もレアモノだぜ <>
名称未設定<>sage<>2008/01/25(金) 20:17:12 ID:rI2glRe80<> いくらなんでも希少種と呼ばれる麻薬取締官より少ないってことはあるまい。 <>
名称未設定<>sage<>2008/01/25(金) 20:41:30 ID:D6FaF35S0<> それはないw <>
名称未設定<><>2008/01/25(金) 20:46:08 ID:efY+uiCx0<> Javaだったら、Socketとか、SocketChannelを使うケースって、
Cocoaだと、どうするのですか。
Cを使う必要があるのでしょうか。 <>
名称未設定<>sage<>2008/01/25(金) 22:28:04 ID:lGCqdeBy0<> Cを使った方が間違いないと思うよ
むかーし、CocoaだけでXMLやSocketを実現しようとしたけど、
バグっぽくて嫌になったorz
C++のライブラリを使ったObjC++がおすすめ <>
名称未設定<>sage<>2008/01/25(金) 23:27:19 ID:dCMPysux0<> >>13
「Cocoaで食ってるプロ」なら10人いないかも <>
名称未設定<>sage<>2008/01/26(土) 00:11:21 ID:42x0AZNA0<> >>17
client も server もCocoa だけで済むなら、Distributed Objects つかうと
めちゃめちゃ簡単ですよ。 <>
名称未設定<>sage<>2008/01/26(土) 00:45:22 ID:42x0AZNA0<> http://developer.apple.com/documentation/Cocoa/Conceptual/DistrObjects/DistrObjects.html
のへんとか。 <>
名称未設定<>sage<>2008/01/26(土) 02:52:40 ID:zd6T2u+m0<> Cocoaだけで完結するプロジェクトなんてないでしょう <>
名称未設定<>sage<>2008/01/26(土) 09:25:36 ID:42x0AZNA0<> ええっと僕に言われてるのだとすると、
Cocoa だけ、と書いたのは、プロジェクトが全部ココアだけ、
ということではなくて、
Client も Server も Cocoa つかったソフトで良ければ、ということです。
実際に、案外のフリーウェアでサポートされてる LinkBack とか Growl とかは
Cocoa の Distributed Objects で実装されてるけど、
Carbon app とかスクリプトからも使えます
<>
名称未設定<>sage<>2008/01/27(日) 01:57:57 ID:FVS3vl130<> 暇だから日本人のCocoaプログラマを知ってるだけあげてみるか。
mkinoさん、荻原さん、nakamuxuさん
まだまだいるはずだけどぱっと出てこないもんだなあ。もっとあげられる暇な人いる? <>
名称未設定<>sage<>2008/01/27(日) 02:08:39 ID:jtZNwbED0<> Digitalians' Alchemyの人。 <>
名称未設定<>sage<>2008/01/27(日) 02:41:19 ID:mqS2hNH70<> 俺 <>
名称未設定<>sage<>2008/01/27(日) 02:48:04 ID:Kw+jrJKi0<> 10人どころか5人もいねえw <>
名称未設定<>sage<>2008/01/27(日) 04:47:59 ID:nttUWrdb0<> hetimaさん俺 <>
名称未設定<>sage<>2008/01/27(日) 08:44:22 ID:InynCMyW0<> 名取り、さわっち、まさき <>
名称未設定<>sage<>2008/01/27(日) 08:50:27 ID:sMOKTW0+0<> プログラミングする気がないなら無理に来なくていいんだよ <>
名称未設定<>sage<>2008/01/27(日) 10:02:11 ID:uLYFX0yW0<> 松本さんとか永野さんとか <>
名称未設定<>sage<>2008/01/27(日) 10:47:06 ID:CW8LN0Lg0<> 俺俺、俺だよ、俺 <>
名称未設定<>sage<>2008/01/27(日) 13:04:54 ID:ddsvCdr30<> IBでボタンにリターンキーを割り当てると、
テキストフィールド上で文字の決定でリターンキーを押した時にもボタンが反応してしまいます。
どうやって回避したらいいんでしょうか?
あと、矢印キーに至ってはボタンに割り当ててしまうと
テキストフィールドで矢印キーでの操作がまったくできなくなってしまう始末です。 <>
名称未設定<>sage<>2008/01/27(日) 13:16:25 ID:Z+4QpQ0X0<> ボタンにキーを割り当てるのは良くない気がする。
NSWindow サブクラス化とかでキーイベントひろって、ターゲットを呼び出せば? <>
名称未設定<>sage<>2008/01/27(日) 14:10:58 ID:NSDBpLCP0<> >>33
そりゃサブクラスのファーストレスポンダあたりの設定がおかしいんじゃまいか。
変換決定のリターンキーではデフォルトボタンは反応しないよ。 <>
名称未設定<>sage<>2008/01/27(日) 16:43:50 ID:3qPDxaPt0<> NSなんたらviewのサブクラスを作って右クリックでコンテキストメニューを
表示させているのですが、10.4だと表示されて10.5だと表示されません。
なにか仕様が違うのでしょうか? <>
名称未設定<>sage<>2008/01/27(日) 16:47:48 ID:oxF7lnRH0<> また仕様ですか君か。
違っているから、自分で調べなさい。 <>
名称未設定<>sage<>2008/01/27(日) 18:40:43 ID:YX2EedA00<> >>33は変換確定ではなくて改行の事を言っているのでは?
NSTextFieldじゃなくてNSTextViewを使えばどう? <>
名称未設定<>sage<>2008/01/27(日) 18:42:05 ID:Se/+uO9l0<> 37はMSMVP工作員 <>
名称未設定<>sage<>2008/01/27(日) 22:46:02 ID:ddsvCdr30<> >>34
key EquivだとIB上でできるので楽だと思ったのですが、あまり良くないのですね;
>>35
変換決定でなくてアクションを送るためにリターンキーで決定する時、ということでした。
>>38
NSTextViewを使ったことがなかったので、勉強してみます。
みなさんありがとうございました。
で、問題だった部分ですが、
テキストフィールドにアクションのターゲットを設定してやれば解決しました。
ターゲットがあればそちらにレスポンダチェインが走って(?)
ターゲット先でなんらかのアクションが起きてチェインが終了、他のボタンにはチェインは送られない
ということなのかなと、とりあえずは解釈しました。 <>
名称未設定<>sage<>2008/01/27(日) 22:55:30 ID:ddsvCdr30<> あ、ちなみに矢印キーをボタンにセットすると
NSTextFieldとNSTextViewどちらでも矢印キーが使えなくなってしまうみたいです。 <>
名称未設定<>sage<>2008/01/28(月) 10:06:56 ID:/ciPWHQy0<> LeopardにしたらsetControlTint:NSGraphiteControlTintが効かんようになっとるじゃないか <>
名称未設定<>sage<>2008/01/28(月) 22:09:02 ID:YFjOEr6f0<> アレイコントローラーにデータがロードされた直後に
一回だけ処理をしたいのですがさっぱりです。 <>
名称未設定<><>2008/01/29(火) 13:33:05 ID:14AFSb+t0<> Windowを最前面に固定するのってどうするの? <>
名称未設定<>sage<>2008/01/29(火) 14:59:24 ID:FsQS6A+l0<> CALayer の contents に登録してある CGImageRef から
CIImage に変換したいんだけど,
CIImage *image = [CIImage imageWithCGImage: layer.contents]
であってますかね?
やりたいことは,CoreAnimation の2つのレイヤーから画像をとり出して,
CIFilter かまして,CoreAnimation の結果格納用レイヤーに画像をはめ込みたいのです.
<>
名称未設定<>sage<>2008/01/29(火) 16:04:52 ID:/eQnXvPk0<> やっと直った。Xcode3+IB3
Cocoaアプリケーションチュートリアル
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial <>
名称未設定<>sage<>2008/01/29(火) 16:10:32 ID:aFFUaCVD0<> >44
// スクリンセーバーよりも前に出せ
[theWindow setLevel:9999];
<>
名称未設定<>sage<>2008/01/29(火) 16:14:44 ID:waybUL+d0<> >>46
しかし、なんだこの中華なフォントは? <>
名称未設定<>sage<>2008/01/29(火) 16:15:40 ID:/eQnXvPk0<> 国際化って奴だろ。 <>
名称未設定<>sage<>2008/01/29(火) 19:50:55 ID:14AFSb+t0<> >47
ありがとう。
最前面のちっちゃいメモがあればいいと思ってたので助かった <>
45<>sage<>2008/01/29(火) 22:55:26 ID:Weo8Bh4n0<> 自己解決しました.キャストがないだけだった orz
CIImage *image = [CIImage imageWithCGImage: (CGImageRef)layer.contents]
<>
名称未設定<>sage<>2008/01/30(水) 00:06:41 ID:kQnUgB310<> >>46
やっと直ったじゃなくて、リンク切れてたから
おとといぐらい ADC に連絡したんだけど。
24時間ぐらいで直したよ、って返事来てたよ。
というわけで皆さんも ADC にじゃんじゃん連絡しましょう。 <>
名称未設定<>sage<>2008/01/30(水) 08:44:26 ID:8y/Wb65A0<> HMDTつならがない... <>
名称未設定<>sage<>2008/01/30(水) 09:12:46 ID:ggAgLyT80<> つながるけど?
>>52
ADCって日本語スタッフいるの?直接本家ADCに連絡すればいいんすか? <>
名称未設定<>sage<>2008/01/30(水) 11:23:33 ID:kQnUgB310<> 直接本家に言ったら直してくれたよ。 <>
名称未設定<>sage<>2008/01/30(水) 13:57:14 ID:ggAgLyT80<> サンクス、積極的に連絡してきます
たまにリンク切れとかあるんすよね <>
名称未設定<>sage<>2008/01/31(木) 00:39:07 ID:ut76z/B00<> NSOpenpanel について質問させて下さい。
何か開くと、ポップアップメニューの「最近使った場所」に自動的に追加されますが、
この情報はどこに保存されているのでしょう?
~/Library/Preferences/(BundleIdentifier).plist には含まれていないようなのです。
OS 10.4.11 Xcode 2.5 <>
名称未設定<>sage<>2008/01/31(木) 00:49:48 ID:5dWW8izh0<> NSRecentDocumentRecords? <>
57<>sage<>2008/01/31(木) 00:54:09 ID:ut76z/B00<> >>58
それはファイルメニューの「最近使った項目」のほうですよね。
僕が言ってるのはNSOpenPanelのタイトルバー下にあるポップアップメニューのです。
で、自己レスですが、色々試してたら気付きました。この情報は全てのアプリで共通なんですね。
~/Library/Preferences/.GlobalPreferences.plist の NSNavRecentPlaces にありました。
自分で編集できないかと思ったんですが、他のアプリと共通なら
(NSUserDefaultでできるのかもしれませんが)すべきでないんでしょうね。 <>
名称未設定<>sage<>2008/02/01(金) 12:39:56 ID:JVdTTK6m0<> Cocoaというか、プログラミング自体初めてなんだけど難し過ぎて挫折したw
サイト参考にして簡単な計算やHelloworld、
簡単なGUI作ってボタン押したら数字がtextviewに表示されるのとかやったけど、
ファイル読み込んでそれを表示させたり、編集できるようにしたり、とかなると、
もう訳分からない単語ばかり出てきて頭が痛くなったw
とりあえず、IBでGUIだけでも完成系に近いものを組み立ててそのままにしてる。
プログラミングできる人、本当に尊敬するわ。 <>
名称未設定<>sage<>2008/02/01(金) 13:18:34 ID:6z2zxgjy0<> >>60
俺も全くわからなかったが、ヒレガス本読んだらかなりできるようになった。
プログラミング初めてならCからやった方がいいね。 <>
名称未設定<>sage<>2008/02/01(金) 13:19:28 ID:TGU2uzhR0<> まずは住所録ぐらいから始めてみては?
いきなり目指すアプリを作るのは大変ですよ。
普通(タイトルバーや左上にボタンがついた)のNSWindowを
フルスクリーンにしたり元のWindowに戻したりするには
どうすれば良いのでしょうか?
ネットで探すと別途でNSWindowをallocして初期化でボーダレスに
したりしているのが多いのですが、そうではなくて例えばプレビューで表示させている
ウインドウをそのままフルスクリーンにしたいのです。
どうかよろしくお願いします。 <>
名称未設定<>sage<>2008/02/01(金) 13:40:03 ID:gj02vTeJ0<> レパードなら NSView の
enterFullScreenMode:withOptions:
で出来ますが、レパード以前だと別途 alloc しか仕方がないと思います。
別途 alloc でもそんなに面倒くさくないですよ。
[newWindow setContentView:[oldWindow contentView]]
とかするとオッケーだったと思います。 <>
名称未設定<>sage<>2008/02/01(金) 13:41:28 ID:JVdTTK6m0<> レスサンクスです。
>>61
C言語ですか、、、。道のりはかなり長そうですね、、。
ヒレガス、、ちょっとググって見ますね。
ありがとうございます。
>>62
住所録ではないですが、
TableViewを使って、左側に名前、右側に収入を入力(記録)できるものは作ってみました。
ビデオをチュートリアルを参考にしたんですけどね、、。
作りながら各文がどういった動作をさせているのか
説明を聞きながら理解しようとして作成しましたが、やはり初めて一週間ちょっとだと
難しいですね。ややこしいというか。これがパッと分かって簡単だと感じる人ってすごいです。
ちなみに参考にした動画はこれです。
ttp://revver.com/u/masna/
ここのNSArrayController & Cocoa Bindings Tutorialというビデオです。
ほかにもいろいろ動画がありました。 <>
名称未設定<>sage<>2008/02/01(金) 14:03:06 ID:5TPP70fY0<> 俺も最近Cocoa始めたけど
NSなんたらController系が逆にわかりにくくて
手書きでちまちまコントローラを書いてしまう <>
名称未設定<>sage<>2008/02/01(金) 14:06:51 ID:JVdTTK6m0<> 手書きで書いてしまうということは、
プログラミングに関する知識はあったということなんですかね。
やっぱり最初からCocoaに飛び込むのは無謀だったか、、w <>
名称未設定<>sage<>2008/02/01(金) 14:32:40 ID:5TPP70fY0<> いやー最初の絶望感は自分も味わったからわかるw
Cocoaの初心者向けサイトって見てもあんまり噛み砕いた説明してないよね。
プログラミング自体完全に初めてなんだったらいきなりGUI付きのアプリより
Terminalで動かすCUI専用のツールをCで書いてみるとかから始めてみたらどうだろう。 <>
名称未設定<>sage<>2008/02/01(金) 14:39:06 ID:nIkc8tTq0<> >>65
ありすぎて困る <>
名称未設定<>sage<>2008/02/01(金) 15:17:37 ID:C/yNXutt0<> アップルのセミナー、全部取れた!
有給使って行ってくるよ! <>
名称未設定<>sage<>2008/02/01(金) 15:36:22 ID:pOmNc0iY0<> Leopardになってから何かXcode壮絶に変化した気がする。
Tigerの時はOSをさかのぼっても10.3止まりだったのが
OSX10.1用にコンパイルできたり、カスタマイズがやりやすくなってる印象。
Interface Builderあたりも結構、仕様が変わったのねぇ <>
名称未設定<><>2008/02/01(金) 19:15:50 ID:2iNcArMz0<> 楽しいcocoaプログラミングを読みながら基本的な用語を理解しようとしてる
んだが、俺の理解&例えが正しいかちょっとおまいら見てみてください
[メソッド(インスタンスメソッド)]を使って[インスタンス変数]を[クラス]という設計図の
中に書く(定義する)。これをインスタンス化してできるものが[インスタンス]。
↓
[英語]を使って[文章]を[原稿]の中に書く。
これをプリントアウトしてできるものが[本] <>
名称未設定<>sage<>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:をお好みに応じて。 <>
名称未設定<>sage<>2008/02/01(金) 19:50:51 ID:/sxPQuGn0<> >>71
さっぱり分からん例えだ…オブジェクト指向言語の入門書を読んだ方が良いかも。
クラス:工場ラインと設計図
インスタンス:カスタマイズド製品
クラスメソッド:インスタンス化(製品製造)したり廃棄とか…
インスタンス変数:カスタマイズ項目
インスタンスメソッド:入出力系(カスタマイズ状態によって応答を変えることができる)
みたいな感じかな?補完修正よろ <>
名称未設定<><>2008/02/01(金) 20:05:15 ID:xnZLBzPn0<> >>73
私の理解はこうです。
クラス:たいやきの型
インスタンス:たいやき
クラスメソッド:たいやきの型の火加減調整
インスタンス変数:たいやきのあんこの量
インスタンスメソッド:たいやきのあんこの量調整
<>
名称未設定<>sage<>2008/02/01(金) 20:24:54 ID:5TPP70fY0<> >>74
たいやきをたこ焼きに変えただけで俺のイメージと全く同じで笑った <>
名称未設定<>sage<>2008/02/01(金) 20:32:49 ID:TraSyxiD0<> クラス:ロボットの設計図
インスタンス:完成したロボット
クラスメソッド:ロボットの生産命令
インスタンス変数:ロボット各部の部品
インスタンスメソッド:ロボットの動作の定義(前ボタンを押したら前進、下ボタンでしゃがむ、とか)
<>
名称未設定<>sage<>2008/02/01(金) 20:34:30 ID:B7VDsqsz0<> OOのたとえ話なんて何のたしにもならん。
言葉遊びしてる暇があったらリファレンス読みこなせ。 <>
名称未設定<>sage<>2008/02/01(金) 20:47:44 ID:5TPP70fY0<> 言葉遊びとは違うでしょ
触り始めに知識ばっか詰め込んでも
その知識の使い方がわからないんじゃ意味がない
もちろん量を読むのは大事だけれど <>
名称未設定<>sage<>2008/02/01(金) 20:51:30 ID:l9eCdrlK0<> 複数のロボットが共同してひとつの仕事をこなす。 <>
名称未設定<>sage<>2008/02/01(金) 20:54:13 ID:UH/1hOjR0<> 比喩で解った気になってるとな、後でなぁ。 <>
名称未設定<>sage<>2008/02/01(金) 20:56:09 ID:UH/1hOjR0<> >>78
>>73, >>76
言葉遊びしてるが。 <>
名称未設定<>sage<>2008/02/01(金) 21:18:09 ID:x3DHvtPP0<> メモリがリークするってのは、食いきれないたい焼きがどんどん増えていって、
地球上がたい焼きで溢れかえる、と言う認識でよろしかったでしょうか <>
名称未設定<>sage<>2008/02/01(金) 21:20:23 ID:nIkc8tTq0<> だめだろ <>
名称未設定<>sage<>2008/02/01(金) 21:27:30 ID:BFHK/vDAO<> 初めは解った「気」になるのも大事だと思うがね <>
名称未設定<>sage<>2008/02/01(金) 21:38:49 ID:2N2icJuR0<> 最初は自分の納得出来る形で覚えるのがいいよ。
進んで行くうちに修正すればいい。
私の場合、ロールプレイングゲームのモンスターをイメージしてたし(笑
メンバ変数:名前や体力とかマジックポイント
IBアクション:攻撃を受けたとか
メソッド:体力を減らすとか0になったら死亡フラグが立つとか
モンスターが10匹現れたら上記のインスタンスを10個立てて
それぞれのインスタンスに攻撃すれば、それぞれで勝手に処理してくれる。
みたいな。 <>
名称未設定<>sage<>2008/02/01(金) 21:47:23 ID:lRnFBVym0<> >>82
バイバイン乙
そして、仕事でVBを使うことになった俺orz <>
名称未設定<><>2008/02/01(金) 23:06:17 ID:BWMB+ueI0<> 皆さんマジレスどうもです
たぶん自分の理解は外れてないけどものすごく浅いってことだろうと
解釈しました。分かった気にはなれませんでしたが、もうちょっと読みこなして
リファレンスももっと見ていこうと思います <>
71<><>2008/02/01(金) 23:06:54 ID:BWMB+ueI0<> なぜかIDが変わりましたが、>>71でした <>
名称未設定<>sage<>2008/02/02(土) 00:01:21 ID:5pl+Uu5I0<> プログラムは実践あるのみです <>
名称未設定<>sage<>2008/02/02(土) 00:38:04 ID:NqyLEgiZ0<> >>63
>>72
できました、ありがとうございます。
Leopardは直接フルスクリーンにできるんですね。
まだ、10.4なんです。
>>72のやり方だとウィンドウのステータスバーが残るんですね。
仕方ないのでウィンドウ内のビューサイズをウィンドウに合わせて回避しました。 <>
名称未設定<>sage<>2008/02/02(土) 00:57:40 ID:RXlTV5ga0<> NSWindowにステータスバーなんてあったっけ?
まぁいずれにせよconstrainFrameRect:で返してるNSRectがウィンドウのrectになるってだけなので、
result.size.height+=(ステータスバーの高さ);
result.origin.y-=(ステータスバーの高さ);
とかしたらうまくいくんじゃないでしょうか <>
名称未設定<>sage<>2008/02/02(土) 05:01:00 ID:J7XNENPv0<> >>80
大間違いな解釈していると後で大変だよな。
あるケースで奈落の底に・・・ <>
名称未設定<>sage<>2008/02/02(土) 14:45:30 ID:Rc4l3OTe0<> >>91
勘違いしてました。
ステータスバーと言うのはないですね。
単にウインドウ内部のビューが小さかっただけです。 <>
名称未設定<>sage<>2008/02/03(日) 08:08:17 ID:X+xH8J460<> テーブルビューで、ヘッダーのところをクリックするとデータが
並べ替えられますが、クリックしても何も起きないようにするには
どうすればいいでしょうか。 <>
名称未設定<>sage<>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」っていうのからチェックを外したらどうなるでしょうか?
実際に使ったことがないのですが、名前からして、チェックがついてると「並び替えを許可」っぽい感じなんですが。 <>
名称未設定<>sage<>2008/02/03(日) 09:28:10 ID:USR4Jfgk0<> >>94
>>95に書いたのは、
Interface Builderでの操作です。 <>
94<>sage<>2008/02/03(日) 09:40:07 ID:X+xH8J460<> >>95, 96
私は IB3 を使ってるんですが、NSTableView の Attributes -
Columns の "Reordering" のことでしょうか。
これは column の位置を変えられるようにするかどうか
(1列目と2列目を入れ替える、など)のようです。
<>
名称未設定<>sage<>2008/02/03(日) 10:18:00 ID:USR4Jfgk0<> >>97
名前は違いますが、Column Oderingと同じ機能っぽいですね。
確かにそうかもしれませんね、、すみませんm(_)m
あとは、TableViewを一つのコラムを選択した状態で
Attributesを選択。その時に表示される、Sort Key、Sort Selector、Sort Order
っていうのは何か関係あるんですかね。
Sortというのは整頓という意味ですし、もしかしたら、、
と思ったので一応書いておきます。 <>
名称未設定<>sage<>2008/02/03(日) 10:57:49 ID:3kiF/6/w0<> 自動でソートが効くってことはアレイコントローラを使っているんだと思うけど、
[arrayController setSortDescriptor:nil];
とかしてみればいいんじゃなかろうか <>
94<>sage<>2008/02/03(日) 12:03:55 ID:X+xH8J460<> >>99
おっしゃる通り、NSArrayController(と Core Data + Cocoa Bindings)
を使っています。
で、sortDescriptor を NSArrayController に設定して使っているのですが、
テーブルのヘッダをクリックすると勝手に並べ替えられてしまって、
設定した sortDescriptorとは違う順序になってしまい困っています。
<>
名称未設定<>sage<>2008/02/03(日) 12:16:24 ID:87lsToCL0<> クリックしたときに何も起きないようにしたいんじゃなくて、
自分で設定したsort descriptor を動作させたい、てこと? <>
94<>sage<>2008/02/03(日) 12:26:16 ID:X+xH8J460<> >>101
sortDescriptor は立ち上げ時に一度設定するだけなのですが、
それを変更できないようにしたい、ということです。
<>
101<>sage<>2008/02/03(日) 12:38:05 ID:oWNxC6th0<> それだったら アレイコントローラにsort descriptor は設定しておかないで、立ち上げ時に
手動でアレイコントローラのコンテントをsortUsingDescriptorsをつかってソートすれば
いいかな
あるいは、NSTableHeaderView のmouseDown: を横取りしてマウスクリックを受け付けなくするとか
もっとスマートな方法があるかもしれないけど <>
名称未設定<>sage<>2008/02/03(日) 12:39:48 ID:UJklTjPo0<> >>102
[tableView unbind@"sortDescriptors"]
<>
101<>sage<>2008/02/03(日) 12:44:59 ID:oWNxC6th0<> 昇順←→降順の切替をユーザにさせたくなくて、常に昇順に保持しておきたい場合、降順ソートできないように
書き換えた sort descriptor サブクラス…
- (id)reversedSortDescriptor
が単に自分のコピーを返す…
を作って置き換えるとか?? <>
名称未設定<>sage<>2008/02/03(日) 12:50:54 ID:9QAhjThz0<> カラムのソートデスクリプタはIBで設定せず、
コードでプログラム起動時に一回だけ動くように記述する。
あと、ヘッダーカラムをクリックした時の記述があったはず。 <>
94<>sage<>2008/02/03(日) 14:08:07 ID:X+xH8J460<> たくさんレスいただきありがとうございます。
>>102, 106
sortDescriptor そのものはバインディングはせず、コード内で立ち上げ時に
一度 arrayController にセットしています。
テーブルに表示される Core Data のデータの方だけ、バインディングしています。
>>103, 105
データそのものは追加されていくものなので、できれば sortDescriptor だけで
済ませたいのですが‥
arrayController の content を手動でセットする場合、立ち上げ時はいつ
Core Data のデータのフェッチが終了するのかがよくわかりません。
データの順番は、表示されているデータそのものの昇順、降順ではなく、
表示には使っていない attribute をキーにしているのですが、ヘッダーセルを
クリックすると、表示されているデータを昇順、降順に並べ替えてしまう
ようです。
やはり mouseDown の上書きしかないでしょうか‥
<>
名称未設定<>sage<>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の順序を記録する用途で当方でも使っていますので、同じ状況だと思いますが?
<>
94=107<>sage<>2008/02/03(日) 14:56:26 ID:X+xH8J460<> >>104
ありがとうございます、できました!
>>104 の unbnd を arrayController unbind: と勘違いし、
うまくいかないと思ってしまいました。すみません。
さらに欲を言うと、ヘッダをクリックしたときヘッダの色が
青になりますが、この色も変化させないようにすることは
できるでしょうか?
<>
名称未設定<>sage<>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が多くてすいません
<>
名称未設定<>sage<>2008/02/03(日) 16:09:54 ID:u/Oq4gE50<> QuickTimeムービーのプロパティでサウンドトラックの低音/高音の音量を個別に設定できますが
あれをQTMovieに対して設定する事は可能なんでしょうか? <>
名称未設定<>sage<>2008/02/03(日) 16:49:05 ID:bYJaQCBN0<> アトリビュートなんたらを洗えばあるんでないかい?
ADCのクラスリファレンスに一覧があるよ。 <>
名称未設定<>sage<>2008/02/03(日) 23:50:01 ID:xhvNdcsT0<> あるビューにサブクラスを2つ以上実装したい場合はどうすればよろしいのでしょうか?
例えば、NSImageViewのパーツを置いてカスタムクラスにMyImageViewを設定するのですが、
もう一つMyImageView2もカスタムクラスにしたいのです。
よろしくおねがいします。 <>
名称未設定<>sage<>2008/02/03(日) 23:58:11 ID:DfOP/trw0<> ええっと、オブジェクトというのは一つのクラスにしかなりえないから、
ひとつの ImageView をふたつのクラスにするのは無理だよ
単に
@class MyImageView : NSImageView
としてから、
@class MyImageView2 : MyImageView
として、カスタムクラスを MyImageView2 にすれば?
そうすると MyImageView2 からは MyImageView のメソッドも
NSImageView のメソッドも使えるよ。
<>
名称未設定<>sage<>2008/02/04(月) 00:11:19 ID:LLRzPB740<> 委譲させたら? <>
名称未設定<>sage<>2008/02/04(月) 03:37:51 ID:Sa7MZiJY0<> 質問なんですが、ボタンを押した時に特定のコントロールにキーのフォーカスを移動させたいんですが、どうやればいいんですか?
NSWindowにselectKeyViewFollowingViewみたいなのはあるんですが、渡すView自体を選択してくれるメソッドが見つかりません。 <>
名称未設定<>sage<>2008/02/04(月) 03:47:53 ID:JOVg4Jvf0<> NSWindow の makeFirstResponder: <>
名称未設定<>sage<>2008/02/04(月) 14:58:53 ID:Sa7MZiJY0<> >>117
ありがとうございます。できました! <>
名称未設定<>sage<>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 <>
119<>sage<>2008/02/05(火) 09:57:32 ID:b+MI5Uyi0<> 試しにターミナルで次のコマンドを実行しました。
ln -s Test.jpg TestAlias
これはシンボリックリンクを作るはずですが、やはり、出来上がったTestAliasはエイリアスのように振る舞います。
Test.jpgを移動しても、名前を変えても追跡してくれるみたいです。
ということは、私の環境ではもはやシンボリックリンクという概念は存在せず、エイリアスだけに
なってしまったのでしょうか。 <>
45<>sage<>2008/02/05(火) 10:33:27 ID:JH9guR+l0<> なぜマニュアルを読まないのかさっぱり分からないが
HFS+ だと Alias も Symlink もサポートされる.
UFS だと Symlink のみ. <>
名称未設定<>sage<>2008/02/05(火) 11:39:40 ID:JsyJRBki0<> cocoaアプリ側からそのシステムがcore image使用可能かどうかって、
どうやって知るのかな・・・。 <>
名称未設定<>sage<>2008/02/05(火) 12:32:13 ID:9FDDjTmb0<> >>120
てもとで ln -s やってみたけど、
うちの 10.4.11, 10.5.1 ではそんなことにならないよ。
alias と symlink にはまだ区別があるみたいだけど。 <>
名称未設定<>sage<>2008/02/05(火) 12:33:38 ID:cij0dARY0<> /tmp ディレクトリは起動時に空にされますが、ホームフォルダ以下で
ログイン時(または起動時)に自動的に空にされるディレクトリってないんでしょうか? <>
名称未設定<>sage<>2008/02/05(火) 13:17:40 ID:HDjiUsh/0<> >>124
CarbonのFindFolder()とか、CocoaのNSTemporaryDirectoryとかで
userドメインのTemporaryフォルダは取得できる。
これで取ったフォルダの中身は再起動時に空になるけど、
ゴミ箱の中のRecoverd Filesに化けるな。 <>
119<>sage<>2008/02/05(火) 15:03:13 ID:b+MI5Uyi0<> >>121
マニュアルってなんですか。
Xcodeヘルプから見れるReference Libraryのこと? <>
名称未設定<>sage<>2008/02/05(火) 15:38:53 ID:Cj6Km0Em0<> >>126
Finderが勝手にシンボリックにエイリアス情報を
追加書きしているように見えるけど。
ターミナルからopen TestAliasとやれば追跡できないし。 <>
名称未設定<>sage<>2008/02/05(火) 21:47:04 ID:xbftVDuZ0<> 書類をアプリにドラッグして開けるようにするには
ターゲット>プロパティ>書類のタイプ
で指定するわけですが、
フォルダだけを開きたい場合はどうすれば良いんでしょうか?
拡張子に*を指定するとフォルダも含め何でも開けてしまうんですが、
フォルダ「だけ」、の場合は何を指定するんでしょう? <>
名称未設定<>sage<>2008/02/05(火) 21:59:10 ID:rdVERx6H0<> 質問です。
カーソルのイメージをQuickDrawの関数を使って取得してるんですが、
虹色カーソル(spinning wait cursor)が表示されているのに標準の矢印カーソルのイメージを
取得してしまいます。
虹色カーソルが表示中って分かるイベントフラグみたいのってあるのでしょうか。
欲を言えば、虹色カーソルが取得出来ればベストなんですけど(この場合はアニメーションなくて1フレーム目の画像のみでも・・)
<>
名称未設定<>sage<>2008/02/05(火) 22:03:41 ID:BmVs9NNX0<> >>128
OSTypeを'fold'にする。拡張子とかは空欄でいいんじゃないか。
UTIも空で動くけど、"public.folder"を指定するのが正しいと思う。 <>
名称未設定<>sage<>2008/02/05(火) 22:12:52 ID:g5I0ovRl0<> Core DataはIBを使わないで使うと、結構良いフレームワークだという事に気づいた
その後IBを使ったCore Dataは快適になった
つうことでみなさん、コードでゴリゴリ書いた方が理解が早いかも <>
名称未設定<>sage<>2008/02/05(火) 22:14:17 ID:BmVs9NNX0<> ついでに>>129
CGSGetGlobalCursorData()なら取れるかもしれないけど、
プライベートフレームワークだから無保証。
関数名でぐぐるとちょっと情報みつかるよ。 <>
124<>sage<>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 <>
名称未設定<>sage<>2008/02/05(火) 22:41:17 ID:rdVERx6H0<> >>132
情報ありがとうございます。
CGSGetGlobalCursorDataの方が一度にたくさん情報取れるのでいいですね。
でも、虹色カーソルのとき標準矢印カーソルとなってしまいます・・・。
やっぱり何かイベントが発生していると思うんだけどなぁ。
CarbonEventのコントロール系はイベント返ってこないし、打つ手なしかな?? <>
名称未設定<>sage<>2008/02/05(火) 22:56:06 ID:xbftVDuZ0<> >>130
ありがとうございます
あとで試してみます <>
名称未設定<>sage<>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
<>
名称未設定<>sage<>2008/02/07(木) 19:01:56 ID:P0z8W2nh0<> >>136
何処から突っ込めばいいの? <>
名称未設定<>sage<>2008/02/07(木) 19:08:50 ID://LqtxVA0<> >>136
NSLog(@"volume=%f", slideVolume);
にしてたらlogに吐かれるのはvolumeの値なんかじゃないから
こんなのあり?っていうかそうにしかならない <>
名称未設定<>sage<>2008/02/07(木) 19:27:02 ID:Dc7nZeu50<> >>136
slideVolでなぜ直るのかかなり疑問 <>
名称未設定<>sage<>2008/02/07(木) 21:18:51 ID:ipiWvlAk0<> >>137
すんません。
NSLogの引数はslideVolumeじゃなくてvolumeでした。
しかし本当に不思議なんですよ。
クリーンとかかけたり再起動したりしてもおかしいまま。 <>
名称未設定<>sage<>2008/02/07(木) 23:27:30 ID:H1Xb5CsL0<> >>140
NSSliderオブジェクトを生成もしくは取得してない、なんてオチではないだろうな? <>
45<>sage<>2008/02/07(木) 23:50:02 ID:vbFRyn0Y0<> >>141
あーありそう.ありそう.
ポインタ宣言したら実体まで確保されてるとか思うんだよね.
初心者って <>
名称未設定<>sage<>2008/02/08(金) 00:11:35 ID:Bz1m/8mJ0<> float volume = [slideVolume floatValue];
の返り値は正しかったのか?
>>141
slideVolumeがnilだったらvolumeは常に0になると思うけど <>
名称未設定<>sage<>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も同様だったきがするが良く覚えてない。
なんかドキュメントが原文と日本語版でグチャグチャだったのを覚えてる。
# 以前のドキュメント参照って書いておきながら以前のドキュメントが見つからないのは気のせい。 <>
名称未設定<>sage<>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 というメンバがあるのが理解できない <>
名称未設定<>sage<>2008/02/08(金) 01:30:40 ID:iietHHAy0<> おお、これだ、これ。
IntelだとOKでPPCだとNGだったか。
まあ、俺は怖くて使わ(え)ないけど。 <>
名称未設定<>sage<>2008/02/08(金) 04:22:13 ID:tCo++TR90<> >>143
NSSlider *slideVolume = nil;
としたとは書いてないから、ポインタ値がめちゃくちゃな値になってる可能性もあるんじゃない?
でも、それならメッセージ送ったときに落ちるか。該当部分のコード全部晒してくれないとわからんな。 <>
名称未設定<>sage<>2008/02/08(金) 07:42:39 ID:Ra3ZPNDQ0<> 親クラスで volume インスタンス変数が定義されているとか。 <>
名称未設定<>sage<>2008/02/08(金) 08:00:34 ID:dfpba1su0<> ローカル変数のスコープが優先されるだろ。 <>
名称未設定<>sage<>2008/02/08(金) 14:18:53 ID:mOfTgsF60<> オカルト方面の議論に似ておる <>
名称未設定<>sage<>2008/02/09(土) 16:16:50 ID:m0UtGMte0<> すみません、教えて下さい。
QTMovieView内のQTMovieをフリップ、回転させたいのですが
どうすればいいのかわかりません。
サブクラスのdrawRectでNSAffineTransformを使うような気がするのですが、
具体的にどう書けばいいのかさっぱりです。
よろしくおねがいします。
<>
名称未設定<>sage<>2008/02/09(土) 16:44:37 ID:XwOffBYp0<> View自体を回せばいいんじゃないの? <>
名称未設定<><>2008/02/09(土) 16:46:43 ID:S/WQlHWE0<> QuickTimeにNSAffineTransformってきくのかな?
ここは、CoreAnimationのQTMovieLayerを使うのが楽だと思います。 <>
名称未設定<>sage<>2008/02/09(土) 16:52:15 ID:SPsXuN9d0<> QTMovie自体のMatrixを書き換えるってのはなしか。 <>
名称未設定<>sage<>2008/02/09(土) 17:20:57 ID:5COFL2820<> View 自体をaffin transform で回すことについて…不確かな記憶だけど、Tiger では拡大縮小は効くが、回転はできない
Leopard では回転も拡大縮小も効かない
と思った。 <>
名称未設定<>sage<>2008/02/09(土) 18:14:54 ID:XwOffBYp0<> ボタンとか回転できた記憶があるけど。 <>
名称未設定<>sage<>2008/02/09(土) 22:58:18 ID:m0UtGMte0<> みなさん、ご意見ありがとうございます。
いろいろ漁ってみたのですが、QTMovieView(NSView)自体の回転は敷居が高そうですね。
拡大、縮小はsizeの変更でうまくいったのですが。
>>152
View自体を回す方法もいろいろ試しているのですが、枠が回転したりなかなかうまくいきません。
>>153
まだ10.4なんです。CoreAnimationならここら辺が簡単なんですよねえ。
>>154
QTMovieのMatrixを書き換えるという方法があるのでしょうか?
<>
名称未設定<>sage<>2008/02/09(土) 22:59:33 ID:JLKpZqHO0<> >>157
QuartzComposerを使うのはダメ? <>
名称未設定<>sage<>2008/02/09(土) 23:12:54 ID:XwOffBYp0<> NSBoxに入れてQTMovieViewを回転させたらいいんじゃないかな。 <>
名称未設定<>sage<>2008/02/09(土) 23:43:51 ID:J/8Qd+ts0<> OpenGL textureにして回すとか
http://developer.apple.com/samplecode/QTQuartzPlayer/index.html
ぐりぐり回るよ;-)
<>
名称未設定<>sage<>2008/02/10(日) 18:07:31 ID:uw0MifcW0<> Objective-C 2.0 の property って、コードの量が減る以外に
何かメリットありますか?(例えばパフォーマンスとか)
既存のコードを property で書き換えるか悩み中‥
<>
名称未設定<>sage<>2008/02/10(日) 20:09:37 ID:MQiiMPM60<> たしかパフォーマンスは落ちるかと <>
名称未設定<>sage<>2008/02/10(日) 22:44:37 ID:Fr8iJ/eI0<> コンパイラでインライン化とかしてくれないの? <>
名称未設定<>sage<>2008/02/10(日) 23:28:22 ID:mNbPLIG00<> >>162
そうなの?アクセサメソッドのコードを生成してくれるんじゃ
ないの。速度は変わらないと思ってたけど。 <>
名称未設定<>sage<>2008/02/11(月) 00:04:13 ID:rw6fzeGL0<> いずれにせよ、既存のアクセッサをわざわざ書き換える必要は無いという事でFA? <>
名称未設定<><>2008/02/11(月) 00:14:36 ID:Mw0lyuru0<> @property id value;
とか書かなくても、obj.valueなどのようなプロパティー構文は使えるよ。
ただ、Xcodeが入力を補完してくれないだけで。
<>
名称未設定<>sage<>2008/02/11(月) 00:32:16 ID:WABBHTZZ0<> でも、Obj-C 1.xのころは、アクセッサはスレッドセーフでも同値
チェックありでもなかったじゃない?
Obj-C 2.0はGC導入に伴い、いろいろ余計なことするようになった
分遅くなったと思うんだけど。
Obj-C 2で速度出すなら、アクセッサはきちんと書くか、少なくとも
属性書き足さないといけないのでは? <>
名称未設定<>sage<>2008/02/11(月) 02:32:07 ID:DHyabWpb0<> 誰かきちんと書いて速度比較してないのかな。
<>
名称未設定<>sage<>2008/02/11(月) 09:51:52 ID:qHxPQa8p0<> 実際のところアプリの内容によって違う
俺のメインのプロジェクトのは書き換えたら遅くなったから使うのやめたよ <>
名称未設定<>sage<>2008/02/11(月) 09:52:35 ID:qHxPQa8p0<> でも特殊なことしてない限り大丈夫だと思います <>
名称未設定<>sage<>2008/02/11(月) 13:01:17 ID:bv2jVL8f0<> UI の NSTextField に NSNumberFormatter を設定して、
AppController 内の NSNumber のメンバにバインディングさせているのですが、
その NSTextField に一旦数字を入力し、その後それを削除してリターンを押すと、
どこからともなく「フォーマットエラー(変更内容を破棄)(OK)」というパネルが
現れ、NSTextField をブランクのままにすることが拒絶されます。
このとき、このパネルを表示させずに、NSTextField はブランクのまま、単純に
NSNumber に nil を設定するには、どうすれば良いでしょうか。
<>
名称未設定<>sage<>2008/02/11(月) 15:34:22 ID:nf9aGNMi0<> ヌル時の動作がバインディングのインスペクターで設定出来たような。
か、やはり空白時はヌルで更新するコードをかますか。 <>
名称未設定<>sage<>2008/02/12(火) 04:19:53 ID:IXJXTrlG0<> TigerでSafariStandの「メタルを除去」みたいなアピアランスって
どうすればできるんでしょうか <>
名称未設定<>sage<>2008/02/12(火) 04:29:29 ID:NDM2BdXw0<> >>173
setBackgroundColor: <>
名称未設定<>sage<>2008/02/12(火) 16:17:32 ID:YacaCMuF0<> UIKitにNSBrowserみたいな階層表示できるviewはつきますかね? <>
名称未設定<>sage<>2008/02/12(火) 16:30:21 ID:YacaCMuF0<> 誤爆スマソ <>
名称未設定<>sage<>2008/02/12(火) 18:52:09 ID:41YUEpKu0<> 秒をhh:mm:ssに変換するのって自力で書くしかないですかね。
<>
名称未設定<>sage<>2008/02/12(火) 22:04:34 ID:n90Q8BNy0<> [NSString stringWithFormat:@"%02d:%02d:%02d",(s / 3600),((s / 60) % 60),(s % 60)];
s は int として、こんな感じか? <>
名称未設定<>sage<>2008/02/12(火) 22:20:36 ID:OwQ15KHvO<> それを自力で書くと言うんでは。
Formatterとか使いたいんじゃないの、何となくだけど。 <>
名称未設定<><>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の処理が行われます。それ以外は、特にパフォーマンスに影響する部分はなさそうです。
<>
名称未設定<>sage<>2008/02/12(火) 23:34:01 ID:SpY+Nhzt0<> >>177
[NSDate descriptionWithCalendarFormat〜] なんかそうじゃないかな
ちらっとリファレンス探ってみただけで試したりしてないけど
dateコマンドと同じ様なのがBSDレベルでもありそうな気がするけど <>
名称未設定<>sage<>2008/02/13(水) 00:36:31 ID:hLcBAx030<> >>177
俺以前NSCalendarDateでやったけど、NSDateと使いやすい方でやればいいと思う。
「Dates and Times Programming Topics for Cocoa」ってそのまんまの
ドキュメントがあるよ。 <>
名称未設定<><>2008/02/13(水) 12:30:50 ID:hWx8cVEU0<> cocoaブラウザでマニュアルがうまく表示されない(最初のフォルダ名だけが表示される)ので
デベロッパツールを再インストールしようとしたのですが、エラーが起きてできません
そもそもデベロッパツールを以前インストールしたことはあったのか、よく思い出せませんが
Xcodeは使えています。エラー文の内容は「次のインストール手順に失敗しました。run preinstall
script for developer tools.」というものです。どう対処したら良いか分かる方教えてください <>
名称未設定<>hage<>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はプログラム向いてない。 <>
名称未設定<><>2008/02/13(水) 15:00:44 ID:hWx8cVEU0<> >>184
ありがとうございます。ちゃんと調べろ、って意味でしょうか <>
名称未設定<>sage<>2008/02/13(水) 15:55:50 ID:ElkTRkCf0<> きっとプログラミング適性認定士の人なんだよ <>
名称未設定<>sage<>2008/02/13(水) 15:59:58 ID:zZkq+nSN0<> プログラム以前のセンスがない。
なんせんすw <>
名称未設定<>sage<>2008/02/13(水) 22:55:05 ID:tq6qN3wO0<> ・ソフトウェアの名前を正確に書けない
・自分が使っているソフトウェアのバージョンを示せない
・Googleを使いこなせない
プログラム以前にこれだけの問題がある
Cocoa Browser Xcode 3.0 でググれば Cocoa Browser SN がトップヒットする
ソフト名とバージョンでググるのは、彼には難易度高いだろうが頑張れ <>
名称未設定<>sage<>2008/02/13(水) 23:09:49 ID:tOkhYQQF0<> >>188
とどめを刺すなよ。wxのお人よりはマシなんだから、優しくしてあげなよ。
<>
名称未設定<>sage<>2008/02/13(水) 23:57:16 ID:ZMdVQlot0<> >>189
アイツは何の開発してんだろな。
周辺機器に付属するソフトらしいが...
フェリカ関連とかなら、Macユーザー皆ガッカリだな。 <>
名称未設定<>sage<>2008/02/14(木) 00:03:45 ID:tNnS+0Fo0<> >>183
"最初のフォルダ名"って、それフォルダ名じゃないですから。
フレームワーク名だよ。
最近はmkinoさんが入門書やセミナーでCocoaプログラミングの間口広げたりとか、
Objective-C 2.0でメモリ管理が楽になった関係で、初心者増えてんのかな??
ADCも翻訳ドキュメント増えてるし。 <>
名称未設定<><>2008/02/14(木) 00:25:34 ID:IHEpmM1b0<> 質問です。
finderのウィンドウをクリックするイベントを取得したいのですが、
どのようにすれば良いですか? <>
名称未設定<>sage<>2008/02/14(木) 01:14:05 ID:2vR2hRjj0<> もうね・・・なんかね・・・ <>
名称未設定<>sage<>2008/02/14(木) 01:54:17 ID:IHEpmM1b0<> >>193
要するに解んないんでしょ?
なんだこれ、おもしれー
http://developer.apple.com/samplecode/UIElementInspector/index.html <>
名称未設定<>sage<>2008/02/14(木) 02:47:53 ID:4cuFCMDR0<> こいつぁひどい <>
名称未設定<>sage<>2008/02/14(木) 06:40:30 ID:8cvrNmzT0<> >>194 のサンプルはそのままだと日本語環境でクォートが文字化けするなあ。
このぐらいちゃんとしておいてほしいものだ > 中の人 <>
名称未設定<>sage<>2008/02/14(木) 06:42:56 ID:6KCJ8+yd0<> というかレパードなら /Developer/Applications/Utilities/Accessibility Tools/
に入っているんだが ... <>
名称未設定<>sage<>2008/02/14(木) 06:48:50 ID:Pdak6Ccy0<> >>192
NSCoreServiceEventHandlerを探してみるといいことあるかもしれないよ <>
名称未設定<>sage<>2008/02/14(木) 12:03:41 ID:wuTSPo/K0<> 何か最近この板のプログラミング関係のスレで無礼な質問者が多いな
ほとんど一人なのか入門者が増えてるのか <>
名称未設定<>sage<>2008/02/14(木) 12:21:56 ID:+3rXw5770<> すんません、俺です <>
名称未設定<>sage<>2008/02/14(木) 12:44:00 ID:lWs9KW2t0<> 入門者といえば俺もそうだけど、見ているだけだ。
まだ質問するようなレベルにも達していないぜ。
<>
名称未設定<><>2008/02/14(木) 14:31:21 ID:Clomt4Sp0<>
win系のプログラマでもここまで酷い質問をする人は多くない。
会社の中のダメなプログラマを割り当ててるんじゃない?
<>
名称未設定<>sage<>2008/02/14(木) 15:47:35 ID:2GXMUdLz0<> iPhoneのアプリってiPod touchでも使えるんだよね?
SDKの配布が開始されたら開発者増えるかな。 <>
名称未設定<>sage<>2008/02/14(木) 19:16:05 ID:ksn/tePY0<> すんません、全部俺です。
もうこれ以上皆さんに迷惑をかけたくないので
やっぱりMacでのアプリ開発は辞めます。
みなさん今まで本当にありがとうごさいました。 <>
名称未設定<>sage<>2008/02/14(木) 19:32:32 ID:Lva4VeDJ0<> みなさん有意義なスレにしましょう。 <>
名称未設定<>sage<>2008/02/14(木) 21:22:43 ID:Y52audrL0<> NSTableViewなどにドロップした時、acceptDropでYESを返す前にペーストボードから
大量の処理を行うと、しばらくカーソルのマークが+のままで気に入らないのですが、
YESを返したあとに処理を行うにはどうすれば良いでしょうか?
いったんペーストボードの情報を配列などに格納して、それから処理をすればいいと思うのですが、
acceptDropでYESが返されたかどうがの判定がわからないのです。
「配列の内容が変わったら」の通知でいけそうな気もしますがどう書けばいいのかわかりません。
よい知恵がありましたらお願いします。
<>
名称未設定<>sage<>2008/02/14(木) 22:12:50 ID:nbubxl5h0<> NSObjectのperformSelector: withObject: afterDelay:
でdelayを0にしてやれば、次のrunLoopでスケジュールされるよ <>
名称未設定<>sage<>2008/02/14(木) 22:22:10 ID:OnNeG9+L0<> 最初はみんな初心者なのにね。
macでプログラムしようなんて人はただでさえ少ないのに
なんでこう排他的なんだろう。
悲しくなるわ。 <>
名称未設定<>sage<>2008/02/14(木) 22:39:37 ID:CZoJyT9b0<> そりゃ、2ちゃんだから。
macとwindowsでプログラマの気質が違うとか論じても仕方ない。
ここはゴミ埋立処分場程度の認識だよ。S/N比低いし。
稀に良い情報も有るけど。 <>
名称未設定<>sage<>2008/02/14(木) 22:42:21 ID:nbubxl5h0<> mkinoさんのとこに以前あった掲示板とか使わせてもらって
すごく助かった覚えがあるなぁ
CocoaBindingの勉強、あそこが無かったらムリだった
いつか復活しないかな。
<>
名称未設定<>sage<>2008/02/14(木) 22:54:55 ID:R6ifJKPT0<> >>208
排他的かそうでないか以前に、礼儀というものがあるとおもう
初心者の質問にはたいてい答えがでてるんじゃない?
言葉は厳しいけど。質問が丁寧なら答えも丁寧だし、
質問がぶっきらぼうなら答えもぶっきらぼうなだけで。 <>
名称未設定<>sage<>2008/02/14(木) 22:56:08 ID:vCknh0st0<> そういやHMDTのBBSで初めてテーブルのバインディング方法を知ったな <>
名称未設定<>sage<>2008/02/14(木) 22:57:05 ID:D6AGxe9e0<> 別にぶっきらぼうに答えるのはいいと思うけど
時間があいた「悪い質問」に何人も嫌みを言うのはどうなのよとは思うね <>
名称未設定<>sage<>2008/02/14(木) 23:14:36 ID:sPMhCEuG0<> プログラマとしての知識の多寡は問題じゃないでしょう
社会人としての常識に欠ける人が問題なだけで
答える側だって無償でやってるんだから、答えてあげても良いかな、と思わせるような質問をしないと <>
名称未設定<>sage<>2008/02/14(木) 23:23:30 ID:OnNeG9+L0<> そうかもしれんが、掲示板の常だとは思うが(mixiのmacコミュでも)
よってたかってになると、ほかの初心者にとっても質問しづらい雰囲気になると思う。
それがマナーだと言われればそうなんだろうけど、なんかなぁ。 <>
名称未設定<>sage<>2008/02/14(木) 23:33:41 ID:nbubxl5h0<> >答える側だって無償でやってるんだから、答えてあげても良いかな、と思わせるような質問をしないと
こういうことは思ってても言わないのが大人だと思いますよ。
これでは上司が部下にいうような諭し方です。
<>
名称未設定<>sage<>2008/02/14(木) 23:36:48 ID:2vR2hRjj0<> ここでは言わないとダメだろ
つか無礼なのが問題であって初心者とか関係ないし <>
名称未設定<>sage<>2008/02/15(金) 00:10:46 ID:09i7oEa70<> こういう話題でしかスレが伸びない現状 <>
名称未設定<>sage<>2008/02/15(金) 01:56:30 ID:QR/oHBub0<> wx の人はひどすぎだと思う。他の人は何も問題ないから、沢山質問してね ! <>
名称未設定<>sage<>2008/02/15(金) 02:23:38 ID:TVIoFEHo0<> ま、どうでもいいな <>
名称未設定<>sage<>2008/02/15(金) 09:50:37 ID:cdS73ETs0<> Cocoaとか、プログラミング本体そのものは割と簡単。
ただ、一番最初にどこにコードを書いたらいいのかというとっかかりがちょこっと分かりにくい。
これはC言語系一般に共通する事ではあるのだが…。
実際にはClassフォルダか何かを右クリック、「追加→新規ファイル」で
適当に「Objective-Cの書類を追加」してそこに思い思いにコードを書き…
Resourceフォルダの中に入ってる***.nibフォルダでウィンドウなどのパーツを組み、
***.hの@interfaceのところに「IBOutlet」でプラグを形成し、***.nib側でそのプラグにリンクさせる。
みたいな手順を踏む。
こんな感じの開発の流れだったと思う。 <>
名称未設定<>sage<>2008/02/15(金) 10:33:57 ID:DTymAYG50<> >>207
ありがとうございます。
チャレンジしてみます。 <>
名称未設定<>sage<>2008/02/15(金) 11:12:09 ID:cdS73ETs0<> と言いつつも、自分もそんなに詳しいわけではないorz
エクセルのcolumn、rowの幅を変更する、とか選択のセルを広げるみたいなインターフェースを考えたとき、
どういう設計思想でまとめると具合がいいのか分からずにいる。
NSMatrixをベースに考えたらいいのか、NSMutableArrayをベースに考えたらいいのか
GUIと組み合わせた時に最適な設計の方向性はどのようなものが良さそうか。
設計思想の相談っぽくなるからスレ違いかな… <>
名称未設定<>sage<>2008/02/15(金) 20:36:24 ID:XEVibBPe0<> >>178
遅くなりましたがありがとうございます。
こんな簡単に書けるんですね。
ただ、hourがない場合とminが10以下の場合は0を表示したくないので、
やっぱちまちまとif文で書く事にします^^; <>
名称未設定<><>2008/02/15(金) 21:38:47 ID:oqE3Ixxq0<> >>223
そういう特殊なViewは、NSMatrixなんかの既存のクラスをベースにするより、NSViewから直接サブクラスを作った方が楽にいくと思うよ。
Model側は、NSMutableArrayベースでよいと思います。
ただし、MVCパターンに忠実にViewを設計するなら、View内でModelデータを保持しないので、drawRect:内でModelのデータを読み出しつつViewを描画するのが、とりあえず楽かと思います。 <>
名称未設定<>sage<>2008/02/16(土) 01:44:30 ID:4FH+FMZ+0<> >>224
%02d を %d に変えると 0 が表示されなくなるよ。
ってこれは Cocoa じゃなくて単に C の話だけど。
printf のフォーマット文字列を適当に調べてね。 <>
名称未設定<>sage<>2008/02/16(土) 01:54:34 ID:tPBsTPZz0<> Xcode3でTiger以上で動作するのを目標にアプリ作ったんだが、
実際にTigerで動かしてみると落ちまくり・・
細かいところ結構違うのな・・ <>
名称未設定<>sage<>2008/02/16(土) 10:11:49 ID:gZ6RBFi00<> >>226
それだと数字が表示されなくなるだけで
結局コロン(というか区切り字)は表示されるから微妙な気がする
用途によるけど <>
名称未設定<>sage<>2008/02/16(土) 10:15:51 ID:Eyz/1BW40<> >>227
>細かいところ結構違うのな・・
例えばどんなところ? <>
名称未設定<>sage<>2008/02/16(土) 11:36:23 ID:qbCe38+h0<> >>227
SDKを設定していますか?
プロジェクトの情報からSDKを設定してください。
Objective-C 2.0 の機能を使っていませんか?
Leopardでしか動きません。使用を中止してください。
ガベージコレクションを有効にしていませんか?
Leopardでしか動きません(たぶん)。無効にしてください。
xib 3.0形式を使用していませんか?
Leopard以外だとなんかまずいらしいです。使用を中止してください。 <>
名称未設定<>sage<>2008/02/16(土) 12:06:59 ID:Dd3xK0Kf0<> 優しいね <>
名称未設定<>sage<>2008/02/16(土) 16:51:22 ID:RPnk6eix0<> NSTextField がいくつか貼り付けてあるウインドウがあって、
コード内から特定のフィールドを入力可能状態にしたいんですが、
[window makeFIrstResponder: textField];
とやると、textField のフォーカスリングは点灯するのですが、
一度そのフィールド内をクリックしてやらないとフィールド内に
カーソルが出ず、文字入力は受け付けてくれません。
最初から文字入力を受け付ける状態にするには、どう書けば
良いでしょうか。
<>
名称未設定<><>2008/02/16(土) 19:56:46 ID:/phORhcB0<> [textField performClick:self];
とかは? <>
名称未設定<>sage<>2008/02/16(土) 21:28:53 ID:89DZUxew0<> すいません。質問させてください。
”main”ウィンドウと”sub”ウィンドウを作りました。
”main”ウィンドウ上の”A”ボタンを押すと"sub"ウィンドウが現れるようにしました。
そこで、"sub"ウィンドウ上に作った”B”ボタンを押したときに”main”ウィンドウのコントローラのインスタンス変数にアクセスするにはどうすればいいのでしょうか? <>
名称未設定<>sage<>2008/02/16(土) 21:31:48 ID:QDIiUSUT0<> 一つのnibファイル上で、二つのウィンドウを作っているんだよね?
ならsubのコントローラからoutletをmainのコントローラに引くのはダメ? <>
232<>sage<>2008/02/16(土) 21:37:29 ID:RPnk6eix0<> >>233
試してみましたが、だめでした。
NSTextField にバインディングを設定してるんですが、
それが悪さをしてるでしょうか‥ <>
名称未設定<>sage<>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"ウィンドウ側から取得したいという状況です。
<>
名称未設定<>sage<>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 しない、みたいな理由じゃないのかな。
<>
名称未設定<>sage<>2008/02/16(土) 22:17:19 ID:y+1mOBUh0<> >>238
>WinController サブクラス
じゃなくってWinControllerのクラスそのものだった <>
名称未設定<>sage<>2008/02/16(土) 22:30:14 ID:QDIiUSUT0<> そのようにするなら、二つのWindowは一つのnibにおいて
ひとつのControllerで一緒に扱う方がよいのでは。
<>
名称未設定<>sage<>2008/02/16(土) 22:30:23 ID:E6gXC2xw0<> >>236
[window makeFirstResponder:textField];で十分なはずだけど、、
id fieldEditor = [window fieldEditor:YES forObject:textField];
[window makeFirstResponder:fieldEditor];
を追加してもダメですか?
<>
名称未設定<><>2008/02/16(土) 22:48:21 ID:mIBg0tCV0<> >>237
それって、単純に2つのViewを1つのModelとBindすれば済む話じゃ? <>
名称未設定<>sage<>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
を見てください。
<>
237<>sage<>2008/02/17(日) 02:34:43 ID:AR1yqRov0<> たくさんのレスありがとうございます。
理解力がないのですべてを検証できていませんが、
>>238
[self setTableView:]
これの引数のNSTableViewはどこから取ってくればいいのでしょうか?
>>242
BindっていうのはCocoaBindingというやつでしょうか?
ちょっと難しそうですが試してみます。
>>235
>>240
1つのnibファイルでやる方法を適当な動作確認用アプリを作って試してみました。
この方法で希望の動作ができることが分かりました。
>>243
ちょうどFile'sOwnerって何だ?って思っていたところなので助かります。
ちょっと勉強してみます。 <>
名称未設定<>sage<>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には上のメソッドを予め作成しておく。 <>
237<>sage<>2008/02/17(日) 12:27:44 ID:AR1yqRov0<> >>245
おおおぉぉ!
教えていただいた様にしたらWinController側から
メインウインドウ上のNSTableViewのselectedRow がとれました。
勉強になりました。
本当にありがとうございました。 <>
名称未設定<>sage<>2008/02/17(日) 21:07:52 ID:fWhtrPAi0<> cocoa本のおすすめを教えて下さい。和書限定で <>
名称未設定<>sage<>2008/02/17(日) 21:13:40 ID:JpVHkWBN0<> >>247
おすすめもなにも和書限定で今店頭にあるのなんて片手で数えられる位しかない <>
名称未設定<>sage<>2008/02/17(日) 21:43:17 ID:fWhtrPAi0<> >>248
Leopardで使える内容ですか? <>
名称未設定<>sage<>2008/02/17(日) 22:40:24 ID:64Ai+vkJ0<> NSTaskでunzipを利用してzipの中のファイルをpipeで読もうと試みています。
zip内に直接ファイルが格納されていれば引数 -p でpipeから普通に読めるのですが、
zip内にフォルダがあり、その中のファイルを読もうとするとフォルダ自身を読んでるみたいで
ファイルを読むことができません。-jをつけても駄目でした。
素直にzlib使えばいいんですが、unzip経由でメモリに解凍するいい方法はないでしょうか? <>
名称未設定<>sage<>2008/02/17(日) 23:27:08 ID:l+f0yW5L0<> >>249
使えるといえば使える。Obj-C 1.0 が解説してあるから。
Obj-C 2.0, Xcode3, IB3 について解説した本って和書では出てないんじゃないかな。 <>
名称未設定<>sage<>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くらいまでだ。あとヒレガス本の和訳だな。
<>
名称未設定<>sage<>2008/02/18(月) 01:51:41 ID:XdaORCnz0<> 荻原本は正直初心者にはお薦めしない
すごく良い本で後々絶対役に立つけど、入門本だと思って買うとかなり違う
つうか>>247は質問が曖昧過ぎる
プログラミングはまったく未経験とか、JAVAやC、あるいはAppleScriptの経験はあるとか、
そういう情報を出せばお薦めする本も自ずと変わってくるのだが
俺のおすすめはまったくの初心者なら「たのしいCocoa」、
Cくらい知っているならMac OS X Cocoaプログラミング(いわゆるヒレガス本)かな
Leopard対応の和書はまだ一冊もないはず <>
名称未設定<>sage<>2008/02/18(月) 02:24:04 ID:GFrhSAXM0<> >>253
和書、ではないけど、日本語版の解説なら ADC にあるよ。
http://developer.apple.com/jp/documentation/japanese.html
まあこれは C を知ってないとどうしようもないかも。
あとは、まあ、頑張って英語読もうね ...
いずれ細かい API を知りたくなったら API ドキュメントよまないと
しかたなくなるし、メソッド名の意味とかわからないとちんぷんかんぷんだろう。 <>
名称未設定<>sage<>2008/02/18(月) 11:18:16 ID:k5a4KsxB0<> PopUpButton とか ButtonCell とかのテキストの色を変えるには
どうすればいいですか。
HUD に置いた PopUpButton とかのテキストの色を灰色にしたいです。
<>
名称未設定<>sage<>2008/02/18(月) 11:25:41 ID:ghv7Mcc/0<> cocoa以前にまずは英語読めるようにならないとな。。 <>
名称未設定<>sage<>2008/02/18(月) 11:27:23 ID:Q3IQLzZy0<> MacでプログラミングしたいならJavaか旧態依然としたCUIアプリがいいよ。
まともなGUIアプリならWindows一択だね。 <>
名称未設定<>sage<>2008/02/18(月) 11:31:41 ID:2WAXQd/x0<> ん? <>
名称未設定<>sage<>2008/02/18(月) 11:34:40 ID:zir6Ss/g0<> Java(笑) <>
名称未設定<>sage<>2008/02/18(月) 11:38:05 ID:XJKW4YwB0<> 荻原本の「14章:簡易ビューア」って、Leopard + Xcode 3.0環境だと
インスペクタパネルが表示されなかったりして、うまく動かないかも。
デリゲートについて学ぼうと思ったんだけどな。
<>
247<>age<>2008/02/18(月) 11:53:30 ID:fZjZ8B3L0<> みなさん、ご回答ありがとうございます
>251
そうですね。まずはObjectiv-Cから始めます
>252
ありがとうございます。2冊目は取り寄せて読み始めています。1冊目も手配します
>253
すいません。C++は15年ほどやってます。Windowsメインの職業プログラマです。
やはり洋書取り寄せないとだめですかね。
>254
ありがとうございます。最近Windows開発ではぐぐればほぼ間違いなく日本人のサイトで資料入手できるんもんですからすっかり英語には腰が引けてました。少しがんばって読んでみます
>256
がんばります
>260
なるほど。気をつけます <>
名称未設定<>sage<>2008/02/18(月) 11:59:40 ID:GFrhSAXM0<> 247 さんがいろいろ理解したら頑張って日本語で情報発信してください <>
名称未設定<>sage<>2008/02/18(月) 12:47:53 ID:oRoDv33B0<> >>250
HetimaZipBrowser0.1 <>
名称未設定<>sage<>2008/02/18(月) 12:58:23 ID:/0xxfjv60<> >>257
Appleのjava対応はやるきがあるのかないのかわからんから微妙。
<>
名称未設定<>sage<>2008/02/18(月) 13:29:20 ID:m8SKGirC0<> C++15年もやってるならCocoaは余裕だな。たぶん。 <>
名称未設定<>sage<>2008/02/18(月) 13:55:34 ID:KOtA4sww0<> 何ヶ月か経ってようやく本を読むところにたどり着いたな
よかったな <>
名称未設定<>sage<>2008/02/18(月) 14:46:59 ID:WPvEcvLA0<> なぜこれを勧めないの?
Cocoaアプリケーションチュートリアル
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial <>
名称未設定<>sage<>2008/02/18(月) 16:13:14 ID:LyOhXzC90<> 15年もやってて英語も読めないとは。
むしろwin書籍の充実ぶりに嫉妬。 <>
247<>sage<>2008/02/18(月) 16:30:33 ID:fZjZ8B3L0<> >262
へたれなわたしには無理だと思います
>265
そうだといいんですが
>266
なんか敵意を感じますね?
>267
ありがとうございます
>268
昔は読んでたんですよ(汗。
でも最近じゃSDKの日本語化も進んでて読む機会はめっきり減りました(言い訳 <>
名称未設定<>sage<>2008/02/18(月) 17:10:47 ID:zOF+d4Tg0<> >>255
- (void)setAttributedTitle:(NSAttributedString *)aString
<>
名称未設定<>sage<>2008/02/18(月) 19:51:48 ID:CQ+uiWfh0<> 参考書の索引を見てもほとんどNしかないのが笑える。 <>
名称未設定<>sage<>2008/02/18(月) 21:27:19 ID:1MdWeLOI0<> >>271
ObjC3 ではパッケージの機能が導入されて全部プレフィックスがとれるとか...
さすがにないか(どっちも)。
そういや WebOjbects や Cocoa-Java でもとれてないし。 <>
名称未設定<>sage<>2008/02/18(月) 23:46:48 ID:KNJFfC1w0<> >>255
なぜ、そんなものの色を変えなければならない?
テキストの色を変えることと、
コントロールをDim化することとは違うよね。 <>
名称未設定<>sage<>2008/02/18(月) 23:54:43 ID:GFrhSAXM0<> というか IB でカラーパレットを開いて色をつけたらおしまいな気が ... <>
名称未設定<>sage<>2008/02/19(火) 00:08:28 ID:IqE+9f+W0<> IB上でできるのはTextFieldとかだけじゃ <>
255<>sage<>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 のカラーパレットで
設定しました。
<>
名称未設定<>sage<>2008/02/19(火) 00:31:06 ID:TJuG+yIv0<> >>267
なんだか1940〜1950年代の新聞活字みたいで鬱だ。
今どきこのフォントを使っているのは中華か台湾? <>
名称未設定<>sage<>2008/02/19(火) 00:33:03 ID:jgjsXYjt0<> >>276
テキストを持ってるのはNSPopUpButtonCellじゃなくない?
ついでに俺も聞きたいけど、Windowのタイトルの文字の色はどうやったら変えれますかね? <>
名称未設定<>sage<>2008/02/19(火) 00:39:51 ID:jgjsXYjt0<> レパだったらIB上でいけた、、知らなかった。
ところでWindowのタイトルの文字色は <>
252<>sage<>2008/02/19(火) 00:47:28 ID:+CrHN9wS0<> >>261
>最近Windows開発ではぐぐればほぼ間違いなく日本人のサイトで資料入手できる
Winてのはうらやましいな。こっちはすぐに英語だ。
は、言葉の話題はここでは禁句だったか? <>
名称未設定<>sage<>2008/02/19(火) 00:49:30 ID:lDXKyuLE0<> >>276
270です
>NSPopUpButtonCell の方は、なぜかうまくいきません。
となると
- (void)drawTitleWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
を上書きしないといけないかな?
個人的にはHUDは癖のあるインターフェイスなので、使い方は
注意がいると思います。
Apple Human Interface Guidelinesにもいろいろ注意が
書いてあります。
<>
名称未設定<>sage<>2008/02/19(火) 02:07:25 ID:fHYgawbi0<> >>277
うちでは普通にヒラギノゴシックで表示されてるけど ...
CSS とかみても別になにもアジアフォントは設定してないぽいから、
そちらの設定がすこし変なのでは? <>
名称未設定<>sage<>2008/02/19(火) 02:08:38 ID:HFIoj9YG0<> PDFのことを言ってるんだろう。
確かにあまり使わないフォントだと思う。 <>
名称未設定<>sage<>2008/02/19(火) 03:49:03 ID:i8doDWTI0<> 中国語用のフォントかあ。翻訳はオフショアだったりして。 <>
名称未設定<>sage<>2008/02/19(火) 04:59:33 ID:fHYgawbi0<> AdobeSong と AdobeFangsong でした。
とりあえず ADC にヒラギノにしろとメールしておいた。 <>
名称未設定<>sage<>2008/02/19(火) 10:41:12 ID:Zxra0/AhO<> 携帯から失礼します
NSScrollerをiTuensのようなマットな感じの外見に設定するにはどうしたらいいんでしょうか
サブクラスでやらないで出来た記憶があったのですが
よろしくお願いします <>
名称未設定<>sage<>2008/02/19(火) 10:59:14 ID:v8daFgbB0<> 無理です。
サブクラスでガシガシ書くしか。 <>
名称未設定<>sage<>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/
が使えるかもしれません
<>
名称未設定<>sage<>2008/02/19(火) 16:41:48 ID:VsrKJ+jp0<> mkinoさんが既にサブクラスを書いているから、それを流用すれば <>
名称未設定<>sage<>2008/02/19(火) 17:18:35 ID:H5jYyic70<> >>288>>289
ライセンスはどうなるのでしょう?
商用で使いたい場合とか <>
名称未設定<>sage<>2008/02/19(火) 17:44:21 ID:sM/ABBA/0<> >>290
それは自分で調べても見つからない情報なのか?
それとも見つけるのが面倒なだけか? <>
名称未設定<>sage<>2008/02/19(火) 17:54:51 ID:H5jYyic70<> 英語なのでなんとなくでしか理解できません
なんとなくで使ったらマズいと思いまして <>
名称未設定<>sage<>2008/02/19(火) 18:12:53 ID:kUKVxqT10<> >>292
ここの住人もなんとなく答えるだけだぞ <>
名称未設定<>sage<>2008/02/19(火) 19:35:04 ID:le1+UQC40<> 英語以外で書かれてるライセンス文なんてほとんどないだろ
その二つは独自ライセンスじゃないはずだからググれば日本語訳出てくるし <>
名称未設定<>sage<>2008/02/19(火) 19:54:48 ID:MG1t/YlR0<> コピペせずに心をこめて一文字ずつ打ち込みながら写せばオケだよ。 <>
名称未設定<>sage<>2008/02/19(火) 20:16:22 ID:38n8l2Px0<> なるほど! <>
名称未設定<>sage<>2008/02/19(火) 20:19:57 ID:38n8l2Px0<> 見てみたけどフレームワークになってるからソース丸写しできないね <>
名称未設定<>sage<>2008/02/19(火) 21:00:55 ID:06rHEn2a0<> 人の使って金儲けするなら自分が払いたいだけ払えよ <>
286<>sage<>2008/02/19(火) 21:04:38 ID:HqQvuBC60<> >>287
どうやら記憶違いのようですね。
サブクラスでガシガシいく事にします。
ありがとうございました。 <>
名称未設定<>sage<>2008/02/20(水) 00:14:54 ID:dEnuUZT20<> 心をこめて一ビットずつ打ち込みながら写せばオケだよ。 <>
名称未設定<>sage<>2008/02/20(水) 08:09:15 ID:Ogg3DxTK0<> >>277
しかし「直」とか「編」がすごいことになってるな...
まさに Han Unification。 <>
名称未設定<>sage<>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クラスにはその手のメソッドがないのでしょう・・・ <>
名称未設定<>sage<>2008/02/21(木) 14:40:00 ID:Sr6oQjV90<> カテゴリでそれを追加してしまえばしまいなのでは?
というか HFS style のパスを使わないといけない理由がわからん。 <>
名称未設定<>sage<>2008/02/21(木) 17:53:27 ID:37Z0oxp90<> 質問させてください。
A = B
のような関係のデータ構造なら単純にDictionaryを使えばいいと思いますが、
A = B = C
のような関係のデータの固まりを複数扱いたいと思っています。
この場合は入れ子にしたDictionaryを使うしか方法はないでしょうか? <>
名称未設定<>sage<>2008/02/21(木) 18:06:58 ID:tzCzn6Lb0<> 1:1なのか1:nなのかどうか。 <>
名称未設定<>sage<>2008/02/21(木) 19:38:45 ID:G1SNSGMl0<> 構造体だろ <>
名称未設定<>sage<>2008/02/21(木) 19:40:52 ID:Nds9kpbn0<> 1:* <>
304<>sage<>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を取得するにはどうすればいいでしょうか? <>
名称未設定<>sage<>2008/02/21(木) 22:34:33 ID:QVBoRZyf0<> sqliteつかえば? <>
名称未設定<>sage<>2008/02/21(木) 22:40:14 ID:xFLGoheh0<> NSTreeControllerとか。使った事無いけど。 <>
名称未設定<>sage<>2008/02/21(木) 22:50:33 ID:G1SNSGMl0<> A, B, C のそれぞれをキーとする3つの配列を用意しちゃえば <>
304<>sage<>2008/02/21(木) 22:59:54 ID:37Z0oxp90<> 311さんの言うようにそれぞれで配列として持っていた方が楽そうですね。
その方向で試してみます。
ありがとうございました。 <>
名称未設定<>sage<>2008/02/21(木) 23:35:50 ID:i/cNTguO0<> core dataは? <>
名称未設定<>sage<>2008/02/22(金) 01:03:37 ID:M6ddHBVH0<> 「コア何たら」って聞くと、PCエンジンを思い出す。 <>
304<>sage<>2008/02/22(金) 16:43:21 ID:D2aFBIG60<> core dataも勉強してみて僕にも扱えそうな感じなら使ってみようと思います。
http://developer.apple.com/jp/documentation/japanese.html
ここの上級の資料とか見てみます。
ありがとうございます。
>314
コアグラフィックスとかですね。
<>
名称未設定<>sage<>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の値を取り出す
っていうのは? <>
304<>sage<>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 <>
304<>sage<>2008/02/22(金) 22:12:01 ID:nT1kPM1k0<> 改行大杉で怒られたのでアップロードしてみました。
ttp://uproda11.2ch-library.com/src/1166672.zip.shtml
ご指導お願いします。 <>
名称未設定<>sage<>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"];
}
} <>
名称未設定<>sage<>2008/02/23(土) 00:02:47 ID:xwgRyVRe0<> >>316
>[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"a = '%@' ",@"test"]]; とする
>>318
>NSArray* foo = [ary filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"c = '%@' ",@"黄"]];
おれには'%@'じゃなくて%@でいいようにおもえるが。 <>
304<>sage<>2008/02/23(土) 11:25:56 ID:IL0FtBi30<> 当初していた想像と違ってましたがこんな感じになりました。
ttp://uproda11.2ch-library.com/src/1166857.zip.shtml <>
名称未設定<>sage<>2008/02/23(土) 22:15:50 ID:F2RRmD0H0<> stringWithContentsOfFile:とかで得たいファイルの名前にスペースが入ってたら、
例えばpath = @"/hoge hoge.txt"だと、ファイルが得られないのだけど、
どうすればよいでしょうか? <>
名称未設定<>sage<>2008/02/23(土) 22:30:50 ID:d1QCGebM0<> >>322
それはファイル名にスペースが入っている以外の理由で失敗している可能性は
ないのか? <>
名称未設定<>sage<>2008/02/23(土) 22:37:21 ID:NDvX0xwB0<> NSFileManager の -fileSystemRepresentationWithPath を使ってC文字列を得るとか? <>
名称未設定<>sage<>2008/02/23(土) 22:52:41 ID:F2RRmD0H0<> ただstringWithContentsOfFile:で読み込むにはサイズが大きすぎただけのようでした。
22M
どうもすみません、ありがとうございました。 <>
名称未設定<>sage<>2008/02/23(土) 23:05:28 ID:d1QCGebM0<> >>325
それはサイズが大きすぎる以外の理由で(以下同文) <>
名称未設定<>sage<>2008/02/24(日) 00:14:44 ID:Zc+7rTc30<> >>322
/hogehoge.txt という / ではじまるファイルは、ルートディレクトリすなわち
ハードディスクのトップにあるものをさすというのは理解してるの?
ホームディレクトリの場合は
[@"~/hogehoge.txt" stringByExpandingTildeInPath]
としないといけないです。そうすると
~ が /Users/name に展開されます。 <>
名称未設定<>sage<>2008/02/24(日) 00:26:35 ID:wCGcWFr10<> NSWindowのタイトルバーの表示、非表示を切り替える方法はありませんか?
initWithContentRectの
styleMask:NSBorderlessWindowMaskで消すだけならできましたが、制御をしたいのです。 <>
名称未設定<>sage<>2008/02/24(日) 00:31:17 ID:Zc+7rTc30<> 別に NSWindow をつくって、
[newWindow setContentView:[oldWindow contentView]]
するぐらいしか思いつきませんが、
でもそんな動作をするウインドウは見たことないので、
あまり変なことをするとユーザーが混乱するのでは?
奇抜な動作をすればいいというものではないべ。 <>
名称未設定<>sage<>2008/02/24(日) 00:36:28 ID:18VIb9ze0<> >>324
NSStringの -fileSystemRepresentation じゃ何か問題でもあるの? <>
名称未設定<>sage<>2008/02/24(日) 01:04:58 ID:wCGcWFr10<> >>329
レスありがとうございます。
画像ビューワを作っているのですが、できるだけ表示領域をひろげたくて
NicePlayerみたいに邪魔なときは消せたらいいなぁと思ったんです。
NicePlayerはViewで疑似タイトルバーでやってるようです。
<>
名称未設定<>sage<>2008/02/24(日) 01:16:17 ID:Zc+7rTc30<> >NicePlayer
ダウンロードしてみましたが、
僕はこの window は耐えられませんね ...
あまりに他の OS X のソフトと見栄えがちがいますよ ...
まあ個人の趣味ですが。
Apple 謹製のソフトで表示領域を大きくする場合には、
たいてい全画面表示にすると思います。
そのときはウインドウタイトルどころかメニューバーやらドックもなくなります。
プレビューのスライドショーとか、iPhoto の編集モードとか。 <>
名称未設定<>sage<>2008/02/24(日) 02:02:32 ID:lAYBe5A10<> NSWindowのタイトルバーの文字の色を変えるにはどうしたらいいですか? <>
304<>sage<>2008/02/24(日) 02:53:52 ID:YsMKOfMQ0<> また新たに別の問題がおこってしまいましたが
結局、A, B, C のそれぞれをキーとする3つの配列を作る方法で実装してみました。
みなさん、いろいろな方法を提案くださってありがとうございました。
<>
名称未設定<>sage<>2008/02/24(日) 13:59:42 ID:Zc+7rTc30<> >>333
変えちゃダメ。他にそんなことやってるソフト無いでしょ。 <>
名称未設定<>sage<>2008/02/24(日) 15:18:43 ID:3kyIhWkK0<> >>335
自分でHUD Windowみたいなのを作りたいのです。
iLife ControllerやHMBlkAppKitを使わずに
10.4以前に同じようなものを作りたいのです。
変えちゃだめってことは変えれるってことでしょうか? <>
名称未設定<>sage<>2008/02/24(日) 18:35:07 ID:o2kiR1n50<> Zc+7rTc30がOSのスタンダードにこだわってるみたいだが、
変えるかどうかは>>333の自由だし、その固着した考えもどうかと思う。
俺はNicePlayerのウィンドウの邪魔な部分を消すというやり方はありだと思う。 <>
名称未設定<>sage<>2008/02/24(日) 18:45:49 ID:tlAzS/zw0<> HUD Windowを独力で作るのは結局、
iLife ControllやHMBlkAppKitがやっていることを自分でやることに
なる。NSWindow にタイトルバーの文字色を変えるメソッドとかは無い。
時間と労力が勿体ないから、素直にHMBlkAppKitとか使っちゃうのが
いいと思うけど。どうしても使えない事情とかあるの?>>336 <>
名称未設定<>sage<>2008/02/24(日) 19:11:08 ID:cq2Iewp+0<> 自分がやるなら、ここを見て試してみることになるかな。
ダイナミックObjective-C
ランタイムAPIでさらに動的に(5) - インスタンス変数に動的にアクセス
ttp://journal.mycom.co.jp/column/objc/031/index.html <>
名称未設定<>sage<>2008/02/24(日) 19:15:05 ID:A3mOmoyE0<> 質問です。
Interface Builderから設定できない項目ってありますよね。
コードを書くのが面倒なので、Bindでenabledやhiddenの設定
をしようと考えたのですが、YES/NOを簡単に指定する方法って無いですか?
shared defaultで設定しておくか、オーナーにYES/NOを
返すメソッドを置いとくくらいしか思いつきません。 <>
名称未設定<>sage<>2008/02/25(月) 11:00:10 ID:mnsXjX6e0<> >>340
自己レス。
NSValueTransformerの
NSIsNilTransformerName, NSIsNotNilTransformerName
で解決しました。
shared applicationのselfあたりにバインドしてどちらかを指定。 <>
名称未設定<>sage<>2008/02/25(月) 14:43:03 ID:YpQkGaPU0<> >>338
なるほど、ありがとうございます。
事情があるわけではなく自分で同じことをやってみたいという好奇心です。
NSWindowをいろいろいじってみたんですが。どうやって文字の色を変えてるのだろうと。
iLife Controlsってソース公開されてたんですね、知りませんでした。 <>
名称未設定<>sage<>2008/02/25(月) 20:35:03 ID:pwL7RjRZ0<> っていうか、Apple は自社アプリで使っているGUIパーツは
全てIBだけで使えるようにすべき。
まぁ、昔と比べてずいぶんカバーしてくれているが。 <>
名称未設定<><>2008/02/25(月) 22:31:41 ID:laJ9OY3b0<> >>343
ジョブたんの気分次第で増えてく感じだよな。
Lookが変わるとサイズまで変わってしまうんだもんな。
ボタンの種類なんてもうカオス。
<>
名称未設定<>sage<>2008/02/25(月) 22:48:18 ID:pwL7RjRZ0<> せっかく黒いインスペクタウィンドウがIBで使えるように
なったんだから、その上にのっけたボタン類も同じデザインで
自動的に置かれてほしいな、と思ったり。 <>
名称未設定<>sage<>2008/02/25(月) 23:57:55 ID:87djNpWj0<> >>344
まあ、レパードで表面上は種類が減ったのでは ... <>
名称未設定<>sage<>2008/02/27(水) 13:10:28 ID:FMBNfT6X0<> 相対パスについて教えてください。
プロジェクトフォルダ直下に入れた画像ファイルを指定するのに、
いきなり画像ファイルのファイル名を指定してもうまくいきません。
(いちおうプロジェクトには組み込んで参照させてあります)
Xcodeで画像ファイルを「情報を見る」してプロジェクトフォルダからの
相対パスに設定したんですが、うまくいきません。
よろしくお願いします。 <>
名称未設定<><>2008/02/27(水) 14:03:45 ID:l3PTXfjd0<> ヒント
NSBundle::pathForResource
NSImage::imageNamed <>
名称未設定<>sage<>2008/02/27(水) 14:08:35 ID:J130Im9L0<> >>347
何をどうしたいのか、いまいち伝わってこないが、
必死なのは分かった。
Xcodeが認識してくれないの?
アプリケーションバンドルに入らないの?
入ってるけど取り出せないの? <>
346<>sage<>2008/02/27(水) 20:54:53 ID:eaB0ty3b0<> >>348
たとえば、IBだけでNSImageで、プロジェクトに組み込んだ画像を
指定する場合は、IBでその画像の名前だけをインスペクタパネルに
入れればOKですよね。
で、コードからプロジェクトに組み込まれた画像を指定するには
どうしたらいいのですか、という質問です。
とりあえず、画像のファイル名(絶対パスではなくてファイル名のみ)
を指定してみましたが、ダメでした。
伝わらなくて、すみません...
よろしくお願いします。 <>
名称未設定<>sage<>2008/02/27(水) 21:13:43 ID:leiNhL1N0<> >>348さんのこと馬鹿にしてんのかお前>>350 <>
名称未設定<>sage<>2008/02/27(水) 21:19:39 ID:nW263Zmv0<> プロジェクトに追加した画像ファイルなら>>348の通りimageNamedでファイル名していすればできるよ。 <>
名称未設定<>sage<>2008/02/27(水) 21:22:53 ID:leiNhL1N0<> ごめん、カルシウム足りてなくてイラッときた <>
346<>sage<>2008/02/27(水) 21:47:01 ID:eaB0ty3b0<> >>348
>>349
>>352
>>351
すみません。ありがとうございました。
>>353
申し訳ないです。 <>
348<>sage<>2008/02/27(水) 21:50:13 ID:l3PTXfjd0<> >>351
おれは怒ってないぞーw
Resourcesにcopyされてないんじゃまいか?
.appのパッケージの内容を表示で中身見てあるか確認
ダメなら一回プロジェクト作り直し
嫌ならコマンド + option + k押してターゲットをクリーニング
ダメなときは一からやり直してともかく動かす
話はそれから
<>
346<>sage<>2008/02/27(水) 22:31:16 ID:eaB0ty3b0<> >>355
ありがとうございます。これからやってみます! <>
名称未設定<>sage<>2008/02/27(水) 22:34:32 ID:YI2lm2t+0<> なんだこの流れはw <>
名称未設定<>sage<>2008/02/27(水) 23:48:02 ID:it5OScRi0<> 半透明のウインドウのリサイズが遅いのはどうにもならないのだろうか・・ <>
346<>sage<>2008/02/28(木) 01:26:58 ID:G8bXEyn+0<> 報告です。とりあえず、プロジェクトを作り直したら、
正常に動作しました。
申し訳ありませんでしたorz
<>
名称未設定<>sage<>2008/02/28(木) 08:03:57 ID:BTWE97ROO<> >>359
プロジェクトを作り直したの?
クリーニング&ビルドじゃなくて。 <>
名称未設定<>sage<>2008/02/28(木) 15:44:15 ID:cMerTqn60<> 3時間で全部打ち直したんじゃね?
<>
名称未設定<>sage<>2008/02/28(木) 16:22:23 ID:g8uMaOtR0<> プロジェクトに追加したけどターゲットに追加してなかっただけでしょ、たぶん。 <>
名称未設定<>sage<>2008/02/28(木) 22:02:52 ID:G8bXEyn+0<> 質問させてください。
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithFilename([[NSBundle mainBundle] pathForImageResource:@"image"]);
とやって、Resouceフォルダの中のimage.tiff を読み込みたいのですが、
ポインタの型が違うと怒られます。何がおかしいんでしょうか。
<>
名称未設定<>sage<>2008/02/28(木) 22:05:39 ID:b9dJN5/U0<> ポインタの型が違うんだと思う。 <>
名称未設定<>sage<>2008/02/28(木) 22:08:27 ID:a9uJIoJW0<> NSString*とchar*は違う・・・ <>
名称未設定<>sage<>2008/02/28(木) 22:11:37 ID:eN6Cd95u0<> >>363
ポインタのキャストが必要です。 <>
名称未設定<>sage<>2008/02/28(木) 22:19:34 ID:G8bXEyn+0<> CGDataProviderRef imageDataProvider = CGDataProviderCreateWithFilename([[[NSBundle mainBundle] pathForResource:@"image" ofType:@"tiff"] UTF8String]);
とやって解決しました。くだらないミスですみません。
>>364-366 ありがとうございました。 <>
名称未設定<>sage<>2008/02/28(木) 23:03:47 ID:A6aYqvcq0<> -UTF8Stringじゃなくって-fileSystemRepresentationだと思うんだがな。
つーか、そんな関数あったんだな。知らなかった。 <>
名称未設定<><>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];としているだけです。
どなたか解決策をご存知でしたら教えてください。 <>
名称未設定<>sage<>2008/02/29(金) 00:31:50 ID:NTrNPfyU0<> >>368
>-fileSystemRepresentation
よく調べてみたら、こっちのほうがオーソドックスみたいですね。ありがとうございます。 <>
名称未設定<>sage<>2008/02/29(金) 10:08:15 ID:AvjDXGM30<> >>369
ホゲコンを独立した形でIB上でインスタンス化するとか。 <>
名称未設定<>sage<>2008/02/29(金) 10:48:20 ID:nuquRuJR0<> 確か、nibでインスタンス化したオブジェクトはFile's Owner が責任もってreleaseしてやらなくちゃならなかったはず。
<>
名称未設定<>sage<>2008/02/29(金) 11:20:16 ID:A2LYQ/E+0<> >>369
OSのバージョンは何ですか?
10.3だとNSWindowControllerのバグでretain cycleが
生じている可能性があります。
<>
名称未設定<>sage<>2008/02/29(金) 15:22:05 ID:Jj0cAYoS0<> >>369
[objectController setContent:nil];
<>
名称未設定<>sage<>2008/03/01(土) 02:14:43 ID:UpRwlGMm0<> 特定のウィンドウやパネルをExposeやSpacesに持ってかれないようにするにはどのようにすればいいのでしょう?
画面に固定したいのですが。 <>
名称未設定<>sage<>2008/03/01(土) 10:13:21 ID:PGIKvFSU0<> >>375
ttp://cocoawiki.aerial.st/?Expose%20%A4%B7%A4%CA%A4%A4%A5%A6%A5%A4%A5%F3%A5%C9%A5%A6 <>
名称未設定<>sage<>2008/03/01(土) 13:12:34 ID:pBDQ5XU50<> Spaces に関してはNSWindow にメソッドが用意されている <>
名称未設定<>sage<>2008/03/01(土) 13:47:30 ID:C1APndUO0<> なるほど、いろいろ調べてみましたがexposeの方は現状ではハックしかなさそうですね。
ありがとうございます、試してみます。 <>
名称未設定<>sage<>2008/03/02(日) 10:45:13 ID:vHP/LU6H0<> NSWindowで A,B,Cと3つのウィンドウがありCが最前面の場合、
残りAとBの前後関係を知るにはどうすればよろしいのでしょうか?
levelで比較しても同値ですし、キーウィンドウかどうかもできないですし。
お知恵をお貸し下さいませ。
<>
名称未設定<>sage<>2008/03/02(日) 11:28:08 ID:hSV40TtT0<> >>379
[NSApp orderedWindows];
[NSApp orderedDocuments]; <>
369<>sage<>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が呼ばれるようになりました。
これが作法として正しいかどうかは分かりませんが、熱が引いたらもうちょっと
試してみます。ありがとうございました。 <>
名称未設定<>sage<>2008/03/02(日) 13:02:51 ID:CDTGwKCL0<> ちょっと待て
インフルなのに起きてMacの前に座ってるなんて
命に関わるんじゃね? <>
名称未設定<>sage<>2008/03/02(日) 13:04:22 ID:zueJD3wX0<> >>380
即レスありがとうございます。
さっそく試してみます。 <>
369<>sage<>2008/03/02(日) 13:11:50 ID:mi0e2JN40<> >>382
どうしても気になったものでw
ちょっと布団から抜け出してみましたww
でももう寝ます。ご心配かけてすみません。
おやすみなさい。 <>
名称未設定<>sage<>2008/03/02(日) 15:00:09 ID:61s3PQ+i0<> 初歩的な質問なんですが、Interface Builderでアウトレットとアクションを接続する時の、
コントロールキーを押しながらドラッグする操作ができなくて困ってます。
参考書見ながらやっているのですが、線が伸びて接続するという風に書いているのですがその通りにできないです・・・。
何か設定しないといけないことがあるのでしょうか? <>
名称未設定<>sage<>2008/03/02(日) 16:08:02 ID:WlNHydXc0<> ふつうに出来るよ ?
つなぎたいものの上にマウスを持っていって、
コントロールキーを押したまま、
マウスをしばらく動かすと線が伸びるはずだけど。
右クリックドラッグでもいいです。 <>
名称未設定<>sage<>2008/03/02(日) 16:14:43 ID:3JYxwU8x0<> 独自コントローラーでアウトレットを作っていないに1票
参考書の通りにやってる?どこか読み落としてないかい <>
名称未設定<>sage<>2008/03/02(日) 16:34:04 ID:dah6mynL0<> >>385
線が出てこないのか、線は繋げられるけど接続ができないのか、まずそれを書け。 <>
名称未設定<>sage<>2008/03/02(日) 16:41:06 ID:qN7Y669I0<> CoreAnimation についてご助言をお願いします。
プログラミングガイドのレイヤーツリー階層の項目を読むと、
スーパーレイヤにサブレイヤとしてレイヤを追加するという内容が
書いてあります。
ここで疑問に思ったのは、レイヤの順序はどのようになるかということです。
スーパーレイヤより、サブレイヤの方が上層にくることは分かりました。
では、サブレイヤ同士の上下関係はどのように管理するのでしょうか。
また、スーパーレイヤを複数作ることができるかということも疑問です。
つまり、レイヤを作るときは、ただ一つのスーパーレイヤから、どんどん
階層を作っていかなければならないのでしょうか。
よろしくお願いします。 <>
名称未設定<>sage<>2008/03/02(日) 16:50:23 ID:61s3PQ+i0<> >>386
Instancesタブの中にあるインスタンスしたアイコンの上でやってみたのですが、できないです・・・
>>387
たのしいcocoaプログラミングという本の初めのhelloworldアプリを作っています。
参考書通りにアウトレットとアクションを一個ずつクラスに作成しております。
>>388
線が出てこないです。
<>
名称未設定<>sage<>2008/03/02(日) 18:32:25 ID:3JYxwU8x0<> 絶対ちゃんと参考書読んでないに1票
インスタンス化したNSObjectのクラスを設計したクラスに設定して
ウィンドウにボタンやテキストフィールドとか置けば線はつながるよ <>
名称未設定<>sage<>2008/03/02(日) 19:41:41 ID:dah6mynL0<> 線が出てこないならcontrolキーが壊れてるんじゃね? <>
名称未設定<>sage<>2008/03/02(日) 19:48:36 ID:ot1nyHJ50<> >コントロールキーを押しながらドラッグする操作ができなくて困ってます。
ってことだから、片手が不自由なのではないだろうか?
システム環境設定のユニバーサルアクセスのキーボードで複合キーを入にしてください。
これで、コントロールキーを押したあとドラッグすればControl+ドラッグの動作になります。 <>
名称未設定<>sage<>2008/03/02(日) 20:06:19 ID:lT2ZRyse0<> >>390
cmdキーとctrlキー押し間違ってるとか
>>389
>ここで疑問に思ったのは、レイヤの順序はどのようになるかということです。
>スーパーレイヤより、サブレイヤの方が上層にくることは分かりました。
>では、サブレイヤ同士の上下関係はどのように管理するのでしょうか。
CALayerにあるzPositionってやつじゃない? <>
名称未設定<>sage<>2008/03/02(日) 20:07:02 ID:3JYxwU8x0<> 右クリックでドラッグすれば良し <>
名称未設定<>sage<>2008/03/02(日) 20:13:10 ID:61s3PQ+i0<> 385です。
マウスとキーボードの設定のキーボードの修飾キーで、controlキーにcommandを割り当てていました・・・。
そのためにコントロールキーを押しながらドラッグというのができませんでした。
レスをしてくれた方大変助かりました。
お騒がせしてごめんなさい。 <>
名称未設定<>sage<>2008/03/02(日) 20:48:18 ID:dah6mynL0<> ちゃんちゃん <>
名称未設定<>sage<>2008/03/03(月) 00:01:28 ID:CLptj8Qv0<> あるメソッドをAのクラスに書くか、Bのクラスに書いてAから繋いで呼ぶか、
(もちろんBでも使う)悩ましいのですが、こういう時の指針って何かあるのでしょうか。 <>
名称未設定<>sage<>2008/03/03(月) 00:08:29 ID:omK0f3mt0<> やりやすければ適当でいいんじゃない?
後で拡張するときに楽になる方を選べば。 <>
名称未設定<>sage<>2008/03/03(月) 00:13:37 ID:67uA4yRu0<> 一番関係あるクラスに書く <>
名称未設定<>sage<>2008/03/03(月) 00:17:01 ID:Qmzt7GH20<> 人それぞれだよね。
可読性と保守性があって、MVCがきちんと分離されていれば、
あとは適当に機能のまとまりでクラスにすればいいと思う。 <>
名称未設定<>sage<>2008/03/03(月) 00:34:06 ID:IyX+GfuA0<> こういうのは実例をあげないと正解的なものは答えようがないかもね。 <>
名称未設定<>sage<>2008/03/04(火) 07:31:35 ID:cd3Ueok20<> マウスオーバー時に出る黄色い矩形のテキストを出す方法ってcocoaで用意されています?
探しても全然見つからないんで自分で作るしかないんでしょうか... <>
名称未設定<>sage<>2008/03/04(火) 07:47:59 ID:483en0hZ0<> - (void)setToolTip:(NSString *)string <>
名称未設定<>sage<>2008/03/04(火) 08:52:43 ID:mzfgZERp0<> >>403
IB > Identity Inspector > Tool Tip <>
403<>sage<>2008/03/04(火) 09:30:50 ID:2TCXuN/70<> >>404,405
お二方ともにありがとう!
ID変わってるでしょうが403です。
ToolTipという名前が出てきませんでした。お恥ずかしい。 <>
名称未設定<>sage<>2008/03/04(火) 14:50:14 ID:S7wqDV1Y0<> 質問です。
画像のサムネイル表示を作るにはNSCell使って自分で作っていく
しかないのでしょうか?
動作としてはFinderのアイコン表示みたいな感じで
選択された画像はハイライト、ドラッグしたりして複数選択する。
って感じなんですが。
ネットで調べてみると、
10.5にはそれっぽいコントロールがあるけど、動作環境が10.4ため
使えず、NSTableViewだと各セルの選択方法が分からず断念しました。
Finderのアイコン表示ってCarbonでゴリゴリ書いてるんだろうか・・・。 <>
名称未設定<>sage<>2008/03/04(火) 15:22:38 ID:OV6PaGCF0<> Finderは知らんが、NStableViewだとセル表示が行われる時に呼び出されるメソッドがある。
(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row <>
名称未設定<>sage<>2008/03/04(火) 15:41:42 ID:hB9Picwm0<> Finderのアイコン表示みたいなのを作りたいなら
UKDistributedView
ttp://www.zathras.de/angelweb/sourcecode.htm#UKDistributedView
ってのが使えそうだけど。使ったことはないので詳細はわからん。 <>
名称未設定<><>2008/03/04(火) 20:20:46 ID:+SnoCDKI0<> >>409
407じゃないがいただいた
サードパーティのフレームワーク一覧にサイトとか無いのかなぁ <>
名称未設定<>sage<>2008/03/04(火) 20:21:11 ID:+SnoCDKI0<> >>410
訂正
に→にした <>
名称未設定<>sage<>2008/03/04(火) 20:36:59 ID:Sykmwb7I0<> 仕事で作ったことないから分からないんですが
よそのフレームワークを使うのって結構普通なんですか? <>
名称未設定<>sage<>2008/03/04(火) 20:57:33 ID:Sykmwb7I0<> よその、とはサードパーティのことです <>
名称未設定<>sage<>2008/03/04(火) 22:47:39 ID:JSV4VSBTO<> ライセンス的に問題なければ。 <>
名称未設定<>sage<>2008/03/05(水) 18:39:45 ID:tt+EJr5w0<> ネットのサンプルプロジェクトでたまにフレームワークとか
パレットがリンク切れで開けないのは、そういうことか。 <>
名称未設定<>sage<>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はやっぱり!を一通りやった。
よろしくお願いします。
<>
名称未設定<>sage<>2008/03/05(水) 20:55:37 ID:7i/6IWuN0<> こういうアプリは数学とかの考え方が必要になりそうだな。
いきなり作るのもありだが、まずは普通のGUIアプリから作ったらどうだろうか。 <>
名称未設定<>sage<>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 <>
名称未設定<>sage<>2008/03/05(水) 22:03:52 ID:LKSr6PdH0<> 昨年あたりからちまちまとCocoaをはじめて、ようやく自分の思い通りの
アプリを書けるようになってきた。
Cocoaは一年すぎたあたりから面白くなってくるね。 <>
名称未設定<>sage<>2008/03/05(水) 22:40:29 ID:vzEZ3cLM0<> >>417
数学というか物理というか。どういうアルゴリズムで時間発展させるかが重要かと。
すごく真面目にやるなら運動方程式を数値的に解くんだけど、
もっと楽なアリゴリズムもありそう。
描画はCore Animationで沢山レイヤーを使うとか? でも素朴にNSBezierPathで
四角や線を描くのも勉強になるかも。 <>
名称未設定<>sage<>2008/03/06(木) 07:05:27 ID:DcFGi36n0<> >>416です。
お返事ありがとうございます。
>>417
確かに、書籍のサンプル以外ほとんど自分で作ったことないです。
沢山アプリ作ったり、リファレンス読んだり、そういった慣れもまず必要でしょうね。
>>418
>>416の動画はそこから辿っていったものですが、Xcode3の使い方はだいたい分かって
いたのでスルーしていまいした。すごく参考になりそうです。
>>420
ブロックの動き自体は、はね回って近くの相手に向かって方向を変えるくらいなら
そんなに難しくないのかなと思っています。
ブロックを動かすのに、NSBezierPathで描いて消してを繰り返すのか、何かのアニ
メーション機能を使うのが良いのか...。
<>
名称未設定<>sage<>2008/03/06(木) 09:11:35 ID:OX9pwPIp0<> >>421
>ブロックの動き自体は、はね回って近くの相手に向かって方向を変えるくらいなら
>そんなに難しくないのかなと思っています。
まあ、それっぽく見えればいいだけだろうだから、てきとーにやればいいんだけどさ。
それでも、「それっぽく見える」にはある程度物理的なことも知っておく必要があるかも。
...と思うのは自分にはなまじ物理の経験があるからかもしれないけどな。
ま、とにかく何か作ってみればわかるでしょう。
いやー、ああいうのを見てると、エネルギーとか角運動量とか重心とか気になっちゃうん
だよねー。あれは散逸系かな、みたいな。 <>
名称未設定<>sage<>2008/03/06(木) 10:22:01 ID:yTfeRDc50<> boidでググったら
ttp://tpot.jpn.ph/t-pot/program/101_boid1/index.html <>
名称未設定<>sage<>2008/03/06(木) 11:44:20 ID:ClqeEsY50<> アルゴリズムじゃなくて描画の手段を尋ねてるんじゃないの?
NSBezierPath だと動画の最後くらいたくさん描画すると重くなる。
俺なら OpenGL を使う。 <>
名称未設定<>sage<>2008/03/06(木) 11:59:59 ID:dO5xM4VY0<> >>424
おっしゃるとおりです。
OpenGLですか。ネットで探すと色々と情報転がってますね。
ちょっと勉強してみます。
>>423
お、バウンディングよりおもしろそうです。 <>
名称未設定<>sage<>2008/03/06(木) 12:01:37 ID:yTfeRDc50<> Cocoaスレであれだけと、俺ならSDL(CocoaはGUI限定)かな... <>
名称未設定<>sage<>2008/03/06(木) 12:44:18 ID:w1g9foQc0<> ガベージコレクションを有効にすると、static 宣言してない変数でも、
クラス内で共有できるようになったのですが、static宣言はちゃんとやったほうが
良いのでしょうか? <>
名称未設定<>sage<>2008/03/06(木) 13:48:07 ID:wqpBXVPH0<> Obj-C にクラス static 変数なんてあったっけ ??? <>
名称未設定<>sage<>2008/03/06(木) 16:19:07 ID:GL44wYwb0<> >>424
>アルゴリズムじゃなくて描画の手段を尋ねてるんじゃないの?
>>420 で CA はどうかとちらっと書いた。
試しにすごく簡単なアニメーションをでっち上げてみたが、やっぱ CA いいかも。
ゴリゴリとアニメーションに必要な処理を書かなくていいしね。それにレイヤー増やしても
ほとんど重くならない。
で、こんなのはお膳立てされた API を使うだけなんで、
自分的には時間発展のアルゴリズムの方に興味が行ってたのだった。 <>
名称未設定<>sage<>2008/03/06(木) 16:35:37 ID:dO5xM4VY0<> >>429
度々どうも。
OpenGLで四角の移動を描いてみました。Cocoaの勉強も兼ねているので、Core
Animation ももう少しいじってみて、どれで行くか考えたいと思います。
ちなみに、CAは
ttp://journal.mycom.co.jp/special/2007/coreanimation/index.html
を見てやってみましたが、何故か地球のイメージが真っ白に....サンプルをダウン
ロードして試してみても同じでした。 <>
名称未設定<>sage<>2008/03/06(木) 17:38:06 ID:w1g9foQc0<> CoreAnimationなんてそんなに難しくないんだから、サンプル
が動かないなんて言わないで自分で一から作った方が早い罠。 <>
名称未設定<>sage<>2008/03/06(木) 17:41:41 ID:dO5xM4VY0<> >>431
難しいか簡単かも分からない状況ですw
和訳ガイドがあるのでとりあえずそれも読んでみます。 <>
名称未設定<>sage<>2008/03/06(木) 18:44:42 ID:BLGOYNAq0<> Core Animationって始点と終点がわからない動きは難しいと思うんだけど <>
名称未設定<>sage<>2008/03/07(金) 00:27:58 ID:aYCTFrpT0<> >>433
たとえばどんな? <>
名称未設定<>sage<>2008/03/07(金) 00:39:44 ID:E3qtBVd20<> >>434
416みたいなやつ。途中で他のものが干渉する動きは難しいと <>
名称未設定<>sage<>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。 <>
名称未設定<>sage<>2008/03/07(金) 04:37:14 ID:0QNB2HGn0<> http://developer.apple.com/iphone/program/ <>
名称未設定<>sage<>2008/03/07(金) 04:41:56 ID:Cy1QALny0<> 重くて開かん... <>
名称未設定<>sage<>2008/03/07(金) 04:43:07 ID:0QNB2HGn0<> ↑繋がりにくいな。
iFundて何するんだ?
http://www.kpcb.com/initiatives/ifund/index.html <>
名称未設定<>sage<>2008/03/07(金) 10:38:38 ID:6pB8sYlc0<> >>437
これの影響か、
http://developer.apple.com/jp/documentation/
以下のページは全部404になってますね。
まさかホントにファイルがない訳ではないとは思うが。 <>
名称未設定<>sage<>2008/03/07(金) 11:27:25 ID:gbj3Egm+0<> IBでウィンドウを作ってそれようのNSWindowControllerのサブクラスを作った場合
これはFile's Ownerに結びつけるのと新規にNSObjectをNibファイルに作ってそれに
結びつけるのとどっちがいいんでしょうか?
サンプルとか見てると両方のパターンがあるみたいで場合分けの考え方が分からない
のですが...? <>
名称未設定<>sage<>2008/03/07(金) 12:00:36 ID:vhkbt9ap0<> 繋がったよ
2.1GB!
だがダウンロードは遅くない <>
名称未設定<>sage<>2008/03/07(金) 12:09:47 ID:5LaZ8yUF0<> 600MB あたりで止まった。
web でドキュメントはよめるようになったよ。
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ <>
名称未設定<>sage<>2008/03/07(金) 12:26:10 ID:5LaZ8yUF0<> ADC on iTunes にビデオも一杯出てる。Online 会員で見れるよ <>
名称未設定<>sage<>2008/03/07(金) 13:34:45 ID:vhkbt9ap0<> インスコ完了
iPhoneシムおもすれ〜
けど、くぱぁはどうすんだ? <>
名称未設定<>sage<>2008/03/07(金) 13:42:52 ID:5LaZ8yUF0<> 何回やっても 600MB あたりでとまります(涙)
プロバイダにとめられてるのかな? <>
名称未設定<>sage<>2008/03/07(金) 14:27:10 ID:vhkbt9ap0<> オーガナイザでtouchに自作アプリ入れようとすると34のエラーになるのはなんでだ?
設定が足らんのか、まだ入れちゃダメなのか・・ <>
名称未設定<>sage<>2008/03/07(金) 14:46:52 ID:5LaZ8yUF0<> ファームウェア v2 が出ないと無理なんでは? <>
名称未設定<>sage<>2008/03/07(金) 14:49:44 ID:vhkbt9ap0<> そかそか、そりゃそうだわな <>
名称未設定<>sage<>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のデベロッパ登録が必要で、それはまだ日本からはやってくれないと、、、
<>
名称未設定<>sage<>2008/03/07(金) 17:15:37 ID:x/MNsQEt0<> >>450
同じとこ見てた。
ここで言う、CSRファイルをうpするところがiPhoneDevCenterで
みつけられなくて途方に暮れていたんだが。$99のメンバーシップ持ってないと
駄目っつーことなのか。 <>
名称未設定<>sage<>2008/03/07(金) 23:01:25 ID:aYCTFrpT0<> 質問させてください。
NSPoint から x 座標だけを int 型で取り出すには、
どうしたらいいのでしょうか。
あと、NSPoint とかは「関数」ですよね?
どうしてメソッドと関数が別々に存在するのか、よく分かりません('A`)
よろしくお願いします。 <>
名称未設定<>sage<>2008/03/07(金) 23:05:28 ID:rpprbSl10<> >>452
まずはCを覚えて下さい
NSPointは構造体
キャストすりゃintで取れる
ググり方はわかるだろ? <>
名称未設定<>sage<>2008/03/07(金) 23:16:22 ID:aYCTFrpT0<> Cの知識が中途半端なままCocoaやってるのがいけないですね。
構造体、キャストについては詳しく調べます。
ありがとうございました。 <>
名称未設定<>sage<>2008/03/07(金) 23:44:19 ID:xpaY/lvn0<> Objective-CをやるためにCを熟知する必要も無いけど
ここまで分かってない人には、ちと厳しい。 <>
名称未設定<>sage<>2008/03/08(土) 01:44:56 ID:1GYGgbzP0<> たった一行ですむところをグダグダ駄レス垂れて人を寄せ付けないのがMacクオリティ <>
名称未設定<>sage<>2008/03/08(土) 03:10:38 ID:7oU8e6yS0<> >>456
.NET(笑)でもやってろよ <>
名称未設定<>sage<>2008/03/08(土) 05:47:15 ID:GTeywC3/0<> >>456は煽り口調だけど実際問題門は狭いと感じる
単純に情報量が少ないのもあるけど
ド素人が気軽に質問できる場ってのがほとんどないんだよなあ <>
名称未設定<>sage<>2008/03/08(土) 06:01:05 ID:TjnYWOuM0<> まーたしかに、無いね <>
名称未設定<>sage<>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 のエンティティを
作成していくメソッドとして、以下のようなものを書きました。
- 続く
<>
460<>sage<>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"]; // 問題の行
}
}
}
- 続く <>
460<>sage<>2008/03/08(土) 10:24:57 ID:EfFWQU2+0<> - 続き
これで思い通りに動いたのですが、一度データをファイルにセーブして
(NSSQLiteStoreType)、次にアプリを立ち上げると uncaught exception で
立ち上げと同時にクラッシュします。
// 問題の行 のところをコメントアウトするとクラッシュしなくはなりますが、
当然、subData 群に mainData が設定されません。
セーブしなければ問題なく動いているのですが、// 問題の行 のところは、
何が良くないでしょうか。
長文すみません <>
名称未設定<>sage<>2008/03/08(土) 16:00:18 ID:VHM+i6Ve0<> 亀レスで申し訳ないですが>>407です。
>>408 >>409 サンクス。
特に
ttp://www.zathras.de/angelweb/sourcecode.htm#UKDistributedView
はかなり使えた。
にしてもみんなどうやってこんなサイト見つけてるんだろ。
クラス名でググってもヒット数3件とかでて困る。 <>
名称未設定<>sage<>2008/03/08(土) 16:36:53 ID:HDUoXXFz0<> >>460
何がいけないのか解りませんが
NSMutableSet *subData = [mainDataMO mutableSetValueForKey:@"subData"];
[subData addObject:newDataMO];
としてもエラーが出ますか?
それから、文脈からしてone-to-many relationshipなのは
subDataの方ですよね。
<>
460<>sage<>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 が複数です。
<>
名称未設定<>sage<>2008/03/08(土) 18:14:09 ID:HDUoXXFz0<> >>465
464です
このようなrelationshipはoutlineViewのデータでよく使用していますが、
(parent, children)
こんなトラブルは経験がありません。
他の原因があるのではないでしょうか?
<>
名称未設定<>sage<>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しか変更できない。 <>
名称未設定<>sage<>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 を変更してみては。 <>
名称未設定<>sage<>2008/03/09(日) 01:59:08 ID:GY3Lgh9g0<> >>461
>NSManagedObject * mainDataMO == nil; // 最初は nil
==だからじゃねーかな。 <>
名称未設定<>sage<>2008/03/09(日) 14:31:34 ID:DQPknXlz0<> >>467
私がやってるのは
[tableColumn dataCell]でCellを拾ってきて
Titleを書き換えてるようです。
(初学者なんで正攻法かどうか分かりません) <>
460<>sage<>2008/03/09(日) 14:42:41 ID:Cu0DF2Ru0<> >>469
すみません、ここにポストするときに書き損ねました。
ソースでは = になってます。
>>466
クラッシュさせているのは、このデータが NSArrayController 経由で
バインディングされている NSTableView のようなのですが、
よくわからないのは、データをセーブする前までは何ともないころです。
セーブ前とセーブ後で何かの状態が変わっているのだと思いますが、
セーブまわりは Core Data が自動的にやっている部分なので
何が起きているのか掴めません。 <>
名称未設定<>sage<>2008/03/09(日) 17:41:30 ID:GY3Lgh9g0<> >>471
ライブラリのApplication Supportフォルダにセーブデータが
あるからテキストエディタで開いて確認してみたら?
属性に一時を設定して保存されていないとかでは。 <>
名称未設定<>sage<>2008/03/09(日) 21:08:06 ID:/Qh7Fzc50<> >>471
484です
お話から類推するにcontextには問題なくて、
persistentStoreCoordinatorに問題があるのでしょう
SQLiteをxmlに変更してどうなるか見てみてはどうでしょうか?
<>
名称未設定<>sage<>2008/03/09(日) 23:50:36 ID:EUKVyO1y0<> クラス内でデータを保存しておきたくて、インスタンス変数を作ってそこに格納しました。
しかし、その変数にアクセスするためにインスタンスメソッドを呼ぶと、当たり前ですが初期化と
同時に変数のデータがリセットされてしまいました。
そこで、クラスメソッドにしてみましたが、これも当たり前ですがインスタンス変数には
アクセスできません。
アップルのObjective-Cのドキュメントを参照すると、
"インスタンス変数に対応する「クラス変数」はありません(中略)
クラスのすべてのインスタンスがデータを共有するには、何らかの外部変数が必要になります。"
とありますが、「何らかの外部変数」とはいったいどういう意味なのでしょうか。
static は推奨されないと書いてありました。
<>
名称未設定<>sage<>2008/03/10(月) 00:31:42 ID:7PSG2vmy0<> >>474
ドキュメントに書いて有る通り,クラスの外に変数が必要ということでしょ?
C++ の static メンバ変数とごっちゃにしてませんか?
C++ を理解しているなら Singleton を作って共有データを保持しとけば良いだけ. <>
名称未設定<>sage<>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 の
結果にはまったく影響しませんでした。どのようにすべきでしょう? <>
名称未設定<>sage<>2008/03/10(月) 14:29:51 ID:DECUaAlT0<> × オーバライド
◯ オーバーライド <>
名称未設定<>sage<>2008/03/10(月) 14:50:48 ID:DECUaAlT0<> 自己解決しましたです
(なんか最近2chで質問してしばらくすると自己解決する事が多いな・・・粘りが足りん)
上の方法でいいようです。
cellSize または cellSizeForBounds をオーバーライドすれば、sizeToFIt に影響してました。
MyButton をさらにサブクラス化していて、そこでの sizeToFIt のオーバーライドが
邪魔をしていただけでした。 <>
名称未設定<>sage<>2008/03/10(月) 15:16:14 ID:NskRVeOH0<> >>478
告白デバッグというやつだな。 <>
名称未設定<>sage<>2008/03/10(月) 15:16:15 ID:PooR7Pns0<> >>477
英語の発音をカタカナで書くのに間違いも正しいも無いだろう
<>
名称未設定<>sage<>2008/03/10(月) 15:48:26 ID:48DvrBUu0<> >>479
有言実行、かな。 <>
名称未設定<>sage<>2008/03/10(月) 19:34:39 ID:GSP6fbie0<> iPhoneSDKリリースでこのスレもさっぱりな人が大量発生の予感。 <>
名称未設定<>sage<>2008/03/10(月) 20:43:42 ID:sqcI9fDe0<> 本当にさっぱりな人は、iPhone SDKって何?へぇそんなのもあるんだね
程度でここまで来ないと思われ。
少なくともCocoaってキーワードで検索しないんじゃね? <>
名称未設定<>sage<>2008/03/10(月) 20:59:40 ID:zuzCNJpg0<> あらゆるものをiPhoneに移植しろと要求してくる馬鹿が大量発生するのは間違いない。 <>
名称未設定<>sage<>2008/03/10(月) 22:25:34 ID:SgkU2d620<> Xcode スレのほうが適切なのかもしれないですが、現状 Cocoa しか使っていないので
こちらでお聞きします。iPhone SDK に付属?しているという、Xcode 3.1 を使った方
いらっしゃったら、使用感をお聞かせ願えませんか? <>
名称未設定<>sage<>2008/03/10(月) 22:26:41 ID:8HoClUUJ0<> >>474
>static は推奨されないと書いてありました。
すいませんがこの記述がある場所を教えてください。
<>
474<>sage<>2008/03/10(月) 22:55:29 ID:sqcI9fDe0<> >>475
おっしゃる通り、C++からのスイッチなので、混乱していますorz
もうちょっと研究してみます。
>>486
その記述は、私の誤読でしたorz すみません。
「static として宣言されていない外部変数を使用することもできますが、別々のオブジェクトにデータをカプセル化するには、静的な変数によって有効範囲を限定するほうが有効です」
の解釈を間違えてました。 <>
名称未設定<>sage<>2008/03/10(月) 23:33:28 ID:oJZv+ycP0<> >>485
グッと来る使用感になった。今すぐインストールするべき。 <>
名称未設定<>sage<>2008/03/10(月) 23:36:50 ID:EUWBMSva0<> >>485
3.1の新規プロジェクトとか見た目変わり過ぎワロタw
仕事で使ってる人には余計なストレスになるのでおすすめしない <>
名称未設定<>sage<>2008/03/10(月) 23:39:26 ID:EUWBMSva0<> MightyMouseの下スクロールがきかなくなってるから
アイコン表示マジでイライラする <>
名称未設定<>sage<>2008/03/11(火) 00:24:00 ID:4wLW+73S0<> >>488, 489
グッとくる使用感、ってどんなんですかw ゴテゴテした感じという事でしょうかね?
サブマシンに入れていじってみよう。どうもありがとうございました。 <>
名称未設定<>sage<>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).
「新規」系メニューの改悪さえなければいい出来だと思うんだが… <>
名称未設定<>sage<>2008/03/11(火) 00:48:53 ID:4wLW+73S0<> >>492
わぁ、どうもありがとうございます。共存可能なら、メインに入れるか… <>
名称未設定<>sage<>2008/03/11(火) 01:46:20 ID:Vh8rC2V30<> え?3.1 ってMac用のCocoaアプリの開発にも
使えるってこと?
iPhoneとMacのXcodeって別物だと思ってた('A`) <>
名称未設定<>sage<>2008/03/11(火) 02:23:09 ID:EDetKQjU0<> >>494
デフォルトのインストール先に入れると上書きされちゃうんじゃなかったかしら
ちなみにはっきりと「β」って書いてあるから仕事で使ってる人は別インストールを推奨 <>
名称未設定<>sage<>2008/03/11(火) 03:19:44 ID:Ib5Wef5y0<> ちょっとだれかさー作ってもらいたいものがあるんだけど
・ファインダーウィンドウのアイコン表示時(のみ)にアイコンとアイコンの
スペースをダブルクリックすると、上(親ディレクトリ)の階層へ
・ファインダーウィンドウのタイトルをデフォルトでコマンドクリック
(階層が表示される)
・windowsと同じようにバックスペース(delete キー)で上の階層へ
GPLで
あ、儲けたい人は儲けてどうぞ、需要の方は知りませんが
お願いします。 <>
名称未設定<>sage<>2008/03/11(火) 08:31:02 ID:I553ZzBY0<> >>494
XCode がかなり拡張されて、いろんな cpu に対して開発できるようになっただけだよ
かなり嘘だけど、64bit/32bit/ppc/intel だけじゃなくて、
iPhone 用にもコンパイルできるようになっただけだと思えばいいです
>>496
ふたつめは右クリックすればいいのでは?
ひとつめとみっつめは Unsanity が APE のレパード版を完成させれば
すぐできるはず。 <>
名称未設定<>sage<>2008/03/11(火) 08:36:33 ID:I553ZzBY0<> あと、階層行き来するのならカラムビューでいいのではと
個人的におもうんですが。
表示→パスバーを表示、でフルパスも下に表示できるし。 <>
名称未設定<>sage<>2008/03/11(火) 15:17:26 ID:/IYxitYz0<> iPhoneSDKやXcode3.1にはNDAがあるから
詳細を書いてはいけない希ガス <>
名称未設定<>sage<>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
<>
名称未設定<>sage<>2008/03/11(火) 19:59:06 ID:Vh8rC2V30<> >>500
もらった。ありがとう!! <>
名称未設定<>sage<>2008/03/11(火) 21:22:53 ID:CejYYiPS0<> >>500
プロジェクトファイルをあげる時はビルドファイルを消した方がいいよ
まぁ光回線の世の中じゃあんま関係ないか
3.1の変更メモ(NDAに抵触しないよな?)
3.1でプロジェクトを作った時、StandardAboutPanelに作成者の名前が記載されない(アプリのアイコンと名称とバージョンのみ記載)
従来通りにするにはInfoPlist.stringsに
NSHumanReadableCopyright = " 文字列";
を自分で追加してやる必要がある。 <>
名称未設定<>sage<>2008/03/11(火) 21:42:28 ID:7VENjfAw0<> >>500
すげーな。これだけしか書かなくても動くのか。 <>
名称未設定<>sage<>2008/03/11(火) 22:09:50 ID:wD84fN+S0<> >>500
THANX
これだけで動くのか、すげ〜な。 <>
名称未設定<>sage<>2008/03/11(火) 22:30:49 ID:TfmSl3dE0<> >>502
ターゲットのクリーニングだけじゃだめなんですね。
アップし直しました。 <>
名称未設定<>sage<>2008/03/11(火) 22:40:00 ID:TfmSl3dE0<> >>500です。
背景はQuartz Composerのファイルなのでプログラムコードは書いていません。
ADCにあるCocoa Slideというサンプルから拝借したものです。
Coer AnimationはおろかCocoa自体勉強中なので、これだけで動くという
事がぴんと来ないですw
<>
名称未設定<>sage<>2008/03/11(火) 22:56:33 ID:RBLAmCn20<> あるある <>
名称未設定<>sage<>2008/03/11(火) 23:35:52 ID:I553ZzBY0<> GC つかうと更に短くなる希ガス <>
sage<><>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
ご存じの方がいらっしゃいましたら、どうかご教授願います。
<>
509<>sage<>2008/03/12(水) 09:03:52 ID:nqBscnd/O<> orz <>
名称未設定<>sage<>2008/03/12(水) 09:40:29 ID:Q1HsIWk50<> NSClipViewのScrolToPointで指定した座標までスクロールよ。 <>
名称未設定<>sage<>2008/03/12(水) 11:59:00 ID:60uy/TBm0<> NSButtonにsetKeyEquivalent:で矢印キー(NSLeftArrowFunctionKey)を設定、
実際に動かしてみると一度キーを押すだけで二度反応してしまうのですが
これは仕様なんでしょうか。 <>
名称未設定<>sage<>2008/03/12(水) 19:45:22 ID:jZeE4+zn0<> >>512
あ、それ俺もなった。 <>
名称未設定<>sage<>2008/03/14(金) 15:04:07 ID:XQZPcYKG0<> 質問お願いします。
自作でポップアップするパネルを作りたいんですが、
(2ちゃんねるブラウザのスレ番ポップアップみたいな)
実装方法が分かりません。
タイトルバーのないパネルの作り方を教えてください。
よろしくお願いします。 <>
名称未設定<>sage<>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 というコードがあるよ。 <>
名称未設定<>sage<>2008/03/14(金) 17:13:03 ID:XQZPcYKG0<> >>515
ありがとうございました。
とりあえずNSWindowとNSPanelのリファレンスは参照したんですが、
見落としていたようです。 <>
名称未設定<>sage<>2008/03/14(金) 18:56:24 ID:7+f99PMo0<> よく環境設定ウインドウでツールバーから設定カテゴリを選ぶと
項目の量に合わせてウインドウの大きさが変化するようなのがありますが、
あれはそれぞれのNSToolbarItemとかNSTabViewItemのidentifierごとに
コード内でウインドウサイズを決め打ちで保持しているんでしょうか? <>
名称未設定<><>2008/03/14(金) 19:37:56 ID:FgGauQ6O0<> >517
"DBPrefsWindowController"でググれ
<>
名称未設定<>sage<>2008/03/14(金) 21:48:20 ID:7+f99PMo0<> >>518
ありがとうございます。
なかなか面白そうですね、適当に弄ってみます。 <>
名称未設定<>sage<>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個くらいで目に見えてもたついてきます。
<>
名称未設定<>sage<>2008/03/15(土) 01:29:29 ID:Ud88XN1T0<> 面白いね。銀のiMac 2GHz + Mem3GB + RADEON 2400で200個の状態でもたつきはありません。 <>
名称未設定<>sage<>2008/03/15(土) 11:27:46 ID:Q2wKRYm50<> >>520
確かに気持ち悪いですね。彼女に見せたら寝込んでしまいましたww
ソースですが、ボールクラスを作って自分の位置や形、色を保持しておくとプログラムが綺麗になりますよ。
あと、動きをコントロールするモーションコントローラーも別クラスにしておけば
動きを後から簡単に変更出来るようになります。
<>
名称未設定<>sage<>2008/03/15(土) 13:45:30 ID:pgbuH1CZ0<> SpriteWorldを思い出してしまった。
blitzの高速化のための巨大switch...w <>
名称未設定<>sage<>2008/03/15(土) 15:52:37 ID:psR/Irvj0<> Cocoaバインディングについて質問させて下さい
NSTableViewとNSArrayControllerをCocoaバインディングするとテキストデータなどの管理・表示が
楽になりますが、扱うデータをアイコン付テキストなどのカスタムデータにすることは可能でしょうか?
通常カスタムデータはNSCellを継承して独自のクラスを作ってdrawInteriorWithFrameをオーバーライド
して描画すると思いますが、これをCocoaバインディングしたNSTableViewから呼ぶ方法はあるでしょうか? <>
名称未設定<>sage<>2008/03/15(土) 17:06:31 ID:isnlEsRm0<> >>524
アイコン付テキストの場合にはCoreRecipesのように
NSAttributedStringをバインドするのが一番簡単でしょう。
一般的にはバインドできるオブジェクトはひとつだけなので、
アイコンとテキストのように複数のオブジェクトをバインドするには
NSDictionaryとかNSArrayの形でバインドすることになります。
モデルにアクセッサを書いて、NSCellのsetObjectValueを上書きすれば可能となります。
<>
名称未設定<>sage<>2008/03/15(土) 19:01:29 ID:cF4/7CHf0<> CoreData ってものがいまいちつかめないんですが。
モデルにあたる部分のコーディングを楽にするってことは分かるんですが。
たとえばAという配列とBという配列があって、Aの要素を一つBに移動したり、
交換したりといった動作は、コーディングなしでCoreDataで処理することが
できるんでしょうか。 <>
名称未設定<>sage<>2008/03/15(土) 19:08:44 ID:en7em3SU0<> >>524
IBのバインディングだけで完結させたいのか、そもそもNSTableView
のカラムに
アイコンつきテキストを表示させる方法が知りたいのかによりますが、
後者ならデータソースのクラスを作って対象のカラムをカスタムセルにして
処理を記述すればできます。 <>
名称未設定<>sage<>2008/03/15(土) 19:48:13 ID:psR/Irvj0<> >>524です
やりたいことはビットマップとテキストが混在したデータを一覧表示させることです
このデータ自体はディスク上のファイルにあります
このデータを表現する既存の型はないので独自のクラスに読み込んで
そのポインタをNSTableViewに渡して管理したいと思いました
で、管理はフレームワークに任せて描画するときだけ自前の処理で行えば効率的かと思いました
実際Windowsで同じものを作っていて、そこでは描画関数だけを書けば済んでいます
それで最初はいろいろ調べていて、NSCellとNSTableViewの両方をサブクラス化して必要な
メソッドをオーバライドすれば良いらしいと分かりました。しかし、それよりもCocoaバインディング
を使った方がデータの管理は効率的らしく、というかCocoaらしそうだったので>>524を書きました
どうもうまく説明できなくてすいません
その後もいろいろ調べていてこの場合はCocoaバインディング使わない方が手っ取り早いのかなと
思い始めました <>
名称未設定<>sage<>2008/03/15(土) 20:16:36 ID:dE2MmrEV0<> >>512
200個で平気ですか。アニメーション機能は使っていないので、グラボより
CPUパワーの違いが出るんでしょうね。
>>522
彼女さんは元気になられたでしょうか(^-^;
アドバイスありがとうございます。手直ししてみます。
>>523
それ、どういうやつですか? <>
名称未設定<>sage<>2008/03/15(土) 21:30:05 ID:Ftzr6OvS0<> >>528
テキストとビットマップを別のカラムに表示するってのじゃ駄目なのか? <>
名称未設定<>sage<>2008/03/15(土) 21:43:15 ID:psR/Irvj0<> >>530
英単語を発音記号+ストレス符号付文字で表現したようなデータを一覧表示させたいんです
各セルごとに文字とビットマップがランダムに混在したデータが入るのでカラム別にはできないです
CocoaバインディングにこだわらなければNSCellとNSTableViewをサブクラス化すれば
書けそうなので明日その方向で試してみようかと思います <>
名称未設定<>sage<>2008/03/15(土) 21:50:40 ID:ouakLezg0<> 発音記号なら普通に Unicode にあるよ?
ビットマップをつかわないでも文字だけで済むとおもいます。
編集→特殊文字...
を開いてみてみてください。 <>
名称未設定<>sage<>2008/03/15(土) 22:02:23 ID:psR/Irvj0<> >>532
元データが独自にビットマップを持っていてそれに独自のIDが割り振られているので
どのビットマップがどの発音記号に該当するかは1つ1つ目で見て変換テーブルを作らない
とフォントに代替できないんです。また、アクセントの位置を符号化したビットマップとか
文字にはできない記号とかもあるんで...
というか要はアイコン付テキストと同じ考え方でアイコンの出現位置と数がテキスト内で
ランダムになるだけなのでそんなに難しい事ではないはずだと思います。どうもCocoa
バインディングにこだわりすぎて自分の中で難しくしてしまったみたいです <>
名称未設定<>sage<>2008/03/15(土) 22:32:14 ID:Ftzr6OvS0<> >>533
それなら本質的な問題はNSTableViewのサブクラスで独自のビューを作ることだね。バインディングはその後考えればいい。 <>
名称未設定<>sage<>2008/03/15(土) 22:42:06 ID:ouakLezg0<> >>533
なるほど。
というか画像文字まじりのは NSAttributedString で出来るんでは?
まあ画像の積み上げとかやってるとだめだとおもいますが。
(発音記号の画像の上にアクセント記号の画像をおくとか。)
ただ、できるかぎりはフォントで済む部分は画像でなくてフォントにしたほうが
ソフトの出来上がりが綺麗になるとおもいます。 <>
名称未設定<><>2008/03/16(日) 00:10:26 ID:5qNs3rin0<> >>533
とりあえず、NSCellのサブクラスを作り、-[NSCell objectValue]を参照しながら、文字と画像の混じりの描画を行う。
それを、-[NSTableView tableColumnWithIdentifier:@"hoge"]で取得したカラムに、-[NSTableColumn setDataCell:MyCell]とやってセットする。
あとは、テーブルカラムのvalueにバインドしてやれば、NSCellのobjectValueに「文字画像混じりオブジェクト」がセットされる。
という流れになると思うのだが。 <>
名称未設定<>sage<>2008/03/16(日) 06:12:38 ID:nM97Vtir0<> >>520
Core Animation をよく知らないけど、こういう壁で反射するだけの運動なら
壁といつ衝突するかは簡単に計算できる訳だから、それが始点と終点ということではないの?
いずれにせよ Core Animation が使いにくいなら、普通に(?) OpenGL とか?
大抵のOSで動くから、とりあえずサンプルはいろいろありそう。 <>
名称未設定<>sage<>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
メソッドを書くだけでうまくいきそうです
これなら当初考えていた描画だけは自前でやってデータ管理はフレームワークに任せてコーディング量を減らせることができます
みなさんありがとうございました <>
名称未設定<>sage<>2008/03/16(日) 08:56:09 ID:Ny1QM+Nx0<> >>537
確かに壁の反射だけならCore Animationで大丈夫だけど、途中から他のオブジェクトが干渉する動きになってるじゃん <>
名称未設定<><>2008/03/16(日) 11:13:04 ID:JE2IUdsR0<> CATransactionを使うと、アニメーションを一時的にOFFにすることができます。
CALayerって、OpenGLのポリゴンとして実装されているっぽいので、OpenGLを直接使うよりは、CALayerを使った方が楽な気がします。
<>
名称未設定<>sage<>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を書かなくてもうまく行きますが、消費メモリが増えるみたいです。
<>
名称未設定<>sage<>2008/03/16(日) 15:41:11 ID:l9UoH/Od0<> Core Data アプリで(ドキュメントベースじゃない方)、アプリを終了するとき
(データがセーブされるとき?)「(ある entity が持つ関連の名前)は有効ではありません。」
というアラートパネルが出てデータがセーブできません。
関連が「有効ではない」とは、どういう意味なのでしょうか。
どうすれば有効?にできるのでしょうか。 <>
名称未設定<>sage<>2008/03/16(日) 21:37:41 ID:r765AxJR0<> MVCのなんたるかを学ぶのに良いソースってありませんか?
ADCのチュートリアルでMVCそれぞれ一個ずつのパターンはわかったんですが
モデルやビューの数が増えた場合にコントローラをいくつ作るか、
どのように繋げるかといった部分がピンときません。 <>
名称未設定<>sage<>2008/03/16(日) 21:48:11 ID:iJLWVTDd0<> >>541
べつにアイコン本体はリサイズされません。その他の質問は、
retain / release をなにか間違っているのが原因だと思いますが、
もうすこしそのあたりのソースを書いてくれますか?
もしくはクラッシュしたときのスタックトレースとか。
<>
名称未設定<>sage<>2008/03/16(日) 22:08:17 ID:FO/H1uNc0<> >>541
なぜそれでクラッシュするのか
プロジェクトファイルを上げてみたらどうでしょう?
ちょうど自分もおととい同じくファイルのアイコン表示やってました。 <>
名称未設定<><>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がうまく繋がるようにしてください。
<>
名称未設定<>sage<>2008/03/16(日) 22:54:19 ID:v0hBd3uH0<> >>546
なんか、初めて知ることばっかりだw
コントローラとnibファイルが1対1で対応するなんて知らなかった('A`)
こういうことはAppleのドキュメントに書いてあるんでしょうか。 <>
名称未設定<>sage<>2008/03/16(日) 23:35:58 ID:iJLWVTDd0<> いや、べつに一対一にする必要もないと思うけど。 <>
名称未設定<><>2008/03/16(日) 23:47:41 ID:JE2IUdsR0<> >>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にしないと、思わぬ落とし穴にハマるらしい。。
<>
名称未設定<>sage<>2008/03/16(日) 23:59:19 ID:r765AxJR0<> >>546
レスありがとうございます。
やっぱりそういうソースはなかなか無いですか。
いくつか有名なアプリのソース覗いてみましたが複雑過ぎてわかりませんでした。
NSWindowControllerのサブクラスを作るのとNSWindowそのもののサブクラスを作るのと
どう違うのかいまいちわかっていなかったんですが
NSWindowControllerが別nibファイルのFile's owerになることで
メインnibファイルからの橋渡し役になるといった感じなんでしょうか。
NSDocumentはまだ全く触れてないのでドキュメント読んでみます。 <>
名称未設定<><>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で受け取るようにしてください。
<>
名称未設定<>sage<>2008/03/17(月) 01:29:26 ID:d3uQIIZr0<> 質問です。
ホットキーの処理をしようと思うのですが、
NSApplicationのsendEventで拾ったイベントを
NSApplicationのmainWindowで得られるウィンドウへ送りたいです。
しかし、アプリがactiveじゃないとmainWindowが返らないので
この辺りの処理は、自力でNSApplicationのwindowsあたりから
求めるしか無いのでしょうか? <>
名称未設定<>sage<>2008/03/17(月) 03:57:45 ID:YlVYmhb+0<> 常駐してキーイベントを取得したいってことでしょうか? <>
名称未設定<>sage<>2008/03/17(月) 04:51:06 ID:d3uQIIZr0<> >>553
取得は出来てるんですが、それを、開いている最前面の(メイン)ウィンドウ
に送りたいんです。バックグランドの状態で
メインウィンドウを特定する方法ありますか? <>
553<>sage<>2008/03/17(月) 07:42:31 ID:ioyW7tx20<> >>554
NSApplicatioinを見たら非アクティブ時はmainWindowを返さないって書いてありますね。
アプリが非アクティブになる時のノーティフィケーション NSApplicationWillResignActiveNotificationで
MyObjectにmainWindowを保持してやるのはどうでしょう?
それよりバックグラウンドでキーを取得する方法を教えてくださいw <>
名称未設定<>sage<>2008/03/17(月) 07:45:39 ID:JY9v+N3k0<> Cocoa Hotkey
ぐぐれカス <>
名称未設定<>sage<>2008/03/17(月) 07:49:25 ID:ioyW7tx20<> うわ、もう答えるのやめよ <>
名称未設定<>sage<>2008/03/17(月) 07:50:42 ID:Svvodx890<> ぐぐれカスと言われただけで反応してしまう、そんなことでは
荒いインターネッツを渡っていけませんよ。 <>
名称未設定<>sage<>2008/03/17(月) 08:05:22 ID:0SJ4dqDe0<> ゆとりくせぇ <>
名称未設定<>sage<>2008/03/17(月) 08:24:58 ID:d3uQIIZr0<> >>555
やはり、そうなりますか。
ttp://homepage.mac.com/mkino2//cocoaProg/Carbon/CarbonEvent/CarbonEvent.html#registerHotKey <>
名称未設定<>sage<>2008/03/17(月) 21:27:55 ID:JRVvBDeU0<> あーもうCocoaはまじでさっぱりだぜ
さっぱり過ぎてイライラしてきた
コーヒー飲んでくる <>
名称未設定<>sage<>2008/03/17(月) 21:54:15 ID:2j49Kzyi0<> Javaもさっぱりw <>
名称未設定<>sage<>2008/03/17(月) 22:18:35 ID:0SJ4dqDe0<> きれいさっぱりやめちまえ <>
名称未設定<>sage<>2008/03/17(月) 22:41:00 ID:Svvodx890<> そういえば Cocoa はこってりしてるものであって
さっぱりというのは変だよね??? <>
名称未設定<>sage<>2008/03/17(月) 22:59:50 ID:9LfCkT9Q0<> 日本語って難しいね <>
名称未設定<><>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 <>
名称未設定<>sage<>2008/03/17(月) 23:42:41 ID:JRVvBDeU0<> 目的のアクションがFirst Responderのプロパティに無い
http://cocoawiki.aerial.st/?First%20Responder
やっと穴から抜け出せた
こんなん気付かないっての
<>
名称未設定<>sage<>2008/03/18(火) 01:33:41 ID:0q7ZIMW90<> First Responderは入門時のちょっとしたハードルだよね
解っちまえばなんて事はないんだが <>
名称未設定<><>2008/03/18(火) 02:00:50 ID:EJDxaaux0<> >>566
plaginって……。 <>
名称未設定<>sage<>2008/03/18(火) 07:49:27 ID:Ka+Z8k+50<> https://bugzilla.mozilla.org/show_bug.cgi?id=357670
もしかしてこのスレに解決できる人いたりする?? <>
名称未設定<>sage<>2008/03/18(火) 23:42:19 ID:Pbz0L/oN0<> >>544 >>545
遅くなりましたがレスありがとうございます。
クラッシュはコードミスのようでした。(retainせずにreleaseをかましていた) <>
名称未設定<>sage<>2008/03/19(水) 00:24:31 ID:2u7UcMMQ0<> OS 10.5.2 Xcode3.1 IB3.1使用でwebKit.frameworkを使っています。
以前はIB上でwebViewを出しインスタンス化すれば、バインドするコントローラーの一覧にwebViewが表示され、
普通にバインディングできていたのですが、今はなぜかそれができなくなってしまっています。
バインドするコントローラーにwebViewがでなくなってしまっています。
どのようにすれば良いのでしょう、お助けください。 <>
名称未設定<>sage<>2008/03/19(水) 01:06:49 ID:OxeGc8Ke0<> >>570
それ Cocoa じゃなくて Carbon じゃね?
TSM まわりか... 大昔になんかやったな。
2.0で動いてるんならそのコードを3.0でも使えばいいとかそういう簡単な話じゃないのかね。 <>
名称未設定<>sage<>2008/03/19(水) 03:51:26 ID:r5J3G60+0<> モデルのインスタンス変数にビューをバインディングしている場合、
モデル自身がインスタンス変数を書き換える時に
_hoge = value;
だと変更がビューに適応されず、
[self setHoge:value];
だと適応されました。
バインディングに対応させつつ、外部から変更されたくない(-setHoge:を作りたくない)
インスタンス変数の場合はどのようにすればいいのでしょうか。 <>
名称未設定<>sage<>2008/03/19(水) 07:32:40 ID:jXpGxGc90<> >>574
Objective-C ではそんなことはできないです。
Binding 使ってる時点で外部から書き換えてるということだと思いますが ... <>
名称未設定<>sage<>2008/03/19(水) 07:58:38 ID:6SrUt3+f0<> >>574
_hoge = value; の行を
[self willChangeValueForKey:@"hoge"];
[self didChangeValueForKey:@"hoge"];
ではさむ。 <>
名称未設定<>sage<>2008/03/19(水) 11:59:14 ID:YsZYYm1u0<> >>573
Firefox 2まではCarbon使ってたみたいなんだけど、
Firefox 3はCocoaベースらしい。
<>
名称未設定<>sage<>2008/03/19(水) 12:40:52 ID:hNYu1h+e0<> 質問です。
アップルのDVDプレイヤーのコントローラのように引き出しを
開閉してボタン類を表示/非表示できるようにしたいのですが、
どのような実装方法があるでしょうか。
<>
名称未設定<>sage<>2008/03/19(水) 13:51:57 ID:zCALDrQJ0<> >>578
気合 <>
名称未設定<><>2008/03/19(水) 14:53:13 ID:LtiyT8bq0<> >>578
気合いを入れながらグーグルで"cocoa drawer"と検索すると色々と出て来たけど。
これとは違うの?
不定形ウインドウでやりたいならば、もう少し気合いを入れてキーボードを叩くと
他にも出てくるかもよ。
<>
574<>sage<>2008/03/19(水) 15:38:57 ID:r5J3G60+0<> レスありがとうございます。
>>575
ネットワークからデータを継続的に受信(送信はできない)して
その状態を表示したかったのです。
>>576
おお、全く問題なくうまくいきました。
ありがとうございます。 <>
名称未設定<>sage<>2008/03/19(水) 16:47:21 ID:hNYu1h+e0<> >>578,>>579
なにかうまい方法はないかと思って質問しました。
とりあえず気合いと不定形ウィンドウで、全く同じ
外観・挙動を再現できました。
ありがとうございました。
<>
名称未設定<>sage<>2008/03/19(水) 18:39:41 ID:TjSVC8tf0<> 追加したい機能がこれ以上無いのですが、
どうすればよろしいのでしょうか。
もちろんネタですよ^^ <>
名称未設定<>sage<>2008/03/19(水) 19:55:37 ID:JPY96AeA0<> >>583
最終バージョンを出して開発終了を宣言すればいいとおも <>
名称未設定<>sage<>2008/03/19(水) 20:11:32 ID:JM+VrnTM0<> 追加したい機能じゃなくて追加して欲しい機能をつければいいかと <>
名称未設定<>sage<>2008/03/19(水) 20:53:35 ID:QA0Ieyl10<> そういえばDVD プレーヤーはCarbonアプリだよね? <>
304<>sage<>2008/03/19(水) 23:59:30 ID:cvsOWou+0<> すいません質問させて下さい。
OptionキーのKeyUpを取得したいのですが方法はありませんでしょうか?
KeyDownに関しては
NSFlagsChangedで修飾キーのイベントを取得して
[theEvent modifierFlags] & NSAlternateKeyMask でOptionキーかどうかの判定はできています。
目的としてはOptionキーを押されている間のマウスイベントに対して処理をして
Optionキーが離されたでメソッドを発火させたいのです。
ご教授おねがいします。 <>
名称未設定<>sage<>2008/03/20(木) 00:06:22 ID:jXpGxGc90<> >>581
_hoge というインスタンス変数を作った段階で、
[obj setValue: ... forKey: @"hoge" ]
という KVC は出来る、というかそれがあるので Binding も働いているので、
setHoge: を書こうが書くまいが外部に _hoge はバレていると思うんですが。 <>
574<>sage<>2008/03/20(木) 01:21:11 ID:ZJ4slusJ0<> >>588
それについては+accessInstanceVariablesDirectlyでNOを返して、
アクセッサメソッドなしのキーはバインドできないようにしました。 <>
名称未設定<>sage<>2008/03/20(木) 01:32:12 ID:xNm+fBqj0<> NSMenuItemにアイコン(Resoucesに登録した)を表示させるのですが、
サブクラスでコードを書かずにI.Bのバインディングから表示させる方法はありますでしょうか?
バインディング項目に「image」があるのですが使い方がいまいちさっぱりで。
<>
名称未設定<>sage<>2008/03/20(木) 14:27:54 ID:15Vd/Jbn0<> 考えた末にNSImageを返すメソッドを記述したクラスを作り、
インスタンス化してIBのバインディンクのキーパスにそのメソッドを書くようにしました。
新たなアイコンを表示させたい場合は、
前述のクラスにメソッドを追加してバインドさせる。
こんなローテクな方法でいいのかしらん。 <>
名称未設定<>sage<>2008/03/20(木) 17:00:18 ID:2OwqXvN50<> イメージが固定なのなら、インスペクタのバインディングじゃなくて
普通の設定画面のところで image を設定してしまえばいいんでは? <>
かけだしCocoaプログラマー<><>2008/03/20(木) 22:24:31 ID:Nr+20M9t0<> 今日はHMDTの”Cocoaセミナーグラフィックス編”をやろうとおもったんだが…
http://imepita.jp/20080320/805070 <>
名称未設定<>sage<>2008/03/20(木) 22:31:44 ID:vXaeiU1q0<> >>593
ワロタ
<>
名称未設定<>sage<>2008/03/21(金) 00:18:24 ID:2ArjEdd20<> >>593
なんてこったいw <>
名称未設定<>sage<>2008/03/21(金) 00:51:07 ID:LX/gvIbU0<> >>593
素敵だ <>
名称未設定<>sage<>2008/03/21(金) 01:28:36 ID:V8QBDzt90<> >>593
アホスw <>
名称未設定<>sage<>2008/03/21(金) 01:57:35 ID:o5LRJLp00<> >>593
それに気づいただけでなく、アップしてみんなに見せようという精神に惚れたwwww <>
名称未設定<>sage<>2008/03/21(金) 11:41:13 ID:kwhCZJGqP<> >>587
CarbonのInstallApplicationEventHandler()でgEventRowKeyModifiersChangedな
イベントハンドラを登録する、ってところじゃないか。
あと「ご教示」の方が普通。 <>
名称未設定<>sage<>2008/03/21(金) 12:09:55 ID:vJyPXVm30<> >>599
CarbonっていうことはCですよね。
調べてみます。
ご教示ありがとうございました。 <>
名称未設定<>sage<>2008/03/21(金) 16:43:56 ID:RYo3aYNz0<> >>600
順応性高いなW <>
名称未設定<>sage<>2008/03/21(金) 16:55:44 ID:DNSgU9qe0<> Document-BasedでWIndowのCloseをオーバーライドするときは
どこを変更するのが適切ですかね <>
名称未設定<>sage<>2008/03/21(金) 17:06:23 ID:JKoiaZjv0<> すごく初歩的なことかも知れませんが、
[NSString stringWithFormat:@"???", hoge];
で数値hogeが一桁でも二桁でも二桁表示させるにはどうしたらいいでしょうか?
例えば数字が5の時は05と表示させたいのですが <>
名称未設定<>sage<>2008/03/21(金) 17:10:08 ID:JKoiaZjv0<> すません自己解決しました
@"%.2d", intHoge でした <>
名称未設定<>sage<>2008/03/21(金) 18:35:18 ID:o5LRJLp00<> CoreAnimation関係で質問お願いします。
あるアニメーションを実行後、そのアニメーションが終了後に、新たなアニメーションをさせる
方法を模索しているのですが、ヒントを下さい。
NSThread でやろうとしましたが、
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
で次のアニメーションまで待機させようとすると、あたりまえですが現在やっている
アニメーションもとまってしまいます。
<>
名称未設定<>sage<>2008/03/21(金) 18:50:29 ID:RCdqjOKq0<> >>605
CAAnimationのデリゲートにanimationDidStop:finished:あるよ <>
名称未設定<>sage<>2008/03/21(金) 19:09:38 ID:o5LRJLp00<> >>606
早速的確なレス、ありがとうございました。
調べ方が足りなくて申し訳ないですorz <>
名称未設定<>sage<>2008/03/21(金) 19:24:17 ID:o5LRJLp00<> ついでといってはなんなのですが、
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
のように完全に動作をとめてしまうのではなくて、
一定時間イベントループをまわしながら一定時間待機し、その後に次の処理を行うという方法はあるのでしょうか。
NSRunLoop関連をあさってみてもそれっぽいメソッドが見つかりません。 <>
名称未設定<>sage<>2008/03/21(金) 20:00:57 ID:kwhCZJGqP<> >>608
つ performSelector:withObject:afterDelay: <>
名称未設定<>sage<>2008/03/21(金) 20:10:04 ID:RCdqjOKq0<> >>608
つ NSTimer <>
かけだしCocoaプログラマー<><>2008/03/21(金) 20:12:31 ID:Or+ym4vS0<> ちょっとした疑問を2つばかり質問させてください
くだらないですが
1.Cocoaでhogeに変わる代名詞みたいなのはないですか?
2.Webで配られてる各種ドキュメント、htmlとpdfがある場合皆さんはどちらで読みますか?(印刷という選択肢もあるかも) <>
名称未設定<><>2008/03/21(金) 20:13:10 ID:Or+ym4vS0<> あ、コテすんません。昨日は叩かれるかと思ったら
思いのほかの反響で気を良くしましたw <>
名称未設定<>sage<>2008/03/21(金) 20:20:50 ID:o5LRJLp00<> >>609,610
まさに、こういう的確なメソッドがあるんですねorz
Cocoa入門したての者にとっては、オブジェクト指向や
Cocoaの流儀を身につけるという壁を通り越しても、
経験不足で必要なメソッドがどのクラスにあるのかを
探すのに一苦労です。 <>
名称未設定<>sage<>2008/03/21(金) 21:25:58 ID:uufxW9uu0<> メソッドが沢山ありすぎてみつからないのは
僕もいつまでたってもそうな気がします。
暇なときに、自分のいまやっているプログラムとは関係なくても、
色んなクラスのクラスリファレンスをざっと眺めて、どんなクラスに
どんな機能があるかを知っておくといいと思います。 <>
名称未設定<>sage<>2008/03/21(金) 21:44:42 ID:RYo3aYNz0<> 入門したて+CoreAnimation=iPhonSDK ってところか? <>
名称未設定<>sage<>2008/03/22(土) 00:38:43 ID:U1zy9GEC0<> >>615
いや、違います。ふつうのMac用の開発ですw <>
名称未設定<>sage<>2008/03/22(土) 12:14:12 ID:Cd3PC9Cy0<> NSDateで年日時秒まで取得できますが、millisecondまで取得するにはどうしたらいいでしょうか? <>
名称未設定<>sage<>2008/03/22(土) 13:22:10 ID:lcpIJJHd0<> >> 602
普通にwinodwのdelegateをNSDocumentサブクラスあたりに指定して
windowWillClose:, windowShouldClose:を実装すればいいんじゃないの?
もちっと言うと,NSDocumentは,ひとつのドキュメントが複数のウインドウ
(というかNSWindowController) を持つようなデザインもできるから,
ウインドウを閉じる==書類を閉じる,とは限らない。
だから,NSDocument自体にはウインドウを閉じることに対するメソッドはないのだと思う。
>> 617
確かに明示的なメソッドはないようだね。
NSTimeIntervalはdouble型だから,その少数部分を使うしかないのかな? <>
名称未設定<>sage<>2008/03/22(土) 13:46:58 ID:dAI5dUl90<> http://developer.apple.com/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtDatesToStrings.html# <>
名称未設定<>sage<>2008/03/22(土) 17:46:42 ID:DQfkC0HV0<> カードゲームを作っているのですが、設計についてアドバイスを
いただきたいので、お願いします。
作っているカードゲームは、数十枚のカードで構成されたデッキ
を使います。デッキに含まれるカードは手札・墓地などに移動する
ことがあります。カードの数が多いので、NSArray で管理したいと
思っています。また、Viewに関しては一枚一枚のカードを1対1で
CoreAnimation のレイヤーに対応させて表示することにします。
まず考えた設計が、デッキ・手札・墓地などにそれぞれの配列を
用意し、たとえばデッキから手札にカードが移動する場合は、
デッキの配列から要素をひとつ手札の配列にもっていく
というようなものです。
しかし、ViewであるCoreAnimation レイヤーを
一枚一枚のカードに1対1で対応させたいのですが、この設計だとViewが
一枚一枚のカードを追えなくなるという問題があります。
そこで、全てのカードをひとつの配列にいれ、それぞれのカードについて
「デッキ・手札・墓地のうちどこに存在するのか」という情報を
持たせ、View (CoreAnimation) がその情報を問い合わせて、
存在する場所に応じてレイヤーの表示位置を決める
(たとえばあるカードが墓地にあるという情報をもらったら、墓地のある
場所にそのカードのレイヤーを動かす)という設計を考えました。
この方法は、デッキや手札の枚数を数えるのが面倒というような問題が
あります。
どっちもどっちという設計なのですが、どんなことでも良いので、
何かアイディアがありましたらご教示お願いします。 <>
名称未設定<>sage<>2008/03/22(土) 18:12:02 ID:j0dJ8sd10<> こんな感じではどうだろう
カードに相当するオブジェクト(のサブクラス)を作り、
そのクラスのインスタンスをカードの数だけ作成する。
インスタンス自体が、自分のステイタス(どの場所にいるかなど)を管理する。
また、このインスタンスが、自らのステイタスの変更に応じて自分自身のアニメーションを管理。
さらに全部のカードを管理する管理手段を用意する。(NSArrayそのものよりも、全カードが登録されたNSArrayを有する
NSObject のサブクラス…例えばsharedCardController みたいな感じで作る。)
ある特定条件(あるプレイヤーの手札等)に合致するカード群を得たいときには、sharedCardController に問い合わせ、
NSArray から抽出されたカード群を得るようにする。
NSArray から特定条件のオブジェクト(カード)を抽出するには、filteredArrayUsingPredicate を使えば簡単。
<>
名称未設定<>sage<>2008/03/22(土) 20:45:23 ID:osUpCFYp0<> >>620
配列で考えてしまうのは手続き型プログラミングに慣れた人の悪い癖かな。
>>621のように個々のオブジェクトを作り動作をするようにしないと
(特にゲームでは)大変になるよ。 <>
620<>sage<>2008/03/22(土) 22:10:33 ID:U1zy9GEC0<> >>621
>>622さんのおっしゃる通り、今まで手続き型言語で
やっていたので、本当に目から鱗です。
ありがとうございました。参考になりました
カードの情報はNSDictionary で持つというのがオーソドックス
でしょうか。 <>
名称未設定<>sage<>2008/03/22(土) 22:15:33 ID:RY2IPzvt0<> Dictionary でもいいけど、小さなクラスを自分で書いても良いかも知れません。 <>
名称未設定<>sage<>2008/03/23(日) 14:18:56 ID:aM2iHDIs0<> >>619
ありがとうございます!できました。 <>
名称未設定<>sage<>2008/03/23(日) 17:10:46 ID:WzjVZI4V0<> 最近導入されたガベージコレクションって特定のポインタだけコレクションから除外することって
できないんでしょうか? <>
名称未設定<>sage<>2008/03/23(日) 17:38:04 ID:XbjPbT2T0<> >>626
staticにして参照を持続させればいいんじゃない? <>
名称未設定<>sage<>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];
}
フォーカスリングを奇麗さっぱり消し去って、次のテキストフィールドに気持ちよくフォーカスを移す
方法はあるのでしょうか。
<>
名称未設定<>sage<>2008/03/23(日) 20:11:29 ID:IRBC2lH20<> >>626
-[NSGarbageCollector disableCollectorForPointer:] <>
名称未設定<><>2008/03/23(日) 20:33:46 ID:ZtRxy6bU0<> >>628
[myWindow performSelector:@selector(makeFirstResponder:)
withObject:nextField
afterDelay:0.0];
使った事無いけど、これで少しだけフォーカスを動かすのを遅らせて実行してみるのは
どうでしょう?
<>
名称未設定<>sage<>2008/03/23(日) 20:48:30 ID:WzjVZI4V0<> >>629
どうもありがとうございます <>
名称未設定<>sage<>2008/03/23(日) 20:54:50 ID:PZymx9F80<> みんなGC使っているの?
Cocoa-Javaであったような変なバグはなさそうですか? <>
名称未設定<>sage<>2008/03/24(月) 01:03:50 ID:WyrRZb9k0<> >>630
おおおおおおおおおおっ!
なんと目から鱗…確かにこれでできる。
ありがとうございましたm(..)m <>
名称未設定<>sage<>2008/03/24(月) 04:23:51 ID:tx+hpjrD0<> 処理の最後に
[myWindow display];
とかでは駄目なんですかね。試してないけど。 <>
名称未設定<>sage<>2008/03/24(月) 10:29:47 ID:30sON1PI0<> デバッグ用に入れてたNSLog(@"ほげほげ");みたいなのを消し忘れて
配布してしまったら客先でもこのメッセージ見ることできちゃうでしょうか? <>
名称未設定<>sage<>2008/03/24(月) 10:35:00 ID:7gxHf5/+0<> はい <>
名称未設定<>sage<>2008/03/24(月) 10:42:04 ID:30sON1PI0<> 向こうが開発ツールインストールしてなければ大丈夫でしょうか? <>
名称未設定<>sage<>2008/03/24(月) 10:57:34 ID:6M+LSOMP0<> >>637
アプリケーション>ユーティリティ>コンソールで見れそうな気がする
試してないからわからんが <>
名称未設定<>sage<>2008/03/24(月) 11:06:46 ID:e9YAvDG20<> たしかにコンソールで出力みれるね。 <>
名称未設定<>sage<>2008/03/24(月) 11:07:21 ID:ORYHapWU0<> Framworkの作り方とかIBのパレットの作り方を解説してるサイトはありませんか?
日本語ならなお良いのですが、、 <>
名称未設定<>sage<>2008/03/24(月) 11:08:25 ID:30sON1PI0<> ほんとだ、しかも起動していない間のも全部表示される... <>
名称未設定<>sage<>2008/03/24(月) 11:32:39 ID:7gxHf5/+0<> >>641
ありえないから(w <>
名称未設定<>sage<>2008/03/24(月) 11:41:02 ID:30sON1PI0<> >>642
コンソール.appを起動していない時に別のアプリがNSLog()で出力したメッセージを
後からコンソール.appを起動して見ることができるっていう意味です
コンソール.appを起動してみるとクラッシュレポーターとかソフトウェアアップデートのログとか見れますよ <>
名称未設定<>sage<>2008/03/24(月) 11:44:57 ID:7gxHf5/+0<> consoleとかsyslogの仕組みが分かってなかったのか。
コンソール.appはログファイルの閲覧ソフトで、
実際のログは各アプリ等が随時ログファイルに出力してるんだよ。
コンソール.appがログを収集してるわけではないです。 <>
名称未設定<>sage<>2008/03/24(月) 11:51:02 ID:PQmKZTnh0<> ID:30sON1PI0は別に勘違いしてるようには見えないが <>
名称未設定<>sage<>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からはがらりと変わるが、考え方は同じ。 <>
名称未設定<>sage<>2008/03/25(火) 00:20:14 ID:oGnMEO7s0<> >>643
誰でも知っとるがなw <>
名称未設定<>sage<>2008/03/25(火) 00:47:43 ID:xIvc7Wix0<> >>642が訳わからん対応したからだろう
いちいち人を見下したい人間が多くてかなわんなここは <>
名称未設定<>sage<>2008/03/25(火) 01:13:10 ID:orjrxt6j0<> Xcode 3.1betaだけどさ、新規プロジェクト作製でRegacy Appのためのプロジェクトがリストから無くなったような? <>
名称未設定<>sage<>2008/03/25(火) 01:30:36 ID:ws66GuJV0<> 俺は>>642や>>644の対応の意図は分かるがなぁ。
結果的に捉え違いだっただけであって、そう受け取るのも無理はない。
見下したことになっててカワイソス <>
名称未設定<>sage<>2008/03/25(火) 08:33:45 ID:j9yfRVIu0<> 俺も捉え違えてて何言ってるんだろう、、て思った <>
名称未設定<>sage<>2008/03/25(火) 09:02:57 ID:N/b8Flu70<> >>642のとらえ違いを>>643で説明されて一件落着にすればよかったものを
気恥ずかしさのせいか自分のとらえ違いを認められずに>>644で相手を無知だ
とバカにしてごまかして終わろうとしたのがセコイ <>
名称未設定<>sage<>2008/03/25(火) 09:10:05 ID:CPjelZsm0<> ここらで終わりにしようか単発IDさん <>
名称未設定<>sage<>2008/03/25(火) 09:28:20 ID:N/b8Flu70<> 気に入らない書き込みが複数あると1人がいろいろなIPで自演してるように思いたく
なることってあるよねw <>
名称未設定<>sage<>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できちんとした乱数を発生させるメソッドなどは
存在するのでしょうか?
<>
名称未設定<>sage<>2008/03/25(火) 11:24:12 ID:NL8rB6oh0<> 他所でやれ、このうすらハゲ <>
名称未設定<>sage<>2008/03/25(火) 11:27:02 ID:nKQFEaaU0<> srandでシードを毎回初期化してたら
種が同じ以上同じ結果が出ると思うんだけど <>
名称未設定<>sage<>2008/03/25(火) 11:31:15 ID:GULb0EbA0<> >>657
あ、確かにそうでしたorz
修正してみます。ありがとうございます。 <>
名称未設定<>sage<>2008/03/25(火) 11:59:22 ID:ccV76MEE0<> 乱数を何に使うか知らないけど,数値計算に使うなら
メルセンヌツイスターを使う方がよい. <>
名称未設定<>sage<>2008/03/25(火) 12:08:36 ID:GULb0EbA0<> >>659
サイコロを振る機能のために使います。
統計的に正しく目がでるのが目標です。
メルセンスツイスターについては調べてみます。ありがとうございました。 <>
名称未設定<>sage<>2008/03/25(火) 13:26:07 ID:hfM3EUe40<> メルセンヌツイスター
相手は死ぬ <>
名称未設定<>sage<>2008/03/25(火) 15:47:14 ID:1Dtues1N0<> ダイスを作成するのに
hoge = rand() %x;
するのはカルドセプトサーガのプログラマー並みの阿呆のすること。
もしかしたらOSX(=FreeBSD?)のrand(3)は下位ビットまでランダムかもしらんが。
<>
名称未設定<>sage<>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 の時点で。 <>
名称未設定<>sage<>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)はどうすりゃ一発ででるんだろ。 <>
名称未設定<>sage<>2008/03/25(火) 17:25:18 ID:Y5ONulS70<> man 3 srand
<>
名称未設定<>sage<>2008/03/25(火) 23:09:58 ID:XBnGiDPv0<> >>646
遅くなりました、ありがとうございます。今必死に英語を読んでいます。
整数値のランダムはScreenSaver.frameworkにSSRandomIntBetweenというのがありますよ <>
名称未設定<>sage<>2008/03/25(火) 23:15:56 ID:WxYsW0/Z0<> Hello Worldが終わって、次はサイコロでも作ろうと
NSRandomなんちゃらがあるんだろうとリファレンスを探しまくった日々…… <>
名称未設定<><>2008/03/26(水) 01:56:25 ID:Fh3watAI0<> どなたか教えてください。
これからCocoaを勉強しようと思うのですが、先に身につけておいた方が良い知識には何が有るでしょうか?
スレをざっと読んだところではC言語くらい出来てないと駄目みたいな印象を受けるのですが・・・。
C言語もどこまで理解できればいいのやら・・・。
ちなみにプログラミングの経験は全くのゼロです。 <>
名称未設定<><>2008/03/26(水) 02:05:52 ID:TRoZfAHo0<> >>668
下手に寄り道するよりこれを嫁。
「たのしいcocoaプログラミング」に匹敵すると俺は思う
http://homepage.mac.com/nsekine/SYW/SYWSoft/learnCocoa/bexcoder.html <>
名称未設定<>sage<>2008/03/26(水) 02:07:26 ID:BjCvcuqh0<> (自分で見てみて)スーパー簡単そうなC言語入門本を買って
それなりにやったらCocoaをやるべし
Cocoa本はたのしいCocoaでいいんじゃまいか
<>
名称未設定<>sage<>2008/03/26(水) 04:02:26 ID:uEjN//nU0<> >>662-667
ありがとうございました。
いただいた情報をもとにさらに勉強します。
<>
名称未設定<>sage<>2008/03/26(水) 09:44:43 ID:Lf3LYf5Y0<> うーむ、プログラミング知識なしでいきなりココアかいな。
変数とか配列とかの基礎知識もないまま突入すると玉砕しそう。
強烈に作りたい何かがないと大変かな。
がんばれ。 <>
名称未設定<>sage<>2008/03/26(水) 10:05:53 ID:4f6bzT0P0<> >強烈に作りたい何かがないと大変かな。
でもこれに勝るものはないよな〜 <>
名称未設定<>sage<>2008/03/26(水) 12:20:29 ID:Dus3Jm7g0<> 自分は一応Java,Javascript,Perl,Applescriptはできるんだが
なんかObjective-CとかCocoaって難しそうなイメージがある
<>
名称未設定<><>2008/03/26(水) 13:14:03 ID:TRoZfAHo0<> >>672
最近の教本はその辺も比較的手厚いよ <>
名称未設定<>sage<>2008/03/26(水) 13:25:53 ID:YaGvBisq0<> >>674
それだけ出来るんだったら Obj-C は何も問題ないと思うが。
メモリ管理もレパードで GC まかせにできるようになったし。 <>
名称未設定<>sage<>2008/03/26(水) 13:51:27 ID:V0uK7QIb0<> Java がわかって Obj-C がわからんことは絶対にないよね <>
名称未設定<>sage<>2008/03/26(水) 14:33:33 ID:Dus3Jm7g0<> >>676-677
そうなのか…
がんばってみようかな
CocoaはなんかInterface Builderが壁になってる
バインディングとかよくわからなくて
けど慣れたらこれ便利なんだろうなぁ <>
名称未設定<>sage<>2008/03/26(水) 14:37:43 ID:ZvLGgE/d0<> >>677
だな.そもそも言語の系統が
Smalltalk -> Objective-C -> Java
だもんな. <>
名称未設定<>sage<>2008/03/26(水) 15:29:22 ID:29Rhmany0<> >>678
IBの操作なら(それ以外もだけど)、↓のCocoaセミナーが参考になるよ。
ttp://developer.apple.com/jp/documentation/japanese.html
<>
名称未設定<>sage<>2008/03/26(水) 15:36:57 ID:Dus3Jm7g0<> >>680
ありがとうございます。見てみます。 <>
名称未設定<>sage<>2008/03/26(水) 16:04:05 ID:Dus3Jm7g0<> [AdsenseWebView takeStringURLFrom:@"http://google.com/"];
は無理か…
WebViewにページを表示させるにはどうしたらいいんだろ <>
名称未設定<>sage<>2008/03/26(水) 17:03:20 ID:/nMcS7mv0<> IB起因のバグはエラー表示みてもピント来ないから困る。
その辺どうにかならないかなぁ。 <>
名称未設定<>sage<>2008/03/26(水) 17:32:14 ID:29Rhmany0<> >>683
Objective-Cのダイナミズムに由来するものでしょ。慣れるしか。 <>
名称未設定<>sage<>2008/03/26(水) 19:30:02 ID:ltBg2xNg0<> バインディング名が間違ってたりすると、間違っている箇所を探すのが困難。
バインディング設定のコピーが困難。 <>
名称未設定<>sage<>2008/03/26(水) 19:53:42 ID:Dus3Jm7g0<> どうしよ
挫折しそうだorz
>>682について
いろいろググってWebViewからURLを取得する方法はわかったが指定したURLをWebViewに表示する方法がわからんorz
WebViewあきらめて他いろいろ試すかな… <>
名称未設定<>sage<>2008/03/26(水) 20:01:31 ID:YaGvBisq0<> http://developer.apple.com/documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html
setMainFrameURL: では?
ググるよりなにより ADC のレファレンスを読もうね。 <>
名称未設定<>sage<>2008/03/26(水) 20:02:44 ID:9uCTvEbf0<> >>686
>指定したURLをWebViewに表示する方法
setMainFrameURLでできるんじゃないかな? <>
名称未設定<>sage<>2008/03/26(水) 20:05:05 ID:Dus3Jm7g0<> >>687-688
ありがとうございますm(_ _)m
リファレンス英語だからと避けてましたがやっぱり読まないとだめか… <>
名称未設定<>sage<>2008/03/26(水) 20:16:59 ID:fmlM2gNgO<> Macで開発するのに英語は不可避。 <>
名称未設定<>sage<>2008/03/26(水) 20:45:59 ID:pRYgUDTv0<> >>685
禿堂
バインディングのエラーは本当に頭が痛い
おかしい場所を探し当てるのにものすごく苦労する
MVCという意味ではバインディングを使った方がいいと思うが、
生産性に関しては、使わない方が良い気がしてる
<>
668<><>2008/03/26(水) 20:52:43 ID:V4kJA3iF0<> >>669
>>670
助言ありがとうございます。
色々やってみようとおもいます。
>>672
自分用にカスタマイズしたメモ帳が作りたくて・・・。
頑張ります。 <>
名称未設定<>sage<>2008/03/26(水) 20:54:46 ID:q+vNZ+gQ0<> バインディングは結構慣れだよ。最初のうちはわからずに色々バインディングしたくなるけど、下手にバインディングすると逆に動かないから気をつけた方がいいよ。 <>
名称未設定<>sage<>2008/03/26(水) 20:58:18 ID:fmlM2gNgO<> 生産性を上げる(定型的な繋ぎコードを書く時間を他のことに使う)ためのものなんだけどな。 <>
691<>sage<>2008/03/26(水) 21:07:39 ID:pRYgUDTv0<> >>694
「生産性」にはデバッグのし易さも含まれる。
繋ぎコードを書く時間 > バインディングのデバッグ時間
とは限らない。
むしろ逆のケースが多いと思っている。
<>
名称未設定<>sage<>2008/03/27(木) 16:57:28 ID:2lU4qwrN0<> cocoaで内部的にIB actionのメソッドを叩くことがあるけど、
そのメソッドがsenderを使う場合と、無視してる場合がある。
やっぱり呼び出し元でsenderも一応用意した方がいいんでしょうかね?
それとも気にしないで、適当なobjectでも渡しておきますか。 <>
名称未設定<>sage<>2008/03/27(木) 17:51:32 ID:hJlJV+s30<> sender情報がいらないならnilでも渡しとけば。 <>
名称未設定<>sage<>2008/03/27(木) 21:38:35 ID:xrWakgsG0<> 便乗ですみませんが、>>696のように内部のメソッドで
senderに値(intやstring)をセットするにはどうすればよいのでしょうか。 <>
名称未設定<>sage<>2008/03/27(木) 21:51:30 ID:lMYLREM30<> intならNSNumber使うよろし
stringって? <>
名称未設定<>sage<>2008/03/27(木) 22:34:45 ID:a+jkObxj0<> std::string とか?
NSString* なら id にそのまま渡せるけど、
IBAction の sender にそのまま NSString を渡すのはなにか変な気がする <>
名称未設定<>sage<>2008/03/27(木) 23:02:48 ID:qJBldE3u0<> NSStringなら渡せるべ <>
名称未設定<>sage<>2008/03/28(金) 00:22:48 ID:Q/pibkmJ0<> とりあえずselfを渡しとけばいいんでないかい?
インスタンス変数の取得や変更はアクセッサで対応。 <>
名称未設定<>sage<>2008/03/28(金) 20:14:06 ID:UD2Wl/tj0<> 具体的なコードがさっぱりなんです。
例えば複数の変数を渡したい場合とか(辞書にして渡すんですかね)。 <>
名称未設定<>sage<>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 はそういうことにつかうものではないので、
別の方法を考えてください。 <>
名称未設定<>sage<>2008/03/28(金) 21:05:06 ID:Q/pibkmJ0<> >>703
具体的な質問をしない→具体的な回答が得られない→具体的なコードがサッパリ
のループ <>
名称未設定<>sage<>2008/03/28(金) 23:47:16 ID:HRFh0B/+0<> ここでデルフォイの神託↓ <>
名称未設定<><>2008/03/29(土) 17:59:44 ID:pthSyDXZ0<> すいませんちょっと教えてください
サンプルソースコードを見ていたら#pragma markという行がありました
デフォルトで茶色く表示されていて、特に意味はないというかコメントアウトされている
ようにも見えます。#からはじめると茶色いコードになるのですが、これはどういう文法なんでしょう。 <>
名称未設定<>sage<>2008/03/29(土) 18:06:29 ID:tFrxc/KV0<> Xcode のエディタ画面の中で、ツールバーと本文との間に細いバーがあるでしょ。
そこのポップアップ中に見出しが付きます。 <>
名称未設定<><>2008/03/29(土) 18:42:33 ID:pthSyDXZ0<> >>708
本当だ…ありがとうございます。
これは名前はpragma markで良いんでしょうか?自力で調べた際、マニュアル、googleなどを
検索したのですが引っかかってくれませんでした。自力で調べるにはどういう所を見たら良かったのでしょう… <>
名称未設定<><>2008/03/29(土) 20:07:40 ID:u+FJ7Dui0<> c言語の仕様の方を調べた方が良いかと。
"C言語 pragma"で出てくるけど?
<>
名称未設定<><>2008/03/29(土) 20:46:49 ID:pthSyDXZ0<> >>710
Cのほうだったんですね
pragma markで調べたのがいけなかったみたいです。もっと
検索結果を辿るようにしますね <>
名称未設定<>sage<>2008/03/29(土) 23:07:22 ID:fh2Kw5/j0<> #pragmaってのはCのコンパイラディレクティブで、その中身についてはCの仕様では定められていない(C99除く)ので、コンパイラなどの開発者が自由に使える。
で、#pragma markってのはXcodeでコードナビゲートのために使われるようになってる。
今気づいたんだけど、CotEditorも#pragma mark認識してくれるんだね。 <>
名称未設定<>sage<>2008/03/29(土) 23:19:36 ID:ybcJXnIv0<> Xcodeでは見えないのですが、他のエディターで開いたら
キャラクターコード0X0Bの文字?がちらほら点在していました。
別に害は無さそうなのですが気持ち悪いので置換で消していきました。
これは何なのでしょうか? <>
名称未設定<>sage<>2008/03/29(土) 23:36:13 ID:nkexAG6m0<> #pragma mark ってCodeWarriorのときから使ってたから一般的なのもだと思ってた。
昔はメニューのセパレートアイテムがキャプションが-の普通のメニューアイテムだったから、
#pragma mark -
もためらいもなく使ってたし。 <>
名称未設定<>sage<>2008/03/30(日) 17:16:10 ID:u8YBSmaQ0<> 質問させてください。
CoreAnimation のレイヤーをマウスでクリックしたりドラッグしたりと
いったマウスイベントをつかまえるには、どのような実装方法がある
でしょうか。
Apple のドキュメントや、GeekBoardGame というApple のサンプルコードを
のぞいてみましたが、どうしても分かりません。
よろしくお願いします。 <>
名称未設定<>sage<>2008/03/30(日) 22:05:17 ID:2sWOwdrZ0<> Core Data アプリ(non document based)で、あるエンティティの属性 (double)
の値を変えたとき、テーブルに表示中のその値はアップデートされているのですが、
一旦アプリを終了して再び立ち上げると、その値がアップデート前の値に戻って
います。
non document based でテンプレート通りなので、アプリ終了時に変更があった
オブジェクトが save されているはずと思うのですが(NSSQLiteStoreType)、
特にエラーメッセージも出ずに終了しているにも関わらず、上記の現象が起きます。
アプリ終了前にメニューから save をしても同じです。
エラーメッセージも無いので、どこをどう調べれば良いのか見当がつきません。
同じような現象が起きた方はいるでしょうか。
<>
名称未設定<>sage<>2008/03/30(日) 22:18:28 ID:czG3gy6y0<> 単に property が transcient になっているのでは? <>
716<>sage<>2008/03/30(日) 22:28:45 ID:2sWOwdrZ0<> transient ではないです。
transient だとアップデートする以前の値も無くなりますが、
最初にオブジェクトを作成して値を設定したときの値は残っています。
<>
名称未設定<>sage<>2008/03/30(日) 22:29:07 ID:P6vlUqGx0<> 終了する前にアレイコントローラーの中身をログにダンプするとか。 <>
716<>sage<>2008/03/30(日) 22:34:09 ID:2sWOwdrZ0<> アレイコントローラの中身はテーブルに表示しているので、
アレイコントローラーの中(というか managedObjectContext の中)は
アップデートされていると思うのですが、それを SQLite にセーブして
くれてないような気がします。
アップデートした mangedObject の isUpdated は、アップデート後に
ちゃんと YES になっているのですが‥
<>
716<>sage<>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"];
だけではダメな理由がわかりません。
<>
名称未設定<>sage<>2008/03/31(月) 12:49:08 ID:tw5a8Ttq0<> >>721
>アップデートしたい NSManagedObject * = UpdatingObject
データモデルを作成すると、Xcodeのファイル作成メニューから
設計ー管理オブジェクトクラスというファイルが作成できる
ようになる。
ここからクラスファイル(MyUpdatingObject.m/.h)を作成すると
アクセッサを自動生成してくれる。中身は>>721の記述通り。
MyUpdatingObject *UpdatingObject;
[UpdatingObject setAttrName:newValue];
って感じで記述できるよ。
なんでか?Managedだからじゃねーかな。
<>
名称未設定<>sage<>2008/03/31(月) 22:49:48 ID:rGDOmSZV0<> サーバーの自作cgi(リクエストを受けると文字列を返す)と連携してリクエストをなげ、
受け取ったらローカルのファイルに書き出すとか簡単にできてしまいのですが、
危なくないですか?
こういうことをしないのは暗黙の了解というか作者の善意を信じるしかないのかな。 <>
名称未設定<>sage<>2008/03/31(月) 23:06:51 ID:p7HEBNDt0<> >>723
誤爆? <>
名称未設定<>sage<>2008/04/01(火) 19:22:21 ID:GBWhnfph0<> いや、誤爆でもないんですけど。
そういう悪さが簡単に作れるなあと。
ファイルマネージャとか使えばさっくり消すこととか出来そうだし。 <>
名称未設定<>sage<>2008/04/01(火) 20:12:11 ID:Yn+xP8iA0<> ???
そもそも Cocoa と関係ないし。ファイルマネージャって何?
旧 Mac の Toolbox の File Manager のことを言ってる? <>
名称未設定<>sage<>2008/04/01(火) 21:53:00 ID:3igSZGd/0<> NSFileManagerだべ <>
名称未設定<>sage<>2008/04/01(火) 22:19:15 ID:eXrA1oFt0<> ???
NSFileManager つかったらファイルの削除ができるのはあたりまえでは?
もちろんユーザ権限だったらそのユーザのファイルしか消せないけども、
ホームディレクトリ以下を全削除するコードなんか一瞬で書けるし、
かけて当たり前なのでは? <>
名称未設定<><>2008/04/01(火) 22:26:44 ID:jR83I/kp0<> >>723
日本語でおk <>
名称未設定<>sage<>2008/04/01(火) 22:43:42 ID:1fF/yTEl0<> cgiのくだりもわからない。なんの話なのだろう。 <>
名称未設定<>sage<>2008/04/02(水) 01:07:11 ID:oGnR8u+90<> 一度開いたらシステムオワタなアプリなら作れる
ダウンロードして開かなきゃ発動しないけど <>
名称未設定<>sage<>2008/04/02(水) 09:07:28 ID:0/6aE/N0O<> >>731
ユーザによる権限昇格もせずに?
と思ったけど、起動出来なくするぐらいなら出来るか。 <>
名称未設定<>sage<>2008/04/02(水) 12:36:09 ID:6v8Mex7Q0<> ユーザーとの対話なしにローカルファイルの読み書きや
webへのアクセスが出来てしまうのが
当たり前と言えば当たり前ですが、恐いと言えば恐いかなと。 <>
名称未設定<>sage<>2008/04/02(水) 12:56:05 ID:yfTxC+5o0<> >>733
何が言いたいのだ?
web へのアクセスをユーザにさせたくなきゃ,
フィルタリングでカットすればいいだけだろ?
ローカルファイルも権限があるから勝手に読み書きできないよ.
セキュリティを良く分かってないんじゃないか? <>
名称未設定<>sage<>2008/04/02(水) 13:20:21 ID:S1IGWmHn0<> そんなのCocoaに限らずコンピュータプログラム全般に言えることじゃないかと
アプリがファイル読み書きやらネットワークアクセスの度に
ダイアログ出てきたら鬱陶しくて実用にならない
Leopardなら初回だけネットワークの許可ダイアログでてくるけど <>
名称未設定<>sage<>2008/04/02(水) 15:16:06 ID:sidBbuG/0<> なにかもう一つしっくり来ないな。
>733は自分が思っていることを正しく伝えられてない気がする。
<>
名称未設定<>sage<>2008/04/02(水) 15:52:56 ID:tcfMAI1p0<> いずれにせよCocoaとは関係のない話だな。 <>
名称未設定<>sage<>2008/04/02(水) 19:58:47 ID:Akvr86Ga0<> cocoa というより C の文法の問題かもしれませんが、
探しても出てこないので教えてください
if( hoge ) {
}
のように条件式なしで単純に変数が条件になっているのは、
どのような条件なのでしょうか? <>
名称未設定<>sage<>2008/04/02(水) 20:16:40 ID:tcfMAI1p0<> if( hoge ) { }
と
if(hoge!=0) { }
はまず等価。 <>
名称未設定<>sage<>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;
とする。
俺は。 <>
名称未設定<>sage<>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) {
}
これは同じ <>
名称未設定<>sage<>2008/04/02(水) 21:26:11 ID:dNRbq4FU0<> そういえばCでは
if(a==0)ではなく
if(0==a)と書くのが流儀なんですかね?
if(0<a)なんて直感的にすごく分かりにくいのですが。 <>
名称未設定<>sage<>2008/04/02(水) 21:32:00 ID:FSuKVIs40<> >>742
そんな流儀はじめて聞いた
自分に分かりやすい方でいいんじゃないの? <>
737<>sage<>2008/04/02(水) 21:33:46 ID:Akvr86Ga0<> >>738-740
ていねいかつ分かりやすい説明、ありがとうございました。
勉強になりました。 <>
名称未設定<>sage<>2008/04/02(水) 21:34:28 ID:7R9AhKh80<> >>742
定数を左辺に書くのはどちらかというと痛い書き方。 <>
名称未設定<>sage<>2008/04/02(水) 21:42:19 ID:vRQV2HU10<> >>742
if (a=0)
と書きまちがえるとaに代入されてしまい
意図した動作にならないのを嫌って、定数を左辺とすることを推奨する人たちがいます。
仕事やなんやで指定されない限りは、(a==0)で問題ありません。 <>
名称未設定<>sage<>2008/04/02(水) 21:43:42 ID:+bRTpxfj0<> >>742
if(0==a)
のつもりで
if(0=a)
としてしまうとエラーになるから、間違えない。
という主張の方々の作法。
これに同調するなら使いましょう。って感じ。
ただし、たまに「でなければならない。おまえらこの通りにしろ。」という方もいる。
そういう人は確かに痛い。 <>
名称未設定<>sage<>2008/04/02(水) 21:47:40 ID:w0ZmM/ml0<> 1〜10の範囲は
if ((1 <= a) and (a <= 10))
と書くのが数直線のイメージとも一致して自然だと思う。 <>
名称未設定<>sage<>2008/04/02(水) 21:58:35 ID:RS/f+MuZ0<> 最初
if (self = [super init]) {}
を
if (self == [super init]) {}
と勘違いして小一時間悩んだのを思い出した。 <>
名称未設定<>sage<>2008/04/03(木) 16:23:37 ID:1jV0CkCd0<> return [self なんたら];
っていうのは普通?
慣れてくると、
return [self なんたら:[self こうたら:[self うんたら:[self ちんたら]]]];
とか書いて、訳分かんないけどw <>
名称未設定<>sage<>2008/04/03(木) 17:11:17 ID:3DcvdVmn0<> CICropって切り抜いたあとの画像に1px幅の黒枠が入る様な気がするな・・・。 <>
名称未設定<>sage<>2008/04/03(木) 22:40:16 ID:2SfSkV4V0<> >>749
ワロタwwww <>
名称未設定<><>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 <>
名称未設定<>sage<>2008/04/04(金) 02:09:19 ID:XiP7FG7p0<> MOSAで活動すればいいのでは?
権利関係は? <>
753<><>2008/04/04(金) 02:39:22 ID:XKzIgRMV0<> MOSAは確か会員登録が必要だし、登録は有料だと思ってました
wikipediaみたいな感じで誰でも編集できるこの形式の方が良いかと思いまして
Appleの公認はとってません。ひっそりやっていって怒られたら非公開形式かな、
というつもりでした。
大したことは書いてませんが、こっちで話を振っていました
Xcode part6
http://pc11.2ch.net/test/read.cgi/mac/1201693264/373 <>
名称未設定<>sage<>2008/04/04(金) 15:07:34 ID:prN6n9yx0<> >>755
つ ttp://www.oomori.com/cocodesu/index.html <>
名称未設定<>sage<>2008/04/04(金) 15:51:58 ID:Jkegj/2g0<> >>756
私もそこを利用しています。
なので、>>753 のやつは、リファレンス和訳に加えて、
Tips や サンプルコードなんかをみんなで持ち寄って、
リファレンス以上に使える Wiki にすればいいんじゃないでしょうか? <>
名称未設定<>sage<>2008/04/04(金) 15:59:39 ID:uwaesjVF0<> つかリファレンス程度の英文なんてそのまま読んだ方が正確に情報が伝わるし、
それが前提だと思うんだけどなあ。
必要なのはAPIこまかい動作やふるまいに関する情報だと思うよ。 <>
名称未設定<>sage<>2008/04/04(金) 16:18:59 ID:l0Z2BlMo0<> オプションクリックっていってすぐ分かる人も居れば、
オプションキーの位置まで説明しないといけない人も居る。
欲しがってる情報も人それぞれだ。
それに、その勝手な前提を廃しようって動きでしょ、これは。 <>
名称未設定<>sage<>2008/04/04(金) 19:11:54 ID:/NxtDvi20<> まあまあ。
参加したいひとは参加するスタイルでいいでしょう。
参加しない人は文句を言わないこと。 <>
名称未設定<>sage<>2008/04/04(金) 21:16:00 ID:vKak/UUC0<> 今760がいいこと言った <>
753<>sage<>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/ <>
名称未設定<>sage<>2008/04/05(土) 02:13:32 ID:xuMvYKd50<> spotlightのようにボタンを押すとNSSearchFieldが表示されるような
仕組みを実装したいのですが、どうすれば良いのでしょうか?
なかなか難しそうな気がしますが、お知恵を拝借できればと。 <>
名称未設定<>sage<>2008/04/05(土) 12:41:31 ID:OQL0ZhO70<> Leopardからはメニューアイテムにビューを設定できるようになったから、それを使えばできると思う。
メニューじゃなくて普通のボタンを押したらってことなら、
タイトルバーなしのウインドウを作ってそれをボタンの下に表示させればいいと思う。 <>
名称未設定<>sage<>2008/04/05(土) 14:41:54 ID:Jtj5sLxQ0<> NSSearchField の isHidden に、その spotlight 風のボタンを
バインディングさせればいいんじゃない? <>
名称未設定<>sage<>2008/04/05(土) 15:13:29 ID:ukfQWxvp0<> お知恵提供ありがとうございます。
やはり別途ウインドウを作る方法が正攻法ですかね。(10.4互換にしたいので)
hiddenの表示切り換えも試してみます。
<>
名称未設定<>sage<>2008/04/05(土) 15:26:45 ID:VhLW+d8P0<> ついでに質問しますが、OSX の mail とか バチスカの右下の
プルダウンするボタンは、>>764 のようにタイトルバーなしの
ウィンドウを出現させてるだけですよね。
面倒だなー... <>
名称未設定<>sage<>2008/04/05(土) 17:27:01 ID:ExPL2bEA0<> もっと簡単ですよ。
ボタンのサブクラスを作ってNSMenuを表示させてるだけ。
どっかにコードがあったはずだけど失念。 <>
名称未設定<>sage<>2008/04/05(土) 20:24:44 ID:Y9HuUKt0P<> mkinoさんあたりが書いてた気がする <>
名称未設定<>sage<>2008/04/05(土) 20:46:11 ID:OQL0ZhO70<> これかな?
http://blog.cocoa-study.com/?eid=292168 <>
767<>sage<>2008/04/05(土) 22:46:12 ID:VhLW+d8P0<> >>768-770
URLまで張っていただいて感謝です。
ありがとうございました。 <>
名称未設定<>sage<>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;
} <>
名称未設定<>sage<>2008/04/08(火) 23:08:22 ID:GYQua+Y+0<> > sampleMethodでretain/rekeaseは不要なのでしょうか?
その通りです。 <>
名称未設定<>sage<>2008/04/09(水) 00:23:26 ID:ymQ4vGb/0<> 下のmutableArrayは
NSMutableArray *mutableArray = [NSMutableArray array]; で良くね? <>
名称未設定<>sage<>2008/04/09(水) 00:39:40 ID:cZrt3QD80<> create〜っていう名前だと、retain されたオブジェクトが返ってくるような感じがする。 <>
名称未設定<>sage<>2008/04/09(水) 00:57:57 ID:tXkLT69P0<> ありがとうございます。
>>773
やっぱり入らないんですね。
>>774
まだ10.4なんですが、そうするといつreleaseされるのですか?
(10.5なら不要っぽい気もしますが)
>>775
名前は適当に考えたのでご勘弁を。
<>
名称未設定<>sage<>2008/04/09(水) 01:03:44 ID:sa4g27di0<> >>776
その時の NSAutoreleasePool が破棄されるときじゃね?
ttp://wwwa.dcns.ne.jp/~nito/CocoaClub/article03.html
読んで解らなかったらまた <>
名称未設定<>sage<>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]
と一緒だと思います。 <>
名称未設定<>sage<>2008/04/09(水) 09:20:43 ID:HThbF4Ur0<> 返ってくるっていうか、
返る事が期待されてるって事じゃなかったっけ?
create〜とかmake〜とかの場合はオーナーシップがそのメソッドにあって、
そのなかでちゃんと保持されてる設計にしないといけないとか、
そういうデザインパターンじゃなかったか? <>
名称未設定<>sage<>2008/04/09(水) 09:56:58 ID:ZyjRh5vH0<> プロジェクトが完全に10.5以降でもプロパティやガベージ使ってない人まだ多いと思う <>
名称未設定<>sage<>2008/04/09(水) 10:05:07 ID:EGmyqCDB0<> 設定変更が面倒なので10.4(Universal)用のプロジェクトテンプレート作った。 <>
名称未設定<>sage<>2008/04/09(水) 10:25:47 ID:Ji3vsIov0<> >>779
>返ってくるっていうか、
>返る事が期待されてるって事じゃなかったっけ?
失礼、返ってくる、とかいたのは、Apple が提供してる API に関して言ったので、
自分の書くメソッドに関しては、返ってくるのが期待されてるので、
期待されてるのを返すようにする、ということでした。
どうもすいません。 <>
名称未設定<>sage<>2008/04/09(水) 11:03:07 ID:n76cDqoa0<> initなんたらってautoReleaseだろ? <>
名称未設定<>sage<>2008/04/09(水) 11:09:52 ID:HThbF4Ur0<> >>782
OK了解した☆ <>
名称未設定<>sage<>2008/04/09(水) 11:11:14 ID:HThbF4Ur0<> >>783
autoreleaseなのはクラスメソッドのほうだよ。 <>
名称未設定<>sage<>2008/04/09(水) 11:45:13 ID:EGmyqCDB0<> init... はretainCount 触らない。
alloc... はretainCount 1で返す。
クラスファクトリメソッドはautoreleaseして返す。
と考えて使う。 <>
名称未設定<>sage<>2008/04/10(木) 16:43:38 ID:2oHsbtx+0<> カーソルより手前にウインドウを表示する事は出来ませんか? <>
名称未設定<>sage<>2008/04/10(木) 16:45:33 ID:TIILIpRc0<> そうきたか。w
最終目的を書くべきだな。
自分が思いついた手段ではなく。 <>
名称未設定<>sage<>2008/04/10(木) 17:13:22 ID:6tlrdF1I0<> カーソルのイメージを空画像にしたらどうだろう <>
名称未設定<>sage<>2008/04/10(木) 17:56:29 ID:pB6w3fGx0<> 単に隠すだけなら[NSCursor hide]あたりだろうけど、
質問が「カーソルより手前にウインドウを表示する事は出来ませんか?」だからなぁ <>
名称未設定<>sage<>2008/04/10(木) 18:12:04 ID:3s39qoSK0<> - (void)setLevel:(int)newLevel;
じゃダメ? <>
名称未設定<>sage<>2008/04/10(木) 18:19:37 ID:vD+kIgyu0<> 試してないけど、ヘッダを見ると
kCGCursorWindowLevel がレベル2000で、最大はLONG_MAXだな <>
787<>sage<>2008/04/10(木) 20:58:20 ID:2oHsbtx+0<> レスありがとうございました。>皆様
特定の領域でカーソルより手前に画像を表示させたかったのですが
ウインドウレベルをいくつに指定してもカーソルより手前にはならないみたいです。
出来ない=やるな、という事かも知れませんので、他の方法を探してみます。 <>
名称未設定<>sage<>2008/04/10(木) 21:44:34 ID:HMBiSycw0<> >>793
いや、だから、>>790 にもあるように、
その画像のまえにきたらカーソルを消せばいいのでは? <>
787<>sage<>2008/04/10(木) 23:13:03 ID:2oHsbtx+0<> >>794
その画像が半透明なので、薄ら見えているけど消えないという感じにしたいと思いまして。 <>
名称未設定<>sage<>2008/04/11(金) 00:00:27 ID:HMBiSycw0<> NSCursor に自前で半透明の image をセットしたら?
自分でやってみずに言うのでできなかったらスマンけど、
OS X のことだから NSCursor だけアルファチャンネルが効かないということもあるまい <>
名称未設定<>sage<>2008/04/11(金) 00:45:25 ID:gwbAHAgd0<> そうそう、画像を半透明するかわりにカーソルを半透明にすればいいよね <>
名称未設定<><>2008/04/11(金) 20:36:42 ID:Rl7AGzq/0<> 半透明な画像の奥にカーソルがあるのと、半透明な画像の手前に半透明なカーソルがあるのとでは、得られる画像効果が違うと思います。
その前に、なぜそんな特殊なことをする必要があるのか疑問ですが。。。
その画像エリアにカーソルが入ったら、カーソルを消して、自前でカーソルを半透明に描画して画像と重ねるのが良いかと。 <>
名称未設定<>sage<>2008/04/11(金) 20:38:00 ID:G5tvyV890<> 君は何を言っているのかね <>
名称未設定<>sage<>2008/04/11(金) 20:54:31 ID:kIdkqYBw0<> カーソルが手前のウィンドウの境界に来た時に、カーソルを一部半透明、一部不透明と描写できるよう計算するように。 <>
名称未設定<>sage<>2008/04/11(金) 21:14:50 ID:+UtpCNPd0<> そんなことをしても開発者の自己満足で、
利用者からすればウザイ効果でしかないかと。 <>
名称未設定<>sage<>2008/04/11(金) 21:42:05 ID:ihvQSy990<> 試してみたらウィンドウのレベルをカーソルより高くしてもカーソルが一番上に表示されました。
なのでたぶん、カーソルがウィンドウに入ったらカーソルを消して
カーソルの画像を貼付けた別の枠無し透明ウィンドウをウィンドウの裏に置いてマウスの動きに併せて移動させる。
っていう、枠無し透明ウィンドウをインスタンスに持つカスタムウィンドウを作ればいけるんじゃないですかね。
もちろんマウスイベントをどう処理するかとかも考えて。めんどくてやる気にはなりませんが。 <>
名称未設定<><>2008/04/11(金) 23:40:04 ID:ICrYO6hE0<> 昔、FLASHを用いたコンテンツで、
そういったカーソルの使い方、
たくさんあったね。
ここの反応をみると、普通のアプリケーションでは珍しいってことね。 <>
名称未設定<>sage<>2008/04/11(金) 23:47:19 ID:7VVhxwB20<> そういうことをする状況ってのがわからない。ただの演出?
Flash ではよくあるの?どういう状況?
<>
名称未設定<>sage<>2008/04/13(日) 14:50:31 ID:NAkghPa20<> みなさんはどんなアプリを作ってらっしゃるのですか。
詳しい回答とか来るので素人ではない人も多そうですが。 <>
名称未設定<>sage<>2008/04/13(日) 18:39:38 ID:NOrk0tDZ0<> 家計簿アプリを作ってます。最近はコードに手つけてませんけどね。 <>
名称未設定<>sage<>2008/04/14(月) 03:06:21 ID:eVlSOFQq0<> 16〜128pxまで持っている.icnsから、64pxのデータだけ取り出して
TIFFで保存したいんだけれど、良い方法ありますか?
<>
807<>sage<>2008/04/14(月) 03:58:34 ID:eVlSOFQq0<> ごめん
解決しました。 <>
名称未設定<>sage<>2008/04/14(月) 04:58:38 ID:jigo+5U80<> >>808
折角なので、どうやったら解決したかも教えてください>< <>
807<>sage<>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ね
まぁもっと良い方法が有るかもしれなけれど、取りあえずは解決。 <>
名称未設定<>sage<>2008/04/14(月) 19:53:51 ID:b0/4C/qo0<> 「たのしいcocoaプログラミング」
レパード対応版はまだでないのですか? <>
名称未設定<>sage<>2008/04/14(月) 20:16:43 ID:nTw3Y+hu0<> そんな予定はありません <>
名称未設定<>sage<>2008/04/14(月) 21:37:49 ID:rj1x9F1k0<> たのしいcocoaプログラミング
っていいの? <>
名称未設定<><>2008/04/14(月) 21:39:51 ID:Ogsz7wUg0<> >>813
度素人向けには、唯一の選択肢。 <>
名称未設定<>sage<>2008/04/14(月) 21:40:29 ID:3Zup1m6P0<> 俺が最初に買ったのは柴田さんの本 <>
名称未設定<>sage<>2008/04/15(火) 07:27:25 ID:eKvbdOse0<> iPhone本はどの辺がどういうメンツで出してくるんだろね <>
名称未設定<>sage<>2008/04/15(火) 15:41:46 ID:oJTFVe1u0<> 取得したファイル名の拡張子を取り除くのはどうすれば一番簡単でしょうか?
.で区切った配列の0からラスト-1番目までを.で結合? <>
名称未設定<>sage<>2008/04/15(火) 15:44:23 ID:Dmq8L+1e0<> man 3 basename <>
名称未設定<>sage<>2008/04/15(火) 16:21:55 ID:0oj35k/r0<> NSLog("%@", [@"/foo/bar/buz.tiff" stringByDeletingPathExtension]);
<>
名称未設定<>sage<>2008/04/15(火) 16:22:22 ID:iOoFa9Jh0<> -[NSString stringByDeletingPathExtension]だろ常識で考えて。 <>
名称未設定<>sage<>2008/04/15(火) 16:22:53 ID:iOoFa9Jh0<> かぶったスマソ <>
名称未設定<>sage<>2008/04/15(火) 17:45:23 ID:0oj35k/r0<> ObjCでメソッド名を伝える時はどうすれば良いでしょうか?
C++だと例えば
NSString::stringByDeletingPathExtension()
として伝えますよね。
ObjCだと
[NSString stringByDeletingPathExtension]
と伝えると、クラスメソッドの時は、すんなり通るけど、インスタンスメソッドだと
なんか嫌。
メッセージと考えて
@selector(stringByDeletingPathExtension)
こんな風にすると引数の型が判らないし、どのクラスのメソッドかも判らない。
どうすれば良いんでしょうか?
<>
名称未設定<>sage<>2008/04/15(火) 17:53:55 ID:dDNf2+y10<> 2でいいじゃん
てかメソッド名だけでもリファレンス検索ですぐ詳細わかるから
その辺はどうでもいいような <>
名称未設定<>sage<>2008/04/15(火) 18:03:48 ID:S1k7ee7c0<> 普通
+[NSString string]
-[NSString stringByDeletingPathExtension]
ってします。
Appleのドキュメントでは上のに加えて [] を省略してたりする。
僕は[]なしには違和感を覚えるのでそれは使わないです。 <>
名称未設定<>sage<>2008/04/15(火) 18:40:25 ID:0oj35k/r0<> >>823, 824
ありがとう、参考になる。行頭の"+/-"で判断すれば良いと。
ドキュメントを書かなければならない時に参考にさせていただきます。
<>
名称未設定<>sage<>2008/04/15(火) 22:18:08 ID:TXo52gSI0<> >>819>>820
ありがとうごさいます。
クラスリファレンスでpathCompornentやpathExtensionまでは
目に入っていたのですが見落としてました。
お恥ずかしい限りで。 <>
名称未設定<>sage<>2008/04/16(水) 04:44:16 ID:u/mR24nP0<> こういう、xxをしたいんだけど、どうすればいい?
という疑問があった場合に引ける逆引きリファレンスみたいなのが
欲しいよね。 <>
名称未設定<>sage<>2008/04/16(水) 12:24:54 ID:dfULm9rV0<> ケータイ動画などのQuickTimeの動画を回転(90度)させたいと思っているのですが、
どのように実装すればいいのでしょうか?
<>
名称未設定<>sage<>2008/04/16(水) 14:02:48 ID:r+wGhOwr0<> 首を90度かたむければいいんでねえの <>
名称未設定<>sage<>2008/04/16(水) 14:03:08 ID:fBaqeLs30<> >>827
言い出しっぺの法則発動! <>
名称未設定<>sage<>2008/04/16(水) 14:25:58 ID:/WVd0mVL0<> >>829
俺だったらディスプレーを90度傾けるね。クビを曲げるのはバカっぽいし。 <>
名称未設定<>sage<>2008/04/16(水) 15:32:52 ID:BEbEwGfI0<> movie matrix <>
名称未設定<>sage<>2008/04/18(金) 12:16:46 ID:yjp/rVhu0<> NSTextViewで、内容をバインディングのattributedStringを
指定して表示してます。
attributedStringはNSString,NSColor,NSFontから生成してますが、
これらの要素が変更されたとき、attributedStringを
更新するための仕組みをバインディングで実現できますか?
NSColorとかは自アプリの環境設定と連動している
わけですが。
<>
名称未設定<>sage<>2008/04/18(金) 12:48:50 ID:Li5XGbKm0<> NSString,NSColor,NSFontのsetter内にattributedStringの更新を入れとくんじゃダメなの?
setKeys:triggerChangeNotificationsForDependentKey:
こんなのもあるみたいだけど <>
名称未設定<>sage<>2008/04/18(金) 13:52:03 ID:yjp/rVhu0<> >>834
NSStringにはsetterがあるのですが、NSColor,NSFontは
NSDefaultsから取ってくる状態なんです。
setKeys:triggerChangeN〜はちょっと敷居が高そうですが
検討してみます。 <>
名称未設定<>sage<>2008/04/18(金) 15:11:48 ID:G0d9ll0b0<> よくわからないんですけど、NSUserDefaultsControllerでは駄目なのでしょうか?
http://developer.apple.com/cocoa/cocoabindings.html←こんなかんじで <>
名称未設定<><>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なんだろうけど、それがわからないから
手の平の上で躍らされている感じがすごく強いし
入門書もその辺は説明を避けていて、こうすればできますよという結果だけ書いてある感じ。 <>
名称未設定<>sage<>2008/04/18(金) 17:55:26 ID:9/uqIIpw0<> >>833
NSTextView全体のfont, colorをNSUserDefaultで設定するのならば
attributedStringではなくて value, textColor等を別個にbindすればよいでしょう
複雑なattributedStringの場合には少しコードを書く必要が出てきます。
<>
名称未設定<>sage<>2008/04/18(金) 18:20:07 ID:ZM0j7YsA0<> >>828
なんか前にもこんな質問あった気がするけど、10.5以降ならQTMovieLayer使うとできると思う。 <>
名称未設定<>sage<>2008/04/18(金) 18:37:53 ID:Ny9nrUPt0<> >>837
ネットやpdfの英語のドキュメントは読むけど、英語の書籍を読むのは躊躇する
せっかく金だして買うのに英語ってのがなぁ <>
名称未設定<>sage<>2008/04/18(金) 19:23:06 ID:4Fq5gPPw0<> >>837
確かにほとんど何もしなくてもアウトプットが出来てしまうのは
入り始めの人には入りやすいかなと。(私自信そうだし)
問題は次のステップから、一通り理解して楽しくなるまでの間が辛いかな。
「どうすればできるんだ」「なんでできないんだ」とひたすらトライ&エラーを繰り返す苦行が始まる。 <>
名称未設定<>sage<>2008/04/18(金) 21:07:56 ID:ZX8DO6F40<> >>837
うそだろ、買っちゃったよ
と思ったらなんだ英語か <>
名称未設定<>sage<>2008/04/18(金) 22:37:31 ID:JO3U47IL0<> customViewにNSBezierPathなどでパスを描画した後、そのView全体をTIFF (というかビットマップ画像) で保存したい場合はどのようにすれば良いのでしょうか。
PDFで保存するのは簡単なのですが…。 <>
名称未設定<>sage<>2008/04/18(金) 22:48:10 ID:gE+uDWOS0<> >>843
NSBitmapImageRep の initWithFocusedViewRect <>
843<>sage<>2008/04/19(土) 00:49:00 ID:IJRK5kOO0<> >>844
ありがとう。バッチリできました。
NSBitmapImageRepのオブジェクトが作れれば良さそうっていうのは何となく分かってたんだけど、こんなに簡単に作れたのね。半日探しても見つけられなかったのに…(・ω・;
ちなみにPNGで書き出すことにしました。 <>
828<>sage<>2008/04/19(土) 01:20:24 ID:FxxAWEm50<> >>832
頂いたキーワードでググってみたんですがそれらしいのが見つけられませんでした。
>>839
これでmovieを描画してこのレイヤーごと回転させてやれば良いと言うことですね。
理想としては回転させた状態で保存もしたいのですが、とりあえず見るぶんには大丈夫そうですね。
ありがとうございます。
Dumpstarでmatrixの数字を書き換えたら回転させられるという情報は見つけたんですが、
それと同じ事をプログラム側からできればいいと思ったのですがそれらしいのが見つからないですね。 <>
名称未設定<>sage<>2008/04/19(土) 03:00:43 ID:EjAdhRac0<> QTProでできるんだしQucikTime弄ればできるでしょう
Carbonだけど <>
名称未設定<>sage<>2008/04/19(土) 10:29:41 ID:W7DVTgpQ0<> QuickTimeはCarbonでは無い。SetMovieMatrix()。 <>
名称未設定<>sage<>2008/04/19(土) 13:15:09 ID:FxxAWEm50<> >>848
ありがとうございます。
SetMovieMatrix()ですね。
C言語はよくわかりませんが、ググりながら適当にやってみます。 <>
名称未設定<>sage<>2008/04/21(月) 17:16:20 ID:YsSmzhHi0<> 何も入力されていない状態のNSTextViewにスタイルを指定する事は可能でしょうか? <>
名称未設定<>sage<>2008/04/21(月) 22:16:13 ID:3KHOhc720<> スタイルってボーダースタイルのこと? <>
名称未設定<>sage<>2008/04/21(月) 23:15:10 ID:OGY02Qf30<> >>850
NSAttributedStringでググれ。
>>851
NSInterfaceStyleが好きだな。
<>
名称未設定<>sage<>2008/04/22(火) 20:10:17 ID:ogsohpXu0<> コアデータ(XMLファイル)のカラムにNSArrayやNSDictionaryを
保存したいのですが、出来ますでしょうか。
デスクリプションで文字列として保存してみましたが、戻しかたがわからず。 <>
名称未設定<>sage<>2008/04/22(火) 23:35:52 ID:EIQ6oRLs0<> 人に聞く前にもうちょっと勉強してみましょう。
とりあえずドキュメントを読みましょう。 <>
名称未設定<>sage<>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でエラーが出てしまいます。
上記の様な事を実現したいのですがどうすれば実現できますでしょうか。
よろしくお願い致します。
<>
名称未設定<>sage<>2008/04/23(水) 21:34:10 ID:za8tRBJ+0<> NSBrowserCellは使ったことがないので分かりませんが、
少なくともsetTextColor は存在しません。
setTextColorが実装されているのはNSTextFieldCellです。
ImageAndTextCell というのがXcode のサンプルのどこかにある
と思うので、参考にするとよいと思います。 <>
名称未設定<>sage<>2008/04/23(水) 21:47:24 ID:TVGerQ0Y0<> やはりsetTextColorは存在しないのですね…
NSCellを継承してて、いけるのかと思っていたのですが…
ImageAndTextCell、一度拝見してみたいと思います。
ありがとうございました。 <>
名称未設定<>sage<>2008/04/24(木) 00:28:34 ID:NUMASU0M0<> >>852
に便乗した質問なんですが、NSTableViewのセルにNSViewをセット
するメソッドがどうしても見つからないんですが、やはり自前で描画を
行いたい場合は、NSCellをオーバーライドするしかないんでしょうか。 <>
名称未設定<>sage<>2008/04/24(木) 01:37:04 ID:dIFNKKht0<> >>855
NSCellを継承しなくてもいいよ。
NSTableViewのデータソース内で、NSTextFieldCellをセットするだけ。
色を変えたい場合は、
[cell setTextColor:[NSColor whiteColor]];
とか...
>>858も、同じやり方で、ImageViewをセットしたらいけるんじゃないかな?NSViewは試したこと無いので、解りませぬが。 <>
名称未設定<>sage<>2008/04/24(木) 03:00:55 ID:FzT8a42h0<> NSView直接は無理でしょうよ <>
名称未設定<>sage<>2008/04/24(木) 08:30:03 ID:r6/OTCN10<> ID:dIFNKKht0 はたぶん何も分かってない <>
名称未設定<>sage<>2008/04/24(木) 08:50:51 ID:crG04gDJ0<> まぁまぁ
Cellが何をしてるかってことなんだけどね
ControlとかViewとかとの関係も含めね <>
名称未設定<>sage<>2008/04/24(木) 10:15:26 ID:E/j5PqMr0<> Windowを半透明にすると中のパーツや画像まで半透明になってしまいます。
中のパーツは不透明にするにはどうすれば良いか教えて下さい。 <>
名称未設定<>sage<>2008/04/24(木) 11:41:41 ID:MPmWf1y70<> ウインドウをテクスチャ付き属性にして、テクスチャ(backgroundColor)
を半透明にすれば部品は不透明のままになるけど、この方法がベストかどうかはワカンネ <>
名称未設定<>sage<>2008/04/24(木) 20:04:17 ID:XXVT8K2w0<> 普通にsetBackgroundColor:でいいと思うけど
>>863の言うWindowの半透明化って別の方法でやってるんじゃない? <>
名称未設定<><>2008/04/26(土) 09:14:28 ID:xVbrPtte0<> CoreData DocumentBased Application について疑問があります。
疑問1:ドキュメントクラス(NSPersistentDocumentクラスのサブクラス)と
それが必要とするモデル(xcdatamodel)はどのように結びついているのでしょうか?
例えば、モデルデータの名称を変更しても、ドキュメントクラスから
-managedObjectModelで呼び出すと取り出せます。ということは、ドキュメントクラス名
と同じ名前のモデルデータを結びつけている訳ではないようです。
疑問2:もしアプリケーションが複数種類のドキュメントクラスを持つとき、
それぞれが必要とするモデルをそれぞれのドキュメントに対応させる
ことを考えた場合、どのようにすればよいでしょうか?
疑問2はNSPersistentDocumentクラスの-managedObjectModelもしくは
-configurePersistentStoreCoodinatorForURLなんちゃらをオーバーライドすれば
出来そうな気もしますが、そもそもモデルデータとNSPersistentDocumentクラス
(のサブクラス)の結び付き方が良く分かっていないので、ご教示いただければ有り難いです。 <>
名称未設定<>sage<>2008/04/26(土) 16:46:33 ID:ZsdZ/vTl0<> ドキュメントの NSPersistentDocument - managedObjectModel の項目を読めば
全てこたいが出てる様な希ガス。 <>
866<><>2008/04/27(日) 08:26:27 ID:d3QjrQNU0<> >>867
レスありがとうございます。
>>ドキュメントの NSPersistentDocument - managedObjectModel の項目を読めば
>>全てこたいが出てる様な希ガス
うーん、あれだとモデルデータをパス指定しているので、例えばNSPersistentDocumentクラスで
同じことをやっていると仮定すると、結びつけるモデルファイル名が必要になると思います。
もしそうであれば、何もしないならそのファイル名はNSPersistentDocumentのサブクラス名と
同じにでもしないと結びつけられないのではないかなあと愚考しました。
そこで866の疑問1にある通りモデルファイル名を変更してコンパイルして
-managedObjectModelを実行すると、それでもキチンと意図したモデルを返してきたので
不思議だなあと思った次第です。
そんな訳で、例えば単純に-managedObjectModelをオーバーライドしてしまうと、
もしそのドキュメントクラスに先に別のモデルファイルが結びついているとメモリリークしてしまうのでは?
など予期せぬことがいろいろありそうなので、その辺の仕組みというか使い方を知っておきたいなと思いました。
しかし残念ながら、その辺のことがNSPersistentDocumentのリファレンスを読む限り、うまく読み取れませんでした。
(自分の英語力不足が。。。涙) <>
名称未設定<>sage<>2008/04/27(日) 09:25:41 ID:mRoS9Ouw0<> デフォルトでは、コアデータフレームワークは、アプリとフレームワーク中にある
全部のモデルを探し、それらを統合したものを作る。だからクラス名とか
ファイル名とかは関係ない。
特定のパーシステントストアを指定する場合、NSPersistentDocument の
managedObjectModelメソッドをオーバーライドする。
つまり mom ファイル(xcdatamodelがコンパイルされたもの)を指定し、
パーシステントドキュメント毎にインスタンスを作成する。
もし、全てのパーシステントドキュメントが同じモデルを共有する場合には、一つの
モデルインスタンスを共有すれば、メモリ効率が向上する。 <>
名称未設定<>sage<>2008/04/27(日) 09:32:07 ID:mvHQHg7J0<> nibで初期化されるNSImageViewのサブクラスを作成したのですが
- (id)initWithFrame:(NSRect)frame が呼び出されません。
このようなオブジェクトはawakeFromNibで初期化すれば良いのでしょうか? <>
名称未設定<>sage<>2008/04/27(日) 10:09:06 ID:EPg2Fzpo0<> >>870
Apple によれば、
nib ファイルは、GUI のつくりかたを指示したファイルじゃなくて、
Interface Builder で作った GUI のオブジェクトをフリーズドライしたようなものです。
IB で作るときは、パレットを自作していないカスタムクラスの場合、
IB の知っているベースクラスの init... をつかって初期化した状態になっています。
だから、読み込み時には initWith... とかは呼ばれません。
awakeFromNib で初期化してください。 <>
名称未設定<><>2008/04/27(日) 15:09:10 ID:f/y7kpGl0<> - (id)initWithCoder:(NSCoder *)decoder <>
名称未設定<>sage<>2008/04/27(日) 18:41:22 ID:70Gkfaou0<> Core Data で、特定のオブジェクト(entity 全体ではなく)だけセーブしない
ようにする、ということは可能でしょうか。
属性として数値を持っている entity があって、それらのオブジェクトの
平均値や合計など、計算で出せる値を持つオブジェクトを同じ entity の
NSManagedObject としてアプリ内で生成しているのですが、その属性は
計算すれば値が出てくるので、ファイルにセーブする必要がありません。
なので同じ entity でも、平均値や合計などのオブジェクトは、アプリ終了時に
セーブせずに破棄したいのです。
<>
名称未設定<>sage<>2008/04/27(日) 18:47:14 ID:qlzSxNz10<> カラムの属性を「一時的」にするとメモリ内だけで使用できるよ。 <>
873<>sage<>2008/04/27(日) 19:36:28 ID:70Gkfaou0<> >>874
属性ではなく entity を一時にしたいのです。
それにデータモデルで「一時」を指定すると
すべてのオブジェクトに適用されてしまうので、
セーブしたいデータまでセーブされなくなってしまいます。
<>
名称未設定<><>2008/04/27(日) 20:18:59 ID:ewlZNafK0<> >>873
entityのpersistent storeをNSInMemoryStoreTypeにすれば保存はされません。
entityのサブクラスを作って@avg,@countを使ったアクセッサを実装した方が簡単なように思いますが?
<>
873<>sage<>2008/04/27(日) 20:27:16 ID:70Gkfaou0<> >>876
persistent store は entity の全オブジェクトに適用されると
思いましたが違いましたでしょうか。
同じ entity でセーブしたいオブジェクトとセーブしたくない
オブジェクトがある場合、オブジェクトごとに persistent store
を変えることができる、ということでしょうか。
そのやり方を教えていただけると助かります。
あと、他の複数のオブジェクトの平均や合計などは、1つの
オブジェクト内では完結しないので、サブクラスではできないと
思います。
<>
866<><>2008/04/27(日) 20:31:41 ID:lKozO5hA0<> >>869
レスありがとうございます。
>>全部のモデルを探し、それらを統合したものを作る。だからクラス名とか
>>ファイル名とかは関係ない。
そうか!そういえばどこかでそんな記述を見た気が。。(でもその時は意味がよくわからなかった)
でも今、なにやら少し分かった気がします。もう少し資料を読み込んでみます。
ありがとうございます。 <>
名称未設定<><>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
すいませんが、後半の意味が理解できません。
<>
名称未設定<>sage<>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 <>
名称未設定<><>2008/04/27(日) 23:38:50 ID:mj/WZUyt0<> age忘れましたすみません <>
名称未設定<>sage<>2008/04/27(日) 23:41:37 ID:EPg2Fzpo0<> まず、NSTextField から文字列を取るのは stringValue 、
NSTextField 「に」文字列を設定するのが setStringValue 。
また、resultField= [NSString ... ] では、
resultField が NSTextField だったのが NSString になっちゃいますよ。
そうじゃなくて、NSTextField に、文字列を表示させたいんでしょう? <>
名称未設定<><>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]; <>
名称未設定<>sage<>2008/04/29(火) 17:51:36 ID:AdWKI4cK0<> Core Data アプリで(ドキュメントベースではない方)、アプリ終了時に
"entity required" というコンソールへのメッセージと、「保存操作は完了できませんでした」
というアラートパネルが出て、データが保存できません。
"entity required" というメッセージは、どういう状態のときに出るメッセージ
なのでしょうか。
「何が」「どの」entity を必要としているかがわからないので、どこから手を付ければ
いいのかさっぱりです。
<>
名称未設定<>sage<>2008/04/29(火) 21:28:13 ID:ZJ2+mWOF0<> 想像ですが、
・coredataのXMLファイルが壊れている/排他がかかっている
・coredataのentityのカラム定義を削除したが前の状態が残っている
・entityにmanagedObjectContextが関連付いていない
一度、coredataのXMLファイルをリネーム/削除、
プロジェクトをクリーン(build配下を削除)なりして見たら?
<>
名称未設定<>sage<>2008/04/30(水) 14:08:52 ID:5TrBc9DU0<> >>884
Managed Objectがきちんと保持されてないと出てた。
releaseが多めだったからだけど。 <>
名称未設定<>sage<>2008/04/30(水) 14:31:33 ID:XPdDR7a50<> 単にエンティティ同士の関連が壊れてるんでしょ?
A<=>B
って関連作ってるのにBを生成してないとか。 <>
名称未設定<>sage<>2008/04/30(水) 14:37:45 ID:5TrBc9DU0<> >>887
ああ、それかもね。オレは関連全部とっぱらって
自前で管理することにしてたよ。 <>
名称未設定<><>2008/05/01(木) 00:13:06 ID:ngZwcOFz0<> 質問させて下さい。表で項目が選択されている時だけ削除ボタンを有効にしようとして以下のメソッドを
書いたのですが、微妙に思った通りに動きません。一度項目を選択してそれを解除した場合削除ボタンが
無効にならないという状況です。使ってるメソッド自体おかしいのかもしれませんがアドバイスお願いします。
-(void)tableViewSelectionDidChange:(NSNotification*)n
{
[deleteButton setEnabled:YES];
} <>
名称未設定<><>2008/05/01(木) 00:26:03 ID:ngZwcOFz0<> すみません自己解決しました。
[deleteButton setEnabled:([tableView selectedRow] >=0 )];
でいけました。 <>
名称未設定<>sage<>2008/05/01(木) 00:35:17 ID:quU+k2WQ0<> それで良いのだが
なんだか釈然としないコードだ <>
名称未設定<>sage<>2008/05/01(木) 05:48:13 ID:VMLqZfhR0<> おもしろい書き方するんですね <>
名称未設定<>sage<>2008/05/01(木) 21:09:21 ID:Mfw72kWF0<> アプリケーションを立ち上げるときドック内でアイコンがバウンスし、
立ち上がると止まりますが、これはアプリケーションが内部的にどういう
状態のときにバウンスし、どういう状態になったときにバウンスが止まる
のでしょうか。
アプリケーション立ち上げ時のバウンスする回数を減らしたいのですが、
どこを直せばいいのか知りたいです。 <>
名称未設定<>sage<>2008/05/01(木) 21:11:41 ID:G2H0XP870<> 起動時間を短くしたら? <>
名称未設定<>sage<>2008/05/01(木) 21:18:39 ID:Mfw72kWF0<> どうすれば起動時間を短くできますか?
<>
名称未設定<>sage<>2008/05/01(木) 21:51:11 ID:N7kVmzvx0<> 起動時に確実に存在するインスタンスはnib内に置いておくとか
有効なんじゃないっけ?
<>
名称未設定<>sage<>2008/05/01(木) 22:41:38 ID:4aripvU+0<> Nib内にものをたくさん置かなければいいんじゃないでしょうか <>
名称未設定<>sage<>2008/05/01(木) 22:45:01 ID:reKOV4jG0<> プログラムを書かなければ良いんじゃないでしょうか <>
名称未設定<>sage<>2008/05/02(金) 01:04:19 ID:7sVJlQ5g0<> >>893
http://developer.apple.com/documentation/Performance/Conceptual/LaunchTime/LaunchTime.html
というまさにそのためのドキュメントが ADC にあるので読んでね。 <>
名称未設定<><>2008/05/02(金) 01:33:41 ID:DJdVJ3d30<> 調べて見た。
アイコンは、NSApplicationのインスタンスが生成されたタイミングで、バウンドを開始して、
applicationDidFinishLaunching:が呼ばれた時点で、バウンドが停止します。
ちなみに、applicationDidFinishLaunching:の中でMainMenu.nibをロードしたら、メニューバーの表示が変になるのでやめましょう。 <>
名称未設定<>sage<>2008/05/02(金) 05:38:45 ID:mZbQ+HPx0<> ttp://www.itmedia.co.jp/enterprise/articles/0705/14/news013_4.html#l_macfig4.jpg <>
名称未設定<>sage<>2008/05/03(土) 19:13:31 ID:1RMtZljt0<> NSManagedObjectContext の registeredObjects についてですが、
NSManagedObjectContext に register されるオブジェクトというのは、
具体的にどういうオブジェクトでしょうか。
insert (create) されたオブジェクトと、NSSQLiteStoreType のときは
fetch されたオブジェクト、ということでしょうか。
<>
名称未設定<>sage<>2008/05/04(日) 10:31:09 ID:I5vqDFiv0<> 独自の記号などが入ったフォントで文字列を描画しようとしていて
NSStringのstringWithCString:encoding:で文字コードを入れて
drawInRectで描画したいのですがencodingの指定がうまくいかず文字化けしてしまいます
ドキュメントを見るとNSProprietaryStringEncodingを指定すればよさそうなのですが
10.5のSDKのNSString.hでは10.5以降ではこれが使えなくなっているようです
10.5でNSProprietaryStringEncodingのかわりになるものってあるんでしょうか? <>
名称未設定<>sage<>2008/05/04(日) 11:52:41 ID:c8/Gl85+0<> フォントのほうがいじれるのであれば unicode にしてしまって、
NSString の stringWithUTF8String をつかえばいいと思いますが、
そうはいかないでしょうか。 <>
名称未設定<>sage<>2008/05/04(日) 12:57:27 ID:I5vqDFiv0<> >>904
フォントはこちらで作っているものではないので変更するのはちょっと避けたいです <>
名称未設定<>sage<>2008/05/04(日) 14:36:47 ID:I5vqDFiv0<> すいませんいろいろ調べていたらNSProprietaryStringEncodingはもともと使われていなかったので
廃止になったと書いてありました。従ってかわりを探しても見つからないようです。
しょうがないのでとりあえず順にいろいろな定数を入れてみたところNSMacOSRomanStringEncoding
でいいようでした。 <>
名称未設定<>sage<>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の前に出てきているので
プログラム中のコードは関係ないような気がするのですが、何が原因か分かる方はいらっしゃいますか?
<>
名称未設定<>sage<>2008/05/05(月) 14:05:13 ID:iyf/db9L0<> >>907
Cocoaバインディング使ってます?
<>
名称未設定<>sage<>2008/05/05(月) 14:13:22 ID:g5BqTO7b0<> ぽいね
バインドミスでしょう <>
907<>sage<>2008/05/05(月) 15:37:18 ID:uZpd4Du20<> >>908,909
してます。。。
bindingミスですか。チェックしてみます。ありがとうございます。
<>
名称未設定<>sage<>2008/05/05(月) 15:52:55 ID:g5BqTO7b0<> バインドした先で実装されてないとか。
自分も、対応するアクセッサメソッドやインスタンスがなくてよくそのエラー出します。 <>
名称未設定<>sage<>2008/05/05(月) 22:22:54 ID:K+pkfCxI0<> NSSortDescriptorで、文字列の場合で数字の並び(0..9,10...)の順にソートするには
どうすればよろしいのでしょうか?
クラスリファレンスを見たのですが、なんかやり方は書いてあるのですが、
具体的にコード例がないとさっぱりです。
<>
名称未設定<>sage<>2008/05/06(火) 06:41:31 ID:WVMfp2hi0<> 文字列(NSString)の、compare: に相当するもの(eg caseInsensitiveCompare:)を自分で書いて、
initWithKey:ascending:selector: のselector に、
initWithKey:@"key" ascending:YES selector:@selector(caseInsensitiveCompare:)
としてそのセレクタを指定するんだと思う。多分。
<>
名称未設定<>sage<>2008/05/06(火) 08:36:16 ID:3EDEFttz0<> 日本語入力/英語入力をアプリの中から切り替えるには、
どういう風にコード書けばいいですか? <>
名称未設定<>sage<>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 が返ってきたりして、
ソフトがクラッシュしかねないので、エラーチェックはきちんとしましょう。 <>
名称未設定<>sage<>2008/05/06(火) 23:49:20 ID:3EDEFttz0<> Cocoaではできないんでしょうか <>
名称未設定<>sage<>2008/05/07(水) 01:25:03 ID:CMfyE7AE0<> Cocoa では僕の知る限り出来ません。
CoreFoundation 系APIでできるだけでも儲け物だと思ってください。
あれはほとんど Cocoa なので。retain <---> CFRetain
release <---> CFRelease とか対応がありますし、
CFStringRef と NSString*, CFArrayRef と NSArray* は同じものだったり。
OS9起源の古い Carbon API はぼくもさっぱりわかりません。 <>
名称未設定<>sage<>2008/05/07(水) 03:42:55 ID:5gsClvIj0<> Core Foundationは食わず嫌いしなければ
文法が違うだけのCocoaみたいな感じだよね
どうしてもCocoaでできない部分だけつなぎで書くだけでいいし
<>
名称未設定<>sage<>2008/05/07(水) 08:34:32 ID:coBrXLAs0<> モダンCarbonを嫌がる理由がわからんなー <>
名称未設定<>sage<>2008/05/07(水) 08:52:30 ID:CMfyE7AE0<> TISCopyInputSourceForLanguage( ... );
なら
[TIS copyInputSourceForLanguage: ... ];
と読み替えておけばほとんど何も変わらないしね。
autorelease が無いのだけはまあ気になるが、
Leopard でガベジコレクション使うなら CF 系オブジェクトも
NSMakeCollectable しておけばいいだけだし。 <>
名称未設定<>sage<>2008/05/07(水) 09:25:49 ID:8naSQJhE0<> toll-free bridged でない CFObject についても autorelease していい?
できそうな気もするけど、書いてあるところが見付けられなかった… <>
名称未設定<>sage<>2008/05/07(水) 16:17:44 ID:WRxnjbwI0<> >>919
モダンでも将来が無いから。 <>
名称未設定<>sage<>2008/05/07(水) 23:15:04 ID:suKBaKoM0<> いや、でも、うえにあがってる TextInputSource まわりは
モダン Carbon で導入されたのは 10.5 だよ???
Apple が何考えて Cocoa でなくて CF にしてるのかは判らんが ... <>
名称未設定<>sage<>2008/05/07(水) 23:20:52 ID:i4YHvYrc0<> へぇモダンCarbonて初めて知った <>
名称未設定<>sage<>2008/05/07(水) 23:37:54 ID:Qh1PhVTc0<> IntelコンパイラがObjective-C喰ってくれないからなー
<>
名称未設定<><>2008/05/08(木) 18:29:58 ID:hE8NfP2u0<> CoreDataのプロパティの属性から、値を取り出そうとしています。
OSは、10.5です。
HMDT Third Editionを読みながら格闘していますが、サッパリ判りません。
やりたい事
エンティティの属性には、日付とINT32のデータがあるとします。
また、エンティティは、一つのみとします。
この条件で
日付をキーとして、INT32のデータをプログラムで読み出したいと思います。
HMDT 3th の P333 「プロパティの取得」までは出来たのですが、そこから先に進めません。
もしかして、P340の「管理オブジェクトの生成」とかしないといけないのでしょうか?
でも、10.5では、「管理オブジェクトの生成」を作成する項目が削除されています。
何方か、教えて下さいませんか?
<>
名称未設定<>sage<>2008/05/08(木) 19:21:04 ID:TCYS/HmF0<> 日付で取得したオブジェクトを配列に格納するなりしてアクセサメソッドを呼び出す。 <>
名称未設定<><>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];
} <>
名称未設定<>sage<>2008/05/08(木) 21:46:14 ID:iNFdN07J0<> Carbon て 64-bit には対応しないんじゃなかったっけ?
だとすると今さら手を出しにくい
>>926
日付の predicate を作って fetch して、valueForKey で呼び出せばいい気がする
<>
名称未設定<>sage<>2008/05/08(木) 22:56:54 ID:x0tM1m/R0<> 一部が対応しないだけ。 <>
名称未設定<><>2008/05/08(木) 23:02:00 ID:EqCKYgkP0<> >>928
NSObjectはNSCodingを実装してないよ。
<>
名称未設定<>sage<>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
なんじゃないかな ... <>
名称未設定<>sage<>2008/05/08(木) 23:19:09 ID:BP7jjS4s0<> あと、
>[coder encodeValueOfObjCType:@encode(float) at:&expectedRaise];
はできません。Obj-C は、NS...* というのはオブジェクトだけど、
float とかはオブジェクトじゃないので。
(最近の純粋オブジェクト指向言語とは違います。)
XCode なり、ADC なりでNSCoder のクラスリファレンスをみると、
encodeFloatForKey:
encodeDoubleForKey:
というのがあるのでそちらを使ってください。 <>
名称未設定<>sage<>2008/05/08(木) 23:26:11 ID:qSh4VS8R0<> >>933
そこは多分あってます。
問題はおそらく>>931で指摘されている通り、このオブジェクトのスーパークラス(多分NSObject)
がNSCodingに適合していないってことだと思います。
なので
[super encodeWithCoder:coder];
は必要ありません。 <>
名称未設定<><>2008/05/08(木) 23:42:15 ID:/6e6sYWv0<> ありがとうございました。
とりあえず[super ...]の一文を消して
NSCoder*に書き直しました。まだエラーが消えませんが
もう少し自力で頑張ってみます <>
名称未設定<>sage<>2008/05/09(金) 03:18:46 ID:y3A5HaB90<> CoreDataでの質問です。
1対多の関連を二回以上続けた先のEntityを複数のデータストアに分けたいのですが、
保存時に
「ストアを開くためのモデル構成が、ストアの作成
に使用されたモデルの設定と互換性がありません。」
と、警告が出て保存ができません。
間の関連をとって連続二回未満にすれば保存ができることはわかったのですが、
二回以上で保存する方法はないでしょうか?
わかりにくいので、一応サンプルをあげておきます。
ttp://www11.axfc.net/uploader/20/so/He_98690.zip
Pass:coredata <>
名称未設定<>sage<>2008/05/09(金) 10:47:09 ID:80X2weVT0<> アプリケーション終了時に内部的にいくつか処理をしてから terminate してるのですが、
その終了時の処理に結構時間がかかっています。
せめてそれをユーザーからは見えないようにしようと思い、アプリを hide してから
終了処理をしようと、
- (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) sender {
[NSApp hide: nil];
[self finalizeApp]; // 時間がかかる処理
return NSTerminateNow;
}
としたのですが、うまくいかず、やはりアプリがフォアグラウンドにあるまま
完全に終了するまで待たされてしまいます。
アプリ終了時のパフォーマンスを速く見せる良い方法はあるでしょうか。
<>
名称未設定<>sage<>2008/05/09(金) 11:27:45 ID:Opu2HJ/L0<> >>926
私も3rd読みながら格闘中なんで、
主題の解決策に対してはサッパリなんですが、
>10.5では、「管理オブジェクトの生成」を作成する項目が削除されています。
これは、モデリングツールを最前面に出して新規ファイル...する、もしくは
プロジェクトウィンドウ(ていうのかな、ファイルなんかの一覧なやつ)で
モデルファイルを選択した状態で新規ファイル...する、と
一覧の一番下の方に「管理オブジェクトクラス」の項目が
出てくるようです。
<>
名称未設定<>sage<>2008/05/09(金) 18:02:50 ID:UYBo6rbJ0<> >>937
どうしても終了時でなきゃいけない処理以外は
別のタイミングで処理しておく <>
名称未設定<>sage<>2008/05/09(金) 19:06:00 ID:TcWuqsN40<> プログレスバーや乳揺れ画像の一つでも見せれば少しは気が紛れるよ。 <>
名称未設定<>sage<>2008/05/09(金) 19:15:30 ID:EdKmWeTA0<> Virtual PC では、終了時にバックグラウンドで時間が掛かる後処理やってる。
それと同じようなことをしたいんだと思うけど。
applicationShouldTerminate だと、終了していいかどうかをデリゲートに聞いている
返事待ち状態なわけだから、そのかわりに、
applicationWillTerminate とか NSApplicationWillTerminateNotification をつかったら、
どう? <>
936<>sage<>2008/05/10(土) 04:26:03 ID:xbVxHxNF0<> CoreDataでは異なるストア間の参照はサポートしていないみたいですね。
サンプルを落とした方、汚いサンプルですみませんでした。
スレ汚し失礼しました。 <>
名称未設定<>sage<>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を実装しないと、単に代入されて上書きされ、
メモリリークしていました。その理由が分かりません。何か勘違いしているのでしょうか?
<>
名称未設定<>sage<>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];
としておけばいい。 <>
943<>sage<>2008/05/10(土) 13:47:59 ID:pME4zqtw0<> >> 944
レスありがとうございます。
うーん、何といいますか、自分としてはretain属性のプロパティでご指摘のようなsetterが勝手に
合成されることを期待しているのです。要するに自分でいちいちsetterを実装したくないので。。。
<>
名称未設定<>sage<>2008/05/10(土) 14:19:32 ID:XJmL41040<> >>943
ほんとうに -release が呼ばれていないことを確認したの?
単に、 retain/release のバランスがどこかで崩れていて、
leak してるというオチじゃないかと思うんだけど。 <>
943<>sage<>2008/05/10(土) 15:04:30 ID:pME4zqtw0<> >>946
レスありがとうございます。
えーと、最初自分でsetteerの実装をせずに、@property (retain)と@synthesize
の宣言を行った後、self.obj = otherObjなどしていました。
その際、MallocDebugツールでリークを調べていて、インスタンスの解放タイミングや
retainカウントをデバックしているうちに、リークが見つかり、その原因を追っていくうちに
上記のような現象にたどり着きました。
で、次に自分でsetterの実装をして検証したところ、解放タイミングおよびretainカウントとも
想定どおりで、且つMallocDebugツールでもリークがなくなったことを確認したのですが。。。
やっぱ変ですかね? ><; <>
944<>sage<>2008/05/10(土) 15:47:19 ID:6+POqPq50<> >>943
試しにretainじゃなくてassign属性で走らせてみて、
それで期待通りの動きをしたら、
-(void)methodAの中でotherObjがきちんと開放されてないからだと思うんだが。 <>
名称未設定<>sage<>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 が一回分少ないことになり、
そのためにリークしているわけです。 <>
943<>sage<>2008/05/10(土) 17:00:36 ID:2nbg5muC0<> >>949
レスありがとうございます。
> synthesize + retain な property が自動作成する setObject: は、
> >>944 にあるものと同じふるまいをします。これが正しい実装で、
> あなたの間違った実装より retain が一回分多いのです。
なるほど!っていうか、そりゃそうだ、なんで気がつかなかったんだ!?
>Cocoa のメモリ管理作法を正しく理解できていないようなので、
>コードを書くのはいったん止めて
すっかり基本を失念していた。多分間違った我流作法でソース書いてた。
ヴァカすぐる。もいっかい管理作法を読み返して、ソース全部見直さなきゃ。orz
でもまだ間に合う。的確なアドバイスありがとうございます。 <>
名称未設定<>sage<>2008/05/10(土) 19:47:48 ID:fcdWzzL20<> 16進数の数値を表す文字列を10進数で表された文字列に変換するにはどうしたらいいでしょうか?
具体的にやりたいことは、NSData内に数値の情報を示すバイト値の列があって、
それをGUIに表示したいのですが、
[NSString initWithData:data encoding:encoding] で試してみたところ変な文字列になってしまいうまくいきません。
エンコードはNSUTF8StringEncodingやNSASCIIStringEncodingなどを試してみました。
例えば16進数のバイト列 d6560500を10進数の数値の変換したい場合はどうすればいいのでしょうか? <>
名称未設定<>sage<>2008/05/10(土) 20:19:55 ID:JIRYjIAd0<> バイナリデータ=16進数と勘違いしてない?
バイナリエディタ等で16進表記されてるのはただの人間の利便性の都合だから
あの文字列が内部的にデータとして入ってる訳じゃないよ
NSDataのgetBytes:あたり使えば後はどうにでもなると思う <>
名称未設定<>sage<>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);
と試してもしてみましたがうまくいきません、、。 <>
名称未設定<>sage<>2008/05/10(土) 21:25:46 ID:JIRYjIAd0<> 根本的に文字列と数値の違いも解ってないんジャマイカ
指摘にも上の空っぽいからもうつっこまないけど <>
名称未設定<>sage<>2008/05/10(土) 21:48:43 ID:fcdWzzL20<> どう違うか説明しろと言われるとできませんね、、。
文字列の数値と数値が違うってぐらいの基本は分かっているつもりですが、
おっしゃる通り理解が足りないと思います。
非常に煮詰まっていてご指摘に対してちゃんと返答できていませんでした。すみません。 <>
名称未設定<>sage<>2008/05/10(土) 22:31:57 ID:XJmL41040<> > unsigned char buffer[0];
> [data getBytes:buffer];
これはひどい。 <>
名称未設定<>sage<>2008/05/10(土) 23:01:12 ID:fcdWzzL20<> ここ読んでやってみたんですがどのへんがおかしいのでしょう、、。
http://developer.apple.com/documentation/Cocoa/Conceptual/BinaryData/Tasks/WorkingBinaryData.html <>
名称未設定<>sage<>2008/05/10(土) 23:10:48 ID:nR40SzFm0<> 沖林式? <>
名称未設定<>sage<>2008/05/11(日) 00:11:11 ID:iL9wa7af0<> 俺も基本も分かってない気がするが答えてみる。
必要な処理は、
・文字列→数値
・16進数→10進数
・数値→文字列
の3つじゃないの? <>
名称未設定<>sage<>2008/05/11(日) 09:06:32 ID:ZBQfRAO80<> >>950
プロパティつかって Leopard でしかうごかなくしちゃうんだったら、
GC オンにしてしまえばいいんではないかと思いますが ...
iPhone / iPod touch 用でやっているなら仕方ないけど。 <>
名称未設定<><>2008/05/11(日) 10:58:32 ID:ZxJ0jefQ0<> >>957
>>956の部分に関しては、配列の大きさが0なのが悪い気がする
でも大きさ0にするとどうなるんだろうか <>
名称未設定<>sage<>2008/05/11(日) 12:02:00 ID:3pkc7KiT0<> 0でも正しく表示されてしまうんですよね、、。
今は一応1でやってみてますが。
>>959
文字列→数値はNSDataに変換すればいいのですよね?
16進数→10進数のやり方が分かってないのですが、
数値→文字列は今のところバイト値から求めたい文字列を正しく表示できているので、たぶんできているのだと思います。 <>
名称未設定<>sage<>2008/05/11(日) 12:09:28 ID:3pkc7KiT0<> すいませんいろいろ勘違いしてるみたいで、どこもかしこもちゃんとできていない気がしてきました。
出直してきます。 <>
名称未設定<>sage<>2008/05/11(日) 16:56:40 ID:s+FH5Jdv0<> strtolやらstrtoulやらをつかえばいいのに <>
名称未設定<><>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進数文字列表現が得られるのは知ってますか? <>
名称未設定<><>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だけの問題なのでしょうか。
どなかた情報をお持ちの方がいらしたらアドバイスをお願いします。 <>
名称未設定<>sage<>2008/05/11(日) 20:43:19 ID:beZqNfs70<> >>966
俺も同じ症状で>>512で書き込んだけど結局わからない。
<>
名称未設定<>sage<>2008/05/11(日) 23:19:09 ID:HbOBQd9C0<> 私もカーソルキー割り当てで二重実行するのに悩まされた。
結局あきらめたけど。 <>
名称未設定<><>2008/05/12(月) 01:58:27 ID:kaoonKig0<> >>966-968
つか、、
ttp://developer.apple.com/documentation/Cocoa/Conceptual/Button/Tasks/SettingButtonKeyEquiv.html
このへんIB2.5はちゃんと対応しきれてないんかね?IB3だと問題なかったような気がするんだけど、、 <>
名称未設定<>sage<>2008/05/12(月) 11:21:39 ID:19lg0Wdi0<> 素朴な疑問。
NSDictonaryなんですけど、任意のkeyが存在してるかどうかを知るのって、
allKeyで全部取り出してfor等で回していちいち調べなきゃだめですかね。
他に一発で結果がわかるような簡潔なメソッドって用意されてないんでしょうか。 <>
名称未設定<>sage<>2008/05/12(月) 11:43:41 ID:fGDuhclh0<> いや、objectForKey: で nil が返ってくるか調べればいいだけだと思うが ...
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html
にもそう書いてあるよ <>
970<>sage<>2008/05/12(月) 11:49:54 ID:19lg0Wdi0<> >>971
ああ・・・。俺が間抜けだった。
ありがとう。 <>
名称未設定<>sage<>2008/05/12(月) 19:42:03 ID:a9NhLGkc0<> NSColorってコアデータのエンティティに保存できますか?
テーブルビューの表示データ行にラベルをつけてみたいのですが。 <>
名称未設定<>sage<>2008/05/12(月) 19:45:24 ID:Tlh3z2/U0<> >>937
NSDataに変換して保存。
開く時はNSDataからNSColorに変換すればok <>
名称未設定<>sage<>2008/05/12(月) 22:19:21 ID:Ti+PWmoX0<> ありがとうこざいます、チャレンジしてみます。
カラムの属性はバイナリってことですかね?
コアデータの実体ってXMLファイルなんですけど、
どんなふうに記録されるのか不思議です。
<>
名称未設定<>sage<>2008/05/12(月) 23:16:47 ID:dCLOmrfN0<> >>975
>どんなふうに記録される
こんなふう
<key>lineColor</key>
<data>
BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2Jq
ZWN0AIWEAWMDhAJmZgABhg==
</data>
<>
名称未設定<><>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];
} <>
名称未設定<>sage<>2008/05/13(火) 22:32:18 ID:uOTw9HiH0<> >>977
selfが指すのはAboutController でしょ。
AboutControllerがNSWindowから派生したクラスじゃないのでは?
(makeKeyAndOrderFront:って事は、"自身" を画面の前面に持ってきて
KeyWindowにしろって命令だから、NSWindowかそのサブクラスが
応答するのが自然)。名前からして違うような気がするけど。 <>
名称未設定<>sage<>2008/05/13(火) 23:16:46 ID:BBqTH8+e0<> loadNibNamed: owner: は、owner: で渡したオブジェクトが、
Interface Builder で見える File's Owner になるので、
nib 内の window はそこからたどってください。
owner で渡すオブジェクトに IBOutlet をつくっておいて、
window を IBOutlet に結びつけておくのが簡単だと思いますが ... <>
名称未設定<>sage<>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ではダメなのであきらめるしかないようです。 <>
名称未設定<>sage<>2008/05/14(水) 23:44:07 ID:nznoHqtZ0<> >>980
そうですか、調査ありがとうございます。
NSWindowのサブクラスやデリゲートを作りkeyDownで処理するしかない感じですかね?
NSArrayControllerで特定のカラム(例.title)の値が変更されたのを通知するにはどうすれば良いでしょうか?
[NSArrayController addObserver:self forKeyPath:@"arrangedObjects.title" options:0 context:nil];
でもいけたんですが、ソート順を変えても通知されるので困っています。
forKeyPathの値に何かうまくいく記述があるのでしょうか? <>
名称未設定<>sage<>2008/05/15(木) 00:02:51 ID:Hj4Sp0Hh0<> >>981
[NSArrayController content]にaddObserverすればいいんじゃないか? <>
名称未設定<>sage<>2008/05/15(木) 03:18:56 ID:sZ8n+PBv0<> >>981
古いデータと比較して、変化なかったら無視すればいいのでは? <>
977<><>2008/05/15(木) 09:29:57 ID:4ZUv1Sit0<> >>978
>>979
お礼が遅れて済みません。
AboutControllerはNSObjectのサブクラスなので大丈夫かなと
思ったのですが…あと試しに宣言だけNSWindowの派生クラスにしてみても
エラー内容が変わらないんです。owner:に渡す値がまだよくわかって
ないのですが、もう少しやってみます。ありがとうございました <>
名称未設定<>sage<>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 に持っておくのが簡単だとおもうんだけど。 <>
名称未設定<>sage<>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=ウインドウだから、
応答しても意味ないけどね。 <>
986<>sage<>2008/05/16(金) 01:08:42 ID:aklscQef0<> 訂正。最後から二行目、
NSWindow ≠ ウインドウ
の間違い。 <>
名称未設定<>sage<>2008/05/16(金) 02:36:49 ID:CgZkNnSkP<> いまさらなのかもしれないけど、Xcode3.0あたりから
付属のAPIリファレンスはオンラインを参照するようになった?
常時接続じゃないからちょっと不便… <>
名称未設定<>sage<>2008/05/16(金) 04:55:45 ID:UsfNj5B40<> HDDのマークがついてる奴はオフラインだよ。 <>
名称未設定<>sage<>2008/05/16(金) 08:30:33 ID:CwHjLP1I0<> >>988
3.1かららしいよ <>
名称未設定<>sage<>2008/05/16(金) 10:57:49 ID:P4K/1j2x0<> 3.1 でもローカルにあるけど。
RSS みたいになってて、自動でアップデートがかかるようになってるのと、
XCode のパッケージにはドキュメントついてないので、はじめて立ちあげたときに
アップデートかけないといけないだけです。 <>
名称未設定<>sage<>2008/05/17(土) 03:43:39 ID:qBdE7umEP<> >>989-991
情報thx
Core Libraryにsubscribeしてアップデートしたらできたよ <>