1 名前:名称未設定 mailto:sage [2009/01/13(火) 22:26:12 ID:TtNlCCCM0] 前スレ Cocoaはさっぱり!!! version.11 pc11.2ch.net/test/read.cgi/mac/1224960170/ Cocoaはさっぱり!!! version.X(10) pc11.2ch.net/test/read.cgi/mac/1211290055/ Cocoaはさっぱり!!! version.9 pc11.2ch.net/test/read.cgi/mac/1201106820/ Cocoaはさっぱり!!! version.8 pc11.2ch.net/test/read.cgi/mac/1179498292/ Cocoaはさっぱり!!! version.7 pc11.2ch.net/test/read.cgi/mac/1161486802/ Cocoaはさっぱり!!! version.6 pc11.2ch.net/test/read.cgi/mac/1146391229/ Cocoaはさっぱり!!! version.5 pc11.2ch.net/test/read.cgi/mac/1124986925/ Cocoaはさっぱり!!! version.4 pc11.2ch.net/test/read.cgi/mac/1091927026/ Cocoaはさっぱり!!! Version.3 pc5.2ch.net/test/read.cgi/mac/1063295248/ Cocoaはさっぱり!version:2 pc11.2ch.net/test/read.cgi/mac/1036923528/ Cocoaはさっぱり! pc11.2ch.net/test/read.cgi/mac/1007632025/
175 名前:名称未設定 [2009/01/27(火) 11:26:15 ID:9hNC4mxk0] ごめん ちょっと教えて WindowsからSocketプログラム移植する時って Cocoaで書き直した方が良い? BDSソケットでもOK? BDSソケットって移植性重視の低効率実装な可能性があるから心配 ちなみに元のPGは 独自プロトコルのTCPでスレッドで受信しているタイプです
176 名前:名称未設定 mailto:sage [2009/01/27(火) 11:34:15 ID:4HjLNx/70] >>175 OS X の BSD socket は移植性のためのインターフェースじゃなくて カーネルがはじめに実際に実装してるインターフェースです。 というか OS X は mach + BSD のハイブリッドなので。 というわけで心配せず BSD socket をそのまま使ってください。 Cocoa/CoreFoundation の socket インターフェースも 結局は BSD socket のうえに実装されてます。
177 名前:名称未設定 [2009/01/27(火) 12:05:14 ID:9hNC4mxk0] ありがとうございます カーネルがmach なので期待はしていましたが 何ぶんWindows生活が長くて
178 名前:名称未設定 mailto:sage [2009/01/27(火) 12:42:24 ID:yG2s1pTo0] >> 173 誘導どうもです。 最近、Cocoaプログラミング始めた初心者です。 会社のMacで簡単な工数計算のアプリを組んでみたんですが… 数値入力用のTextFieldに全角で数字を打ち込む人間がいて困っています。 そこで、特定のTextFieldにフォーカスが移った時に、 半角英数入力に強制的に替えるにはどうすればいいのでしょうか? 環境は、MacOS X 10.4.11 & Xcode 2.0 です。
179 名前:名称未設定 mailto:sage [2009/01/27(火) 12:48:31 ID:yISpEkrc0] "Only Roman Characters"が怪しい
180 名前:名称未設定 mailto:sage [2009/01/27(火) 12:50:09 ID:wonKckub0] >>178 mouseDownとか適当なイベント拾ってAppleScriptで半角切り替えかな。 でも強制切り替えはどうだろね。 運用でカバーした方がいい問題のような希ガス
181 名前:名称未設定 mailto:sage [2009/01/27(火) 12:57:47 ID:Qfd0k62B0] >>178 NSNumberFormatter 使えば済むのでは? 全角で入力されても内部で変換してしまえば良いし、他の文字が入ってたら アラートも出せるし。って事ではないのかな???
182 名前:名称未設定 mailto:sage [2009/01/27(火) 13:02:13 ID:SWJ660ES0] >>180 181 やはり強制切替は難しいですか; ちょうどNSNumberFormatterを調べてたので、 全角→半角変換で対応してみます。 どうもありがとうございます。
183 名前:名称未設定 mailto:sage [2009/01/27(火) 14:08:33 ID:L3yeV/fG0] >>182 検証してないけど、 lists.apple.com/archives/cocoa-dev/2008/Mar/msg00556.html にText Input Sourceを使えばできるかもしれないってある
184 名前:名称未設定 mailto:sage [2009/01/27(火) 14:49:05 ID:SWJ660ES0] >>183 やりたい事はその質問と同じく、IME入力モードの切り替えなんですが… Cocoa APIにはIMEの切り替え手段がないような事が書かれてますね; うちの環境は10.4.11なので、「Text Input Source Services」の方はダメっぽいですか… 英語が不得意なので、ちょっと敷居が高そうですけど、 「Keyboard Layout Services Functions」の方を調べてみます。 ありがとうございました。
185 名前:名称未設定 mailto:sage [2009/01/27(火) 15:41:46 ID:RNAQzsjb0] 素人が一言 キー入力せずにコピペで張る場合もあるぜ? かな漢いじるよりNSNumberFormatter?で入力後の文字成型した方が現実には効果的だよ まあかな漢制御したりキーボードイベント横取りしたりの方が プログラマの征服感は満たされるけどね
186 名前:名称未設定 mailto:sage [2009/01/27(火) 15:57:33 ID:L3yeV/fG0] ただ、自動で英数モードに切り替わるほうがUI設計として適切な場合もある(例えばNSSecureTextField)。 両方行うのが最適解。
187 名前:名称未設定 [2009/01/27(火) 16:01:41 ID:hKpJgpLM0] 半角モードに切り替わるテキストフィールド見た事あるけど どうやってるかは知らん
188 名前:名称未設定 mailto:sage [2009/01/27(火) 16:21:16 ID:SWJ660ES0] 同じMac上で、FileMaker Proを使っているんですが、 そこのTextFieldの『フィールド選択時の動作』設定では 『IMEモードの切り替え:Romanモードに固定』というのがあるので、 てっきりAPIで提供されていると思っていたんですよね;
189 名前:名称未設定 mailto:sage [2009/01/27(火) 16:51:41 ID:5ofWyrnr0] >>188 Carbon + Control Managerにはあったなぁ。 遠い昔(4,5年前か?)なのでなんと言うやつだったか、さっぱり思い出せないけど。 すまないがCocoaの同等の機能は知らんなぁ。 NSControlから ControlRefでも取り出せればできるんだろうがね。
190 名前:名称未設定 mailto:sage [2009/01/27(火) 17:06:41 ID:9ySZEYTP0] script manager だったと思う。
191 名前:名称未設定 mailto:sage [2009/01/27(火) 18:37:09 ID:yG2s1pTo0] >>189 >>190 Carbonにはあったんですか… フィールドをタブで移動する時に、 備考入力欄なら全角に、数値や商品コード入力欄なら半角に…って感じで、 いちいち手作業で入力モードを変えなくていいので、 作業効率が全然違うんですよね; いまさらCarbonで作り直す気力も時間もないし、 とりあえずは入力後変換で対応するようにしてみます。 ただ、お偉さんや同僚達は CocoaとCarbonの区別なんてつかないし、 説明しても理解できないので、 「何でFileMakerでは出来てるのに出来ないんだ?」とか 言われるのは悔しいですがw 皆さんありがとうございました。
192 名前:名称未設定 mailto:sage [2009/01/27(火) 18:56:28 ID:cZYADSu20] cocoawiki.aerial.st/index.php?NSTextField%2F 半角英数TextField これ参考にならんか?
193 名前:名称未設定 mailto:sage [2009/01/27(火) 18:59:59 ID:sxkNeV8c0] >>191 数字を入れるtextに全角で入力する馬鹿のために なんでここまで苦しまなくちゃいけないんだって感じだよな。
194 名前:名称未設定 mailto:sage [2009/01/27(火) 19:03:14 ID:y317W0/+0] >>191 TextView サブクラス - (BOOL)becomeFirstResponder { KeyScript( smKeyRoman ); return [super becomeFirstResponder]; } と、NSNumberFormatterで半角のみに...
195 名前:名称未設定 mailto:sage [2009/01/27(火) 19:05:27 ID:y317W0/+0] ごめん、TextFieldのサブクラスだった...
196 名前:名称未設定 mailto:sage [2009/01/27(火) 19:07:26 ID:L3yeV/fG0] そっかfield editorか・・・
197 名前:名称未設定 mailto:sage [2009/01/27(火) 19:18:23 ID:yG2s1pTo0] >>192 >>194 おー!ありがとうございます! なんかいけそうな感じですね。 今は、もう帰宅してしまってるので明日会社で試してみます! 感謝感謝です!! >>193 自分もまさか全角数字を入力するやつはいないだろうと思ってたんですが、 「出来たから使ってね」って配布したその30分後、 「ちゃんと計算してくれないんだけど!」って言われましたw
198 名前:名称未設定 mailto:sage [2009/01/27(火) 19:21:22 ID:5ofWyrnr0] 気になって調べちゃったよ 10.5以降になってしまうが、 -[NSTextFieldCell setAllowedInputSourceLocales:] ってのがあるな。NSAllRomanInputSourcesLocaleIdentifierで secure fieldと同じくromanに保てるようだ。
199 名前:名称未設定 mailto:sage [2009/01/27(火) 19:40:16 ID:5ofWyrnr0] ごめん、よく読んだら 10.4だったね。 ちなみに Control Managerのも思い出した。 kControlEditTextKeyScriptBehaviorTagだった。これが198のと同じ動作だろうね。 こっちは PerefersRomanと RequiresRomanと指定できて便利なんだな。 まぁControlRefが無いとダメだけど。 このくらい用意して欲しいよな。。。
200 名前:名称未設定 mailto:sage [2009/01/27(火) 19:59:22 ID:P+jy031y0] 入力された文字列が数字以外ならエラーを返す関数なら 自作ので持ってるよ。
201 名前:名称未設定 mailto:sage [2009/01/27(火) 20:03:19 ID:yG2s1pTo0] >>198 お手数かけます; 会社の環境では試せませんけど、今後の参考&勉強になります! 本当にありがとうございます!! プログラマーとして入社した訳でないのに、 通常業務とは別の空き時間に、AccessVBAで事務処理プログラムを作らされてて 今回初めてMacのアプリを作ってみたんですけど、Cocoa楽しいっす!
202 名前:名称未設定 mailto:sage [2009/01/27(火) 20:08:23 ID:yG2s1pTo0] >>200 勉強したいので、差し支えなければコードをお教え願えますか? すみません;
203 名前:名称未設定 mailto:sage [2009/01/27(火) 20:59:16 ID:MKYO8yw90] 例えば、NSTextViewのサブクラスで - (BOOL)conformsToProtocol:(Protocol *)aProtocol { return NO; } とかってやると、NSTextInputプロトコルを実装してないことになり、OSから仮名漢字変換のサポートが受けられなくなるので、 結果的に、入力モードは切り替わらないけど、半角英数字しか入力できないフィールドエディターが出来上がります。 もし、「勝手に入力モードが切り替わるのがウザイ」とか言われたときは、こういう手もあります。
204 名前:名称未設定 mailto:sage [2009/01/27(火) 21:16:07 ID:MKYO8yw90] >> 200 もしかして、こんな感じ? BOOL isInt(NSString* text) { return [[NSScanner scannerWithString:text] scanInt:NULL]; }
205 名前:名称未設定 mailto:sage [2009/01/27(火) 23:32:36 ID:BQbhAN2S0] >>202 VBAを使ったExcelのアプリは泥縄式で貧弱のだったらなんとか作れるんですが、 Macのアプリも同じような感じで作れますかね?
206 名前:名称未設定 mailto:sage [2009/01/28(水) 01:59:06 ID:6dpH/5D9i] >179のでオケーじゃないの? IBでTextFieldの設定のAllows only roman charactersにチェックするだけじゃ? 加えてNumberFormatterでアルファベットをはじけば望む動作だと思うけど。
207 名前:名称未設定 mailto:sage [2009/01/28(水) 02:00:38 ID:6dpH/5D9i] あ、>206は>>178 へのレスです。
208 名前:名称未設定 [2009/01/28(水) 03:12:35 ID:QC5LijlX0] こういうのはなんでもOgreKitに任せてしまうな。めんどくさいから。
209 名前:名称未設定 mailto:sage [2009/01/28(水) 09:34:22 ID:OjUJEHAK0] >>206-207 >>178 >環境は、MacOS X 10.4.11 & Xcode 2.0
210 名前:名称未設定 mailto:sage [2009/01/28(水) 12:25:06 ID:1DgzpuuK0] NumberFormatterでいいと思うけどなー すいません、質問なのですが 環境は10.5 Xcode3.1です シグナルのキャッチってどう書くのが良いのでしょうか? 具体的にはSIGABRTをキャッチしてエラーメッセージを表示したいです。 その際、可能ならアプリが終了しない様にしたいと思っております。 よろしくお願い致します。
211 名前:名称未設定 mailto:sage [2009/01/28(水) 13:52:13 ID:ZgWOL2AA0] developer.apple.com/samplecode/PreLoginAgents/listing2.html が参考になると思います。 signal ハンドラ内では Cocoa みたいな大げさなものは呼べないので、 なんとかして signal を Cocoa のレベルまで持ってこないといけないですが、 その部分は上のサンプルコードからそのまま取ってこれるでしょう。 ていうかなんで Cocoa の GUI app にシグナルが飛んでくるの? そっちのほうに興味があるな。 Apple メニューから再起動のばあいは quit の AppleEvent だし。
212 名前:名称未設定 mailto:sage [2009/01/28(水) 14:07:38 ID:1DgzpuuK0] >>211 ありがとうございます。 一度、拝見させて頂きます。 Cで作ったライブラリ内の関数を呼んでるんですけど、 その引数に特定の値を与えるとデバッガに「シグナルを受信しました:"SIGABRT"」 が表示されるんです。 ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…
213 名前:名称未設定 mailto:sage [2009/01/28(水) 23:10:46 ID:oju538Ej0] NSIndexPathを使ってNSTreeControllerにある目的のオブジェクトを一発で取得ってできないのね
214 名前:名称未設定 [2009/01/28(水) 23:39:54 ID:4dls5RrY0] >>213 [[[treeController arrangedObjects] descendantNodeAtIndexPath:path] representedObject]
215 名前:名称未設定 mailto:sage [2009/01/28(水) 23:45:24 ID:oju538Ej0] >>214 なるほど、ツリーノード経由でアクセスすればいいのか ありがとう!
216 名前:名称未設定 mailto:sage [2009/01/28(水) 23:57:25 ID:ZgWOL2AA0] >>212 >ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので… SIGINT/SIGTERM と違って、SIGABRT はキャッチできるが復帰出来なかった 気がしてきた。というわけでライブラリ側を直さないと仕方ないんじゃないかな。 en.wikipedia.org/wiki/SIGABRT
217 名前:212 mailto:sage [2009/01/29(木) 10:45:15 ID:yu3hvIXX0] >>216 うげー、まじっすか! うっすらとそんな気はしてたんですが… windowsのC++から同じライブラリを使用する時は try〜catchで例外に飛んでくれるのに、macはtry〜catchだと落ちてしまう… それで、シグナルのキャッチをしないといけないのかと思ったんですが、 復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
218 名前:名称未設定 mailto:sage [2009/01/29(木) 11:14:55 ID:jq8EMf7e0] もうちょっと状況を説明してください。 使っているライブラリは C++ のもので、C++ の例外を送出してるんですか? それなら mac でも捉えられない筈はないです。 try ... catch は C++ のものを使ってますか? Obj-C の例外と C++ の例外は別だから、 @try ブロックでは C++ の例外は捉えられなかった... とおもいます。 Obj-C++ をつかう (ファイルの拡張子を .mm にする)とかして、 ふつうに try{ ...} catch で捕まるはず。 SIGABRT がでているのは、多分 C++ の例外が捉えられずに標準の terminate() が呼ばれて、それの標準の実装であるところの abort() が 呼ばれてるからでしょう。
219 名前:名称未設定 mailto:sage [2009/01/29(木) 11:17:56 ID:jq8EMf7e0] >>217 >復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か… あと、この文脈で復帰というのはシグナルハンドラから抜けたらという ことだから、SIGABRT がでた時点で GUI をいじってる暇はないです。
220 名前:212 mailto:sage [2009/01/29(木) 11:29:16 ID:yu3hvIXX0] むーーっちゃ参考になりました!! 解決致しました!! >@try ブロックでは C++ の例外は捉えられなかった... とおもいます。 まさにこれでした… ライブラリはC++でC++の例外を送出しておりました。 それを@tryで捉えようとしていた為に今回の様な事になっていたようです。 普通のtry〜catchを使用した所、例外処理に飛びました。 ホントにどうもありがとうございました。 …今回のは自分の中でかなり勉強になった。w
221 名前:名称未設定 mailto:sage [2009/01/29(木) 11:54:06 ID:jq8EMf7e0] 解決して良かったです。今後は 「A というのを解決するために B をしたい。しかし B の仕方が分からない。」 とい う構造のときは、B を質問するんじゃなくて A を質問してくださいね。 (今回は A: C++例外を取り損ねていた B: SIGABRT をキャッチしたい)
222 名前:212 mailto:sage [2009/01/29(木) 12:02:51 ID:yu3hvIXX0] あ、ホントですね… 改めて見ると質問おかしいですね(/▽*\) 以後気をつけます。。。
223 名前:名称未設定 [2009/01/29(木) 14:09:30 ID:adGsEShc0] 今objective-cのアクセッサメソッドを勉強中なんですが、 NSArray* gooに対するアクセッサを例に質問させていただきます。 このgooのアクセッサメソッドの定義についてなんです - (void)setGoo:(NSArray*)aGoo { // @goo = [[NSArray alloc] initWithArray:aGoo]; // Agoo = aGoo; } @は新たにメモリ領域を確保しています Aはそのまんまポインタを代入しているのですが、 こういうのはそれぞれ使い分けていけばいいのでしょうか? それとも・・・こうだという書き方があるのでしょうか?
224 名前:名称未設定 mailto:sage [2009/01/29(木) 14:15:22 ID:noz0c/Ci0] 書き方は色々あるけど、渡されたオブジェクトをretainするのが普通。 - (void)setFoo:(id)bar { if(foo != bar) { [foo release]; foo = [bar retain]; } } みたいな感じかな
225 名前:名称未設定 mailto:sage [2009/01/29(木) 14:26:11 ID:jq8EMf7e0] うむ。いずれ (2) だと release しすぎでクラッシュするよ。 retain/release/autorelease はきちんと理解しましょう。
226 名前:名称未設定 mailto:sage [2009/01/29(木) 14:36:15 ID:ek2lYM/y0] retain, release, autoreleaseの話題はそろそろテンプレ化してもいいんじゃねぇの?
227 名前:名称未設定 [2009/01/29(木) 14:36:35 ID:adGsEShc0] >>224 いろいろ参照していると 確かにそんな書き方をいくつか見かけました。 ただfooのメモリ領域を新たに確保したい場合はそれでは駄目ですよね。 そのときの書き方とかもありますか? あとゲッターについてもなんですが、 普通に -(NSArray*)foo { return foo; } でいいですか?
228 名前:名称未設定 [2009/01/29(木) 14:37:18 ID:adGsEShc0] >>225 なるほど。確かにそうですよね。
229 名前:名称未設定 mailto:sage [2009/01/29(木) 14:44:33 ID:qvTjmqpK0] >>227 興味本位で聞くけど、なんでそんな事をしたいの?
230 名前:名称未設定 mailto:sage [2009/01/29(木) 14:57:21 ID:um6KdJm70] Thread safeを考慮しなくていいという前提で行くけど Setterは - (void)setHogehoge:(id)newHogehoge { if(hogehoge != newHogehoge) { [hogehoge autorelease]; hogehoge = [newHogehoge copy]; } } Getterは - (hogehoge*)hogehoge { return [hogehoge copy] autorelease]; } とか、copyでやるのが遅いが安全かなと思った。
231 名前:名称未設定 mailto:sage [2009/01/29(木) 15:02:55 ID:qvTjmqpK0] 整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。 どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。
232 名前:名称未設定 mailto:sage [2009/01/29(木) 15:08:47 ID:/bmL0ZO50] NSArrayとかNSDictionaryとかだとdeep copyするかどうか と考え込みすぎてしまいます
233 名前:名称未設定 [2009/01/29(木) 16:48:52 ID:adGsEShc0] 返信レス遅くなってすみません。 いろいろな意見を聞かせて頂けて本当にありがとうございます。 みなさんがどの辺を意識しながらプログラムしているのか、ちょっと分かった気がします。
234 名前:名称未設定 mailto:sage [2009/01/30(金) 00:31:04 ID:x4D9q//I0] ターゲットが10.5以上ならしっかりとしたメモリ管理を覚えるのは後回しにしてもとりあえずプロパティを学べばおk
235 名前:名称未設定 mailto:sage [2009/01/30(金) 02:55:33 ID:1T9rFWEx0] >>230 確かにこれはパフォーマンスが気になるような場合はちょっときついかな。 それに getter で autorelease してるなら setter の方は release でいいんじゃないの?
236 名前:名称未設定 mailto:sage [2009/01/30(金) 08:26:27 ID:tnqIJAcF0] copy するかしないかは場合によるでしょう、 安全性のもんだいだけじゃないよ。 GUI のクラスが渡されたときにそれを copy しても仕方なかったりするし。 NSString とか NSArray ならともかく。
237 名前:212 mailto:sage [2009/01/30(金) 12:22:51 ID:Xk99m0ql0] くそっ、昨日いけたと思っていtry〜catchでSIGABRT捉える問題なんですが、 Releaseでビルドすると捉えれずに落ちてしまう… debugだとデバッガがアタッチされてるからうまい事いってたのかなぁ…
238 名前:名称未設定 mailto:sage [2009/01/30(金) 13:45:42 ID:tnqIJAcF0] >>237 ビルド条件で挙動が変わるってのはなんかポインタの扱いが間違ってるとか そんなバグがあるんだとおもいます。 うまく動いてるときでも偶然うまくいってたとおもったほうがいいとおもう。 あと、いっとくけど SIGABRT を捉えられてるんじゃないよ。 C++ の例外は、だれもキャッチしないで main 関数の外に抜けると ランタイムが abort() に変換して、それが結局 SIGABRT になる。 だから、あなたが捉えてるのはあくまで C++ の例外のはずです。 set_terminate とか使って例外が底抜けているか調べたら?
239 名前:名称未設定 mailto:sage [2009/02/01(日) 08:21:57 ID:n9A0C94C0] >>231 >整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。 >どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。 って具体的に書くとどういう操作ですか?
240 名前:名称未設定 mailto:sage [2009/02/01(日) 09:35:31 ID:1mYsSfAu0] 231じゃないが、 オブジェクトは>224にあるようなsetterのコードを使っていて、 呼び出し元は、setterに渡す前にcopyしてから渡すってことだとおもう。 copyを使うかどうかは、外部と内部とで共有するオブジェクトを 排除したいかどうかだろうね。
241 名前:名称未設定 mailto:sage [2009/02/01(日) 14:49:50 ID:yyoukxzn0] >>223 developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_6.html この辺の@propertyによるsetter/getterの実装と、その選択を考えれば どういう風にするのがいいか解ると思う。
242 名前:名称未設定 mailto:sage [2009/02/02(月) 03:02:07 ID:oWvyvjyR0] >>240 >copyを使うかどうかは、外部と内部とで共有するオブジェクトを >排除したいかどうかだろうね。 もっと現実に即した説明で言うなら、オブジェクトのそのときの値に用があるのか、 オブジェクトを参照したいのか、みたいな感じかと。 例えば NS(Mutable)Number や NS(Mutable)String を setter に渡して何かの最後の値を 記憶しておくようなクラスを作ったら、copy しておかないとおかしなことになりうる。 そうでなく、例えば NSWindow とか、値に用があるのなくそのオブジェクトを参照したい場合 は retain と。 -copy に答えるオブジェクト(NSCopying 準拠)かどうかというのもある。
243 名前:名称未設定 mailto:sage [2009/02/02(月) 03:14:22 ID:oWvyvjyR0] しまった、NSMutableNumber って何だよ俺。
244 名前:名称未設定 mailto:sage [2009/02/02(月) 06:27:53 ID:TONCedf+0] >>243 多倍長整数同士の演算を実装したクラスだな。 俺も持ってる
245 名前:名称未設定 mailto:sage [2009/02/02(月) 13:54:51 ID:2xCIDXB+0] >NSMutableNumber NSNumber を継承して、値に意味の中心があるクラスとして、NSCopying protocol 準拠で copyWithZone:(NSZone) の実装をされたんでしょうか?
246 名前:名称未設定 mailto:sage [2009/02/02(月) 13:56:34 ID:yqjQEfKg0] そんなにいじめるなよ
247 名前:名称未設定 mailto:sage [2009/02/02(月) 14:01:26 ID:2xCIDXB+0] それとも、NSMutableCopying protocol 準拠 - (id)mutableCopyWithZone:(NSZone *)zone の方でしょうか?
248 名前:名称未設定 mailto:sage [2009/02/02(月) 14:03:09 ID:2xCIDXB+0] あれ?タイポだって事?それなら失礼。 でも、実際、そういうクラス作るとしたら、準拠でしょうか?
249 名前:名称未設定 mailto:sage [2009/02/02(月) 14:34:12 ID:RTJ7jXP10] NSNumber を単純に継承しても動かんよ、クラスクラスタだから…という話は 置いておいて。NSMutableCopying Protocol のリファレンスには、 > Only classes that define an “immutable vs. mutable” distinction should > adopt this protocol. Classes that don’t define such a distinction should > adopt NSCopying instead. とあるので、不変クラスが無ければ、NSCopyingだけで良いんじゃない?
250 名前:名称未設定 mailto:sage [2009/02/02(月) 14:59:15 ID:oWvyvjyR0] >>244 >多倍長整数同士の演算を実装したクラスだな。 そうそうw 逆に、immutable で演算もないのは「基本、数値のラッパーでしかないクラスなのでよろしく」 ということなのかな。
251 名前:名称未設定 mailto:sage [2009/02/02(月) 18:45:00 ID:2xCIDXB+0] よろしく。。。何なのでしょう?
252 名前:名称未設定 mailto:sage [2009/02/02(月) 19:13:04 ID:L7cRbMRK0] >>251 Yorosiku Protocolを知らんのか?
253 名前:名称未設定 mailto:sage [2009/02/02(月) 21:35:57 ID:AAETqkqJ0] Bonjourなら知ってる。
254 名前:名称未設定 mailto:sage [2009/02/02(月) 21:41:24 ID:AAETqkqJ0] Bonjourが出たついでなんだけどさぁ、NSSocketを使用して リモート間のコンピュータ制御を行なった人います? BonjourがCFSocketを使用しているせいか、こちらのAPIを使用する人がいないよね。 別にBSDSocketを使用しているからあまり問題ないんだけど・・・・・・ こいつの使い方が終に分からなくて、悔しい思いをしたので。
255 名前:名称未設定 mailto:sage [2009/02/03(火) 00:07:16 ID:2ttErtYe0] NSSocketPort じゃなかったっけ?これは Distributed Objects 用でしょ。 だから一般的なソケット操作にはつかえません。 でも DO はやってみると案外面白いよ。 単一マシン内の二つの app でやっても充分面白いです。 他のプロセスの Obj-C クラスをまるで自分のプロセス内の クラスであるかのように自在に操れるからね。 AppleEvent より全然つかいやすいとおもうのだが...
256 名前:名称未設定 mailto:sage [2009/02/03(火) 01:27:59 ID:2ZhaM9y40] [me fuck]
257 名前:名称未設定 mailto:sage [2009/02/03(火) 06:25:45 ID:gjuIaaik0] >>254 Bounjour でサーバのサービスを発見して NSSocketPort 経由で繋いで後の通信は DO、 みたいな、なんちゃって分散システムを作ってる & 使ってる。 セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド 呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。 かなり楽ちん。 まあ実際にはエラー処理とかいろいろあるが... あとこれっていんちき Xgrid? という説もあるw
258 名前:名称未設定 mailto:sage [2009/02/03(火) 07:13:28 ID:btozHLBi0] >>257 heartbeatの処理とか入れてる? 処理投げてなかなか帰ってこないサービス内容とかもあるんで うちは接続したら定期的にheartbeat返すようにしてる
259 名前:名称未設定 mailto:sage [2009/02/03(火) 09:59:34 ID:hBT6haPh0] ハートビート... いい響きだね
260 名前:名称未設定 mailto:sage [2009/02/03(火) 12:03:48 ID:l8QIYOaqi] エターナルフォースハートビートモーターズ!
261 名前:名称未設定 [2009/02/03(火) 12:21:34 ID:qYl1wxUJ0] 質問というかただの興味ですが、 メソッドを書く時の書式は通常 - (NSString *)hoge:(NSString *)string; とオブジェクト名とアスタリスクは離しますが、C的に書く必要がある場合どうでしょう? NSString * getHoge(NSString *string); この場合最初のアスタリスクの両側が空いているのに違和感を覚えるのですが、みなさんどう書いてます? Apple公式でこういった書式のコードが見られるといいんですけど。
262 名前:名称未設定 mailto:sage [2009/02/03(火) 12:33:04 ID:C28DxKEb0] リモート人間接続をするにはどうすれば
263 名前:名称未設定 mailto:sage [2009/02/03(火) 12:40:24 ID:WATf/n1w0] 普通に話せよw
264 名前:名称未設定 mailto:sage [2009/02/03(火) 14:09:23 ID:G1cDZxPk0] たとえば、InDesignなどのDTPソフトだと、フォントフォルダ(たとえば、/Library/Fonts)に、 フォントをFinderで追加すると、すぐに使用できるようになるのですが、 自作アプリでコピーをすると、いつまでたっても、フォント情報が更新されません。 InDesignが、フォントフォルダに変更があったよ〜、的ななんらかのシグナルを キャッチしていて、Finderはそのシグナルを発してるのでは、 と想像しているのですが、そのシグナルを発生させる方法はあるのでしょうか。
265 名前:名称未設定 mailto:sage [2009/02/03(火) 14:12:07 ID:WATf/n1w0] >>264 むしろ自作アプリで直接コピーするんじゃなくて、Finderにコピーをさせればどうだろう。
266 名前:名称未設定 mailto:sage [2009/02/03(火) 15:13:30 ID:2ttErtYe0] >>264 developer.apple.com/documentation/Carbon/Conceptual/ATS_Concepts/atsfonts_concepts/chapter_2_section_5.html developer.apple.com/documentation/Carbon/Conceptual/ATS_Concepts/atsfonts_tasks/chapter_3_section_6.html
267 名前:名称未設定 mailto:sage [2009/02/03(火) 15:16:29 ID:2ttErtYe0] >>261 developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html 関数の場合は * の両側をあける、ivar の場合は左側だけあけるんだと思う。
268 名前:名称未設定 mailto:sage [2009/02/03(火) 15:27:44 ID:Futh7gDNi] FSEvent使うってのは??
269 名前:名称未設定 mailto:sage [2009/02/03(火) 16:28:09 ID:qYl1wxUJ0] >>267 おお、すっきりしました。ありがとうございます。
270 名前:名称未設定 mailto:sage [2009/02/03(火) 18:43:59 ID:nN7f7LmV0] カスタムのビューとスクローラーとそのイベント対応について質問させて下さい。 NSViewとそれをスクロールするNSScrollViewを、共にサブクラス化し、 共にacceptsFirstResponderをオーバーライドしてYESを返すようにしました。 これで、page up/downキーが押された場合は、NSViewのサブクラスで オーバーライドした pageUp: と pageDown: が呼ばれます。 で、homeキー、endキーが押された場合を取りたいのですが、 NSResponderのスクロール関連のどのメソッドをオーバーライドしても 呼ばれないのですが、keyDown:から自分で判別するしかないのでしょうか?
271 名前:名称未設定 mailto:sage [2009/02/03(火) 19:06:35 ID:4NqLeFNd0] >>270 scrollToBeginningOfDocument:とscrollToEndOfDocument: NSResponderで定義されているメソッドでは、ありませんが。
272 名前:名称未設定 mailto:sage [2009/02/04(水) 09:05:27 ID:327qCR/u0] >>257 >セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド >呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。 この方法、凄く気になります。どこかにサンプルコードありませんか?
273 名前:名称未設定 mailto:sage [2009/02/04(水) 09:33:10 ID:eVwbmqQc0] www.borkware.com/corebook/second-edition-source-code の Chap. 18, 19 を解読してみたら。本も買ったら勉強になります。
274 名前:名称未設定 mailto:sage [2009/02/04(水) 13:08:09 ID:yVzPM0e80] サンプルプロジェクトを、プロジェクト名は同じですが改造して、アプリを試作しました(A)。 (アイコン入替え、クラス追加等含め) 更に、それを少しだけ改変した別バージョン(B)を、別個に作ろうと、上記元の改造版を Finder でフォルダごと複製して、プロジェクト名は同じで、ビルド作業もできておりました。 ところが、その際、(恐らく)Default.png か、Icon.png を更新して、ターゲットのクリーニング後、 ビルドは出来ても、アプリ起動した後、または途中で止まってしまう様になりました。 コードを、修正前の状態になるまで、コメントアウトしても、状況が変わりません。 こういう場合原因は何でしょう?
275 名前:名称未設定 mailto:sage [2009/02/04(水) 13:29:00 ID:eVwbmqQc0] エラーがデバッガ画面に出てるはずだからそれを説明しろ。 ここ読んでる人だってエスパーじゃないよ。 とりあえず Default.png / Icon.png ももとに戻して動くかみてみたら?
276 名前:名称未設定 mailto:sage [2009/02/04(水) 14:16:27 ID:vG3Eq+0R0] 実機上でBundle ID同じアプリが2つ出来て混乱しているとか。変えてみ。
277 名前:名称未設定 mailto:sage [2009/02/04(水) 14:32:41 ID:GLh6l/ao0] >>276 ありえる。お前エスパーだろ?
278 名前:名称未設定 [2009/02/04(水) 16:48:00 ID:pU891sJp0] NSTableDataSouceプロトコルの -(id)tableView:(NSTableView*)tb objectValueForTableColumn:row: メソッドの引数tbを使用して テーブルのラインナップを行う行為は常識はずれですか? ただこのメソッドは何度も呼び出されるので、 一度呼び出されたときだけこのメソッドないでテーブルのラインナップを する関数を呼び出しています。 簡単に用法をしめすと -(id)tableView:(NSTableView*)tb objectValueForTableColumn:row: { if(count == 1) { /* tbを使用してテーブルのラインナップ カラムを追加したりセルをセットしたり。 */ } // 以下はreturnでセルに値を代入していくプログラム・・・ }
279 名前:名称未設定 mailto:sage [2009/02/04(水) 17:00:13 ID:/jro+NId0] 普通はnibで既にカラムもセルもセットしておく。 どうしても動的に変えたいときはawakeFromNib:でやるかな。
280 名前:名称未設定 [2009/02/04(水) 17:06:55 ID:pU891sJp0] 確かにほとんどの参考プログラムはそうですよね。 ただテーブル数が多い&動的 ということもあって、別に動くには動くしで・・・・ でも皆さんから見てどうなんかな?って思ったんで質問させてもらったんですが・・
281 名前:名称未設定 mailto:sage [2009/02/04(水) 19:03:12 ID:AZEIygKK0] 動的に変更したいにしてもなんらかのトリガーはあるんだろうから そこから別途カラムを設定するメソッドを呼んだ方がいいと思う 実際の動作から変数を作ってどうこう、とやり出すと 予想外なところでif文に該当してバグの元になる
282 名前:名称未設定 [2009/02/04(水) 21:24:41 ID:Gh/9lkTr0] iPhoneアプリ作成を始めた初心者です。Hello World! から勉強してます。 TableViewは作れましたが、TabelViewからタッチして別の画面 (別のcontroller)に飛びたいときはどうすればいいですか? 小さな複数のアプリをTabelViewでまとめたいのですが。
283 名前:名称未設定 mailto:sage [2009/02/04(水) 21:38:37 ID:kElp6NwL0] >>282 iPod touch/iPhone ネイティブアプリ製作 ver.8 pc11.2ch.net/test/read.cgi/mac/1231156968/
284 名前:282 [2009/02/04(水) 21:45:34 ID:Gh/9lkTr0] わかりました。そちらのスレでもう一度聞いてみます。ありがとうございました。
285 名前:名称未設定 mailto:sage [2009/02/04(水) 22:10:20 ID:nazm8P890] >>284 そしたらこっちでの質問を取り下げた方がいいよ。
286 名前:270 mailto:sage [2009/02/05(木) 00:02:28 ID:vPXIdXg90] >>271 NSViewのサブクラスにそれらを実装してみましたが、呼ばれませんでした。 少しググってみましたが、それらはNSTextViewで可能な方法ではないでしょうか。 何であれありがとうございました。
287 名前:名称未設定 mailto:sage [2009/02/05(木) 11:15:29 ID:qtw79+lW0] テキストフィールドのあるモーダルダイアログを表示し、 テキストフィールドに日本語を入力し確定する前(下線が付いたまま)に ダイアログを閉じるとクラッシュしてしまう… これはなんなのでしょうか…
288 名前:名称未設定 mailto:sage [2009/02/05(木) 11:21:22 ID:aBVo+1GJ0] >>287 ダイアログを破棄した後にUIを参照しようとしてない? フォーカス関係の問題なら、フォーカス外してから閉じるとか。
289 名前:名称未設定 mailto:sage [2009/02/05(木) 11:22:28 ID:ih/Ab1m90] >>287 クラッシュログはなんていってるの? つかってるのはことえり?ATOK? それとは別問題として、モーダルダイアログは多用しないほうが... せめてモーダルシートにしましょう
290 名前:287 mailto:sage [2009/02/05(木) 12:19:00 ID:qtw79+lW0] レスありがとうございます! >>288 モーダルダイログを閉じる前にモーダルダイアログContorllerクラス内のメンバ変数に UIから取得した値を保持しretainしております… その後にモーダルダイアログを閉じ →モーダルContorllerクラスからget○○で呼び出し元ウィンドウでモーダルのUIの値を取得 →モーダルContorllerクラスを破棄 これマズイでしょうか。。。 フォーカスを手動で外してモーダルダイアログを閉じた場合はクラッシュしませんでした。 プログラム内からmakeFirstResponderで別のコントロールにフォーカスを移動してから閉じたらクラッシュしました… >>289 つかってるのはことえりです。 ログは長いので最後の辺りを… Thread 0 Crashed: 0 libobjc.A.dylib 0x90a59387 objc_msgSend + 23 1 com.apple.AppKit 0x93356003 -[NSApplication runModalForWindow:] + 227 ホントはシートを使いたいのですが、要望でダイアログになりました… 言い忘れたのですが、10.5では正常に動作致します。 10.4の場合のみ現象が起こってしまいます。。。
291 名前:名称未設定 mailto:sage [2009/02/05(木) 12:47:23 ID:k3HvMYJw0] すみません、自力で解決できなかったので教えて下さい。 NSViewのサブクラスを作り、NSBezierPath *contentPath(矩形)を持たせて います。で、NSMutableArray に矩形ベジェを持たせていて NSArrayController で 前述のビューのcontentPathを入れ替えて再描画させる、というものを作りました。 制御自体はうまくいって、Arrayの中身を描けるのですが、パスのライン幅が一部 太くなってしまいます。挙動としては、矩形は幅または高さだけ変えたもの (originは一緒)を描かせたときに古い矩形とオーバーラップする領域のみ線幅が 太くなります。 で、クリッピングが関係しているのかなと思い、wantsDefaultClipping をオーバー ライドして NO を返すようにしてみたら、線幅は一定にはなったものの、今度は 設定した線幅 1.0 よりも太く書かれてしまいます。 どうすれば解決できますでしょうか、お知恵をお貸しください。
292 名前:名称未設定 mailto:sage [2009/02/05(木) 12:55:09 ID:ih/Ab1m90] >>290 それは retain/release がどっかでおかしくなってるんだとおもうけど。 ちゃんとやればもんだいないはず。NSZombie とかつかって 誰が二重 release してるかしらべてみては。 あと、僕の実経験では、Interface Builder でよく Window のインスペクタで "release when closed" をチェックしてしまって それのせいで release しすぎになりますが...
293 名前:名称未設定 mailto:sage [2009/02/05(木) 13:19:19 ID:k3HvMYJw0] >291 です……自己解決しました。原因は drawRect:[contentPath bounds] と やったせいで、パスの線幅分のオフセットをやっていなかった為のようです。 とほほ…
294 名前:名称未設定 mailto:sage [2009/02/05(木) 16:30:33 ID:MZKKxZ3Z0] >>290 パネルがrelease when closedになってるとか?
295 名前:290 mailto:sage [2009/02/05(木) 17:03:08 ID:qtw79+lW0] release when closedになってたので、チェックを外すと今度は10.5でおかしくなったw 日本語入力したテキストフィールドにmakeFirstResponderでフォーカス移動して postEventでreturnキーを送ってテキストフィールドを完全に確定(?)させてから モーダルを閉じたら10.4でいけた… 一応NSZombieだと、やっぱreleaseしたものにアクセスしてるって出た…(10.4のみ) わけわかめだ…
296 名前:名称未設定 mailto:sage [2009/02/05(木) 20:39:25 ID:p6wlshAm0] >>286 よく見たら、keyDown:をオーバーライドせずに、pageUp:とかだけをオーバーライドしてたんですね。 そうじゃなくて、 - (void)keyDown:(NSEvent *)theEvent { [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]]; } - (void)doCommandBySelector:(SEL)aSelector { if([self respondsToSelector:aSelector]) { [self performSelector:aSelector withObject:self]; } } とやると、 page up → scrollPageUp: page down → scrollPageDown: home → scrollToBeginningOfDocument: end → scrollToEndOfDocument: となります。
297 名前:名称未設定 mailto:sage [2009/02/05(木) 23:28:22 ID:ih/Ab1m90] >>295 それはあきらかにメモリ管理のバグなので、対処療法的に こういう閉じ方ならクラッシュしない、という解決法ではなくて どっかで retain/release のミスがあるのでそれをみつけてください。 まあ納入期限とかなければのはなしだけど。 clang static analyzer は clang.llvm.org/StaticAnalysis.html 強力なのでいちどつかってみたら?
298 名前:名称未設定 [2009/02/08(日) 11:24:31 ID:x/17hb0Z0] NSColorでも同じだと思うんですが、UIColorでalloc initでオブジェクト付くってラベルのtextColorに代入したときUIColorオブジェクトはどっかでreleaseしなくていいんでしょうか? self.lbl_kekka.textColor = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];
299 名前:名称未設定 mailto:sage [2009/02/08(日) 12:17:18 ID:cbLnK3Uq0] 当然allocしたオブジェクトは、自分が責任を持ってreleaseする。 UILabelのtextColorプロパティは @property(nonatomic,retain) UIColor *textColor; となっていてretainされるので、代入した直後にreleaseしてかまわない。 self.lbl_kekka.textColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0]; とすればautoreleaseされているのでreleaseする必要はなく、おそらくそのメソッドが終われば releaseされる。 allocで生成するオブジェクトは、主にインスタンス変数などに長く保持したい場合などに使う。
300 名前:名称未設定 mailto:sage [2009/02/08(日) 13:40:23 ID:cbLnK3Uq0] 後で気がついたが、releaseする場合は self.lbl_kekka.textColor = [[UIColor alloc] initWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0]; [self.lbl_kekka.textColor release]; ではなく、 UIColor *color = [[UIColor alloc] initWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0]; self.lbl_kekka.textColor = color; [color release]; な。 NSArrayやNSDictionaryにオブジェクトを追加したり UIViewにaddSubview:したオブジェクトもretainされるので、直後にreleaseしてよい。
301 名前:名称未設定 mailto:sage [2009/02/08(日) 15:41:18 ID:vQKSQI6y0] self.label.textColor = [UIColor colorWith~~]; でおk
302 名前:名称未設定 [2009/02/08(日) 17:29:03 ID:x/17hb0Z0] なるほど!ありがとうございます。よくわかりました。 autoreleaseされるcolorWithメソッドもあったんですね。
303 名前:名称未設定 [2009/02/09(月) 16:27:22 ID:xx/grS5S0] シンガポールの9歳少年がiphoneアプリの開発。 しかもこの少年2歳のときからコンピュータ使って いまやすでに6言語をしようできるとか・・・・・。 スレッド間通信で悩んでいる俺もこんな英才教育受けてたら いまや天才ハッカーだったのに・・・・・。
304 名前:名称未設定 mailto:sage [2009/02/09(月) 16:34:36 ID:9F+2O8Cp0] まあ、その子の父親がそっち系の人だからね。 しょうがないよ
305 名前:名称未設定 mailto:sage [2009/02/09(月) 16:36:53 ID:r0qQWs5t0] 実はオネェ系。
306 名前:名称未設定 mailto:sage [2009/02/09(月) 17:02:51 ID:svdYosUm0] そっち系ってどっち系か気になる
307 名前:名称未設定 mailto:sage [2009/02/09(月) 17:03:51 ID:SccJ/7Eo0] はぐれ刑事情熱系
308 名前:名称未設定 mailto:sage [2009/02/09(月) 17:11:06 ID:9drXTDxV0] >>303 アジアには1ヶ月飲まず食わずの少年も居るよ。 鵜呑みにしない方がいい。
309 名前:名称未設定 [2009/02/09(月) 17:16:43 ID:QiGMMDTS0] 父親が作ってるだろ、実際は。 話題性があれば、無駄に売れる。
310 名前:名称未設定 mailto:sage [2009/02/09(月) 17:21:15 ID:gsT/KdBz0] 以前、10歳でアセンブラバリバリ使いこなす小学生に会ったことがある。 子供は物覚えが速いから、3Dとかの複雑な数学の必要なもの以外は余裕だよ。
311 名前:名称未設定 mailto:sage [2009/02/09(月) 17:23:48 ID:0LhoQ2uS0] まあ、ポケモン数百匹のデータと対戦法すべて覚えてるガキなんかも多いしな。
312 名前:名称未設定 mailto:sage [2009/02/09(月) 17:33:17 ID:mKmE+zE/0] >>310 それかつての俺だ まだ覚えてるかな 21 がLD HL EDがIXのプレフィクスだっけかな ハンドアセンブルは今にして思えば無駄な作業だったな・・ 当時はセクションの考えもなかったし >>311 そういうことだねw
313 名前:名称未設定 mailto:sage [2009/02/09(月) 17:35:49 ID:EdHXtXj80] ちなみに、いまハンドアセンブル用のシート売ってるのかな?ニモニック書けるやつ 8080,Z80時代はばりばり書いてたなあ
314 名前:名称未設定 mailto:sage [2009/02/09(月) 18:13:19 ID:bsNxoMZui] アセンブラ買う金が無かったから、ハンドアセンブルしてました。
315 名前:名称未設定 mailto:sage [2009/02/09(月) 18:15:52 ID:yzs1V3zWi] 逆アセンブラは面倒だったんで、自分で書きました。
316 名前:270,286 mailto:sage [2009/02/09(月) 19:11:05 ID:/J57R7wN0] >>296 それでできました! レスポンダーチェーンは知っていましたがキーバインドは単語だけ聞いた事ある、という感じでしたが勉強になりました。 ありがとうございました。
317 名前:名称未設定 mailto:sage [2009/02/09(月) 21:26:07 ID:j607E4t30] Mac OS X だと gas 以外に nasm も付いてくるし、逆アセンブルもできる (otool か gdb)。 なんて恵まれた環境(w しかし Mach-O がマイナー(w x86 の ObjC のメソッドでは、self が 8(%ebp)、SELが 12(%ebp)、第一引数が 16(%ebp)。 これ豆知識。 と無理矢理 Cocoa に結びつけてみる。
318 名前:名称未設定 [2009/02/09(月) 21:43:05 ID:JA/hqyCL0] ttp://sourceforge.jp/magazine/09/02/09/0131209 QtもCocoa対応になるのか あれ、前ってCarbonだったけ?中までチェックしてなかったなぁ
319 名前:名称未設定 mailto:sage [2009/02/09(月) 22:23:43 ID:9drXTDxV0] 藤子不二雄で育った世代が集まってるな。
320 名前:名称未設定 mailto:sage [2009/02/09(月) 23:48:04 ID:aEihI9Eo0] >>318 レパード発売直前に 64 bit Carbon GUI の廃止が発表されて クロスプラットホームのひとはみんな慌てて Cocoa になってますよ。 Qt しかり、Open Office しかり。 Qt の開発者のブログはこのあたり labs.trolltech.com/blogs/2007/06/21/wwdc-qt-carbon-64-bit-and-other-buzzwords/ labs.trolltech.com/blogs/2008/03/03/qtmac-cocoa-port-alpha-released/ もっと最近のポストもあるけど、初期のほうがおもろい。
321 名前:名称未設定 mailto:sage [2009/02/10(火) 08:06:37 ID:lUyxbS2f0] >>319 残念、テッカマンとサンダーバードで育ちますた。 あと日曜のliving tomorrow あの番組によればとっくに核融合炉稼働、電車はすべてリニア、衛星軌道の太陽電池発電などが現実のものになってなければいけないのだが・・ 21世紀にもなって相変わらず石油依存だったり雇用不安真っ盛りだったり あげくの果てにハゲもダウンするしなんだかなもう。
322 名前:名称未設定 mailto:sage [2009/02/10(火) 08:18:35 ID:HCu6PKfT0] テレ東と閣下で育った俺が来ましたよ。 >>320 MSのOfficeはどうなんだろうって思って2008でotoolしてみたけどいまいちどうなってるんだかよくわからん。 Carbon.frameworkあるから普通にCarbonだとは思うがPowerPlant.frameworkがあるのが気になる。 Xcode移行したんじゃなかったのか? >>321 ひとまずAppleには雇用不安も不景気も無縁だと思う。 あとJobsの後継者探しも問題ないだろう。 ここにいる連中を見る限り。 www.apple.com/pr/bios/
323 名前:名称未設定 mailto:sage [2009/02/10(火) 09:25:02 ID:A84c3i310] >>322 PowerPlant は XCode で使えるユニバーサル版が公開されてるよ。 MS がつかってるのは彼らなりの手の加わったバージョンだと思うが。 sourceforge.net/projects/open-powerplant まあ Office は 64 bit にする必要もないから Carbon GUI のままでいいのでは... Adobe はがんばって Cocoa に書きなおしているらしい。
324 名前:名称未設定 mailto:sage [2009/02/10(火) 09:32:01 ID:HCu6PKfT0] >>323 Freescaleがオープンソースで公開してたのか。知らなかった。 Win側のOfficeは次のバージョンの14はWeb志向らしいし64bit化はないかもな。 Adobeが書き直し中で、MSは64bit対応予定無しだとすると、後残った大手ベンダーはどこだ?
325 名前:名称未設定 mailto:sage [2009/02/10(火) 09:47:28 ID:A84c3i310] >>324 Mozilla Firefox も Firefox 3 を期に Cocoa になったらしいよ。 boomswaggerboom.wordpress.com/2008/06/10/firefox-3-for-mac-os-x-under-the-hood/ Java GUI も Swing は Apple 自身が Cocoa 化したはず。SWT はいまがんばって書き換え中。
326 名前:名称未設定 [2009/02/10(火) 11:32:28 ID:a+EfxJDo0] int型の数字をNSDictionaryに格納するにあたって dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:5], @"id",nil]; ってしたんだけど、取り出したときに int student_id = [dict objectForKey:@"id"]; printf("student_id = %d",student_id); するととんでもない値が出力されます。。 一応キャストしてみても駄目でした。 int student_id = (int)[dict objectForKey:@"id"]; 正しく取り出せていないのでしょうか?
327 名前:名称未設定 mailto:sage [2009/02/10(火) 11:37:35 ID:HXxSGtyR0] >>326 >int student_id = [dict objectForKey:@"id"]; それNSNumberのオブジェクトのまま int student_id = [[dict objectForKey:@"id"] intValue]; でないの?
328 名前:名称未設定 mailto:sage [2009/02/10(火) 11:38:03 ID:Ie9BcbwC0] objectForKey:で取り出せるのはint型ではなく、格納したときのNSNumberオブジェクト int student_id = [[dict objectForKey: @"id"] intValue];
329 名前:名称未設定 mailto:sage [2009/02/10(火) 11:38:31 ID:Ie9BcbwC0] かぶったすまん
330 名前:名称未設定 [2009/02/10(火) 11:39:44 ID:a+EfxJDo0] >>328 即レス ありがとう。 上手くいきました。!!!!!!!!!!!!!!!!!!1
331 名前:名称未設定 [2009/02/10(火) 11:42:33 ID:a+EfxJDo0] >>327-328 さんにです。本当にありがとうございました。
332 名前:名称未設定 mailto:sage [2009/02/10(火) 13:45:11 ID:4mx4xlFL0] Finderで既に存在するファイルと同名ファイルをwriteTo系のメソッドで保存しようとした時に、上書きせずに自動で別名ファイルにする方法はありますか? もしくは自動で変更された作られる予定の別名ファイルのパスを取得するようなメソッドはありませんか? title → title 2 みたいな感じのです。 今はディレクトリの中をループで回して同名ファイルのチェックと保存先のファイルパスの変更をしているのですが、一発でパスを取得できる方法があるのかなと思いまして。
333 名前:名称未設定 mailto:sage [2009/02/10(火) 14:35:44 ID:A84c3i310] [[NSFileManager defaultManager] fileExistsAtPath:@"..."] で出来るよ。 NSFileManager / NSWorkspace のメソッドを確認してみてください。
334 名前:名称未設定 mailto:sage [2009/02/10(火) 14:45:38 ID:4mx4xlFL0] それはファイルがあるかどうかの確認だけですよね; 今それをforループの中で使ってファイルがあればファイルパスに文字列を足して新しいファイルパスを自分で生成しているのですが、それを一発で教えてくれるメソッドはないでしょうか?
335 名前:名称未設定 mailto:sage [2009/02/10(火) 14:58:25 ID:vzscJY1q0] >>334 それはプログラム側で指定するべきなわけで。 メソッドが用意されていないのではなく、プログラマの裁量で決められると考えるべき。
336 名前:名称未設定 mailto:sage [2009/02/10(火) 15:03:31 ID:A84c3i310] う〜ん、Finder から Trash に移動させるばあいの API は 10.5 になって公開されましたがね。FSPathMoveObjectToTrashSync とか。 このあたりの API は Carbon に 10.4 / 10.5 になって 何を今更追加しているのかという。 しかも char* と CFStringRef が混在していて意味がよう分からん。
337 名前:名称未設定 mailto:sage [2009/02/10(火) 15:28:22 ID:4mx4xlFL0] >>335 今はFinder準拠でファイル名+半角スペース+数字で連番ファイルを作成してるのですが、 使ってるメソッドがNSStringのstringWithFormatやstringByAppendingStringあたりなので、 "もし"将来的にFinderの挙動が変わるようなことがあった時のことを考えて提供されるAPIがあればそちらを使いたいと思ったわけです。 なぜFinder準拠にしたいかというとnamesOfPromisedFilesあたりを触っていたからです。
338 名前:名称未設定 mailto:sage [2009/02/10(火) 15:58:27 ID:CXjHgp8s0] hetimaさんとこで重複しないファイル名を返す隠しメソッドが紹介されてるよ。 d.hatena.ne.jp/hetima/20080224/1203794038
339 名前:名称未設定 mailto:sage [2009/02/10(火) 16:19:23 ID:4mx4xlFL0] >>338 試してみました、こんなのあるんですね。情報ありがとうございます。
340 名前:名称未設定 mailto:sage [2009/02/12(木) 09:32:25 ID:eLgnTgxN0] WebViewを勉強中なのですが、現在表示中のhtmlのリンクをクリックされた時に それをトラップしてアプリケーション側で独自の動作をさせることは可能でしょうか? マニュアルのdelegateやnotificationの部分を見てもそれらしいものが見あたらないの ですがオーバーライド?すればできるようになるのでしょうか?
341 名前:名称未設定 mailto:sage [2009/02/12(木) 09:42:25 ID:DD9Ylpvl0] >>340 webView:decidePolicyForNavigationAction:request:frame:decisionListener: を調べてください。 WebView は高機能なので delegate が何種類もあります。 downloadDelegate, frameLoadDelegate, policyDelegate, resourceLoadDelegate, UIDelegate とこんなけ。
342 名前:名称未設定 mailto:sage [2009/02/12(木) 11:43:50 ID:eLgnTgxN0] >>341 ありがとうございました。
343 名前:名称未設定 mailto:sage [2009/02/12(木) 12:20:32 ID:J98woQq60] >>339 目的が >>337 なのだったら隠しメソッドじゃ駄目だよね。それが今後も使われる保証はないし。 公開された API がないなら、それこそ AppleEvent で Finder を駆動してみるとかしか なかったりして。 ってゆうか数字を付けてくれるのって Finder ではどういう処理をしたときだっけ?
344 名前:名称未設定 mailto:sage [2009/02/12(木) 16:44:47 ID:TYRWS1hv0] Privateなメソッドは使いませんでしたが、中でやっぱりこういうの使ってるんだよなというので納得しました。 Finderだとoption+ドラッグで同じディレクトリにファイルをコピーするか、当該ファイルのコピーペーストで"スペース+数字"の連番ファイルが作成されます。 Finder意外だとQTの録画やcommand+shift+3のスクリーンキャプチャなんかも同じように連番ファイルができます。 ちなみにファイルを選択してcommand+Dだと"スペース+のコピー"が付加されます。"名称未設定フォルダ"を2回duplicateすると"名称未設定フォルダ のコピー のコピー"になります。 参考までに、Safariのダウンロードだと"ハイフン+数字"が付加されます。NSURLDownloadのメソッドを利用して得られる連番ファイルパスはこれと同じ形式でした。 てことで公開されたメソッドがないので今のところ自力で実装しています。
345 名前:名称未設定 mailto:sage [2009/02/13(金) 16:41:45 ID:1BSDHBM30] NSUserDefaultsControllerってIB上で作ることができるみたいですけどこれってIBでやる意味 何かあるんでしょうか? ソースコード上で[NSUserDefaults standardUserDefaults]を呼ぶのと何か違うんでしょうか?
346 名前:名称未設定 mailto:sage [2009/02/13(金) 16:50:56 ID:1BSDHBM30] standardUserDefaults以外のNSUserDefaultsが使えるので複数のNSUserDefaultsを 使い分けたりできるとこに意味があるのかな? 関係ないけどIDがBSDだw
347 名前:名称未設定 mailto:sage [2009/02/13(金) 17:08:14 ID:V9L4a6Ta0] NSUserDefaultsControllerはNSUserDefaultsにバインディングするためのコントローラ
348 名前:名称未設定 [2009/02/13(金) 22:01:09 ID:O3BrJaE30] WebViewを使ったアプリを作っているのですが、 Flashを使用したサイトを[webView setMainFrameURL:〜]; で開くと、SIGINTでアプリが落ちてしまいます。 NibのほうでPlug-Inを無効にすれば落ちないのですが、 Flashを使用したサイトにも対応したいと考えています。 どなたか対処法等についての情報お持ちのかたいますでしょうか。 よろしくお願いします。
349 名前:名称未設定 mailto:sage [2009/02/13(金) 22:08:33 ID:t171ec4y0] シフトキーを単独で押したときにもkeyDownを呼んでほしいんだが、だめだね。 cocoaじゃ無理なんかね? 誰かやりかた知ってる?
350 名前:名称未設定 mailto:sage [2009/02/13(金) 22:17:19 ID:1jUpgeeN0] イベントで拾えないか?
351 名前:名称未設定 mailto:sage [2009/02/13(金) 22:17:20 ID:OpdAEVCx0] >>349 知ってますが何か?
352 名前:名称未設定 mailto:sage [2009/02/13(金) 22:21:59 ID:l2YznzJu0] >>348 フラッシュプレイヤーの方に問題があるかも。 バージョン10は動画によっては頻繁にシークするとよく落ちます。
353 名前:名称未設定 mailto:sage [2009/02/13(金) 23:45:27 ID:O3BrJaE30] >>352 ありがとうございますm(_ _)m Flash Playerを9にダウングレードしたら解決しました。 【まとめ】 ・実行するクライアントのFlash Playerは9でも10でもOK ・コンパイルする時の環境は必ず9
354 名前:名称未設定 mailto:sage [2009/02/13(金) 23:52:13 ID:mZsjWfd80] >>353 なんでそんな「まとめ」になったの? コンパイル時にプラグインが 9 か 10 かなんか関係ないんでは... ユーザーが Flash 10 をつかってたら実行時に死ぬこともあるだろうし。
355 名前:名称未設定 mailto:sage [2009/02/14(土) 00:24:05 ID:RTjWpyaW0] 俺もそのまとめには疑問符だな WebKit使ってるだけだろ?
356 名前:名称未設定 mailto:sage [2009/02/14(土) 07:51:06 ID://bDM35q0] >>354 Flash 9の時に作成したソフトは、10を入れていた時にも動作しました… 何故だかはわからないですorz
357 名前:名称未設定 mailto:sage [2009/02/14(土) 08:29:01 ID:GpKiar830] 現実 ttp://www.atmarkit.co.jp/news/200902/13/wp.html
358 名前:名称未設定 mailto:sage [2009/02/14(土) 08:57:30 ID:E27FFzgQ0] ていうか理想は何なんだ?
359 名前:名称未設定 mailto:sage [2009/02/14(土) 10:28:04 ID:kiPUxtDD0] AとBの2種類のWindowControllerがあってそれぞれが複数のウィンドを開いているとして その中からAのWindowControllerで現在一番上にあるものを判定するにはどうしたらいいで しょうか?[NSApp windows]だとすべてのウィンドの配列が得られますが作られた順番は わかるものの現在の重なっている順番はわからないみたいです
360 名前:名称未設定 mailto:sage [2009/02/14(土) 10:46:31 ID:kiPUxtDD0] 自己解決しました [NSApp windows]じゃなくて[NSApp orderedWindows]を呼べばいいみたいですね
361 名前:名称未設定 mailto:sage [2009/02/14(土) 10:55:01 ID:BKRyyfk/0] 並び順は NSWindowList で取得できると思う
362 名前:名称未設定 [2009/02/15(日) 10:22:04 ID:F45b1+V/0] 自作のUIViewクラスの位置を変えたいと思い [myview setOrigin:CGPointMake(100.0f, 100.0f)]; とやっています。一応、正しく動作するのですがXcodeが warning: MyView may not respond to '-setOrigin:' というwarningを出してきます。ヘルプでもUIViewにはoriginというプロパティはないのですが、位置を変えるときはsetOrigin:を使ってよいのでしょうか?
363 名前:名称未設定 [2009/02/15(日) 10:25:56 ID:F45b1+V/0] すみません、自己解決しました。 UIViewの拡張仕様らしく @interface UIView (Extended) - (void)setOrigin:(CGPoint)aPoint; @end を追加したらWarningは消えました。
364 名前:名称未設定 [2009/02/15(日) 11:59:57 ID:+QMCuHp60] カテゴリでメソッドの宣言を追加したら、 メソッドの実体が無くても警告はでなくなるよ。 だから、それやって警告がでなくなったというのは 使っていいかどうかの印ではないです。 動くということは Apple がメソッドを実装してるってことですが、 レファレンスにのってないってことは公開されてないわけで、 iPhone OS のバージョンがあがると突然うごかなくなるかもしれません。 だから、そういうやばいことをしていることをキチンと理解して、 次のバージョンがでたら思い出してチェックしないといけないと覚えておく。 でもそういうヤバいことはすごい有用な機能をつかうときだけにしておいて、 origin に関してはそのかわりに公開されてる frame.origin か center をつかっておけばいいんじゃないかと思いますが。 そんなところで危ない橋をわたることはないです
365 名前:名称未設定 mailto:sage [2009/02/15(日) 15:39:09 ID:dj1QUhiw0] インストールされてるアプリのリストを得ようとしたら やっぱりSpotlightしかない?
366 名前:名称未設定 mailto:sage [2009/02/15(日) 15:48:27 ID:BvllGNq50] システムプロファイラ
367 名前:名称未設定 mailto:sage [2009/02/15(日) 16:15:36 ID:+QMCuHp60] >>365 ほんとに無差別に全部の app がほしいんでしょうか、 特定のファイルを開けるソフトを探したいとかいう場合は LaunchServices をつかったほうがいいです。 developer.apple.com/DOCUMENTATION/Carbon/Conceptual/LaunchServicesConcepts/ developer.apple.com/DOCUMENTATION/Carbon/Reference/LaunchServicesReference/Reference/
368 名前:名称未設定 mailto:sage [2009/02/15(日) 16:49:10 ID:Sph+Cv+80] 無差別に他のアプリを見つけてremoveとか。
369 名前:名称未設定 [2009/02/16(月) 22:22:33 ID:u+2CJCuL0] Core Graphicsに指定したピクセルのRGB値を抽出するような関数はないでしょうか?
370 名前:名称未設定 mailto:sage [2009/02/16(月) 23:14:36 ID:Dlu6/AHb0] NSBitmapImageRepにはあるけど、どうにかNSBitmapImageRepに変換してそれをうまく使えないですかねぇ 自分も最近CoreGraphics興味あるんですけど、参考になるサイトとかありませんか?Apple以外で
371 名前:名称未設定 mailto:sage [2009/02/16(月) 23:16:25 ID:Dlu6/AHb0] あ、どうやらNSBitmapImageRepはCGImageRefから生成できるようですよ
372 名前:名称未設定 mailto:sage [2009/02/16(月) 23:17:09 ID:ftiiYlkU0] CGBitmapContextGetData
373 名前:名称未設定 mailto:sage [2009/02/16(月) 23:23:10 ID:0MWDdaGv0] >>369 CoreGraphicsはpixelに直結している訳じゃないし、ColorSpaceに よってもpixel値は変わるから、けちけち1x1サイズのBitmapContext 作って実際に描画して調べるのが定石 この例のDoTheHitTest()が参考になる。 developer.apple.com/samplecode/MouseTracking/listing2.html
374 名前:名称未設定 mailto:sage [2009/02/17(火) 00:01:08 ID:jGB3J9J50] CGImageSourceRef imageSrc = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:filePath],NULL); CGImageRef image = CGImageSourceCreateImageAtIndex(imageSrc,0,NULL); CFRelease(imageSrc); CGDataProviderRef dataP = CGImageGetDataProvider(image); CFDataRef bitmapData = CGDataProviderCopyData(dataP); unsigned char *bitmap = (unsigned char*) CFDataGetBytePtr(bitmapData); // ビットマップ配列: RGBARGBA... int ch = 4; // アルファチャンネルが無ければ3 int dataSize = CFDataGetLength(bitmapData); // width*height*ch になる int i; for (i=0; i<dataSize; i+=ch) { int r = bitmap[i+0]; // 0-255 int g = bitmap[i+1]; // 0-255 int b = bitmap[i+2]; // 0-255 int a = bitmap[i+3]; // 0-255 } CFRelease(bitmapData); こんな感じでビットマップ配列取得して ループ内で各ピクセルのチャンネルごとの値を調べられる。
375 名前:名称未設定 mailto:sage [2009/02/17(火) 01:26:52 ID:huwz60HN0] IBOutletでつないだIB上のWevViewに [webView setMainFrameURL:@"www.yahoo.co.jp/ "]; をすると Debugger() was called! The Debugger has exited due to signal 2 (SIGINT).The Debugger has exited due to signal 2 (SIGINT). と表示されて強制終了します。なぜデバッガが呼ばれるのだろうと思ってビルドしたしたアプリを直接開いてみたら、 Debugger() was called! とコンソールに出る物のアプリは落ちませんでした。 ちなみにgoogleだとこの現象は起こりませんでした。 一体何が起こっているのでしょう?開けるページと開けないページの違いとは?
376 名前:名称未設定 mailto:sage [2009/02/17(火) 01:31:49 ID:96tRpUJJ0] プロジェクトうp
377 名前:名称未設定 mailto:sage [2009/02/17(火) 01:52:30 ID:huwz60HN0] ロダあればプロジェクトうpっても良いですが、個人情報を消さなければならないので時間をください。 文面で説明しますとやったことと言えば プロジェクトにWebKitフレームワークを追加 AppControllerクラスを作成、以下 AppController.m #import <Cocoa/Cocoa.h> #import <WebKit/WebKit.h> @interface AppController : NSObject { IBOutlet WebView *webView; } - (IBAction)openYahoo:(id)sender; - (IBAction)openGoogle:(id)sender; @end AppController.h #import "AppController.h" @implementation AppController - (IBAction)openYahoo:(id)sender { [webView setMainFrameURL:@"www.yahoo.co.jp/ "]; } - (IBAction)openGoogle:(id)sender { [webView setMainFrameURL:@"www.google.co.jp/ "]; } @end IBでアウトレットとアクションを接続 これだけです。 ちなみに [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"www.yahoo.co.jp/ "]]]; に置き換えてもダメでした。
378 名前:名称未設定 mailto:sage [2009/02/17(火) 02:05:51 ID:huwz60HN0] 試しにIB上のインスペクタでPlug-insをオフにしたらYahoo!開けました。 今日はもう遅いので後日Flashのバージョンとか入れ替えて試してみます。が、詳しい方いましたら是非とも教えてください。
379 名前:名称未設定 mailto:sage [2009/02/17(火) 02:36:14 ID:96tRpUJJ0] あ、ほんとだ。 デバッグモードで起動したアプリ内のWebViewがFlashを含むページを読み込んだだけで終了する。 Flashプラグインのせいなのかな?
380 名前:名称未設定 mailto:sage [2009/02/17(火) 03:44:28 ID:eBKgwb/Q0] うちはPlug-insオンでも全然問題ないぞ
381 名前:名称未設定 mailto:sage [2009/02/17(火) 07:49:54 ID:a/gWfwad0] www.stinkbot.com/blog/archives/69 とかにもありますが、なんか Flash 10 plugin を出荷するさいに Adobe がデバッガ立ちあげコードを消すのを忘れたらしいです。 だから、デバッガが繋がってない状況だと大丈夫ですが、 XCode などでデバッガが繋がってるとデバッガがよばれてしまうらしいです。
382 名前:名称未設定 mailto:sage [2009/02/17(火) 09:57:42 ID:huwz60HN0] おはようございます、情報サンクスです
383 名前:名称未設定 mailto:sage [2009/02/17(火) 13:49:15 ID:KlMBN10B0] >>381 さすがアドベ やってくれるなw
384 名前:名称未設定 mailto:sage [2009/02/17(火) 14:20:04 ID:a/gWfwad0] まあ Adobe はむちゃくちゃだから... www.betalogue.com/2008/11/13/adobe-cs4-installer/ とかみると笑える。まあ Apple もそんなにかわらんかも知らんが。 まあこの betalogue の主は毎日文句をこんなに書き連ねて よく飽きないなと思いますが。スレ違いすいません。
385 名前:名称未設定 mailto:sage [2009/02/17(火) 15:22:35 ID:nDyJwcW00] Xcodeの実行メニューのDebugger()/DebugStr()で停止をオフにすれば?
386 名前:名称未設定 mailto:sage [2009/02/17(火) 15:33:28 ID:a/gWfwad0] なるほど。旧 mac のころはプログラムをしてなかったので Debugger(), DebugStr() を知りませんでした。 これってレファレンスにのってなくありません? CoreServices.framework の中の CarbonCore.framework のなかに MacTypes.h で定義されてますが...
387 名前:名称未設定 mailto:sage [2009/02/17(火) 18:59:32 ID:huwz60HN0] >>386 帰宅しました ADC Home > Reference Library > Reference > Darwin > Kernel Framework Reference にある void Debugger(const char * reason); じゃないですかね
388 名前:名称未設定 [2009/02/17(火) 21:39:27 ID:xoCyoJOy0] 返事が遅くなりましたが、上の方でピクセル値取得に答えてくださった方ありがとうございます。そのキーワードを参考に調べてみます。
389 名前:名称未設定 mailto:sage [2009/02/18(水) 14:27:00 ID:4adWTljt0] Cocoaプログラミングを始めたばかりなのですが、↓をCocoaでやる方法はありますか? FSRef dirRef; FSFindFolder(kLocalDomain, kPreferencesFolderType, kDontCreateFolder, &dirRef);
390 名前:名称未設定 mailto:sage [2009/02/18(水) 14:29:07 ID:TOS+xHXH0] NSSearchPathForDirectoriesInDomains
391 名前:名称未設定 mailto:sage [2009/02/18(水) 14:51:11 ID:4adWTljt0] >>390 ありがとうございます。 NSSearchPathForDirectoriesInDomainsを調べてみました。 LocalDomainのPreferencesフォルダは直に取得できないようですね。 LocalDomainのPreferencesフォルダを参照するには、LocalDomainのLibraryフォルダを取得した後、 パスにPreferencesをアペンドする感じになるのでしょうか?
392 名前:名称未設定 mailto:sage [2009/02/18(水) 15:15:26 ID:MJb3Ggc80] >>389 別に FSFindFolder を Cocoa で呼んでもいいと思うけど。 もちろん結果の FSRef は CFURLRef や path に変換する必要があるだろうけど。
393 名前:名称未設定 mailto:sage [2009/02/18(水) 15:19:20 ID:LxpICSxd0] Cocoaだけでやるんならそれしかあるまい。Carbonとハイブリッドさせるなら FSFindFolder()で得られたdirRefからファイルパスを取り出す。
394 名前:名称未設定 mailto:sage [2009/02/18(水) 15:32:35 ID:4adWTljt0] >>392 >>393 レスありがとうございます。 Cocoaだけで作らなければいけないため、NSSearchPathForDirectoriesInDomainsを使う事にします。
395 名前:名称未設定 mailto:sage [2009/02/18(水) 17:07:10 ID:Q6jBN/tT0] Interface Builder 3について。 Interface Builder 2のときはフォントパネルを表示させると、 System Font/Bold System Font/Small System Font/Fixed Pitch Font などが選べるようになってましたが、IB3で同じような設定はどこでやればいいのでしょう?
396 名前:名称未設定 mailto:sage [2009/02/18(水) 20:38:40 ID:ztNxZmzz0] >>394 64bitですか?
397 名前:名称未設定 mailto:sage [2009/02/18(水) 23:40:46 ID:hVtp5F3g0] >>394 というか Cocoa では ~/Library/Preferences を自前で開く必要はないはずだが。 NSUserDefaults をつかうと、 設定ファイルを開いて設定を読み書きするところまで全部背後でやってくれます。
398 名前:名称未設定 mailto:sage [2009/02/18(水) 23:51:23 ID:Ik84VQ3T0] 任意ファイル名のPreferences ファイルにしたかったら Core Foundation に それ用の関数があるし、データを保存するならば Application Support フォルダに いれるべきだしね
399 名前:名称未設定 mailto:sage [2009/02/19(木) 00:42:38 ID:a/3Rvlm00] >>394 64 bit で Cocoa だけでやらないといけないと思ってるんだったら、 Carbon 全部が使えないわけでないことを知っといたほうがいいよ。 64 bit で使えなくなったのは Carbon の GUI まわりだけだから、 FSFindFolder は使えると思います。 developer.apple.com/DOCUMENTATION/Carbon/Reference/Folder_Manager/Reference/reference.html#//apple_ref/c/func/FSFindFolder とかみると 64 bit で使えないとは書いてないでしょ。 HIほげほげとかのドキュメントをみると 64 bit では使えないとあからさまに書いてます。 developer.apple.com/documentation/Carbon/Conceptual/Carbon64BitGuide/OtherAPIChanges/chapter_6_section_21.html とかも参照。
400 名前:394 mailto:sage [2009/02/19(木) 10:07:55 ID:daDL34zI0] レスどうもです。 >>397 外部ツールが/Library/Preferences/・・・に吐き出したファイルを開くアプリを作成しています。 外部ツールの仕様は変更できないため、/Library/Preferencesを自前で開くしかない状況です。 >>399 CarbonGUI周りだけが64bitで使えないのは知っていました。 SnowLeopardでCarbonが廃止されるという噂があるので、Cocoa Onlyで作成したいと思った次第です。
401 名前:名称未設定 mailto:sage [2009/02/19(木) 11:09:53 ID:a/3Rvlm00] 10.5 で動いてたソフトが 10.6 で動かなくなるというのは さすがにないと思います。根拠のない噂でしょう。 まあ Cocoa からできる機能は Cocoa から 呼んでおいたほうがいいかもしれませんが、 Cocoa API がなくて C の API しかないのは山のようにありますよ。 プロパティリストを開くのは NSPropertyListSerialization とかつかってください。 ってなんか他のスレでも同じような話をしたな...
402 名前:394 mailto:sage [2009/02/19(木) 11:22:35 ID:daDL34zI0] >>401 確かに、10.5で動いてたソフトが10.6で動かなくなってしまったら大変な事になりますよね。。。 とりあえずGUI周りだけはCocoa Onlyで実装するようにしておいて、他の部分が10.6で動かなくなったらその時に考える事にします。 ありがとうございました。
403 名前:名称未設定 mailto:sage [2009/02/19(木) 11:42:30 ID:E6aTnY+e0] 64bit bainary持ってなければ、32bitで上がるだけ。 PlugIn系は親が64bitになるから、絶対対応が必要、と。
404 名前:名称未設定 mailto:sage [2009/02/19(木) 11:53:09 ID:Xb83Jjel0] deprecatedに指定されていなければ、いきなり廃止されることはないと 思うけど。そんなことになったら大騒ぎになるよ。 PICTも廃止されたら代わりになるものがない。PDFじゃ編集出来るソフトは Illustratorくらいだし。
405 名前:名称未設定 mailto:sage [2009/02/19(木) 12:39:24 ID:BqoQTulc0] NSなんたら以外は使わないようにしてる
406 名前:名称未設定 mailto:sage [2009/02/19(木) 12:47:13 ID:a/3Rvlm00] PDF を編集出来るようがんばってるシェアウェアもあります purgatorydesign.com/Intaglio/ PICT は残念ながらいずれ死亡でしょう。 ほとんど関連APIが deprecacted で、CoreGraphics のコンテキストに 直接描ける QDPictほげほげ系の API も 64bit ではつかえないし。 /usr/sbin/pictd ってのをつかえば 64bit Cocoa からも pict が 描けるんだと勝手におもってますが...
407 名前:名称未設定 mailto:sage [2009/02/19(木) 13:04:22 ID:FXkl7wUg0] PICTって今じゃ使う機会がなくない?
408 名前:名称未設定 mailto:sage [2009/02/19(木) 13:13:15 ID:a/3Rvlm00] Keynote '09 が MathType とやりとりしてるデータは PICT だよ。
409 名前:名称未設定 [2009/02/19(木) 13:23:29 ID:gZR/wLEh0] UIViewのピクセル処理で(100,100)の点に赤い点を打つというプログラムを書いたのですが、赤くなりません。どこが間違っているかアドバイスいただけないでしょうか。 - (void)drawRect:(CGRect)rect { NSLog(@"drawRect:"); // ビューのサイズ int width = 320; int height = 460; // ビューのサイズを持つビットマップコンテキストを作成 unsigned char *data = malloc(width*height*4); CGContextRef bitmapContext = CGBitmapContextCreate(data, width, height, 8, width*4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast); // ビットマップコンテキストを黒で塗りつぶす CGContextSetRGBFillColor(bitmapContext, 0.0f, 0.0f, 0.0f, 1.0f); CGContextFillRect(bitmapContext, CGRectMake(0.0f, 0.0f, width, height)); // ビットマップコンテキストからビットマップ配列を取得 unsigned char *bitmap = CGBitmapContextGetData(bitmapContext);
410 名前:名称未設定 [2009/02/19(木) 13:24:20 ID:gZR/wLEh0] つづき // (10,10)の位置のRGBA値を取得 // 黒で塗りつぶしたなので (255,255,255,255) int px = 100, py = 100; int startByte = ((py * width) + px) * 4; NSLog(@"RGBA = (%d,%d,%d,%d)", (unsigned char)bitmap[startByte], // R (unsigned char)bitmap[startByte+1], // G (unsigned char)bitmap[startByte+2], // B (unsigned char)bitmap[startByte+3]); // A // (100,100)の位置のビットマップの値を赤に更新 bitmap[startByte] = 255; bitmap[startByte+1] = 0; bitmap[startByte+2] = 0; NSLog(@"RGBA = (%d,%d,%d,%d)", (unsigned char)bitmap[startByte], // R (unsigned char)bitmap[startByte+1], // G (unsigned char)bitmap[startByte+2], // B (unsigned char)bitmap[startByte+3]); // A
411 名前:名称未設定 [2009/02/19(木) 13:25:03 ID:gZR/wLEh0] つづき // ビットマップ配列からイメージ(CGImageRef)を再構築 CGDataProviderRef dataProviderRef; dataProviderRef = CGDataProviderCreateWithData(NULL, bitmap, width*height*4, NULL); CGImageRef image = CGImageCreate(width, height, 8, 32, width * 4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaLast, dataProviderRef, NULL, 0, kCGRenderingIntentDefault); // ビューに再構築したイメージを描画 CGContextRef context = UIGraphicsGetCurrentContext(); CGContextDrawImage(context, rect, image); // データ構造を解放 free(data); CGDataProviderRelease(dataProviderRef); }
412 名前:名称未設定 mailto:sage [2009/02/19(木) 13:36:47 ID:xsNjWzM+0] 結果どうなるかと NSLog の結果も書けば?
413 名前:名称未設定 [2009/02/19(木) 13:56:06 ID:gZR/wLEh0] すみません、忘れてました。 最初のRGBAを表示するNSLogでは (255,255,255,255)になります。 黒で塗りつぶして (100,100)のピクセル値を取得しているので。 次に(100,100)のピクセル値を赤に更新した後にNSLogすると (255,0,0,255)になり、bitmap上では赤色になっています。 しかし、このbitmapからCGImageRefを作ってこれをViewに 表示すると画面は真っ黒なままです。 本当は(100,100)だけ赤い点を期待していました。 CGContextSetRGBFillColor(bitmapContext, 0.0f, 0.0f, 0.0f, 1.0f); を黒ではなく他の色に変えるとその色になるので 塗りつぶしは成功しているようです。 bitmapの値を直接書き換えたのが描画内容に反映されていない原因が 思い当たりません・・・
414 名前:名称未設定 mailto:sage [2009/02/19(木) 14:03:31 ID:Xb83Jjel0] >>407 俺はまだ使ってるよ。CarbonからCocoaに何年もかけて移行してるけど 最後に残ったのがPICT。他に使えるフォーマットがないんだよね。 どうせtext, line, rect, ovalしか使ってないからrtfにしてしまう手もあるけど。 今のとこ自前でドローソフトを作って専用フォーマットにしようかと思ってる。 PICTのようなドロー系の汎用フォーマットがないのが困る。 >>406 残念。intaglioはPDFを一つのオブジェクトにしてしまうみたい。 PDFオブジェクトのグループ解除やPDF自体の編集は出来ないみたいだ。
415 名前:名称未設定 mailto:sage [2009/02/19(木) 14:12:44 ID:l8yw9n5/0] >>400 Carbonが無くなったらCocoaも動かないし、OSも動かない。 Process ManagerやAppleEventもCarbonだからprocessすら起こせない。 >>406 ImageIOも64bitだとPICTが扱えない。 メーリングリストでのAppleの弁は「そこだけ32bit process起こして IPCでもらえ」w
416 名前:名称未設定 mailto:sage [2009/02/19(木) 14:15:14 ID:Xb83Jjel0] >>414 と思ったら、Preferenceで設定すればPDFを編集できるんだな。 思ってたよりも良く出来てる。
417 名前:名称未設定 mailto:sage [2009/02/19(木) 14:26:24 ID:xsNjWzM+0] >>411 >CGImageCreate の alpha 設定あたりが怪しいんじゃないかな
418 名前:名称未設定 mailto:sage [2009/02/19(木) 14:33:59 ID:xsNjWzM+0] >>413 >(255,255,255,255) 黒で塗りつぶしたのなら 0,0,0,255 じゃないの?
419 名前:名称未設定 mailto:sage [2009/02/19(木) 14:36:38 ID:a/3Rvlm00] >>415 >メーリングリストでのAppleの弁は「そこだけ32bit process起こして IPCでもらえ」w /usr/bin/pictd がまさに Apple がそのためにつかってるぽいです。 launchd の on demand の 32bit デーモンで、やることは単に ipc でうけとった PICT データを render してかえすだけのようです。 API が公開されてないですが、class-dump した感じでは普通に Distributed Objects で NSMachBootstrapServer で com.apple.pictd をよべば 使えるっぽいです。やったことないけど。
420 名前:名称未設定 [2009/02/19(木) 14:45:14 ID:gZR/wLEh0] >>417 引数を調べてみます。 >>418 その通りでしたorzその前に白でやってたので間違えました。
421 名前:名称未設定 [2009/02/19(木) 14:49:01 ID:gZR/wLEh0] すみませんorz もう一度よく目をこしらえたら赤い点がありました 左上が原点だと思って左上ばかり見てましたが、 左下が原点らしく左下の方にありました。 お騒がせしました。
422 名前:名称未設定 mailto:sage [2009/02/19(木) 15:00:24 ID:a/3Rvlm00] >>415 ,419 ちょっと調べてみたら、なんと NSPICTImageRep は64bit でもつかえますね。 ドキュメントのどこを呼んでも deprecated だと書いてない。 実際に単に image well を表示するだけの Cocoa app を 64 bit only で コンパイルして、そこに pict ファイルをドロップしたら無事表示されました。 その際裏側で /usr/sbin/pictd が立ち上がってるのも確認できた。 しかしコンソールに大量に警告メッセージが出て大変なことになってます。 う〜む... >>421 なんで直接ちっさな点を context に描画しないんでしょう ???
423 名前:名称未設定 [2009/02/19(木) 17:27:59 ID:gZR/wLEh0] >>422 ピクセル単位でRGBの読み込み、画像処理、書き込みしたかったからです。 とりあえずテストで1ピクセルだけ書き込めるかテストしてました。 1ピクセルでなくて線を引けばすぐ気づいたのにorz
424 名前:名称未設定 mailto:sage [2009/02/19(木) 17:32:58 ID:IupgEOPD0] タブブラウザを作りたいんですけどWebKitにはタブ化の機能はないみたいですが これを自前でやるのは結構大変でしょうか?
425 名前:名称未設定 mailto:sage [2009/02/19(木) 17:56:43 ID:cdmrNj430] 難しそうだね しいらを参考にするとか?
426 名前:名称未設定 mailto:sage [2009/02/19(木) 18:14:07 ID:IupgEOPD0] NSSegmentedControlを使う方法だと無理があるでしょうか? 開きたいタブの数に応じてセグメントの数を動的に変更して それぞれのセグメントのViewに動的に作ったWebViewを割りあてる というような感じだとどうでしょうか?
427 名前:名称未設定 mailto:sage [2009/02/19(木) 18:19:06 ID:Qczx1P3r0] つ PSMTabBarControl
428 名前:名称未設定 mailto:sage [2009/02/19(木) 18:21:36 ID:ZJRPFUT00] >>426 私は最初はそれで作りましたので出来ないことではないです。 自分でViewを入れ替える代わりに、NSTabViewをタブ非表示にして使う手もあります。 後者の場合はPSMTabBarControlを使えば、Safari風に出来てクローズや並び替えも出来るのでオススメです。 www.positivespinmedia.com/dev/PSMTabBarControl.html
429 名前:名称未設定 mailto:sage [2009/02/19(木) 18:34:14 ID:IupgEOPD0] PSMTabBarControlを教えてくれてありがとうございました これを使うのが一番良さそうですね
430 名前:名称未設定 mailto:sage [2009/02/19(木) 18:44:00 ID:ZJRPFUT00] ただし私が使ったときにPSMTabBarControlはちょっとバグっぽいところがいくつかありました。 ・Enumeration中に対象のNSMutableArrayからオブジェクトを削除する ・KVOを解除せずに対象オブジェクトをreleaseする コードは適宜修正した方がいいかもしれません。
431 名前:名称未設定 mailto:sage [2009/02/19(木) 18:46:06 ID:Qczx1P3r0] 僕は直接いじるのが面倒だったのでカテゴリで無理やり上書きしましたw
432 名前:名称未設定 mailto:sage [2009/02/19(木) 19:49:11 ID:TRDvRyIy0] パネルの枠だけを非表示にするメソッドが分かりません。 NSWindow を調べてみましたが、ウィンドウ上の内容もろとも 透明になってしまいました。 枠だけを消すにはどのようにしたら良いでしょうか?お願いします。
433 名前:名称未設定 mailto:sage [2009/02/19(木) 19:57:39 ID:ZtyLyBTC0] >>432 枠って何よ
434 名前:名称未設定 mailto:sage [2009/02/19(木) 21:07:01 ID:TRDvRyIy0] >>433 枠というか、背景ということです。 ウィンドウに乗っかってる内容だけを表示して、ウィンドウそのものを 消すという意味です。 そもそもオリジナルのマウスカーソルを表示させたり、オリジナルの ツールチップを出す場合はこういう手法で良いですか?
435 名前:名称未設定 mailto:sage [2009/02/19(木) 21:27:50 ID:ZJRPFUT00] >>434 カーソルならNSCursorでいいと思いますし、ツールチップはNSViewサブクラスならIBから設定したりsetToolTipすればいいと思います。
436 名前:名称未設定 mailto:sage [2009/02/19(木) 22:00:56 ID:xsNjWzM+0] homepage.mac.com/ryanstevens/.Public/TooltipWindowDemo.zip
437 名前:名称未設定 mailto:sage [2009/02/19(木) 22:47:52 ID:TRDvRyIy0] 説明不足ですいません。 マウスカーソルは NSCursor だと大きい画像が設定できないと ドキュメントにありました。 ツールチップはOSが標準で提供しているものなら setToolTip で いいと思いますが、 www.panic.com/jp/coda/img/screenshots/files-screenshot_03.png このようなオリジナルのツールチップを出す手法が知りたいのです。 つたない説明で申し訳ないです。
438 名前:名称未設定 mailto:sage [2009/02/19(木) 23:05:30 ID:ZtyLyBTC0] >>437 ウインドウ内ならCALayer使えばいいんじゃね?
439 名前:名称未設定 mailto:sage [2009/02/19(木) 23:19:02 ID:a/3Rvlm00] >>437 ふつうに枠なし window を表示すればいいとおもいます。 developer.apple.com/samplecode/RoundTransparentWindow/ とか参照。
440 名前:名称未設定 mailto:sage [2009/02/19(木) 23:59:52 ID:ObnIMvo/0] UIToolbarみたいにwindowの上部でなくて下部に設置できるNSToolbarってないんですかね IBでは提供されていないのにiTunesとかその他Appleソフトでは普通に使われてますよね
441 名前:名称未設定 mailto:sage [2009/02/20(金) 00:13:30 ID:NNWa+kQMi] >>440 あれはウインドウの下にボタンを配置してるだけでは?nibは見てないけど。 toolbarみたいにカスタマイズできるようにするのは大変かもしれないけどただのボタン群ならそれで十分でしょ。
442 名前:名称未設定 mailto:sage [2009/02/20(金) 00:14:18 ID:gTSMnnNF0] 普通に配置してるだけ
443 名前:名称未設定 mailto:sage [2009/02/20(金) 00:29:02 ID:6fzrNojY0] >>440 Apple Human Interface Guidelinesの Bottom Bars developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/chapter_18_section_4.html#//apple_ref/doc/uid/20000961-SW6 Rectangular-Style Toolbar Controls developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGControls/chapter_19_section_2.html#//apple_ref/doc/uid/TP30000359-SW10 を読みましょう
444 名前:名称未設定 mailto:sage [2009/02/20(金) 01:09:17 ID:thVrN14b0] >>441 , 442 えー説明が悪かったです。 iTunes、Finderなんかと見比べてください。 IBでWindowのTextureをオンにしたものと明らかに色が違うのです。且つこいつらは同じBottomToolbarを使っているように見えます。 で、自分も同じ物を使いたいなと思ったのです。 TextureをオンにしたWindowのBottomにボタンを配置してもイマイチ色合いがダサく感じてしまいます、、 IBだとノーマル、Textureオン、HUDの3種類しかないですよね?Privateな何かあるのでしょうか? とりあえず今>>443 を読んでいますが詳しい方いたら教えてください。
445 名前:名称未設定 mailto:sage [2009/02/20(金) 02:05:01 ID:thVrN14b0] いくつかのアプリケーションについて調べたところ、標準のアプリも専用のBottomToolbarというのは使用しておらず Windowの下部にボタンを配置してそれらしく見せているだけでした。 しかしいくつかのアプリケーションのBottomToolbarの色がIB標準のTextureの色と違う点については iCalのCalenderWindow.nibの場合は独自のクラスCALWindowを使用していたり iChatのMyProfile.nibの場合は独自クラスを使っていなかったり(おそらくカテゴリかな) まぁアプリによっていろいろ実装方法が違えど工夫があるみたいですね。 とりあえずIB標準のものが気に入らなければ自分で実装するしかないみたいです。 分けの分からん質問ですいませんでした。
446 名前:名称未設定 mailto:sage [2009/02/20(金) 07:39:47 ID:6fzrNojY0] >>445 443だけど、それはtextured windowではなくて、NSWindowの setContentBorderThicknessを使うのです。 SourceView developer.apple.com/samplecode/SourceView/ のコードを見ましょう
447 名前:名称未設定 mailto:sage [2009/02/20(金) 10:16:03 ID:thVrN14b0] >>446 おおお完璧です!ありがとうございました! 作ったサブクラスは即捨てます。
448 名前:名称未設定 mailto:sage [2009/02/20(金) 18:37:19 ID:D53ExNTJ0] NSTabViewのタブってIB上だとドラッグして順番変えられるけど アプリにして起動するとドラッグできないんですけどこういうもん なんでしょうか? V2Cっていう2chブラウザだとドラッグできるけどこれはJavaだから?
449 名前:名称未設定 mailto:sage [2009/02/20(金) 19:02:36 ID:BBYdLV+c0] >>448 そういうもんです。 並び替え出来るタブは>>427-428 を使えば良いかと。見た目が変わっちゃいますが。
450 名前:名称未設定 mailto:sage [2009/02/20(金) 20:38:22 ID:maxZ/9TX0] 最近はどのアプリもパーツは凝ってて 純正だとショボくて見劣りするんだよなあ。 作る方はマンドクセでやってらんないし。
451 名前:名称未設定 mailto:sage [2009/02/20(金) 23:15:56 ID:gTSMnnNF0] >>448 DnDは自分で実装する
452 名前:名称未設定 mailto:sage [2009/02/25(水) 12:51:07 ID:GTgWYfeH0] Safari 4でだいぶタブが変わっちゃったね SnowではWindowのTitleBarにもうちょいアクセスできるようになるのだろうか
453 名前:名称未設定 mailto:sage [2009/02/25(水) 12:54:44 ID:lH7VFHaH0] ダウンロードしてないけど、自前の描画でしょ。自前でやるなら何だって出来る。
454 名前:名称未設定 mailto:sage [2009/02/25(水) 14:11:56 ID:ObXDktwm0] タブコントロールが標準で搭載するという夢をみた。 というか IB で NSWindow のインスペクタでチェックボックスを クリックするだけで OK、とかそんな感じだったらいいな...
455 名前:名称未設定 mailto:sage [2009/02/25(水) 14:40:57 ID:DSwcYgaS0] タイトルバー侵略しちゃったらドラッグとかしにくいだろ。
456 名前:名称未設定 mailto:sage [2009/02/25(水) 15:13:11 ID:GTgWYfeH0] >>455 Safariがしちゃったけどね >>夢を見た Snowあるからインスコしてみればいいんだけどね 新しいXcodeとかAPIのドキュメントとか入ってんのかな 変更するかも知れないものだし積極的に触ってない… >>453 後で3と4のnibでも見比べてみるわ
457 名前:名称未設定 mailto:sage [2009/02/25(水) 18:44:08 ID:fYlgQHqq0] まったく、safari4でタイトルバータブなんて変態UIをやってくれたもんだ。 ウインドウシェードできないじゃん。
458 名前:名称未設定 mailto:sage [2009/02/25(水) 23:28:50 ID:JqmefXPg0] 今日Flashのアップデートが出てたので入れてみましたが 嘆かわしいことにDebugger() was called!問題は修正されていませんでした。 以上報告まで。
459 名前:名称未設定 mailto:sage [2009/02/26(木) 11:05:49 ID:yg2R2lH40] >>458 んでパフォーマンスはうpしたの?
460 名前:名称未設定 mailto:sage [2009/02/26(木) 11:08:28 ID:94ZoWN0W0] すみません、お願いします。 NSURL* theURL; theURL=[NSURL URLWithString:@"www.yahoo.co.jp/ "]; if ([[NSWorkspace sharedWorkspace]openURL:theURL]) { } のようにすると、指定したURLをデフォルトのブラウザで開くことができると思うのですが、 なぜかブラウザが落ちてしまいます。SafariでもFirefoxでも同じです。 設定するURLによってはちゃんと開くのですが、ページ内のリンクをクリックして、 表示されるページが遷移すると落ちる場合もあります。 これは何が原因で、どうすると回避できるのでしょうか。
461 名前:名称未設定 mailto:sage [2009/02/26(木) 11:26:31 ID:8t+pRt+l0] うちでは問題ないよ。OS X のバージョンは? あと、Safari のクラッシュログをはってみてください。
462 名前:名称未設定 mailto:sage [2009/02/26(木) 16:54:35 ID:94ZoWN0W0] ありがとうございます。すみません、いま出先なので、クラッシュログは後ではりますね。明日になるかもしれません。 OSは10.5.6、Intel Macです。 そのページのURLを手入力で直接表示すると何ともなくて、 先に書いたコードからページを開いたときにトラブルが発生するので、 どこかどうにかなっているんだと思います。
463 名前:名称未設定 mailto:sage [2009/02/26(木) 19:03:44 ID:bjUky8mz0] OmniObjectMeterがフリーになったんだねぇ。 つーかOmniにはいろいろとお世話になってまつ。
464 名前:名称未設定 [2009/02/26(木) 21:05:39 ID:tomYC/Na0] Mac OS 10.5.6 (intel) / Xcode 3.1環境にて、WebKitを使ったソフトを作成しています。 [webView setMainFrameURL:@"www.google.com "]; [webView setMainFrameURL:@"www.nicovideo.jp "]; [webView setMainFrameURL:@"www.youtube.com "]; 等は問題無いのですが [webView setMainFrameURL:@"www.nicovideo.jp/search/hoge "]; [webView setMainFrameURL:@"www.nicovideo.jp/watch/sm9 "]; 等を実行すると、WebCore::KURL::parse(?)のエラーで落ちてしまいます。 Flash等の問題も疑い、Plug-inをOFFにしてみましたが、効果はありませんでした。 また、画像等のリソースが問題なのかもしれないとも疑ったのですが、 - (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource が呼び出される前に落ちてしまっているようでした。 特定のページ(ニコニコの一部のページ)を表示できない原因はなんなのでしょうか。
465 名前:名称未設定 mailto:sage [2009/02/26(木) 21:26:00 ID:tomYC/Na0] すみません、google等でも問題が発生してしまったので再検証してみます。
466 名前:名称未設定 mailto:sage [2009/02/26(木) 21:45:36 ID:Fel0Nrhg0] >>459 ついでにSafari4にしたのでなんとも言えんです
467 名前:460 mailto:sage [2009/02/27(金) 07:45:54 ID:sbSJ+Izy0] 昨日の者です。ログレポートをお見せする前に、一つ分かったことを報告しますと、 この問題は、Xcodeから「ビルドして進行」を選択すると発生しますが、 ビルドしたアプリケーションをダブルクリックして実行すると、発生しないようです。 クラッシュする際、Safariだと、以下のレポートが吐き出されます。 Feb 27 07:24:48 Macintosh [0x0-0x3a03a].com.apple.Safari[395]: Debugger() was called! Feb 27 07:24:48 Macintosh com.apple.launchd[108] ([0x0-0x3a03a].com.apple.Safari[395]): Exited abnormally: Interrupt Firefoxも同じです。 Feb 27 07:31:37 Macintosh [0x0-0x43043].org.mozilla.firefox[420]: Debugger() was called! Feb 27 07:31:37 Macintosh com.apple.launchd[108] ([0x0-0x43043].org.mozilla.firefox[420]): Exited abnormally: Interrupt と、書きながら、他の方がこのスレッドで同様の報告をされているのを発見しました。 >>381 これが原因かもしれません。
468 名前:名称未設定 mailto:sage [2009/02/27(金) 08:13:38 ID:Owu4WLfr0] 2つのMenuItemがあってこれをトグルのように動作させたいんですが 動作についてはそれぞれにIBActionを結びつけてうまくいきました あとは両者の選択状態をチェックマークで表したいんですけど 片方のMenuItemが呼ばれたときに他方のMenuItemのチェックマークを はずすためにはどうしたらいいんでしょうか? それぞれにIBOutletを結びつければいいのかと思ったんですが、RadioGroup のように自動化する機構みたいなのはないんでしょうか?
469 名前:名称未設定 mailto:sage [2009/02/27(金) 11:24:59 ID:yZ+TJ9P/0] - (void)item1Act:(id)sender { [item2 setState:[sender state]]; [sender setState:![item2 state]]; } - (void)item2Act:(id)sender { [item1 setState:[sender state]]; [sender setState:![item1 state]]; } NSOnState がチェックあり、NSOffState がチェック無し状態です。
470 名前:名称未設定 mailto:sage [2009/02/27(金) 16:06:15 ID:Owu4WLfr0] >>469 ありがとうございます やっぱり自分で実装するんですね
471 名前:名称未設定 mailto:sage [2009/02/27(金) 18:19:51 ID:FgFwabPe0] 別のやり方なら、 enum { item1, item2, item3}; - (BOOL)isOnState:(int)item { .... } - (int)item1State { return [self isOnState:item1] ? NSOnState : NSOffState; } - (int)item2State { .... } .... とかして、 Cocoa Bindings で。 なぜかNSMenuItemのvalueにバインドするとstateの値として使われるので、valueにBindする。
472 名前:名称未設定 mailto:sage [2009/02/27(金) 19:27:32 ID:7k3/xzqN0] 2つしかないならBindしてやって片方に逆変換してやってもいいかも 乱暴だけどコードが短いのならこんなのとか - (IBAction)action:(id)sender { for (NSMenuItem *item in [[sender menu] itemArray]) { [item setState:(item == sender) ? NSOnState : NSOffState]; } } ラジオボタンの場合NSMatrixが現在選択されているものを覚えているだろうから 現在選択されているMenuItemのindexかobjectかを覚えて置いて MenuからのAction内で [currentMenuItem setState:NSOffState]; currentMenuItem = sender; みたいなんでもいいと思う
473 名前:名称未設定 mailto:sage [2009/02/27(金) 19:32:53 ID:7k3/xzqN0] 1行ぬけてたごめん [currentMenuItem setState:NSOffState]; currentMenuItem = sender; [currentMenuItem setState:NSOnState];
474 名前:名称未設定 mailto:sage [2009/02/27(金) 19:39:35 ID:q0/my/Dt0] 別のやり方なら、 enum { item1, item2, item3}; - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { SEL menuAcion = [menuItem action]; if(menuAcion == @selector(item1Act:)) { [menuItem setState:self.state == item1 ? NSOnState : NSOffState]; } else if(menuAcion == @selector(item2Act:)) { [menuItem setState:self.state == item2 ? NSOnState : NSOffState]; } return YES; } あとは、stateプロパティを設定するだけ
475 名前:名称未設定 mailto:sage [2009/02/27(金) 22:26:13 ID:FirvgHyF0] >>464 こちらのコードを試してみてはいかかでしょうか? webViewのサブクラスで NSURL *url = [NSURL URLWithString:@"www.hoge.com "]; NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; [[self mainFrame] loadRequest:req];
476 名前:名称未設定 mailto:sage [2009/02/27(金) 22:47:34 ID:wlMPknXO0] >>475 [webView setMainFrameURL:] と [[webView mainFrame] loadRequest:] は同じ
477 名前:名称未設定 mailto:sage [2009/02/28(土) 10:06:48 ID:6LJrsjQH0] www.objective-basic.com/ てのをみつけた。β版のダウンロードすら出来んが...
478 名前:名称未設定 [2009/02/28(土) 10:44:36 ID:cDuyCEKF0] 35ドルか
479 名前:名称未設定 mailto:sage [2009/02/28(土) 10:50:57 ID:XR/39gz50] 2008年第4四半期の売り上げで、前年同期比965%増という大躍進を遂げているのはObjective-C Mac OS XやiPhoneでの開発に注目が集まったこと以外に、この成長の理由は考えつかないとしている。 www.atmarkit.co.jp/news/200902/27/langs.html
480 名前:名称未設定 mailto:sage [2009/02/28(土) 13:53:15 ID:6LJrsjQH0] ところで、64bit + GC mode で PDFKit をつかうと failed integrity check とかいってよく GC thread が落ちるんだけど僕だけ?
481 名前:名称未設定 mailto:sage [2009/02/28(土) 18:52:29 ID:+2oNMzSz0] すいません助けて下さい 萩原剛志さんの「詳解Objective-C」という本で勉強してるのですが 233、234ページに載ってるプログラムが動いてくれません 引数が多すぎる時に出る「too many arguments to function」というエラーが出るのですが 原因がさっぱり分かりません - (NSString *)stringByAppendingPathComponents:(NSString *)str, ... { va_list varglist; NSString *work, *comp; if (str == nil) return self; work = [self stringByAppendingPathComponents:str]; va_start(varglist, str); while ((comp = va_arg(varglist, NSString *)) != nil) work = [work stringByAppendingPathComponents:comp]; va_end(varglist); return work; } 低レベルな質問ですいません
482 名前:名称未設定 mailto:sage [2009/02/28(土) 18:59:47 ID:eY0ZEIjm0] そもそも動かない気がするんだが。 写し間違い?
483 名前:名称未設定 mailto:sage [2009/02/28(土) 19:27:08 ID:+2oNMzSz0] >>482 一字一句間違えてないです 引数が一つだと動くのですが 二つ以上だと「too many arguments to function」が出てしまうんだす 可変引数って「...」で合ってますよね?
484 名前:名称未設定 mailto:sage [2009/02/28(土) 20:18:40 ID:vm9zXEnV0] その本読んでないけど、メソッド内のstringByAppendingPathComponent「s」は本当はstringByAppendingPathComponentな気がする
485 名前:名称未設定 mailto:sage [2009/02/28(土) 21:09:04 ID:7RcuzfIS0] >>483 無限再帰呼び出しになってるんだけど。 スタックオーバーフローが出るよ。たぶん。 じゃなくて、単にメモリ不足で落ちるのかな?今は。 >>484 これっぽいけど、エラーの原因はよくわからんね。 警告出てても無視してるんなら、宣言が間違ってる可能性がある。
486 名前:名称未設定 mailto:sage [2009/02/28(土) 21:14:19 ID:RtPTalEM0] あてずっぽだが option+[;]で入る、三連ピリオドを入力しているとか。
487 名前:名称未設定 mailto:sage [2009/02/28(土) 21:24:58 ID:+7yc1jv1i] >>481 写間違えてるな whileの下のstringByAppendingPathComponent だな sがいらない Xcodeの補間機能使ってるとよくある
488 名前:名称未設定 mailto:sage [2009/02/28(土) 21:45:20 ID:+2oNMzSz0] 皆様レスありがとうございます 指摘された箇所とmain関数の方では逆に「s」を付け忘れてました プログラム云々の前に、落ち着いて再度見直すべきでした カスみたいな質問に回答してくださってありがとうございました
489 名前:名称未設定 mailto:sage [2009/02/28(土) 21:55:32 ID:vm9zXEnV0] 不覚にも吹いたw
490 名前:名称未設定 mailto:sage [2009/02/28(土) 22:33:32 ID:95WSMilk0] ちょっとほのぼのしたw
491 名前:名称未設定 mailto:sage [2009/03/01(日) 01:27:11 ID:VJx+qHpp0] あの補完機能は罠だよな 便利だけど
492 名前:名称未設定 mailto:sage [2009/03/01(日) 08:15:24 ID:EiWEylNr0] >>481 ところで作者さんの名前は「荻原(おぎはら)」さんね。萩原(はぎわら)はなくて。 ...と思うんだけど「萩原 Objective-C」でもかなりヒットするのでちょっと不安になったw まあ全国の萩原さん&荻原さんに共通した悩みかもしれんがw
493 名前:名称未設定 mailto:sage [2009/03/01(日) 09:29:22 ID:ngCPRk3q0] ずっとハギワラって読んでたわ
494 名前:名称未設定 [2009/03/01(日) 10:38:11 ID:OZuV8YBg0] Cocoa本で儲けてるね
495 名前:名称未設定 [2009/03/01(日) 10:51:51 ID:iuVtn2zf0] ことえり@leopardだと、おぎわらで変換すると荻原も萩原も両方でるね。 なんだよコレ!
496 名前:名称未設定 mailto:sage [2009/03/01(日) 12:03:10 ID:EiWEylNr0] >>495 たしか萩原で「おぎわら」と読ませる名字もあるんだと思った。 なお作者さんのお名前は「おぎわら」でなく「おぎはら」とお読みする模様。奥が深い。
497 名前:名称未設定 mailto:sage [2009/03/01(日) 19:58:33 ID:nSlqd6vqi] 漢字が違うことすら今初めて知った俺は負け組。。。
498 名前:名称未設定 mailto:sage [2009/03/01(日) 20:04:42 ID:bE6+K5TB0] 大丈夫、個々にもう一人居るorz
499 名前:名称未設定 [2009/03/01(日) 20:14:12 ID:OZuV8YBg0] www.youtube.com/watch?v=QhDvCt7N2fk
500 名前:名称未設定 mailto:sage [2009/03/01(日) 20:40:37 ID:ikYIOl0J0] あるオブジェクトAからオブジェクトBを取りだし、 取りだしたオブジェクトBに元のオブジェクトAを入れると 世界が終わりますか?
501 名前:名称未設定 mailto:sage [2009/03/01(日) 20:46:01 ID:wxn7spBQ0] 終わりません。 別の新しい世界が始まります。
502 名前:名称未設定 mailto:sage [2009/03/01(日) 21:16:50 ID:kyCkI9Cc0] オブジェクトBにAを入れるとtype mismatchでコンパイルも通らない と空気を読まずに適当にほざいてみる
503 名前:名称未設定 mailto:sage [2009/03/01(日) 21:23:00 ID:nhsz2S6p0] >>499 それよりこっちの方が凄くねか www.youtube.com/watch?v=pqHg5yhSWxk
504 名前:名称未設定 mailto:sage [2009/03/01(日) 22:14:21 ID:gsG7+5zG0] 全スレ>>981 存在は知ってるけどきちんと調べないと出てこないくらいの機能で しかもベータで、8/31までに限定されている機能を偉そうに言われても。
505 名前:名称未設定 mailto:sage [2009/03/01(日) 22:14:44 ID:gsG7+5zG0] 誤爆しました。
506 名前:名称未設定 mailto:sage [2009/03/01(日) 22:23:00 ID:nD9JQ2Z80] >>504 偉そうな誤爆・・・
507 名前:名称未設定 mailto:sage [2009/03/01(日) 22:23:21 ID:Swn1B2EX0] >>499 ,503 ところで、このキャラクターは何?
508 名前:名称未設定 mailto:sage [2009/03/01(日) 23:34:43 ID:Lpr4cl+S0] オリジナルのキャラじゃないでしょうか
509 名前:名称未設定 mailto:sage [2009/03/02(月) 19:42:31 ID:zFsp46jM0] KVO についてなんですが、みなさん context: って何に使ってますか? 何か有効に使えるような例ってありますかね? addObserver: forKeyPath: options: context:
510 名前:名称未設定 mailto:sage [2009/03/02(月) 20:19:50 ID:3ZPdt5AI0] >>509 通知される項目の識別に使ったりします。 バインドを自前で実装するときに、bind:toObject:withKeyPath:options:をオーバーライドして、内部でaddObserver: forKeyPath: options: context: を呼びますが、 ここでバインド項目を渡すのにcontext:を利用します。 そうしないと、observeValueForKeyPath:ofObject:change:context:で通知を受け取ったときに、どのバインド項目に対する通知なのか判断できません。 ttp://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/HowDoBindingsWork.html
511 名前:名称未設定 mailto:sage [2009/03/02(月) 20:48:30 ID:zFsp46jM0] >>510 あ、すみません。聞き方が悪かったです。んーと、 observeValueForKeyPath: ofObject: change: context: で使うのは分かっているのですが、バインド数が 少ない事もあり、addObserver:forKeyPath:options:context: の第4引数を NULL で渡して、keyPath と object で識別しています。 ただ、もっとうまく使う方法はないかなぁ、と思いまして聞いた次第です。 何かこういう使い方すると〜、ってのがあればお願いします。
512 名前:名称未設定 mailto:sage [2009/03/02(月) 20:55:57 ID:+eP5TcnG0] >>511 良く嫁。 読んでも分からんならそれが君のレベル。
513 名前:名称未設定 mailto:sage [2009/03/02(月) 21:09:36 ID:3ZPdt5AI0] >>511 結局、何が知りたいのかが良く分かりません。 contextをnullにして問題がないなら、それでいいんじゃないの?
514 名前:名称未設定 mailto:sage [2009/03/02(月) 21:43:05 ID:zFsp46jM0] んー、どうやら今ひとつ分かってないみたいです。出直してきます。 ありがとうございました。
515 名前:名称未設定 mailto:sage [2009/03/02(月) 22:49:33 ID:ITECLOA50] 質問です。 Finderで下部にファイルパスがアイコン付きで出ているのは、何を使ってるのでしょうか? こんなやつ↓ mrox.net/blog/wp-content/uploads/2008/08/lt2-path-bar.png 最初、NSBrowserかと思ったのですが、リサイズの動きを見てると1行のNSTableview? っぽい気がしますが。NSViewでマトリックス的に描いてる気もします。
516 名前:名称未設定 mailto:sage [2009/03/02(月) 22:55:04 ID:WNc4tkl70] NSPathControl 10.5
517 名前:名称未設定 mailto:sage [2009/03/02(月) 22:56:07 ID:WNc4tkl70] てかまずIBを見ようよ…
518 名前:名称未設定 mailto:sage [2009/03/03(火) 00:07:24 ID:xPw77iU/0] >>516-517 ああ、すみません・・10.4・・ 10.5からあるんですか。わかりました。 10.4でも検索した時は下に出るんですよね。研究します。
519 名前:名称未設定 mailto:sage [2009/03/03(火) 00:28:08 ID:0wdKrcR60] >>518 10.4でもあるならまだAPIが公開されてないだけ。 ちなみに>>515 の写真がモロ10.5だったから10.4の話しとは思いもしなかったよ
520 名前:名称未設定 mailto:sage [2009/03/03(火) 07:11:12 ID:2r7A6olG0] >>518 NSPathControl ほどではないがこういうのもある。 10.3 くらいでも使えるようだ。↓ ttp://zathras.de/sourcecode.htm#UKFilePathView
521 名前:名称未設定 mailto:sage [2009/03/03(火) 15:13:52 ID:7S0UavSNi] NSWindowのサブクラスのinitWithContentRect~をオーバーライドして NSBorderlessWindowMaskを指定しTextFieldを配置したビューを表示させると、 そのTextFieldはFirstResponderにはなれないみたいなんですが FirstRsponderにして編集できるようにするにはどうしたらよいのでしょうか。
522 名前:名称未設定 mailto:sage [2009/03/03(火) 15:17:45 ID:A3m2MNkE0] >>521 NSBorderlessWindowMaskのNSWindowはkeyWindowになれません。 ので、 - (BOOL)canBecomeKeyWindow { return YES; } を実装。
523 名前:名称未設定 mailto:sage [2009/03/03(火) 15:23:40 ID:7S0UavSNi] >>522 あ、なるほど。 ありがとうございます。
524 名前:名称未設定 mailto:sage [2009/03/04(水) 14:10:49 ID:8OFab0YV0] すみません、教えて下さい。Finder や Safari の「進む」「戻る」ボタンと 同じ様なものを作りたいのです。具体的には、NSArrayController の canSelectNext, canSelectPrevious にそれぞれバインドして enable/disable させたいんです。 聞きたい事は、(1)このボタンって NSSegmentedControll, SegmentedCell なのか? (2)もしそうならどうやってバインドしているのか? です。NSSegmentedCell の中身をとってくるメソッドが無く、直接バインド することができません。なので、そもそもNSSegmentedCellじゃないのかと 思った次第です。よろしくお願いします。
525 名前:名称未設定 mailto:sage [2009/03/04(水) 14:14:56 ID:gggWBHUU0] >>524 >NSSegmentedCell ではなくて、くっついているような画像で作ったボタンだと思われ
526 名前:名称未設定 mailto:sage [2009/03/04(水) 14:43:16 ID:B4H9BmJw0] Safariのnib開いたらNSSegmentedControlだったよ
527 名前:名称未設定 mailto:sage [2009/03/04(水) 14:59:31 ID:8OFab0YV0] >>525 , 526 ありがとうございます。NSSegmentedControll ですか…そうすると キー値監視だけやって enable/disable をコントロールしているんでしょうね。 やってみた所うまくいきました。 これって下手にバインドすると危険だから…かな
528 名前:名称未設定 mailto:sage [2009/03/04(水) 19:59:50 ID:fA5wQhE60] 各セグメントのenable/disableをコントロールするメソッドが、setEnabled:forSegment:やisEnabledForSegment:などといったKVCに対応しないメソッドでバインド対象にできない場合は、カテゴリーを使ってKVC対応メソッドを作ってしまうという手があります。 @implementation NSSegmentedControl (segmentEnable) - (BOOL)enableSegment1 { return [self isEnabledForSegment:1]; } - (void)setEnableSegment1:(BOOL)flag { [self setEnabled:flag forSegment:1]; } @end このプロパティーは、IBでバインド設定できないので、WindowControllerのawakeFromNibとかで、バインドするためのコードを書かないといけません。 [segmentControl bind:@"enableSegment1" toObject:model withKeyPath:@"keypath" options:nil];
529 名前:名称未設定 mailto:sage [2009/03/04(水) 21:06:58 ID:8OFab0YV0] >>528 なるほどー、思いつかなかったですが、そういう手もありですね。 情報ありがとうございます。
530 名前:名称未設定 [2009/03/07(土) 04:23:08 ID:/VcjeVf50] スレッド間通信がわかりません。 スタートボタンを押すとカウントメソッドが別スレッドで実行されるようにして ストップボタンを押すとそのスレッドを停止させるテストアプリを作っているのですが、 上手くいきません。 - (IBAction)start:(id)sender { NSPort* mainPort = [NSPort port]; NSPort* subPort = [NSPort port]; portArray = [NSArray arryaWithObjects:mainPort,subPort,nil]; NSConnection* conn = [NSConnection alloc] initWithReceivePort:mainPort sendPort:subPort]; [NSThread detachNewThreadSelector:@selector(callCounter:) toTarget self withObject:portArray]; }
531 名前:名称未設定 [2009/03/07(土) 04:23:53 ID:/VcjeVf50] - (void)callCounter:(NSArray*)portArray { id pool = [[NSAutoreleasePool alloc] init]; NSPort* mainPort = [portArray objectAtIndex:0]; NSPort* subPort = [portArray objectAtIndex:1]; NSConnection* conn = [NSConnection connectionWithReceivePort:subPort sendPort:mainPort]; [conn setRootObject:self]; if ([conn registerName:@"PLEASE"] == NO) { NSRunAlertPanel(/*省略*/)} /*カウントメソッド*/ [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(counter:) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] run]; [pool release]; } - (void)counter:(NSTimer*)aTimer { static int i = 0; [countText setIntValue:i++]; } - (void)exitThread { [NSThread exit]; }
532 名前:名称未設定 [2009/03/07(土) 04:27:01 ID:/VcjeVf50] - (IBAction)stop:(id)sender { NSConnection* conn = [NSConnection connectionWithRegisterdName:@"PLEASE" host:@""]; id subThreadObj = [[conn rootProxy] retain]; [subThreadObj exitThread]; [subThreadObj release]; } }
533 名前:名称未設定 [2009/03/07(土) 08:42:51 ID:/VcjeVf50] 言い忘れました やりたいことはメインスレッドから該当するサブスレッドの停止です。
534 名前:名称未設定 mailto:sage [2009/03/07(土) 10:56:04 ID:jvcfXHix0] なにがやりたいのか全くわからないが、 タイマーをなぜ別スレッドで作ってるのかわからないんだけど? タイマーだけでよければ、main thread で NSTimer* timer=[Timer scheduledTimerWithTimeInterval...] で作るだけでいいとおもうけど。 で、ボタンのターゲットアクションで [timer invalidate] で止まります。 そのためだけに NSConnection とかつかうのは大げさすぎます。 むかしの OpenStep の参考書だとかだと、thread 間通信は Distributed Objects (NSConnection) をつかえということだったと思いますが...
535 名前:名称未設定 [2009/03/07(土) 11:03:11 ID:/VcjeVf50] すみません。 スレッドの勉強でつくったやつです。 気にしないでください。 やりたいことは、メイン側からサブスレッドの停止です。
536 名前:名称未設定 mailto:sage [2009/03/07(土) 11:29:23 ID:7emvzKVD0] @interface UENO_CLASS : NSObject { BOOL willExit; } @end -(void)detachThread_KARA_YOBU_METHOD_DAYO { // NSConnectionとかは使わない。 .... id runLoop = [NSRunLoop currentRunLoop]; while(!willExit) { [runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]]; } ..... } - (viod)exit { willExit = YES; } // BOOLはブロック不要。 ------------------------- id th = [[[UENO_CLASS alloc] init]; [NSThread detachThreadSelector:@selector(detachThread_KARA_YOBU_METHOD_DAYO) withTarger:th withObject:nil]; sleep(100000); [th exit]; ------------------------- とか。
537 名前:名称未設定 mailto:sage [2009/03/07(土) 11:53:56 ID:jvcfXHix0] >>535 ,536 10.5 以降は、 536 さんの書いてる willExit に相当するプロパティが 標準で NSThread に実装されてます。 ドキュメントの -[NSThread cancel] と -[NSThread isCancelled] をみてください。
538 名前:名称未設定 [2009/03/07(土) 12:14:00 ID:/VcjeVf50] >>536 うーーーーーーーーーーん。なるほどーーーーーー。 ありがとうございます。
539 名前:名称未設定 [2009/03/07(土) 12:15:01 ID:/VcjeVf50] >>537 さっそく確認します。 ありがとうございます。
540 名前:名称未設定 mailto:sage [2009/03/07(土) 15:33:28 ID:NdfDHhsK0] Window、またはViewのsubviewsの中から指定したクラスのインスタンスを取り出すようなメソッドってありましっけ? もしくは現在アプリケーションで使用されているインスタンスの中からクラス名指定で取り出しだったか、、記憶があいまいなのであったかどうかも覚えていませんが、あれば教えてください
541 名前:名称未設定 mailto:sage [2009/03/07(土) 17:07:06 ID:7emvzKVD0] NSArray *collectSubviews(NSView *view) { NSMutableArray *array = [NSArray arrayWithObject:view]; NSArray *subviews = [view subviews]; for(NSView *aView in subviews) { [array addObjectsFromArray:collectSubviews(aView)]; } return array; } ..... NSWindow *window; NSView *view = [window contentView]; //とか [[window contentView] superview] NSArray *views = collectSubviews(view); for(NSView *aView in views) { if([aView isMemberOfClass:[HOGEHOGE class]]) NSLog(@"Found!!!!"); } ...... 適当に今書いたので動く保証はない。 下のはない。
542 名前:名称未設定 mailto:sage [2009/03/07(土) 18:14:06 ID:IDaPFcw40] drawRect:のような膨大な回数繰り返し呼ばれるようなメソッドの場合、 何度も使うNSColorなんかはその都度メソッドで作成せずに、インスタンス変数として持っておき初期化時に作成して使い回すという方が普通でしょうか? もう1点、 NSArray *array = [NSArray arrayWith...]; のようにクラスメソッドでautoreleaseされたインスタンス呼び出しをできるものが多くありますが、 NSArray *array = [[NSArray alloc] initWith...]; 処理 [array release]; という方が堅牢と言えるでしょうか? NSAutoreleasePoolが解放されない状況というのが分からないので、どういった時にこの2者に違いがでてくるのか分かりません。 この一時的なインスタンスが正しく自分で管理されていると仮定するならば、後者を使用するのが常に正しいでしょうか?
543 名前:名称未設定 mailto:sage [2009/03/07(土) 18:24:31 ID:7emvzKVD0] >>542 NSColorはライトウエイトだと信じきって見なかったことにするw @try{ NSArray *array = [[NSArray alloc] initWith...]; 処理 } @finally{ [array release]; } じゃないとダメ。 とかきちんとするならね。
544 名前:名称未設定 mailto:sage [2009/03/08(日) 01:38:36 ID:rBsRDVjQ0] >>542 AutoreleasePool は、イベントループ一回ごとにかならず解放されます。 (とドキュメントのどこかにかいてある。) 基本的には自分で書いたメソッドが呼ばれて、 Cocoa のシステムに帰った時点で解放されるとおもっていいです。 だから、イベントハンドラ内で何百個と alloc するのでないかぎり autorelease されたのをつかっておいて問題ないです。 NSColor に関してもそうですが、最適化は想像でやっても意味がないです。 Shark とか Instruments つかって、実際に一番時間がかかっているコードが どこか測定してから、そこを最適化したほうがよいです。
545 名前:名称未設定 mailto:sage [2009/03/08(日) 01:43:15 ID:8zHqR9wl0] 他のアプリから文字列を直接ドロップしてアプリを起動(&ドロップされた文字列を処理)したい場合、 どのように実装すればよろしいのでしょうか?
546 名前:名称未設定 mailto:sage [2009/03/08(日) 02:17:13 ID:rBsRDVjQ0] >>545 ファインダーのアイコンに文字列をドロップするのは不可能なんじゃないかと 思いますがよくわかりません。なんかできるソフトしってますか? Dock アイコンにドロップでよければ、 developer.apple.com/documentation/Cocoa/Conceptual/SysServices/SysServices.html にしたがって文字列を受け取るサービスをひとつ登録すれば、 文字列ドロップで登録したメソッドが呼び出されますよ。
547 名前:名称未設定 mailto:sage [2009/03/08(日) 12:05:29 ID:NuJ1Axz/0] NSDrawerについて質問させて下さい これを開いた状態で親ウィンドウをサイズしてもドロワーはもとのサイズのままですが 親ウィンドウのリサイズ後にドロワーの取っ手の部分をクリックすると 親ウィンドウのサイズにフィットします 親ウィンドウのリサイズに追随してドロワーもリサイズさせる設定とかあるんでしょうか? それとも親ウィンドウのwindowWillResizeとかで手動でドロワーだけリサイズさせるんでしょうか?
548 名前:名称未設定 mailto:sage [2009/03/08(日) 13:30:48 ID:1H4HNmlA0] >>541 やっぱそんなメソッドないですかね。単なる記憶違いかな。 てか書いてもらってなんですけど、subviewsをピックアップする時に型をチェックしてmutableArrayで返した方が処理の手間が省けていいのではないでしょうか。 あとふと思ったのは、ケースバイケースでしょうけど、 型 メソッド名:(型)値; でなくて 型 メソッド名(型 値) でメソッド実装する人って多いんですかね?呼び出される状況によってはこの方が便利な気もしますが。 ちなみに自分はCocoaとCarbonでがっつり分けています。
549 名前:名称未設定 mailto:sage [2009/03/08(日) 14:50:27 ID:rBsRDVjQ0] >>548 >型 メソッド名:(型)値; でなくて >型 メソッド名(型 値) でメソッド実装 後者はメソッドじゃなくて単に関数になると思うが。 後者だと self が使えないよ.
550 名前:名称未設定 mailto:sage [2009/03/08(日) 15:25:24 ID:1toaEf+C0] >>548 >てか書いてもらってなんですけど、subviewsをピックアップする時に型をチェックしてmutableArrayで返した方が処理の手間が省けていいのではないでしょうか。 だったらそうすれば良いよ。方法を示しただけだから。 Cの関数で書いたのは、再帰呼び出しのオーバーヘッドを減らすため。
551 名前:名称未設定 mailto:sage [2009/03/08(日) 15:56:44 ID:PGulKxjh0] >>550 >>Cの関数で書いたのは、再帰呼び出しのオーバーヘッドを減らすため。 なるほど、参考になりました。 特定のクラスのビューをsubviewsから探す方法は既に自分で実装済みなので、一発で取得できないかなということで質問させていただきました。 なので知りたいのは方法でなくて指定クラスのインスタンスを返すようなメソッドの有無なのですが…。
552 名前:名称未設定 mailto:sage [2009/03/08(日) 17:25:10 ID:rBsRDVjQ0] >>551 NSView のドキュメントをなぜ読まない? あと、なんでそもそもそんなことをしたいのかよくわからないんだけど。 IBOutlet でつないでおけばいいと思いますが... なんか window 内で沢山ビューをだしたり消したり、 すごいダイナミカルなことをやってるんですか?
553 名前:名称未設定 mailto:sage [2009/03/08(日) 20:06:46 ID:ShyRSmJk0] >>537 たしかNSAutorelesePoolって、スレッドごとに手動で用意しなきゃダメじゃなかったっけ? - (void)myThread:(id)arg { NSAutorelesePool* pool = [NSAutoreleasePool new]; // スレッド内の処理 [pool release]; } -[NSThread cancel]で強制終了させたら、メモリリークにならないか?
554 名前:名称未設定 mailto:sage [2009/03/08(日) 20:28:08 ID:uApWwWOP0] >>552 NSViewのドキュメントを読んだ上で分からなかったので、NSViewのsubviewsにこだわらず>>540 のように聞いているのですが。 なぜしたいかというのは、自分がターゲットになるインスタンスを管理していないからです。 自分が管理しないインスタンスに埋め込まれている自動で生成、破棄されるNSViewのサブクラスのインスタンスに自分がアクセスする際に現状はsubviewsをたぐっていくしかない状態なんですよねー ちなみに一度そいつを見つけたら、そいつが存在する間はインスタンス変数として保持して直接アクセスしてます。 そもそもPrivateなとこ叩いてるので変なことしてるのは承知です。Privateなインスタンス変数名とそいつへのアクセス方が分かればぐっと楽になるのですが。 >>なんか window 内で沢山ビューをだしたり消したり、 >>すごいダイナミカルなことをやってるんですか? 確かに言われればダイナミカルですね。中の人は少しでも全体の動作を機敏にしてメモリ使用量を減らすためにやっているのでしょうかね。
555 名前:名称未設定 mailto:sage [2009/03/08(日) 20:36:05 ID:3G7Vb/lI0] 私も「あるクラスのインスタンスを全て把握したい」ときはあります。 そういう場合は自前でファイルスタティックなretain/releaseをしないCFMutableArrayなりSetなりを作っておいて、 initで追加しdeallocで削除するようにしてます。標準のAPIはなかったと思います。
556 名前:名称未設定 mailto:sage [2009/03/08(日) 20:48:05 ID:ShyRSmJk0] >>554 つまり、NSWindow上に、アプリの実行中に生成・破棄されるNSViewがいて、そのNSViewのインスタンスを参照したいということですか? 手っ取り早いのは、そのViewに-(NSInteger)tagメソッドを実装して、-[NSView viewWithTag:]で検索することです。
557 名前:名称未設定 mailto:sage [2009/03/08(日) 21:21:11 ID:jPXMi5XZ0] >>555 なるほど勉強になります、ありがとうございます。 >>556 その手が!!!目からうろこです。 viewWithTag:がsubviewsのさらにsubviewsとかまで探しにいってくれるか試してみます。 うまくいったらあとはお二人の意見をmixして、 その特定のクラスのViewのinitメソッドをカテゴリ実装かposeAsで上書きして任意のtagをつけてやればいけそうですね。 もしくはmoveToWindowとかmoveToSuperviewでもいいかな。 自分でメソッドを上書きしてるPrivateなクラスのwindowのcontentViewのsubviewのsubviewのsubviewにターゲットのviewがあるのですが、 ターゲットのviewも上書きしてやれば良いということにまで頭が回りませんでした。アドバイスありがとうございました。
558 名前:名称未設定 mailto:sage [2009/03/08(日) 21:27:38 ID:ShyRSmJk0] >>557 ええと、NSViewのリファレンスをよく読んでおいてね。 カテゴリー実装やメソッド差し替えを行うべきなのは、initじゃなくて、tagメソッドの方だよ。
559 名前:名称未設定 mailto:sage [2009/03/08(日) 21:52:07 ID:UUT+J//+0] >>558 あ、tag付けしてやるんじゃなくて任意のtagを返すようにしてやればいいんですね、すいません。
560 名前:名称未設定 mailto:sage [2009/03/09(月) 20:23:01 ID:NrpW0GGy0] NSTableViewの使い方なんですけど A:NSArrayControllerとCocoa Bindingして使う方法 B:WindowControllerをdataSourceにして使う方法 の2種類が一般的なような気がしますが、どちらかに決める決定的な基準みたいなものってあるんでしょうか? 最初はAを選ぶべきと思ってたんですけどデータ構造が入り組んでくるとBの方が見通しがいいようにも思えて 迷っています。 単に好みの問題でどっちでもいいんでしょうか?
561 名前:名称未設定 mailto:sage [2009/03/09(月) 21:07:19 ID:XNtUUhqmP] >>560 データの内容を、テーブルビューのスクロールに合わせて動的に読み込んだりするのは NSArrayControllerじゃできないから、そういう場合はdataSource使うかな… NSArrayControllerで済む場合はNSArrayController使うことが多い。
562 名前:名称未設定 mailto:sage [2009/03/09(月) 21:23:56 ID:jtM8Ljjr0] >>561 -countOf<Key>とか-objectIn<Key>AtIndex:といった、arrayなアクセッサメソッドを実装すれば、NSArrayControllerでも要素の動的読み込みができるんじゃないかな? ためしたことないけど。
563 名前:名称未設定 [2009/03/09(月) 22:10:23 ID:d+Iiet9p0] 下のような感じでAmazon APIの返してくるxmlをNSXMLParserで解析しようとすると行数0となり、parserがxmlを読み込んでないという結果になりました。<AmazonAPIのURL>を直接ブラウザに打ち込むとXMLは表示されていました。 ためしに別のサイトnewsvote.bbc.co.uk/rss/newsonline_uk_edition/sci/tech/rss.xml を入れてみるとちゃんと解析できます。NSXMLParserで解析できないXMLがあるのでしょうか?もしくはparserで何か設定すれば動きますか?アドバイスおねがいできないでしょうか。 NSURL *amazonURL = [NSURL URLWithString:<AmazonAPIのURL>]; NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:amazonURL]; if (parser == nil) { NSLog(@"パーサの初期化に失敗"); } NSLog(@"行数:%d", [parser lineNumber]); [parser setDelegate:self]; [parser parse]; [parser release];
564 名前:名称未設定 mailto:sage [2009/03/09(月) 22:11:34 ID:n1Oa/5pR0] >>543 , 544 遅くなりましたが、アドバイスありがとうございました。
565 名前:名称未設定 [2009/03/09(月) 22:14:39 ID:d+Iiet9p0] すみません。書き込んですぐですが自己解決しました。 URLの部分にクエリを日本語で入れると動かないようです。 URLエンコーディングしないとダメですねorz
566 名前:名称未設定 [2009/03/09(月) 22:31:47 ID:d+Iiet9p0] ちなみにですがURLエンコードのやり方 NSString *url = @"http:// ... 日本語文字列"; NSString *encodedURL = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(encodedURL);
567 名前:名称未設定 mailto:sage [2009/03/09(月) 23:52:44 ID:y2m6EAHl0] >>566 ソースコードの @"..." の中に日本語書き込んじゃだめだよ。 コンパイラがバイナリにその文字列をどのエンコーディングで書き込むかが コンパイラの設定に依存するし、 バイナリが起動されたときに、Cocoa のランタイムがバイナリにある 文字列を NSString に読み取る際にどのエンコーディングだと考えるかは システム環境設定の言語環境とかに複雑に依存します。 その辺が今は偶然動いてるかもしれないけど、 OS のバージョンとかコンパイラの設定とか変えると 突然おかしくなる可能性があります。 日本人の知り合いに自作ソフトをつかってもらおうと思ったときも、 相手が英語モードで OS X をつかってたらおかしくなります。 あと NSLog のなかにそのまま encodedURL を突っ込むのは危険では? encodedURL 内に %d とか %@ が含まれてると、 次の変数を読み込もうとしてクラッシュしますよ。
568 名前:名称未設定 mailto:sage [2009/03/09(月) 23:58:12 ID:k2nG3i0I0] まあ俺だったら「http://」とかにくっつける前にURLエンコードするし、NSLog(@"%@", encodedURL)とするね。
569 名前:名称未設定 mailto:sage [2009/03/10(火) 00:22:38 ID:ePnM2L++P] >>568 >日本人の知り合いに自作ソフトをつかってもらおうと思ったときも、 >相手が英語モードで OS X をつかってたらおかしくなります。 当方英語環境だが、 @"日本語"で問題無く動いてる。 NSString、内部的には全部Unicodeになるんじゃなかったか?
570 名前:名称未設定 mailto:sage [2009/03/10(火) 00:58:02 ID:AD9MBakd0] 567 です。おかしくなる「可能性がある」くらいにしておけばよかったですね。 developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html に書いてますが、@"..." 内に 7bit ASCII でない文字列を書くと動作は未定義なので。 NSString は実行中は全部 unicode ですが、 バイナリに @"..." で書き込まれている文字列が NSString に読み込まれる際は、 歴史的な理由で、[NSString initWithUTF8string] でなくて [NSString initWithCString:] というエンコーディング指定の無い deprecated な API 相当ので読み込まれます。 問題は、バイナリに書き込まれている内容は一定なんだけれども、 [NSString initWithCString:] が読み込む際につかうエンコーディングが 環境設定によるというところです。 ただ、最近は Objective-C のソース自体をUTF-8で保存して コンパイルしておけば問題ないようですね。
571 名前:名称未設定 mailto:sage [2009/03/10(火) 01:09:39 ID:wdDjvl570] >>569 >@"日本語"で問題無く動いてる それはめでたいな。
572 名前:名称未設定 mailto:sage [2009/03/10(火) 01:30:14 ID:AD9MBakd0] やっと以上の話をどこで読んだか思い出しました。 lists.apple.com/archives/cocoa-dev/2008/Nov/msg02226.html きちんと動くようになったのは XCode 3.0 以上らしいです。
573 名前:名称未設定 mailto:sage [2009/03/10(火) 02:42:47 ID:G7aIvJgc0] クパチーノに日本人で中のコード書いてる人とかいる?
574 名前:名称未設定 mailto:sage [2009/03/10(火) 02:45:22 ID:KQQaXFQt0] ことえりはどこで開発してんだ?アップルジャパン?
575 名前:名称未設定 mailto:sage [2009/03/10(火) 10:22:56 ID:Ri0Qw33v0] AJは開発には携わってない
576 名前:名称未設定 mailto:sage [2009/03/10(火) 11:27:56 ID:/242Njp/0] 前は某MLでADCの人がレスしてくれたりしてたけど、 今はそのML自体が死んでるからねwww
577 名前:名称未設定 mailto:sage [2009/03/10(火) 11:45:47 ID:AD9MBakd0] >>567 ,570 嘘を書いてたのが判ったので訂正しておきます。 環境設定に依存してエンコーディングが変わるのは -[NSString cString] とかをつかって取り出した際でした。 バイナリにある文字列は ASCII と解釈されて NSString に読み込まれて、 (内部のクラスクラスタがどうなってるかはともかく)ユニコードあつかいですが、 [NSString cString] とか [NSString writeToFile: atomically:] とかの エンコーディング指定がないやつをつかうと日本語環境だと MacJapanese になるぽいです。実例としては、 #import <Foundation/Foundation.h> int main(){ id*pool=[[NSAutoreleasePool alloc] init]; system([@"ls ~/Library/Application¥¥ Support" cString]); return 0; } だと日本語環境だと動きませんが、cString を UTF8String にすると動きます。 まあこれと@"..."内に日本語を書くとどうなるかも全く別問題ですが... スレ汚し失礼しました。
578 名前:名称未設定 mailto:sage [2009/03/10(火) 11:46:50 ID:AD9MBakd0] ああ、書き込んだらバックスラッシュが円記号になった... まあいいですよね... 失礼しました...
579 名前:名称未設定 [2009/03/10(火) 12:03:36 ID:g3ZMAThN0] この前スレッドについて質問したものです。 IBAciton startで作成したスレッドを IBAction stopで停止する方法を教えてください。 start時に一応コネクションを -(IBAction)start:(id)sender { /*コネクションの作成*/ NSPort* port1 = [NSPort port]; NSPort* port2 = [NSPort port]; NSArray* portArray = [NSArray arrayWithObjects:port2,port1,nil]; NSConnection* conn = [[NSConnection alloc] initWithReceivePort:port2 sendPort:port1]; /*新たにスレッドを作成*/ [NSThread detachNewThreadSelector:@selector(new:) toTarget:self withObject:portArray] }
580 名前:名称未設定 [2009/03/10(火) 12:06:08 ID:g3ZMAThN0] - (void)new:(NSArray*)portArray { id pool = [[NSAutoreleasePool allco] init]; NSPort* port1 = [portArray objectAtIndex:1]; NSPort* port2 = [portArray objectAtIndex:0]; /*コネクション確立*/ NSConnection* conn = [NSConnection connectionWithReceivePort:port1 sendPort:port2]; /*・・・・処理・・・・・(省略)*/ /*実行ループを回転*/ [[NSRunLoop currentRunLoop] run]; [pool release]; } - (IBAction)stop:(id)sender { /*ここでstartで作成したスレッドを停止させたい*/ }
581 名前:名称未設定 mailto:sage [2009/03/10(火) 12:06:31 ID:G56mpIxy0] stopでインスタンス変数のshouldStopをYESにするなりして、別スレッドの方で回ってるループ内でチェックして止めればいいだけじゃね?
582 名前:名称未設定 mailto:sage [2009/03/10(火) 12:08:06 ID:AD9MBakd0] >>536--539 で全く同じ会話が既にされてるわけだが...
583 名前:名称未設定 mailto:sage [2009/03/10(火) 12:12:09 ID:G56mpIxy0] ほんとだw てかマルチスレッドでNSPortとかNSConnectionとか使ったことないわ。
584 名前:名称未設定 mailto:sage [2009/03/10(火) 12:18:12 ID:AD9MBakd0] あ、NSRunLoop を止めたいからさらに困ってるのかな。 その場合は CFRunLoopStop をつかってください。
585 名前:名称未設定 [2009/03/10(火) 12:20:19 ID:g3ZMAThN0] その質問は僕です。 でも・・・>>581-582 そういう方法しかないんですか? スレッドの数が動的になるので、 どれだけヘッダーファイルでshoudStopを用意していいのか分からないこともあって、 再度の質問をさせていただきました。
586 名前:名称未設定 mailto:sage [2009/03/10(火) 12:32:54 ID:G56mpIxy0] スレッドの数だけそのスレッドを回すオブジェクトを作ればいいのでは? NSOperationみたいな感じで隠蔽して。 ってか10.5以上ならNSOperation使えばいいね。
587 名前:名称未設定 mailto:sage [2009/03/10(火) 12:38:21 ID:AD9MBakd0] >>585 多数スレッドを管理しないといけないときは、 それこそオブジェクト指向の活躍どころですよ。 detachThread する際に self を target にするんじゃなくて、 別個の object を @interface Worker:NSObject { BOOL shouldStop; NSPort*sendPort; NSPort*receivePort; NSConnection*connection; } -(void)stop; -(void)new:(NSArray*)portArray; @end とかにして、stop で shouldStop を設定することにします。 一方、App delegate 側では、NSMutableArray にでも Worker を登録しておけばいいわけです。
588 名前:名称未設定 mailto:sage [2009/03/10(火) 12:41:34 ID:Rm75bWrc0] 質問です。 ドラッグ中にマウスを左右方向のみ動かせるようにして、上下方向を 固定させたいと思います。 そこで、ドラッグ開始時のマウスの y座標を記録しておいて、 ドラッグ中はマウスのy座標をその値に変更し続ける、という 実装方法を考えました。まず、この実装方法は適切でしょうか? また、マウスポインタを指定した座標に移動する方法がわかりません。 NSEvent のドキュメントをあさってみましたが、マウスポインタの 位置を取得するメソッドはあっても、位置を移動させるメソッドが 見つけられませんでした。 よろしくお願いします。
589 名前:名称未設定 mailto:sage [2009/03/10(火) 12:43:21 ID:G56mpIxy0] マウスポインタじゃなくてドラッグされる対象の動きを制限すればいいでしょ。
590 名前:名称未設定 mailto:sage [2009/03/10(火) 12:49:14 ID:Rm75bWrc0] >>589 質問の仕方が悪かったのですが、ドラッグといっても オブジェクトを動かしてるわけではないんです。 Photoshop で数値の入力ボックスをマウスで左右に ひっぱると数値を変更できますよね。 あれをやりたいんです。
591 名前:名称未設定 mailto:sage [2009/03/10(火) 13:00:05 ID:G56mpIxy0] >>590 それマウスポインタまで拘束されるの?見たことないんだけど。俺のがElementsだからかな。
592 名前:名称未設定 mailto:sage [2009/03/10(火) 13:03:18 ID:AD9MBakd0] >>585 あんまり関係ないですが、誰に習ってマルチスレッドで NSConnection を使おうという気になったのか興味があるんですが。 普通の用途では performSelectorOnMainThread: で十分だと思うんですけど。 というかいったいスレッドでどういう作業をやるつもり? >>590 普通にシステム標準のスライダーを使うのでは駄目なの? developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/Slider/Tasks/UsingSliderTickMarks.html 非アドビ製のソフトでは、 数値を入れる NSTextField と NSSlider を同じ値に binding でつないでおいて おしまい、というのが普通のような気がしますが。 どうしても、どうしても、どうしてもシステム非標準のコントロールをつくりたいというなら developer.apple.com/documentation/GraphicsImaging/Conceptual/QuartzDisplayServicesConceptual/Articles/MouseCursor.html でマウスの位置までコントロールできますが、おすすめしません。
593 名前:名称未設定 mailto:sage [2009/03/10(火) 15:18:02 ID:RsqUeGkkP] 単純にドラッグ中のxもしくはy座標の増減だけを見ればいいんじゃない?
594 名前:名称未設定 mailto:sage [2009/03/10(火) 15:35:22 ID:98oXKA9A0] マウスポインタが画面の端に到達するとそれ以上ドラッグできなくなっちゃうね
595 名前:名称未設定 mailto:sage [2009/03/10(火) 17:28:16 ID:Rm75bWrc0] >>592 これを参考にやってみます。 >マウスの位置までコントロールできますが、おすすめしません。 システム標準でないコントロールを作るのはダメという前提で、 それでも必要な状況だと判断してやってます。 レスしてくださった皆さん、ありがとうございました。
596 名前:名称未設定 mailto:sage [2009/03/10(火) 21:07:43 ID:ScxCqSFP0] DocumentBasedApplicationで、Open Recent...(最近使った項目を開く...)からファイルを開く時に、ファイルがゴミ箱に入っていても開けてしまう。ファイルがゴミ箱に入っているかチェックする方法はないのか。 と思ったけど、テキストエディットで同じことやってみたらゴミ箱の中でも普通に開けた。 ゴミ箱の中からドキュメントを開く事はできないけど、Open Recent...で読みこめるのはデフォルトの挙動なのね。 という独り言でした。
597 名前:名称未設定 mailto:sage [2009/03/11(水) 02:13:02 ID:5p/IvifE0] >>596 「読ませるけど、保存できないよ」ってフラグ付ける必要あるかもね、と横レス
598 名前:名称未設定 mailto:sage [2009/03/11(水) 07:17:19 ID:B9AzFWBci] >>595 タッチパネルやタブレットでも使えるようになるの? ちょっときになったけど、特殊用途なら問題ないね。
599 名前:名称未設定 [2009/03/11(水) 09:24:26 ID:EIJ5qsVo0] >>587 一晩かけて作り変えました。 無事に成功です。 本当に本当にありがとうございます。
600 名前:名称未設定 mailto:sage [2009/03/11(水) 11:00:49 ID:6NqjH2Xo0] >>597 保存時はNSDocumentが自動で「ゴミ箱に入ってて保存できない」とエラー処理してくれるようです。
601 名前:名称未設定 mailto:sage [2009/03/11(水) 15:12:45 ID:ycfRQZWD0] 初心者な質問ですいません キーボード上キーを押さなくても上キーを押すメッセージを送りたいです。 どういう風に書いたらいいですか?
602 名前:名称未設定 mailto:sage [2009/03/11(水) 15:15:00 ID:OScXIKZ20] NSEvent ttp://110k.net/old/category.php?k=NSEvent
603 名前:名称未設定 mailto:sage [2009/03/11(水) 15:21:46 ID:PkUVAqJv0] なんでこんな変な質問ばかりなの? >601 本当に↑キーのイベント投げないとダメなの? 実際は 「現在は↑キーで動いてる動作を別のイベントなどで動作させたい。」 っていう質問なんじゃないの? 最終的にやりたいことを書いたほうが得だよ。
604 名前:名称未設定 mailto:sage [2009/03/11(水) 21:49:36 ID:bVeKF8Lc0] 俺も最初の頃は自動演奏ピアノみたいな発想してたなぁ。 自分にはピアノは作れないから…って、 むしろ譲歩した案なんだけど実は余計複雑という罠。
605 名前:名称未設定 mailto:sage [2009/03/11(水) 22:33:48 ID:hV+fJwFN0] iPhoneのせいかCocoa新規参入者が増えてるのかな
606 名前:名称未設定 mailto:sage [2009/03/11(水) 23:31:20 ID:S/cvZCTC0] >>605 >Cocoa新規参入者が増えてるのかな 間違いないな。尼洋書でiPhoneやると参考書山ほどだもの
607 名前:名称未設定 mailto:sage [2009/03/11(水) 23:33:53 ID:hshpKLBm0] 最近じゃここよりひどい質問があったりするぜ iPod touch/iPhone ネイティブアプリ製作 ver.9 pc11.2ch.net/test/read.cgi/mac/1234555020/
608 名前:名称未設定 mailto:sage [2009/03/11(水) 23:39:15 ID:LlQ4aBLC0] >>607 そこまだましだ 今はdat落ちしてるかもしれないがiPhone板にあった開発スレはひどかったんだぜ Windowsで開発できますか?とか押し入れにある5色のiMacで開発できますか?とかいろいろw
609 名前:名称未設定 mailto:sage [2009/03/11(水) 23:47:39 ID:ycfRQZWD0] apple remoteをキーボードの十字キーに置き換えるプログラムを作りたいです。 >>602 603ありがとうございます。 >>602 rubycocoaで書くと、どうなりますか? すいません、色々分らない事だらけで…
610 名前:名称未設定 mailto:sage [2009/03/12(木) 00:00:16 ID:Yb25iyhx0] >>608 Windowsで開発できないと知ると、逆ギレするヤツとかいたしなw
611 名前:名称未設定 mailto:sage [2009/03/12(木) 00:02:12 ID:74bq1mfN0] >>608 >iPhone板にあった開発スレはひどかった まっ過疎よりはいいよ。半年で1刷れ消費なんて時代もあった品
612 名前:名称未設定 mailto:sage [2009/03/12(木) 00:03:02 ID:S/cvZCTC0] >>610 >逆ギレするヤツ いたいた。釣りかもしれんかったけどな
613 名前:名称未設定 mailto:sage [2009/03/12(木) 00:05:49 ID:qTt1ReQn0] >>609 >>rubycocoaで書くと、どうなりますか? さすがに自分で書くとこだよ
614 名前:名称未設定 mailto:sage [2009/03/12(木) 00:07:25 ID:Ji+6RR370] 何か知らないけど、iPhoneアプリはお手軽に作れるみたいな風潮よね
615 名前:名称未設定 mailto:sage [2009/03/12(木) 00:08:10 ID:SWhOqJao0] >>609 自分の作ってる app 内だけで Apple remote をつかいたいの? それともシステム全体で Apple remote が使えるようにしたい? Apple Remote のイベントを読み取るのはなかなか難しいです、 というのは Apple が API を公開してないので。 ネット上にはオープンソースで API を解析したのが転がってますが。 で、システム全体のイベントを乗っ取りたいばあいはかなり難しいよ。 developer.apple.com/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html というのを使わないといけません。Ruby からでも呼べるでしょうが、 ここまで低レベルになると C / Objective-C にしたほうがいいのでは。 RubyCocoa は、現状では Objective-C と Cocoa を知ってる人が Ruby でぱっと書きたいなというときに使うもので、 Ruby しか知らない人が Cocoa が急に使えるようになるものでもないです。 >>602 にかいてあるソースが Ruby に翻訳できないようでは RubyCocoa でプログラムするのは到底むりです。 とまあげんなりさせるようなことばかり書くのも何ですが... と思ってググったら www.rubycocoa.com/appleremote/ てのがありましたよ。2ch で質問する前にググってみましょうね。 あと、正直車輪の再発明をするより、既に売ってる twistedmelon.com/mira/ とか gravityapps.com/sofacontrol/overview/ 買ったほうがいいんじゃないかと思います。$15 だし。
616 名前:名称未設定 mailto:sage [2009/03/12(木) 00:51:09 ID:F79VyjKk0] みなさんありがとうございます。 www.rubycocoa.com/appleremote/ を読んでapple remoteから 何らかのレスポンスが返ってくるまではいったのですが>>602 の意味が… もうちょっと読めるようになってから、また来たいと思います。 本当に皆さん、つき合って頂いてありがとうございました。
617 名前:名称未設定 mailto:sage [2009/03/12(木) 10:04:37 ID:0rXED9iY0] >>608 企業がiPhoneアプリやっても儲からないって書かれたらキレはじめたバカがいたんだよな。
618 名前:名称未設定 mailto:sage [2009/03/13(金) 14:35:33 ID:jg++sCo60] CoreDataなんですが、 NSManagedObjectContextObjectsDidChangeNotificationだと1件の変更毎に通知がくるけど、 まとめて大量に変更して、完了後にその変更内容の通知を受け取ることってできます?
619 名前:名称未設定 mailto:sage [2009/03/13(金) 14:45:26 ID:uNFeJWMf0] developer.apple.com/jp/Documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/AutoVsManual.html#//apple_ref/doc/uid/20001844 これが関係してるような、してないような。
620 名前:618 mailto:sage [2009/03/13(金) 21:04:05 ID:sro+VwiR0] >>619 NSManagedObjectContextの変更を知りたいんです。 insert/update/deleteの変更に合わせて計算結果を保存してるんですが、 ユーザ入力の場合は1件ずつの変更なので >>618 の notificationで良いんですが、 外部データのインポートとかで大量に insertすると その数だけ発生してしまうんで できれば1件ずつの変更通知は抑制して、まとめて commitするような、 SQLの begin 〜 end transactionみたいな感じ? が、あったらいいなぁと思うわけですが、ないでしょうか?
621 名前:名称未設定 mailto:sage [2009/03/13(金) 22:46:53 ID:lzvKvkx70] import 中はフラグをたてて notification を無視して、 全部おわったら MOC に save を送るように僕はしてます なんか巧くない方法ですが。
622 名前:名称未設定 mailto:sage [2009/03/13(金) 22:53:31 ID:1BaWfpUHP] CoreDataはほとんどやったことがないから,よくわからないけど. Notificationの回数をカウントして, それがある程度の値にいったときに保存するように組む. ただ,いつでもそんな大量の変更が来るとは限らないから, 大量の変更が来るとわかってるときには, 前述のようにNotificationを処理するフラグを立てるとか.
623 名前:618 mailto:sage [2009/03/13(金) 23:09:47 ID:sro+VwiR0] >>621-622 どうもです。やっぱそんな感じになりますか。 NSEditorとかで調子良い事にならないかな〜なんて淡い期待を抱いてましたが、 とりあえず自前で transactionもどきを作ることにします。
624 名前:名称未設定 mailto:sage [2009/03/14(土) 14:41:42 ID:MODPMYYB0] >>620 アプローチを変えてみたらどうですか? import用に臨時のcontextを作って、そのcontextにデータを(できれば別スレッドで) importします。 完了後にsave,releaseし、メインのcontextにmergeChangesFromContextDidSaveNotification を送れば、change notificationが個別に送信されることは、ないはずです。 また、効率もアップするでしょう。 Core Data Programming Guideの該当部を参照してみてください。
625 名前:名称未設定 mailto:sage [2009/03/14(土) 18:44:36 ID:L/b2i/6Ni] IBPluginを作っててつまづいた所を報告。 NSArrayを拡張して -(id)firstObject を作ってたんだけど、IBにプラグインをロードしたあと新しく何かを作ろうとした時にどこからかそれが呼ばれるらしくて、 if ([self count] > 0) { return [self objectAtIndex:0]; } return nil; とかしておかないとだめでした。 自分で使う分にはifはなしでデフォルトのNSRangeExpection(だっけ?)で エラーでいいかと思ったけどまさかの落とし穴。。。 あ、ちなみに自分で呼んでるってことはないです。 まぁもちろんそんなネーミングの拡張はやめた方がいいとかエラー処理が甘いとか いろいろあるだろうけどそこらへんは一応わかってるつもりです。
626 名前:618 mailto:sage [2009/03/14(土) 23:38:13 ID:+H3YO1wa0] >>624 これはいい情報どうもです。こんなのがあるんですね。 時間が取れなかったのでいまちょっとだけ触れてみたんですが、 ユーザトリガ以外で勝手に保存したくないので save:はしたくないのと、 インポートするデータには、元の context内の他の entityとの リレーションが必要なのですが、この辺がうまく扱えそうになかったです。 InMemoryStoreで context作って、それにインポート 終わったら元の context (SQLStore)とマージ、なんてこと可能でしょうか? あでも、リレーションは結局だめかな。 ボケてるっぽいので今日は寝ます。
627 名前:名称未設定 mailto:sage [2009/03/15(日) 01:06:07 ID:r6AyGlDJ0] すみません、どっかのサンプルでこういうのを見かけたのですが、 これって意味ありますか? id pool = [[NSAutoreleasePool alloc] init]; id obj = [[Foo alloc] init]; [pool release]; こっちが正解ですかね? id obj = [[[Foo alloc] init] autorelease];
628 名前:名称未設定 mailto:sage [2009/03/15(日) 01:57:34 ID:2Ipvh/SI0] 便乗して質問 - (void)dealloc { [image release]; [super dealloc]; } てのと - (void)dealloc { [image release]; image = nil; [super dealloc]; } てのはどのへんが変わってきますか? あと @property (retain) NSImage *image; とした時、 - (void)dealloc { self.image = nil; [super dealloc]; } というのはダメで、dealloc内ではreleaseが呼ばれないので - (void)dealloc { [image release]; [super dealloc]; } しないといけないとネットで見ました。これを解説してるAppleのドキュメントとかってありますでしょうか?
629 名前:名称未設定 mailto:sage [2009/03/15(日) 10:51:46 ID:4doVEivB0] 完全に透明なウィンドウを作るには、 NSBorderlessWindowMask を使えば良いと分かりました。 ところが、これはウィンドウの初期か段階でしか適用できません。 一度つくったウィンドウを完全に透明にする手段はあるのですか? よろしくお願いします。
630 名前:名称未設定 mailto:sage [2009/03/15(日) 10:56:46 ID:pU7ZxSKm0] >>627 Fooのinit内で一時的に使ったオブジェクトを消すのにこだわってるんじゃないかね 知らんけど。 後者は return [[[Foo alloc] init] autorelease]; ってやるならいいけど、objをまだそのスコープの中で使うんだったら 早々にautoreleaseしてしまうのは後々混乱の元だと思う
631 名前:名称未設定 [2009/03/15(日) 10:59:06 ID:rrinlKsL0] XcodeでCmd押しながらクリックするとコードジャンプできますが、ジャンプした後元の位置に戻るのってどうやるんでしょうか?
632 名前:名称未設定 mailto:sage [2009/03/15(日) 12:04:20 ID:wCF8FgO7P] >>629 - (void)setAlphaValue:(CGFloat)windowAlpha
633 名前:名称未設定 mailto:sage [2009/03/15(日) 14:15:04 ID:v27cJsFXi] >>631 左上の戻るボタン
634 名前:名称未設定 mailto:sage [2009/03/15(日) 14:22:36 ID:93wRIpIZ0] この調子でMacのソフトが増えれば良いね ただiPhoneレベルのアプリが溢れてもあまり嬉しくないな iPhoneアプリ開発者を集めてMacのソフト会社をつくるか!(金はあるぞ)
635 名前:名称未設定 mailto:sage [2009/03/15(日) 14:24:12 ID:pU7ZxSKm0] >>634 マジおねがいします。Cocoa使えても仕事ないのよね
636 名前:名称未設定 [2009/03/15(日) 14:39:24 ID:SMvBJJQJ0] textViewでカーソルを常に下に定めていきたいのですが、どうすればいいでしょうか? ibでできそうだと思うんですが・・・・・
637 名前:名称未設定 mailto:sage [2009/03/15(日) 14:51:03 ID:cJ5chfLV0] >>630 >>627 のご指摘ありがとうございます。 id pool = [[NSAutoreleasePool alloc] init]; 〜 [pool release]; の間にautoreleaseをかまさないallocを記述してもNSAutoreleasePoolとは なんの関係もないですよね? NSAutoreleasePoolがない状態でallocにautoreleaseをかました場合、 参照がなければどこかの時点で解放されますが、 NSAutoreleasePoolを記述した場合、[pool release];の時点で参照がなければ、 解放されると勝手に理解しています。(違ってるかも) >>629 Depeloperのサンプルにスライダーで透明度が変わるサンプルがあったような。 リサイズやクローズボタンは表示されないので自前で作る必要があるかと。
638 名前:名称未設定 mailto:sage [2009/03/15(日) 15:13:15 ID:wCF8FgO7P] >>645 に同じく。 ほんとCocoaの仕事少なすぎ…
639 名前:名称未設定 mailto:sage [2009/03/15(日) 15:15:16 ID:wCF8FgO7P] 安価ミス >>635
640 名前:名称未設定 mailto:sage [2009/03/15(日) 15:17:58 ID:pU7ZxSKm0] >>637 ガベージコレクションを使う場合はNSAutoreleasePoolとは無関係に、参照がなければdeallocされます 使わない場合は、参照カウントが0になった時点でdeallocされます。 releaseを送ると即座に-1される参照カウンタですが、 autoreleaseだと参照カウンタ自体は変化せず、「あとでreleaseするよ」という別のカウンタに記録されるのです んで、[pool release]の時点で、この溜まってた分の減算を実行するです。 その結果参照カウントが0以下になれば、deallocされるというしくみ。 あと>>628 の上は imageの使っていたアドレスに、それまでインスタンスが入っていたオブジェクトへの参照が入っているか それともnilが入っているかの違い。要は使わなくなった変数が初期化されるかどうか。 でもimageがインスタンス変数だとすればインスタンスがdeallocされる時点でもう使えなくなるわけだから 実用上は初期化しても意味がないと思う 下は「dealloc内ではreleaseが呼ばれない」という話は知らないんだけど インスタンス変数とプロパティはイコールじゃないんだから、 自分の持ってるインスタンス変数を解放するのにプロパティのアクセサメソッド使うのって話の筋としておかしくね?
641 名前:名称未設定 mailto:sage [2009/03/15(日) 15:58:17 ID:2Ipvh/SI0] >>640 ありがとうございます。 Appleのサンプルコードに - (void)dealloc { [image release]; image = nil; [super dealloc]; } ってのがあって、なぜnilを入れているのかと不思議に思っていました。 下の件ですが、propertyについて勉強しなおしてきます。
642 名前:636 [2009/03/15(日) 18:16:45 ID:SMvBJJQJ0] 自己解決しました。 一応書いておきます。てかこれは効率悪いですか? NSRange r; r.location = [textStorage length]; r.length = 0; [textView scrollRangeToVisible:r]; [textView display];
643 名前:名称未設定 mailto:sage [2009/03/15(日) 20:21:41 ID:pU7ZxSKm0] >>642 そのやりかたが一番基本だと思うよ
644 名前:名称未設定 mailto:sage [2009/03/15(日) 20:39:08 ID:VbWILUHd0] >>643 こんな処理はIBで出来るようにしてほしい。 これからIBをもっともっと進化させていけば、MACの開発も盛り上がると思うんだよね。 残念ながら開発環境はVisual Studioには遠く及ばない。 でもMVCの理論的でシンプルなコードと読みやすさはC#,Basicどちらにもない。
645 名前:名称未設定 mailto:sage [2009/03/15(日) 20:56:29 ID:p8AS3qSz0] >>644 この処理を実装すべきなのは、IBじゃなくて、NSTextViewの方だと思うよ。 IBはNSTextViewのプロパティーを設定するだけで、処理を追加することはできないからね。 Visual Studioのデザイナでも、そんなことできないでしょ?
646 名前:名称未設定 mailto:sage [2009/03/15(日) 21:10:00 ID:HoZJ0We50] >>642 じゃカーソルは一番下にならないとおもうけど [textView setSelectedRange:r]; がひつようじゃね?
647 名前:名称未設定 mailto:sage [2009/03/15(日) 21:13:30 ID:VbWILUHd0] >>646 バリバリなってたよ。
648 名前:名称未設定 mailto:sage [2009/03/15(日) 21:29:24 ID:4St/rSG20] >>644 まずはIBを日本語化してほしい... XCodeだけ日本語だと半端すぐるorz
649 名前:名称未設定 mailto:sage [2009/03/15(日) 21:59:26 ID:v27cJsFXi] Xcodeってさ、ローカライズされてるの日本語だけだよね?嬉しい反面、ちょっと恥ずかしくなった
650 名前:名称未設定 mailto:sage [2009/03/15(日) 22:00:07 ID:2Ipvh/SI0] 確かにw
651 名前:名称未設定 mailto:sage [2009/03/15(日) 22:01:21 ID:qAnMHcPl0] >>648 半端な日本語リソースで余計におかしくなりそうな悪寒
652 名前:名称未設定 mailto:sage [2009/03/15(日) 22:04:33 ID:VwdUyDys0] 正直XcodeやIBやリファレンスが英語でも困らないけどな
653 名前:名称未設定 mailto:sage [2009/03/15(日) 22:07:13 ID:ih/GgaFl0] リファレンスが日本語化されてないのにIBだけされてもさして嬉しくないし。
654 名前:名称未設定 mailto:sage [2009/03/16(月) 02:02:22 ID:hFIBxONHP] >>644 NSTextViewのサブクラスを作り、その処理を実装。 さらにIB用プラグインも作ってフレームワークにして読み込めば完成。 IBはいくらでも拡張できるからね
655 名前:名称未設定 mailto:sage [2009/03/16(月) 08:43:12 ID:/fHEuLJ50] >>654 そうした。
656 名前:名称未設定 mailto:sage [2009/03/16(月) 08:44:33 ID:/fHEuLJ50] あーサブ作って関数で実装したってことね。
657 名前:636 [2009/03/16(月) 12:14:18 ID:PNGkc5p00] リファレンスは有志の方が参考例付で作っているホームページがあったけどね。 あのサイトはすごい。 まぁ英語のリファレンスはそんなにたいした英語量があるわけじゃないし、 しっかり区分分けしてくれてるから慣れれば問題ないんだよ。 問題はプログラミングガイド! ここをもっと分かりやすい日本語を用いて作り変えてほしい。! 別にそのまんま訳す必要もないし、それだとおかしくなると思うんだよね。 それにまだ日本語は限られてるし。 誰か分散オブジェクトあたりだけでいいから、分かりやすく日本語サイトに作ってほしい。 スレッド間、プロセス間通信もリモート間通信も。 なお出来れば、ボンジュールあたりの解説も。
658 名前:名称未設定 mailto:sage [2009/03/16(月) 12:26:55 ID:VzkVWi9F0] その辺は www.amazon.co.jp/dp/0974078514/ の日本語訳を期待したほうがよさそう ていうか諦めて英語勉強したほうが速いよ。 レファレンスに慣れたんだったらいずれガイドのほうも慣れます。
659 名前:名称未設定 [2009/03/16(月) 12:32:09 ID:LbGA6N/G0] MOSAが最悪だからな。 権利もらってるくせに、2006年からほったらかし。 しかも、pdfしか用意してない。 やる気ねーんなら最初からやるなって。 翻訳済みの分も全権Appleに譲渡しろ。
660 名前:名称未設定 mailto:sage [2009/03/16(月) 20:52:09 ID:jeDjX52y0] ここでゴルァしてないで... で、MOSAってなんとなく聞き覚えがあるんだがなんだっけ
661 名前:名称未設定 [2009/03/16(月) 21:52:10 ID:xZxis74v0] >>633 あーーエディタのすぐ上にこんな小さくあったのか・・・ メニューの方ばっか探してました。 ありがとうございます。
662 名前:名称未設定 mailto:sage [2009/03/16(月) 21:53:49 ID:f4VfZL0V0] メニューにも「戻る」ってあるよ。
663 名前:名称未設定 mailto:sage [2009/03/16(月) 22:18:51 ID:Als/3B9m0] オブジェクト変数の宣言の書式はAppleのサンプルでは UIWindow *window; となっているのですが木下誠さんの本では UIWindow* window; となっていて、「クラス名にアスタリスクをつけて変数の型とする」と説明されています。 いずれの書式でも警告やエラーなしにコンパイルが通るということは コンパイラにとってはどちらでもいっしょということなのだと思いますが、 人間や人間がつくった文法的にはどうなのでしょうか? どちらがより好ましいとかありますか? それともどっちでも好きな方を使ったらいいですか?
664 名前:名称未設定 [2009/03/16(月) 22:29:49 ID:xZxis74v0] >>662 ヘルプウィンドウにあるような三角ボタンがどこかにあるはずだ!と探してました。 なぜか気がつかなかったorz
665 名前:名称未設定 [2009/03/16(月) 22:31:21 ID:xZxis74v0] >>663 C言語のポインタの文法でどっちも同じです。 私はUIWindow *windowの方がしっくりくるけど意味的にはUIWindow* windowの方がわかりやすそう。
666 名前:名称未設定 mailto:sage [2009/03/16(月) 22:47:19 ID:6HsSTdQa0] UIWindow* window1, window2; と書いた場合、次のような意味になってしまう UIWindow *window1; UIWindow window2; だから、俺はいつも変数の方に*を付けてるな UIWindow *windo1, *window2; UIWindowだったら、エラーになるからすぐ分かると思うんだけど 構造体へのポインタだとエラーにならずにコンパイルできてしまうから どこでバグるのかが見つけにくい
667 名前:名称未設定 mailto:sage [2009/03/16(月) 23:00:45 ID:PqEmjohQ0] UIWindow *win1, *win2; と書くより、素直に UIWindow *win1; UIWindow *win2; と書くなぁ。 変数あんまり多過ぎても、メソッド全体がわかりづらくなるし。 K&Rに慣れすぎたのかもしれん。ANSIにすればいいんだが。
668 名前:名称未設定 mailto:sage [2009/03/16(月) 23:16:09 ID:/fHEuLJ50] 俺はポインタの*とエイリアスの*とを区別するために MyClass* obj1; MyClass* obj2; だな。
669 名前:名称未設定 mailto:sage [2009/03/16(月) 23:35:10 ID:VzkVWi9F0] >>668 alias って何?
670 名前:名称未設定 mailto:sage [2009/03/16(月) 23:39:14 ID:RaVBYPZa0] 女スパイがくねくねするドラマだよ
671 名前:名称未設定 mailto:sage [2009/03/17(火) 00:19:50 ID:UG7LQ61M0] >>663 そうそう、自分も最初 NSWindow* window;って書いてたけど 最近>>666 のように書いて、こっちの方が正しいんじゃないかとやっと気付いた。 でもAppleのサンプルだと確かものによって違ったと思うので、書き手によるんじゃないでしょうかね。
672 名前:名称未設定 mailto:sage [2009/03/17(火) 00:22:33 ID:wp8dS/jc0] >>669 シンボリックリンクや窓のはなんつったっけ あんなのと比較にならないほど優秀なファイルリンクをもう忘れたのか
673 名前:663 mailto:sage [2009/03/17(火) 00:25:13 ID:Lvc3OPTN0] たくさん返事をいただきありがとうございます。 書き手や書き方にもよるが、クラス名につけると場合によっては意図しない結果になることもあり得るということですね。 とりあえず書式に関しては変数名につけることにします。 みなさんの説明で今の私では理解しきれないところもあったので、メモして残しておきます。 ありがとうございました。
674 名前:名称未設定 mailto:sage [2009/03/17(火) 00:53:01 ID:UG7LQ61M0] >>673 言い忘れてたけど自分も最初木下氏の本でその書き方を覚えました。 今ではメインのクラス名はAppControllerがデフォになってしまってます。 最近ではiPhone開発にならってApp_Delegateみたいなのが主流なのかな。
675 名前:名称未設定 mailto:sage [2009/03/17(火) 07:57:13 ID:RT19/yFd0] >>672 いや、それは知ってるんだけど、>>668 の文脈ではちがわない?
676 名前:名称未設定 mailto:sage [2009/03/17(火) 12:51:00 ID:csg2JhxK0] CoreDataで質問です。 特定のプロパティをデータに保存せずに一時として取り使うにはデータをモデリングする際に「一時」にチェックもしくはNSPropertyDescriptionのsetTransient:でできると思いますが、 特定のプロパティ、たとえば配列の一部だけを保存しないように設定するのは可能でしょうか? 具体的にはNSTreeControllerとNSOutlineViewで表示してるデータを以下のように取り扱いたいのです。 ▼保存したくないグループ 内容0 ▼保存したいグループ 内容0 内容1 といった感じです。 複数のNSOutlineViewを使うとリサイズやスクロールが変なことになるのでできれば1枚でできればと思っています。 データの保存時に一時的に保存したくないグループを取り除き、保存後にもとに戻すという方法も考えられますが、 何か解決策、案などありましたらよろしくお願いします。
677 名前:名称未設定 mailto:sage [2009/03/17(火) 20:00:01 ID:3esZjowZ0] 例えばC言語でポインタを宣言するとき pointa *p; って書く人と pointa* p; っ書く人がいるけど、 後者の場合はたいていエイリアスとの区別のために行なっているんだよね。 p = a; とすると *pはaの別名(エイリアス)になる。 で、ここでポインタの宣言のところを見ると pointa *p っておかしくね?ってこと。 *pはエイリアスを表す記号でもあるんだから。 それだったらポインタの宣言は pointa* p のほうが理論的じゃん。
678 名前:名称未設定 mailto:sage [2009/03/17(火) 20:04:21 ID:YXfeRtuD0] その理屈はおかしいだろ。 区別のために行ってるんなら、その人は両方の書き方をするはずだ
679 名前:名称未設定 mailto:sage [2009/03/17(火) 20:10:32 ID:YXfeRtuD0] ああ、つまりこういうことか? ポインタとエイリアスの両方を「pointer *p;」って書く人と ポインタを「pointer *p;」エイリアスとして使うポインタを「pointer* p;」って書き分ける人がいる。 あるポインタをエイリアスとして使うかどうか、ってのがそんなに明確に分離できるとは思えないから 俺としてはあんまり意味のあるルールって気はしないけどね。
680 名前:名称未設定 mailto:sage [2009/03/17(火) 20:20:03 ID:3esZjowZ0] >>679 全然違う。 pointa* p = a; とかく人は pointa *p = a; を理論的じゃないって考えるって話。
681 名前:名称未設定 mailto:sage [2009/03/17(火) 20:20:59 ID:YXfeRtuD0] 説明やりなおし ポインタとエイリアスの両方を「type *p;」って書く人と ポインタを「type* p;」エイリアスとして使うポインタを「type *p;」って書き分ける人がいる。 type *p; type* q; type a; p = &a; //「*p」は「a」のエイリアスである q = &a; //「*q」は「a」のエイリアスである エイリアスとしてのみ使うのであれば、q,pは常に「*q」「*p」という表記で用いられる。 だったら「type *p;」という宣言のほうがエイリアス専用ポインタとしてはふさわしい。 じゃあ「type* q;」みたいな宣言はエイリアスじゃないポインタ用ってことにすれば区別できてよくね? という話なんだよね?
682 名前:名称未設定 mailto:sage [2009/03/17(火) 20:26:29 ID:3esZjowZ0] 区別とかじゃないの! ポインタ用とかとエイリアス用とかって区別してないの! とに角 pointa *p = a; は邪道で全然理論的じゃないってこと。
683 名前:名称未設定 mailto:sage [2009/03/17(火) 20:29:48 ID:YXfeRtuD0] 俺が理解できてないことを確認するためにひとつだけ教えてくれ >p = a; とすると >*pはaの別名(エイリアス)になる。 このときaの宣言は何よ?本気でわからないんだが
684 名前:名称未設定 mailto:sage [2009/03/17(火) 20:39:29 ID:3esZjowZ0] pointa型 例えばintとか構造体とか・・・。 int a = 10; int *p = a; //ポインタpの宣言だけど、*pはエイリアスの意味でもあるから、それだったら int* p = a; の方がポインタpの宣言&aを指し示すってことで理論的。
685 名前:名称未設定 mailto:sage [2009/03/17(火) 20:41:39 ID:YXfeRtuD0] マジでそのコードでいいの? それで間違ってないんだとしたら俺はC言語1から勉強しなおさにゃならん
686 名前:名称未設定 mailto:sage [2009/03/17(火) 20:44:52 ID:3esZjowZ0] &が抜けてる・・・・・・・・・・。
687 名前:名称未設定 mailto:sage [2009/03/17(火) 20:46:04 ID:3esZjowZ0] すみません。
688 名前:名称未設定 mailto:sage [2009/03/17(火) 20:50:25 ID:YXfeRtuD0] ようやく我々はスタートラインに立ったわけだ で、エイリアスを「type *p;」で宣言するべきって主張は理解できるんだが ポインタ宣言をそれとは違う「type* p」にすべきって言うんだったら ポインタとエイリアスを区別したいという話じゃなければなんなのさ?
689 名前:名称未設定 mailto:sage [2009/03/17(火) 20:55:23 ID:3esZjowZ0] すみません。 そうそうなの。&があるからこそ int *p = &a;はおかしいの! *pはエイリアス(別名)を意味するものでしょ。 つまり*pはaであるわけだ! だから上の式はおかしい!って話。
690 名前:名称未設定 mailto:sage [2009/03/17(火) 20:58:13 ID:YXfeRtuD0] やっぱりわかんないや!もう寝る!うえーん!!
691 名前:名称未設定 mailto:sage [2009/03/17(火) 21:05:06 ID:HCBvbpo10] ワロタw
692 名前:名称未設定 mailto:sage [2009/03/17(火) 21:13:53 ID:3esZjowZ0] 大学の教授がゆうてたんやから・・・・・ int *p = &a;はおかしいて・・・・・・・。 ポインタの宣言は int* p = &a;こそまさに正しく、現にC++ではこっちが正当だとか・・・僕はやったことないけど。
693 名前:名称未設定 mailto:sage [2009/03/17(火) 21:20:05 ID:gGLs4SOn0] こっちでやれ C/C++ Coding Style Thread pc11.2ch.net/test/read.cgi/tech/1096687703/ コーディング規約 第3条 pc11.2ch.net/test/read.cgi/tech/1170599322/ コーディングスタイルにこだわるスレ pc11.2ch.net/test/read.cgi/tech/1193554741/
694 名前:名称未設定 mailto:sage [2009/03/17(火) 21:22:14 ID:3esZjowZ0] すみません。 この方の質問の回答がまだなので・掲載しておきます。本当にすれ違い申し訳ございません。 676 名前:名称未設定[sage] 投稿日:2009/03/17(火) 12:51:00 ID:csg2JhxK0 CoreDataで質問です。 特定のプロパティをデータに保存せずに一時として取り使うにはデータをモデリングする際に「一時」にチェックもしくはNSPropertyDescriptionのsetTransient:でできると思いますが、 特定のプロパティ、たとえば配列の一部だけを保存しないように設定するのは可能でしょうか? 具体的にはNSTreeControllerとNSOutlineViewで表示してるデータを以下のように取り扱いたいのです。 ▼保存したくないグループ 内容0 ▼保存したいグループ 内容0 内容1 といった感じです。 複数のNSOutlineViewを使うとリサイズやスクロールが変なことになるのでできれば1枚でできればと思っています。 データの保存時に一時的に保存したくないグループを取り除き、保存後にもとに戻すという方法も考えられますが、 何か解決策、案などありましたらよろしくお願いします。
695 名前:名称未設定 mailto:sage [2009/03/17(火) 21:26:44 ID:4Y1MmBF60] 要するに宣言式は 型名 変数名; の形式なんだから、 int* p; // intポインタ型 intポインタ型の変数 のほうが論理的ってことだろ? 並べて書きたいとか深く考えたくないとかいろいろある人は typedefすりゃ悩まなくていい。 >>676 すっかりスルーされてるけど、 > 特定のプロパティ、たとえば配列の一部だけを保存しないように設定するのは可能でしょうか? 結局保存したくないのは NSManagedObjectなの? だったらそのオブジェクトを InMemoryStoreに保存すれば良いと思うけど。
696 名前:名称未設定 mailto:sage [2009/03/17(火) 22:33:22 ID:b2z+I8FG0] * についての一連の流れ、最高でした。
697 名前:名称未設定 mailto:sage [2009/03/17(火) 22:57:25 ID:ofs0nYK30] どうも>>676 です、静観しておりました。 >>695 上記の図は1対のNSTreeControllerとNSOutlineViewで表わされています。 NSTreeControllerをNSManagedObjectContextにバインドして保存していますが、その場合通常NSTreeControllerの持つ配列は全て保存されてしまうと思います。 上記の図でいうと、NSTreeControllerのうちindexPathが (0), (0, 0)のものは保存したくないが indexPathが (1), (1,0), (1,1) のものはXMLなりBinaryなりに保存したいということです。 >>695 の書き込みを見て調べてみたのですが、もしかして保存タイプを分けたいNSManagedObjectごとに割り当てるContextやPersistentStoreCoordinatorを用意(この場合2つずつ)してやれば良いということでしょうか?
698 名前:名称未設定 mailto:sage [2009/03/17(火) 23:55:17 ID:ifuq6k5C0] 保存する/しないの属性を追加して終了時にdeleteObjectするとか。 親が保存しない、の子供なら終了時にdeleteObjectするとか。
699 名前:名称未設定 mailto:sage [2009/03/18(水) 00:50:11 ID:Nl8MvSTb0] >>697 それでもいいのですが、アプリケーションを終了するタイミング以外でも保存できるようにしたく、一時的に消してまた追加するのが回りくどく感じてしまったので…。 >>695 の件に関して過去ログなども参考にしながらいくつか試してみました。 NSManagedObjectをInMemoryStoreにアサインしようとしましたが、 NSTreeControllerでadd:してNSManagedObjectを追加した場合、自動での初期化等いろいろしてくれるようで、 このObjectのPersistentStoreをアサインし直したりというのは難しそうでした。(いろいろエラーが出て結局分からずじまい) まだ試してないですが、Controllerのadd:などを使わずに自前でManagedObjectを生成、PersistentStoreCoordinatorを設定、 そしてControllerにインサートしてやればうまくいくような気がします。
700 名前:名称未設定 mailto:sage [2009/03/18(水) 00:58:10 ID:Nl8MvSTb0] 見直したら誤字いくつかありますね、加えて分かりにくい文章ですいません。
701 名前:名称未設定 mailto:sage [2009/03/18(水) 07:35:18 ID:BEEAD/bv0] 気にせずファイルに保存しておいて、 次にファイルを開く際に要らないのを全部 fetch して即座に削除すれば? まあこの方法も汚いけど、save の際に毎回汚いことをするよりはマシでしょう。
702 名前:名称未設定 mailto:sage [2009/03/18(水) 10:17:03 ID:lFoNT2oi0] WebViewから現在選択されているテキストを取得したいんですけど リファレンス見るとそれらしいAPIはselectedDOMRangeがありました これを使うとテキスト以外のタグも返ってくるんですけど シンプルに選択されているテキストだけを取る方法ってあるんでしょうか? それともDOMのデータをパースして自分でテキストを取り出すしかないんでしょうか?
703 名前:名称未設定 mailto:sage [2009/03/18(水) 11:01:38 ID:INzDTAut0] NSString* string = [[[[[webView mainFrame] frameView] documentView] attributedString] string];
704 名前:名称未設定 mailto:sage [2009/03/18(水) 12:34:05 ID:lFoNT2oi0] >>703 attributedStringはWebDocumentTextのメソッドだからWebDocumentView*であるdocumentView からは呼べないとコンパイラーから警告がでました WebDocumentTextにはそのものずばりのselectedTextもあるのでこれが使えれば何よりですが、WebView から呼ぶことはできなさそうですね やっぱりselectedDOMRangeを使ったほうが手っ取り早いですかね?
705 名前:名称未設定 mailto:sage [2009/03/18(水) 12:44:27 ID:lFoNT2oi0] 自己解決しました。コンパイラの警告は出るけれどもWebDocumentTextの機能も呼べるんですね。 NSString* selection = [[[[webView mainFrame] frameView] documentView] selectedString]; で選択部分のテキストが取れました。 さらに以下のようにすると警告も出なくなりました。 id document = [[[webView mainFrame] frameView] documentView]; if([document conformsToProtocol:@protocol(WebDocumentText)]) { NSString* selection = [document selectedString]; } >>703 さんのヒントのおかげです。ありがとうございました。
706 名前:名称未設定 mailto:sage [2009/03/18(水) 15:42:38 ID:lFoNT2oi0] すいません、もう1つ質問させて下さい 1つのウィンドウ上にNSTextFieldが3つあったとして、現在そのうちのどれが入力フォーカス(?) を持っているかを知ることは可能でしょうか?以下の情報だと無理だと書かれているのですが... www.cocoabuilder.com/archive/message/cocoa/2005/4/6/132387
707 名前:名称未設定 mailto:sage [2009/03/18(水) 15:57:50 ID:eq95d6De0] イベント/通知(Notification)は飛んできません。って書いてる。 現在何処?なら、firstResponderがそれです。
708 名前:名称未設定 mailto:sage [2009/03/18(水) 16:31:57 ID:lFoNT2oi0] すいません、解決しました 私も最初firstResponderを見ていたのですがこれが返す値はNSTextField*じゃなくてNSText*に なっていました。これが何かわからなかったのですが、結局NSControlのcurrentEditorの値らしい とわかりました。これが>>706 のリンクで言われている1つしかないインスタンスなので、これと NSTextField*を比較してもだめで、個々のNSTextFieldでcurrentEditorを呼んで、その時にnilでない 値を返すNSTextFieldがその時点で入力フォーカスを持っていると考えていいみたいですね
709 名前:名称未設定 mailto:sage [2009/03/18(水) 19:16:48 ID:r5RVNS6X0] >>708 そのNSTextのDelegateが、フォーカスの当たっているNSTextFieldになっています。 ttp://www.stripe-net.jp/cocoa/documents/chapter3/chapter3-7.html
710 名前:名称未設定 mailto:sage [2009/03/18(水) 19:38:01 ID:lFoNT2oi0] >>709 なるほど、確かにそうなってますね if ([[self window] firstResponder] == MyNSTextField01) みたいにしてだめだったんですけど if ([[[self window] firstResponder] delegate] == MyNSTextField01) にするとうまくいきました
711 名前:名称未設定 mailto:sage [2009/03/18(水) 21:54:29 ID:Nl8MvSTb0] >>701 データを保存するタイミングがアプリの終了時だけでないのと、 InMemoryStoreを利用すると複数の人から同じファイルを参照して保存時に編集結果をマージ (たぶん挙動としては保存+シンクになるかと)した場合もうまくいきそうだなぁと思いこの手法を掘り下げてみました。 あとはプロパティが全く同じだけど全て一時に設定されているモデルを作成するのもいいかも知れませんね。 いやはや時間がなくてまったく試していませんが。
712 名前:名称未設定 mailto:sage [2009/03/19(木) 00:48:27 ID:Dg1/nG6V0] ここは親切なインターネッツですね
713 名前:名称未設定 [2009/03/19(木) 10:06:11 ID:U94je7dF0] iPhone関係のプログラミングの話題もここでいいの? iPhone版探したけどそれらしいのがなかったんですが。
714 名前:名称未設定 mailto:sage [2009/03/19(木) 10:47:34 ID:J6t3XWox0] 「iPhoneで」って書いとけばいいんじゃないの? 微妙に違うから、書いておかないとみんな混乱しちゃう。
715 名前:名称未設定 mailto:sage [2009/03/19(木) 11:42:05 ID:um7AEN9C0] >>713 つpc11.2ch.net/test/read.cgi/mac/1234555020/
716 名前:名称未設定 mailto:sage [2009/03/19(木) 13:40:08 ID:Utyhy8qr0] iPhoneはAppleとの規約が五月蝿かったような。
717 名前:名称未設定 mailto:sage [2009/03/19(木) 16:07:14 ID:ksx9OqeN0] >>716 規約変更でβ以外の話はしてもよくなった。
718 名前:636 [2009/03/19(木) 18:36:27 ID:PpHiwVi20] NSTableViewでセルを左クリックした際、row全体が選択されるのですが、 これを解消するAPIとかありますか?
719 名前:名称未設定 mailto:sage [2009/03/19(木) 20:06:08 ID:SjN6XR7fi] >>609 解消ってなんだよ。 選択解除をしたいのか、選択処理自体が起こらないようにしたいのかどっちだ。 前者ならどのタイミングでだ。 ちなみに俺には全く分からん。
720 名前:名称未設定 mailto:sage [2009/03/19(木) 20:47:27 ID:I6nb5Wil0] >>719 選択処理自体が起こらないようにしたい としか読めなかったが
721 名前:名称未設定 mailto:sage [2009/03/19(木) 23:06:02 ID:6c/V/xKf0] エスパーの俺が思うにrowの選択時に特定のcolumnだけ選択状態にしたいってことだろう いろいろやればできんこともなさそうだがその挙動ならTableView使わなければいいと思う
722 名前:名称未設定 mailto:sage [2009/03/19(木) 23:36:50 ID:bfz6W/740] エクセルのセルみたいに使いたいのかな
723 名前:名称未設定 mailto:sage [2009/03/20(金) 00:15:17 ID:Raq7MuIX0] >>718 NSTableViewのサブクラスで行が選択された時の挙動を制御できるかと。 リファレンスとか、ここ? d.hatena.ne.jp/sunpro/20080820/1219217880
724 名前:名称未設定 mailto:sage [2009/03/20(金) 03:53:24 ID:KD/uL4hGi] -_highlightRow:inCripRect:をオーバーライドしてマウスロケーションからカラムの位置を特定、clipRectを変更してsuperに渡せば大方のぞみの挙動では? 非公開メソッドだから使わないべきだけど。
725 名前:名称未設定 mailto:sage [2009/03/20(金) 16:07:07 ID:ztTjYrEW0] cocoaのサンプルコードを読むと、たいがい小数は float型で宣言されています。 double を使わずに float を使う傾向があるようですが、 どういう理由によるものですか?
726 名前:名称未設定 mailto:sage [2009/03/20(金) 16:11:19 ID:iDYY1j1o0] 画面の座標がfloatだからじゃね?
727 名前:名称未設定 mailto:sage [2009/03/20(金) 17:28:10 ID:D7KrySdW0] >>726 64bit では座標は double なわけだが... そういう話なら >>725 の言うサンプルとやらも 適宜 double に変えないといかんね。 ってゆうか生の float とかを使うべきじゃないかもね。
728 名前:名称未設定 mailto:sage [2009/03/20(金) 17:40:13 ID:EvkiWkY40] >>727 CGFloat developer.apple.com/documentation/Cocoa/Conceptual/Cocoa64BitGuide/64BitChangesCocoa/64BitChangesCocoa.html#//apple_ref/doc/uid/TP40004247-CH4-SW13
729 名前:名称未設定 mailto:sage [2009/03/21(土) 08:44:05 ID:bG0sbfJc0] なるほど、Cocoaフレームワークでは画面の座標などで float を使っているから、普段は float を使っていれば無難 という事ですね。
730 名前:名称未設定 mailto:sage [2009/03/21(土) 11:14:53 ID:7ylASo2t0] >>729 >>728 のどこをどうよむとそうなるのか判りませんが... 1. 昔は Cocoa は float でした。 2. Leopard になって、32bit では float, 64bit では double になりましたが、 そんなものかき分けられないので、 CGFloat と書くことにしました。 3. ですから今後は CGFloat と書いておくと、32bit でコンパイルしても 64bit でコンパイルしてもキチンと動きます。
731 名前:名称未設定 mailto:sage [2009/03/21(土) 22:41:06 ID:bG0sbfJc0] >>730 あ、すいません。よくわかりました。 ありがとうございました。
732 名前:名称未設定 mailto:sage [2009/03/22(日) 13:36:04 ID:YQgr14t00] 自分のCocoaアプリケーションがバックグラウンドにいるときに定期的な処理をすることは可能でしょうか? 昔のCWのCarbonアプリだとPowerPlantのSpendTimeを継承すれば可能でしたが、Cocoaだとやり方がよく わかりません。cocoa-devの中を検索していてCFRunLoopAddObserverでコールバックを登録すればいいの かと思いましたが、これだとフォアグラウンドのアイドリングでしかコールされませんでした。
733 名前:名称未設定 mailto:sage [2009/03/22(日) 13:41:15 ID:D0Hx6S+/0] NSTimer
734 名前:名称未設定 mailto:sage [2009/03/22(日) 14:37:42 ID:i9Um2BIK0] Cocoaで、ポップアップメニューとテキストフィールドがあって、 特定項目を選択したときだけテキストフィールドが有効になるように したいです。(タグ番号で区別など) Binding指定一発で行かないか調べているのですが、簡単な指定方法は ありますか? 現在、出来ているのは、 ・コントローラに値を持たせて、 ・ポップアップメニューのアクションでフラグをKVCで書き換えして ・テキストフィールドに反映させる方法 くらいです。
735 名前:名称未設定 mailto:sage [2009/03/22(日) 14:40:02 ID:D0Hx6S+/0] どうしても一発でやりたいんなら専用のNSValueTransformerを作るとか。
736 名前:名称未設定 mailto:sage [2009/03/22(日) 14:45:16 ID:D0Hx6S+/0] あーもちろんポップアップメニューで選択されるオブジェクトに該当するプロパティがあるんならそれ使えばいいよ。
737 名前:名称未設定 mailto:sage [2009/03/22(日) 15:16:49 ID:oZHejVcE0] >>734 つまり、NSMenuの特定のNSMenuItemを選択したときに、NSTextFieldのenabled値を変更したいんだよね? メニューから項目を選択したときに、コントローラーのプロパティーを変更して、そのプロパティーとテキストフィールドのenabledをバインドすればよいかと
738 名前:名称未設定 mailto:sage [2009/03/22(日) 18:16:51 ID:i9Um2BIK0] >>735-737 コメントありがとうございます。 なるほど、やはりBindingのなかで式を評価してもらえればとか、 つい期待してしまうのですけど、所詮は甘い考えでしたね。残念。
739 名前:名称未設定 mailto:sage [2009/03/22(日) 18:20:26 ID:645xXQJS0] NSMenuItemのタグを0か1にして、ユーザデフォルトにバインディング。 それをNSTextFieldのenabledにバインディング。
740 名前:名称未設定 mailto:sage [2009/03/22(日) 20:23:39 ID:hnBK/g2f0] タグを使うのはなかなか楽ちんで素晴らしいね タグを別に利用できなくなっちゃうけど まぁバインディングしてアクセッサを書けばいいんじゃないかね
741 名前:名称未設定 mailto:sage [2009/03/22(日) 21:14:45 ID:i9Um2BIK0] >>739 おお、確かにそれだとコントローラに依存しなくて済みますね。 ・・・ただ、自分のコードはプラグインなので、親側のアプリの plistに書き込んじゃうような気がします。 少しひねってアイディアが使えないか考えてみます。
742 名前:名称未設定 mailto:sage [2009/03/22(日) 22:31:33 ID:6qTjK3TA0] >>741 >・・・ただ、自分のコードはプラグインなので、親側のアプリの >plistに書き込んじゃうような気がします。 なが〜い key にしておけば何の問題もないと思いますが。 com.bokuno.plugin.hagemenu とか。
743 名前:名称未設定 mailto:sage [2009/03/23(月) 18:55:34 ID:EF7hX8Ek0] >>739 menuItemのtagとUserDefaultsをバインドしても、tagとUserDefaultsの値が同期するだけで、メニューの選択によりUserDefaultsの値が変化する形にはならないと思うよ。 UserDefaultsの値を変化させたいなら、どこかで [bindedMenuItem setTag:1]; などといった処理が必要です。 >>741 プラグインっていうのは、Cocoa Bundleのことかな? メニューは親側のアプリが持っていて、そのテキストフィールドがプラグイン側にあるのだとしたら、IntarfaceBuilderでいくらがんばっても無駄ですよ。 メニュー選択のアクションを親アプリ側のコントローラで受け取り、親アプリ側のコントローラからプラグイン側のコントローラにフラグ値を設定する。 などといった方法を取るしかないと思います。
744 名前:名称未設定 mailto:sage [2009/03/23(月) 20:19:05 ID:jkNDz75K0] NSTableViewのフォントを変更したときにsetRowHeightでセルの高さを指定してやる必要が ありますが、その数値をどう求めるべきかで迷っています。現在は使いたいNSFontのfontBounding.size.height を指定していて正常に表示されてはいるのですが、なんか上下にスペースが多すぎて間延びした ような感じに見えるのですが、かといってそれより小さい数値にするとフォントによって見切れるかも しれないような気もします。 ここで使うべき適切な数値に求め方ってあるんでしょうか?
745 名前:名称未設定 mailto:sage [2009/03/23(月) 22:58:51 ID:DDSljpI20] fontBoundingって何?
746 名前:名称未設定 mailto:sage [2009/03/24(火) 02:29:36 ID:1Hl/Tw2xi] NSStringとかNSAttributedStringのAppKitAdditionsにあるsizeWithAttributesやsizeあたりを使うのは?
747 名前:名称未設定 mailto:sage [2009/03/24(火) 08:58:24 ID:BucbIRTg0] Safari4 のようにタイトルバー上に描画したいのですが、 どのような手段があるでしょうか。
748 名前:名称未設定 mailto:sage [2009/03/24(火) 11:48:17 ID:OjHK9J6Y0] ウィンドウのパーツをすべて自前で用意して描画。
749 名前:名称未設定 mailto:sage [2009/03/24(火) 11:51:30 ID:NpoR6Dsl0] >>747 Snow Leopardまで待つのがいい気がする IBのパーツ的意味で
750 名前:名称未設定 mailto:sage [2009/03/24(火) 15:52:34 ID:UQpOmHiZ0] >>749 多分ないだろうね
751 名前:名称未設定 mailto:sage [2009/03/24(火) 16:52:58 ID:BucbIRTg0] >>749 あればいいんですけど・・・ Safari は今までのバージョンでも認証のあるサイトにいくと 右上にカギのマークが表示されてましたが、あの程度でも ウィンドウのパーツをすべて描画してるんでしょうか?
752 名前:名称未設定 mailto:sage [2009/03/24(火) 17:00:29 ID:J1mQBwRc0] 昔HMDTで「NSWindowのcontentviewのsuperviewのsubviewsとして追加する」という手を見た希ガス 試したことはない
753 名前:名称未設定 mailto:sage [2009/03/24(火) 17:16:52 ID:OjHK9J6Y0] >>751 その程度ならテクスチャ付きウィンドウのバックグラウンドを適宜変更することで出来そうな気が。
754 名前:名称未設定 mailto:sage [2009/03/24(火) 18:14:37 ID:ZfUbWmv40] NSView *view = [[window contentView] superview]; に貼り付ける。 undocumentedですが。
755 名前:名称未設定 mailto:sage [2009/03/24(火) 20:49:21 ID:pl3M8j5W0] >>747 NSGraphicsContext* gc = [NSGraphicsContext graphicsContextWithWindow:window]; [NSGraphicsContext setCurrentContext:gc]; /** ここで、NSBezierPathとか、NSImageとかを使って描画 **/ [gc flushGraphics]; これで、ウインドウ全体(タイトルバーを含めて)をlockFocusしたような感じになるので、タイトルバーエリアにも描画できます。
756 名前:名称未設定 [2009/03/24(火) 21:56:23 ID:LUOigXSf0] iPhoneなんですが、View-basedのプロジェクトを作成してXXXViewControllerに用意されている - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil をコメントアウトしてもこのメソッドが呼び出されないのですが他にどこか修正が必要なのでしょうか?
757 名前:名称未設定 [2009/03/24(火) 22:22:01 ID:LUOigXSf0] ああAppDelegateで自分でViewControllerをinitNibNameで作る必要があったみたいです。
758 名前:751 mailto:sage [2009/03/25(水) 07:54:32 ID:0SM9ZDQS0] ありがとうございました。やってみます。
759 名前:名称未設定 mailto:sage [2009/03/25(水) 13:12:12 ID:5iE+9ayji] >>756 コメントアウトの使い方がまちがっている。
760 名前:名称未設定 mailto:sage [2009/03/25(水) 14:15:35 ID:5bK3eLy80] コメントアウトアウトだな
761 名前:名称未設定 mailto:sage [2009/03/25(水) 20:49:30 ID:TIvJ7Wev0] ドックを右クリックした時に出るような吹き出し型のメニューを呼び出すAPIはありますか?
762 名前:名称未設定 mailto:sage [2009/03/25(水) 22:03:07 ID:pm0pHKwl0] 少なくとも正式なAPIとしては用意されていません
763 名前:名称未設定 mailto:sage [2009/03/26(木) 00:15:13 ID:rC0n3m6s0] >>762 それが分かっただけでも十分です ありがとうございます
764 名前:名称未設定 mailto:sage [2009/03/27(金) 06:14:28 ID:XlooH+OZ0] おまいらXcodeのテキストキーバインドって実際どのくらい使ってますか? 時代に乗り遅れて最近LeopardのXcodeに移行したんだけど使いこなし切れない とりあえずこれだけは便利だから使っとけってのは無いかな
765 名前:名称未設定 mailto:sage [2009/03/27(金) 06:58:00 ID:uVBk9I9P0] >>764 ctrl + / 次のプレースホルダ
766 名前:名称未設定 mailto:sage [2009/03/27(金) 20:55:36 ID:yJIEOHNY0] >>764 command + / 選択範囲のコメントアウト、コメントの解除
767 名前:名称未設定 mailto:sage [2009/03/27(金) 21:02:16 ID:G8IYg3Ly0] Objective-Cのメソッドの両側の括弧を自動的に入れてくれる機能。
768 名前:名称未設定 mailto:sage [2009/03/27(金) 21:35:53 ID:Eaa1yLc60] >>767 そんなのあるの?
769 名前:名称未設定 mailto:sage [2009/03/28(土) 02:54:55 ID:NZomFomOP] command + shift + alt + / ドキュメントの表示。重い…
770 名前:名称未設定 mailto:sage [2009/03/28(土) 03:54:24 ID:yJwPFz9Ki] みんなスラッシュにこだわるなw
771 名前:名称未設定 mailto:sage [2009/03/28(土) 18:37:20 ID:0eMQjnwh0] ドキュメントの表示は opt+ダブルクリック 定義にジャンプは cmd+ダブルクリックだな。 >765 も使うけど その前に ctrl+. する。 ごくまれに cmd+opt+↑ 名前なんだっけ?ヘッダと実装ファイルのトグル。 cmd + opt + ← もたまに。
772 名前:名称未設定 mailto:sage [2009/03/29(日) 11:07:23 ID:FT9y+teW0] GCを使うis敗北ネ!! ギリギリまでreleaseを我慢して YOUのアグレッシブなメモリマネージメントを見せつけてwant you !!!
773 名前:名称未設定 mailto:sage [2009/03/29(日) 11:19:21 ID:C5UY2wzI0] >>772 どうした?大丈夫か?
774 名前:名称未設定 mailto:sage [2009/03/29(日) 13:07:48 ID:PKo3KxaT0] 過開放のバグを潰すのに疲れたんだろう… きっと。
775 名前:名称未設定 mailto:sage [2009/03/29(日) 13:12:21 ID:BoW5aWaw0] 俺の知り合いで「autorelease を使ったら負け」とおっしゃる方がいたけどなw どうやらメモリ管理をよくわからないものに任すのが嫌みたいなんだが。 まーそんなこと言い始めるとmalloc/freeあたりですら怪しいと思うんだがw 現実問題として、クラスによっては autorelease されたインスタンスが前提なのが あって、autorelease 無しには Cocoa は使えないんじゃなかったかな...
776 名前:名称未設定 mailto:sage [2009/03/29(日) 13:26:52 ID:PKo3KxaT0] autorelease使ったら負けって… まあ他人の趣味だからいいけどさ。どう考えてもフレームワーク内部でAutorelease がんがん使ってんだから意味ないじゃん。
777 名前:名称未設定 mailto:sage [2009/03/29(日) 13:40:52 ID:0+hbEKM60] 昔々C言語の頃は配列の添字を使ったら負けで ポインタをインクリメントしたら勝ちだったのさ まぁそう主張する奴のソースはコーディングレベルで最適化wしようとしたあげく アルゴリズムの方がおろそかになってたりしてたけどね
778 名前:名称未設定 mailto:sage [2009/03/29(日) 13:41:51 ID:6ZHfBTXx0] 理解していればどうということはない 使わざるを得ない時もあるし
779 名前:名称未設定 mailto:sage [2009/03/29(日) 14:37:03 ID:FT9y+teW0] 遅い奴には、コードは追えない。 そういうことさ……
780 名前:名称未設定 mailto:sage [2009/03/29(日) 14:43:36 ID:C5UY2wzI0] >>775 >どうやらメモリ管理をよくわからないものに任すのが嫌みたいなんだが。 autorelease pool は「よくわからなくないもの」では全くないと思うが... そいつが autorelease を「なんかよくわからんがいつのまにか解放してくれる」 とかいう風に勘違いしてたんじゃないの?
781 名前:名称未設定 mailto:sage [2009/03/29(日) 20:27:58 ID:IFUODtjp0] きっとその人はオートマの車を運転したら負けなんだろうな。
782 名前:名称未設定 [2009/03/29(日) 21:58:55 ID:Arvynqjh0] F-1でオートマ乗ったら負けだろうな
783 名前:名称未設定 mailto:sage [2009/03/29(日) 23:09:03 ID:0+hbEKM60] エンジンをかけるときはクランクを力強く一気に廻す エンジンがかかると勢い良くクランクが回転するので あごの骨を砕かれる恐れがあるので顔を近づけない事
784 名前:名称未設定 mailto:sage [2009/03/29(日) 23:28:56 ID:ZtbTYtIP0] 自分に対して無駄な制限をかける人って、たまに居るよね 別にかまわないし、個人の自由だと思うけど 周りに迷惑がかかるようならやめて欲しい
785 名前:名称未設定 mailto:sage [2009/03/30(月) 00:12:23 ID:LEpUUYlh0] 宗教とかな
786 名前:名称未設定 mailto:sage [2009/03/30(月) 01:26:40 ID:/GsaEKKp0] もともと半分ネタな話題の上にさらにネタを重ねるけどもw >>782 F1はオートマって言ってもセミオートマだし。で人間がクラッチ操作するより素早く シフトチェンジするし、いわば人間+技術で最高の効率を追求してる感じ。 autorelease は、オブジェクトの寿命をルーズにするから、メモリのある種の利用効率 という点では手動できっちり管理する場合より落ちる。って感じ。 さて、次は「retain/releaseを使ったら負け」でもいってみますかw
787 名前:名称未設定 mailto:sage [2009/03/30(月) 02:37:07 ID:utyEfR7Gi] >>786 開放するのがまけなんだろ、きっと。 男は黙って 確保したまま。 男は黙って 確保したまま。 メモリ不足でアプリが強制終了しちゃうよ〜
788 名前:名称未設定 mailto:sage [2009/03/30(月) 02:50:51 ID:OjkMXpC10] >>787 iPhone はともかく、Mac では >メモリ不足でアプリが強制終了しちゃうよ〜 てことはないのでは?
789 名前:名称未設定 mailto:sage [2009/03/30(月) 11:36:33 ID:NTIDxucM0] 32bitアプリで2GB超えたら強制終了したよ。
790 名前:名称未設定 mailto:sage [2009/03/30(月) 20:05:01 ID:cs/pyE5p0] 初歩的な質問で申し訳ないのですが・・・ NSTableViewで複数行があったとして、ファーストレスポンダが行最後のセルにあり、 ここでtabキーを押した時、次の行の先頭セルにファーストレスポンダを移す事って、 IBだけで出来るでしょうか?
791 名前:名称未設定 mailto:sage [2009/03/30(月) 21:13:10 ID:jWZzU8wmi] >>790 TableViewの内部のセル自体がファーストレスポンダになることはありません。 その場合、編集中ならセルの位置に表示されてるFieldEditorが、 そうでないならTableViewそれ自体がファーストレスポンダということになります。 IBだけではその制御はできません。
792 名前:790 mailto:sage [2009/03/30(月) 22:52:23 ID:cs/pyE5p0] >>791 なるほど、レスありがとうございました。
793 名前:名称未設定 mailto:sage [2009/03/31(火) 08:35:35 ID:5nYIQ3Ld0] >>787 >男は黙って 確保したまま。 別に dealloc は駄目とは書かれてないのだが.... 「ネタ」の意味が理解されなかったか。 だったらメモリリークしまくりのコードを書く奴は? 男も堕ちたもんだw
794 名前:名称未設定 mailto:sage [2009/03/31(火) 10:40:26 ID:g4GAqv8E0] 明示的にdeallocをしてはいけません raleaseCountが0になった時オブジェクトは自動的にdeallocされメモリを解放します
795 名前:名称未設定 mailto:sage [2009/03/31(火) 10:42:51 ID:HzS6wNkv0] NSDrawerを使っていて時間のかかるループの前にこれを閉じたいんですけど closeを呼んでも実際に閉じられるのはループが終わってからになってしまいます updateとかdisplayとかいろいろ呼んでみたんですがうまくいきません sendEventとかしないといけないんでしょうか?
796 名前:名称未設定 mailto:sage [2009/03/31(火) 10:53:36 ID:fhQmN1Q/0] drawer が閉じたのを確認した後で時間がかかるループを開始すればok
797 名前:名称未設定 mailto:sage [2009/03/31(火) 11:33:02 ID:SrzqsxLr0] Drawerの開閉が1回のイベントループ内で終わるのなら、 長い処理を [obj performSelector:@selector(hogehoge) withObject:nil afterDelay:0.0]; で次のイベントループで実行させればいいよ。
798 名前:名称未設定 mailto:sage [2009/03/31(火) 12:18:47 ID:g4GAqv8E0] NSDrawerDidCloseNotification
799 名前:名称未設定 mailto:sage [2009/03/31(火) 13:29:11 ID:HzS6wNkv0] >>797 ありがとうございます。やってみましたけどだめでした。すでに開いているNSDrawerがあって 特定のボタン(長いループのある処理に入る)が押されたときに閉じようとしています。 >>796 >>798 NSDrawerDidCloseNotificationを待ってから処理に入ればいいということでしょうか
800 名前:名称未設定 mailto:sage [2009/03/31(火) 21:19:34 ID:pZH39k4v0] ループの中身をメソッドで取り出して、 forでなく、runLoopにやらせるようにするだけでいい。 UIをブロックしなくなるし。ちょっと遅くなるけれど。
801 名前:名称未設定 mailto:sage [2009/03/31(火) 22:13:14 ID:W0bP27zQ0] くあしくコードプリーズ
802 名前:名称未設定 mailto:sage [2009/03/31(火) 23:32:05 ID:g4GAqv8E0] 初心者なら素直に木下本買ってこい