1 Name: 名称未設定 [sage] Date: 2009/01/13(火) 22:26:12 ID: TtNlCCCM0 Be:
前スレ
Cocoaはさっぱり!!! version.11
http://pc11.2ch.net/test/read.cgi/mac/1224960170/

Cocoaはさっぱり!!! version.X(10)
http://pc11.2ch.net/test/read.cgi/mac/1211290055/
Cocoaはさっぱり!!! version.9
http://pc11.2ch.net/test/read.cgi/mac/1201106820/
Cocoaはさっぱり!!! version.8
http://pc11.2ch.net/test/read.cgi/mac/1179498292/
Cocoaはさっぱり!!! version.7
http://pc11.2ch.net/test/read.cgi/mac/1161486802/
Cocoaはさっぱり!!! version.6
http://pc11.2ch.net/test/read.cgi/mac/1146391229/
Cocoaはさっぱり!!! version.5
http://pc11.2ch.net/test/read.cgi/mac/1124986925/
Cocoaはさっぱり!!! version.4
http://pc11.2ch.net/test/read.cgi/mac/1091927026/
Cocoaはさっぱり!!! Version.3
http://pc5.2ch.net/test/read.cgi/mac/1063295248/
Cocoaはさっぱり!version:2
http://pc11.2ch.net/test/read.cgi/mac/1036923528/
Cocoaはさっぱり!
http://pc11.2ch.net/test/read.cgi/mac/1007632025/
2 Name: 名称未設定 [sage] Date: 2009/01/13(火) 22:28:24 ID: TtNlCCCM0 Be:
関連スレ
Macでプログラミング{9}
http://pc11.2ch.net/test/read.cgi/mac/1216824430/
MacOS XをUnixとして使ってる人の為のスレ その14
http://pc11.2ch.net/test/read.cgi/mac/1216715423/
Xcode part7
http://pc11.2ch.net/test/read.cgi/mac/1218774554/
MacでJava その4
http://pc11.2ch.net/test/read.cgi/mac/1214284891/
RubyCocoa 初心者質問【Leopardバンドル記念】
http://pc11.2ch.net/test/read.cgi/mac/1193373811/
AppleScript アップルスクリプト 質問、発表 3
http://pc11.2ch.net/test/read.cgi/mac/1223026902/
3 Name: 名称未設定 [sage] Date: 2009/01/13(火) 22:39:37 ID: TtNlCCCM0 Be:
関連追加
iPod touch/iPhone ネイティブアプリ製作 ver.8
http://pc11.2ch.net/test/read.cgi/mac/1231156968/
Objective-C [ObjC part:3];
http://pc11.2ch.net/test/read.cgi/tech/1186543111/
4 Name: 名称未設定 [] Date: 2009/01/13(火) 23:08:47 ID: H0hDNQK00 Be:
Web
Cocoa wiki
http://cocoawiki.aerial.st/index.php?FrontPage
ADC
http://developer.apple.com/jp/
CocoaDevCentral
http://cocoadevcentral.com/
CocoaDev
http://cocoadev.com/
Cocoa Blogs
http://cocoablogs.com/
Cocoaはやっぱり!
http://www.big.or.jp/~crane/cocoa/
HMDT
http://homepage.mac.com/mkino2/
OOMORI.com - Cocoaリファレンス
http://www.oomori.com/cocoafw/
Cocoa Study Blog
http://blog.cocoa-study.com/
Cocoa Break!
http://park15.wakwak.com/~concordia/cocoa_break/index.html
Cocoa Bindings Examples and Hints
http://homepage.mac.com/mmalc/CocoaExamples/controllers.html
Cocoaで遊ぼう!!
http://homepage.mac.com/t_yamane/prog/index.html
itok's Lab
http://110k.net/
Vacuous Virtuoso
http://lipidity.com/
MOSA テクニカルドキュメント
http://www.mosa.gr.jp/?page_id=19
5 Name: 名称未設定 [sage] Date: 2009/01/14(水) 01:13:18 ID: bEd33IEe0 Be:
>>1
(・ω・`)乙  これは乙じゃなくてポニーテールなんだからね!
6 Name: 名称未設定 [] Date: 2009/01/14(水) 01:51:20 ID: zQKDdF+j0 Be:
>>1
ポニーテール!
7 Name: 名称未設定 [] Date: 2009/01/14(水) 16:52:14 ID: 2Od3YeYO0 Be:
                           ,,,,,,_
                     ,,,,,iiiilllllllllllllliii,,,,
          ,,,,,_   .,,,,,,,,,,iiiiiiillllllllllllllllllllllllllllllllllll丶
          ゙llllllllliiillllllllllllllllllllllll!!!!llllllllllllllllllllllll!!゙
           ゙!llllllllllllllllllll!!!゙゙゙° ,,illllllllllllllllllll!゙゜
              ゙!lllllll!!l゙゙’   .,,illlllllllllllllll!!゙゜
             ^     .,,illllllll 山
                  ,,illlllll  iiiiiiiiiiiir
                 ,,illllllllヽoOOO''o_-
                  ,,illlllllll( <:::::::乙::::::::>ヽ
                 ,,illllllllll!/  ,|:::::::::::::::::|ヽ ゝ
                ,,illllllllll!゙ ,< )ヽ,━━./ ( /   liiii,,
             ,,illllllll!゙゜ ,lヽ i /::::::::::::::ヽ i .r     'llllllli,,
            ,,illllllll!゙     !!|;;;;;;;;;;;;;;;;;;;;| !!,     lllllllllli,,
           ,illlllllll゙      |::::::::∧::::::::|    ,lllllllllllllii,
           llllllllllli,_     .|::::::::| |::::::::| ,,,,illlllllllllllllllli,    こ、これは>>1乙じゃなくて
           !llllllllllllllliiiiiiiiiiiiii,,,|::::::::|  |::::::::|llllllllllllllllllllllllllll 瞬獄殺なんだから
            ゙゙!!llllllllllllllllllllllllll|::::::::|.  |::::::::|lllllllllllllllllllllllll  変な勘違いしないでよね!
              ゙゙゙゙!!!!!!llllll_ ノ;;;;;;;;r.  |::::::::レ_lll!!!!!!!l゙゙゙゜
                   'ーー"   "ーー'

あと、ヘボい質問なんですがcocoaアプリから別のアプリを実行した時にそのアプリがアクティブになりますよね?
その後、元のcocoaアプリをアクティブにしたいのですがどうしたらよいのでしょうか…
8 Name: 名称未設定 [sage] Date: 2009/01/14(水) 16:58:22 ID: 2Od3YeYO0 Be:
自己解決しました(´・ω・`)
スレ汚してすんません…
9 Name: 名称未設定 [sage] Date: 2009/01/14(水) 19:35:07 ID: P+BRcwQe0 Be:
解決方法はどんなときでも晒しといた方が
同じ問題にぶち当たった人のためになると思う
10 Name: 名称未設定 [sage] Date: 2009/01/15(木) 01:00:17 ID: N5HZEMqr0 Be:
そろそろ確定申告の事を考えないといかん時期だな。
11 Name: 名称未設定 [sage] Date: 2009/01/15(木) 01:03:14 ID: N5HZEMqr0 Be:
盛大に誤爆ったorz
12 Name: 名称未設定 [] Date: 2009/01/15(木) 01:09:22 ID: upzL9L0e0 Be:
MORINAGAの人?
13 Name: 名称未設定 [sage] Date: 2009/01/16(金) 22:20:19 ID: z0eHNRBe0 Be:
ここにいる方々は、普段どんな仕事をしてるんですか?
14 Name: 名称未設定 [sage] Date: 2009/01/16(金) 22:43:09 ID: //jRGAOJ0 Be:
底辺プログラマ
15 Name: 名称未設定 [sage] Date: 2009/01/17(土) 14:18:31 ID: w58sAeN+0 Be:
他人の書いたプログラムの虫取り(´;ω;`)
16 Name: 名称未設定 [sage] Date: 2009/01/17(土) 16:59:24 ID: FvBk0qG30 Be:
ぶっちゃけ今はiPhoneぐらいだもんね。飯の種は。
cocoaで便利なアプリを作っても金を出してまで買ってくれる人はそんなにいなさそう。

17 Name: 名称未設定 [sage] Date: 2009/01/17(土) 18:09:22 ID: nxgihjOe0 Be:
Cocoaでエロゲつくればドザが釣れるかも試練
18 Name: 名称未設定 [] Date: 2009/01/17(土) 19:24:02 ID: /MEyp2B50 Be:
あんなもん画像に合わせて音とテキスト流してるだけだから
作ろうと思えばすぐに作れるだろうな。
19 Name: 名称未設定 [sage] Date: 2009/01/17(土) 20:32:16 ID: b7hUTCNO0 Be:
CoreAnimationまわりのフレームワーク使ったらかなり楽に作れる気はする。

紙芝居的なシロモノだが。
20 Name: 名称未設定 [sage] Date: 2009/01/17(土) 21:04:09 ID: j2Iu8BFS0 Be:
>>19
Flashでええやん、紙芝居ならw
もうすっかり忘れちまったよObjC
21 Name: 名称未設定 [sage] Date: 2009/01/17(土) 21:46:34 ID: 8QKDDPhx0 Be:
>>20
よく考えたら、Windowsのエロゲ程度ならFlashで
作れそうだよな。
22 Name: 名称未設定 [] Date: 2009/01/17(土) 21:49:12 ID: fqNr3t6F0 Be:
Cocoaで書けばAppstoreで金儲け
23 Name: 名称未設定 [sage] Date: 2009/01/18(日) 03:27:46 ID: qnipeswc0 Be:
日本のエロゲー文化が世界に進出する瞬間だな。
24 Name: 名称未設定 [sage] Date: 2009/01/18(日) 04:06:37 ID: 0BtTldEf0 Be:
>>22,23
エロが入るかどうかは知らんが
MOONSTONEがiPod touch/iPhone版Giftを開発中らしい。
が、去年の最初の発表以降情報がないようで(´・ω・`)
25 Name: 名称未設定 [sage] Date: 2009/01/18(日) 04:27:33 ID: 9Du8SxzA0 Be:
あなたの時は止まったままですか?

とっくに出てるみたいだけど>Gift
26 Name: 名称未設定 [sage] Date: 2009/01/18(日) 04:43:16 ID: qnipeswc0 Be:
http://www.moon-stone.jp/index2.html
  2009.01.13 Gift iPhone/iPod touch版発売!!
27 Name: 名称未設定 [sage] Date: 2009/01/18(日) 07:56:36 ID: 0BtTldEf0 Be:
>>25,26
なんと!
MOONSTONEは積極的だな。
そのうち冗談抜きでMac版が来そうだw

でもその前にGiftの製品ページ更新しようよ(´・ω・`)
28 Name: 名称未設定 [] Date: 2009/01/18(日) 10:45:01 ID: tC3ieAbi0 Be:
iPhoneアプリをマックアプリに移植なんて簡単でしょ
29 Name: 名称未設定 [sage] Date: 2009/01/18(日) 11:20:11 ID: b8XPQbTx0 Be:
なら、Macに移植する仕事すれば儲かるんじゃね?
30 Name: 名称未設定 [] Date: 2009/01/18(日) 11:23:24 ID: tC3ieAbi0 Be:
アップルがMacAppStoreを始めればいいのに
31 Name: 名称未設定 [sage] Date: 2009/01/18(日) 11:29:39 ID: 630p3L3w0 Be:
携帯以外のプラットフォームで
ぽっと出の会社が出しても赤字にならないソフトって
そもそもあるか?
32 Name: 名称未設定 [sage] Date: 2009/01/18(日) 11:31:46 ID: BqFofErM0 Be:
MoonStoneなんて、25年待ったって出やしねぇよ!
33 Name: 名称未設定 [sage] Date: 2009/01/18(日) 12:40:30 ID: x/r4yEXa0 Be:
なぜ25年なのか気になる
34 Name: 名称未設定 [sage] Date: 2009/01/18(日) 13:35:55 ID: pcVVaY0/0 Be:
石の上にも25年
35 Name: 名称未設定 [sage] Date: 2009/01/18(日) 15:07:01 ID: lpSD9VBZ0 Be:
XcodeでVisual Studioみたいに例外が投げられた時点で自動的にブレークするにはどうしたらいいですか?
36 Name: 名称未設定 [sage] Date: 2009/01/18(日) 15:25:57 ID: lfTHOEWB0 Be:
スルー&キャッチ
37 Name: 名称未設定 [sage] Date: 2009/01/18(日) 15:39:47 ID: lpSD9VBZ0 Be:
スルーじゃなくてスローですよね。
でもそれだと、どこから飛んできたかが分からないのですが。
38 Name: 名称未設定 [sage] Date: 2009/01/18(日) 15:40:51 ID: qnipeswc0 Be:
スローで投げるオブジェクトで区別したら良いじゃん。
39 Name: 名称未設定 [sage] Date: 2009/01/18(日) 15:57:46 ID: lpSD9VBZ0 Be:
それって大きなプログラムのどこで飛ばしているか、誰が飛ばしているか(自分が発行していない場合もあり得る)
が、分からない状態だと手当たり次第にprintfを挟むのと大して違いがないと思うのですが。

質問の答えとしては「自動的にはブレークできない」ということなんですかね。
40 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:03:34 ID: qnipeswc0 Be:
スローしたら自動的にキャッチに飛ぶわけだから・・・
キャッチがループ外にあれば、自動的にブレイクするでしょ。


まぁキャッチそのものの定義がループ内にあったらブレイクしないけどね。
明示的にブレイクする必要はある。
41 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:10:41 ID: qnipeswc0 Be:
40だけど、自分で言っててなんだけど、
キャッチをループ内に定義するなんてありえないよね・・・・?やるの?

それにどこから飛んできたか分からないっていうなら
dictionaryを放り投げれば良いじゃん。
キーでどこから投げたのかとかいろいろ情報を区別できるんだから。
42 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:17:18 ID: lpSD9VBZ0 Be:
んーと、イベントとか読み書きとか不確定要素が多くて
どこで起きてるか、何が飛んでくるか分からない場合に
少ない手順で発生源を知る方法はないという事ですよね?

極端な話、存在しうる全ての例外を知っていたところで
main()
{
try{
func();
}catch(e_a & e){
}catch(e_b & e){
}catch(e_c & e){
...
...
...
}
}
って全部羅列してられないですし、補足できてもbad_allocみたいな一般的なものだったら
どこで起きてるか全く分からないですし、
例外が起きる行を絞り込んでいって、その行にブレークポイントを置かないと
例外が起きている状態のコールスタックと変数は分からないわけで。
43 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:20:18 ID: lpSD9VBZ0 Be:
連投すみません。
dictionaryをどこに設置するかをどうやって決めるのですか?
44 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:30:57 ID: qnipeswc0 Be:

http://wwwa.dcns.ne.jp/~nito/CocoaClub/article05.html
例外の生成
Objective-Cにおける例外の生成は、NSExceptionのオブジェクトにより行われます。
以下の例では、resultが-1だった時に、@"FooException"という名前を持つ例外をあげています。

- (void)foo
{
if (result == -1) {
[[NSException exceptionWithName:@"FooException"
reason:@"Result returned -1.."
userInfo:nil]
raise];
}
}
この例から類推できるように、CocoaのObjective-C環境における例外クラスはNSExceptionだけで、
Javaがさまざまなサブクラスによって例外を区別しているのとは、趣が違います。
どの例外があがったかを知るには、NSExceptionに設定された例外名などの情報を判定する必要があります。
システムであらかじめ定義された例外名には、以下のものをはじめいろいろあるので、
判定にはそれを使うこともできます。また、自分で例外名を定義する場合は、
頭に"NS"をつけるのは止めましょう。


45 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:32:15 ID: qnipeswc0 Be:
>>42
44でuserInfoにdictionaryを設置する。
46 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:34:41 ID: qnipeswc0 Be:

45は全然、43の答えではないな。

43は具体的にどういうこと?
47 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:45:28 ID: lpSD9VBZ0 Be:
dictionaryの設置箇所が分かっているなら既に当たりを付けた後じゃないかなと。
無論、最初から全ての箇所でdictionaryを投げるように書いておけばいいんでしょうけど。

あと、C++を使う事の方が多いので42ではbad_allocと書きましたが
NSExceptionにしたってシステムが出す例外は場所の特定がしづらいですよね。
48 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:50:14 ID: qnipeswc0 Be:


システム自体が出す例外ってかなり特殊ですよね・・・・。
僕もこいつらがどんな例外情報を送ってれるのかしらないけど、
nameとかresonとかだけでは特定できないのかな?
49 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:53:13 ID: xDMM8zcg0 Be:
流れがよく分からんが、-[NSException raise]にブレークポイントを設定するんじゃ駄目なの?
50 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:54:18 ID: lpSD9VBZ0 Be:
!!
51 Name: 名称未設定 [sage] Date: 2009/01/18(日) 16:58:06 ID: qnipeswc0 Be:
>>49
そんなクラスメソッドなんてあったけ?

raiseって例外を明示的に発生させるインスタンスメソッドだよね。
+ raise:format:
+ raise:format:arguments:
どちらかと勘違いされているのですか?
52 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:01:46 ID: xDMM8zcg0 Be:
>>51
…シンボリックブレークポイント使ったことないのかな?
(特定のクラスの)特定のメソッドが呼ばれたときにブレークするには、シンボリックブレークポイントの追加でこういう風に入力するの。
インスタンスメソッドなら-、クラスメソッドなら+。
53 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:02:08 ID: lpSD9VBZ0 Be:
今更過ぎですが>>49を呼んで試してみたらNSExceptionはobjc_exception_throwを呼んでいて、
こいつは__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__を呼んでいて、
その中でint3(ブレーク)してますね。

つ、ついでにC++で自動的にブレークする方法も分かったりしないでしょうか?
スレ違いかな。
54 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:06:52 ID: lpSD9VBZ0 Be:
メニューの[実行]->[ブレークポイントを管理]->[C++ 例外のブレークポイントを追加]ダイアログで
[すべての例外]というチェックボックスがありました。

大変お騒がせし、スレを汚してしまい申し訳ありませんでした。
でもこの一連の流れのおかげでNSExceptionとXcodeの理解が深まりました。
55 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:12:01 ID: qnipeswc0 Be:
>>52
へぇー、今度試してみます。
cocoa referenceで
breakはインスタンスメソッドで例外にジャンプするってあったから
なんでクラスに対してメッセージを送信するんだろうって思いました。

それならクラスメソッドの以下のメソッドじゃないのかって・・・・。
56 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:14:07 ID: qnipeswc0 Be:
55、breakじゃなくてraiseですね。

これクラスにいっぺん送ってみます・・・・。
質問主さんは解決されたみたいだけど、僕は?????状態っす。
57 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:32:11 ID: xDMM8zcg0 Be:
>>55,56
あ、いやこれメソッドの実行じゃないのよ。
特定の関数とか特定のメソッドを呼び出したところでブレークするために、
自分で書いたソースコードの行とかじゃなくて、関数名やメソッド名そのものをブレークポイントとして使うの。
「実行」>「ブレークポイントを管理」>「シンボリックブレークポイントを追加」して、ダイアログに入れる内容が>>49

デバッガとしては多分そのメソッドの名前、クラス、クラスメソッドかインスタンスメソッドかどうか、の情報があればいい。
それを指定するための文法が>>49みたいになってるってだけで、Obj-Cの文法とは別。

ていうかXcodeのマニュアルちゃんと読もうぜ皆。
58 Name: 名称未設定 [sage] Date: 2009/01/18(日) 17:49:23 ID: qnipeswc0 Be:
>>57さん、ありがとう。
そうなのか。
結構ブレイクポイント使用するけど、そこまで考えたこと無いわ。

で、その回答で質問主さんが解決された意図がわかりました。

デバック目的で例外処理を利用しようとしていたんですね。?

それで、スローで投げてきても「発生源がわからない」、これなんとかならんのか?
42のように細かく書かんといかんのか?ってことになっていって

で、>>49で「いやブレークポイントを設定すれば、エラー発生時にどこでエラー発生しているか
わかるでしょって」ことで
>>50で解決したのか・・・・・・・・・・・・・・・・。

そうですよね?
59 Name: 名称未設定 [sage] Date: 2009/01/18(日) 18:03:01 ID: lpSD9VBZ0 Be:
いえ、多分最初の理解で合ってるんじゃないかと思います。

デバッグのために今から例外投げるプログラムを書くのであれば
printfを挟むのに感覚が近いですがそうではなくて、
もともとあるプログラムのどこからか例外が投げられた時に
そこで止まってくれないかな、というのが元々の発想です。

で、NSExceptionは特別な事をしなくても勝手に止まってくれるようになっていましたので
多分-[NSException raise]をブレークポイントに追加しなくてもいいはずです。

C++は>>54をONにする事で勝手に止まるように出来ました。
60 Name: 名称未設定 [sage] Date: 2009/01/18(日) 18:05:06 ID: lpSD9VBZ0 Be:
>>58が発生源が分からないエラーの発生場所を特定するという理解
をしていただいたのであれば、その通りです。
61 Name: 名称未設定 [sage] Date: 2009/01/18(日) 18:13:17 ID: ZuNSxY880 Be:
なんだこのグダグダな流れ...

>>57
>ていうかXcodeのマニュアルちゃんと読もうぜ皆。

そういう自分も Leopard 上のマニュアル(リリースノート)を読んだ方がいいな。
Leopard を使ってないなら仕方ないかもしれんが。
62 Name: 名称未設定 [sage] Date: 2009/01/18(日) 18:46:39 ID: xDMM8zcg0 Be:
>>61
-[NSException raise]だと@throwで投げた例外はキャッチされないからobjc_exception_throw使えってことか。
サンクス。
63 Name: 名称未設定 [sage] Date: 2009/01/18(日) 20:30:54 ID: kMPqyzsk0 Be:
久しぶりにCocoaを触ってCoreDataとか新しく追加されたAppkitとか触ったら
昔何日も徹夜して作ったようなものがコード一行もなしに動いて
秋葉原で涙する元KGBスパイみたいな気分になった。
64 Name: 名称未設定 [sage] Date: 2009/01/19(月) 01:07:41 ID: QeooMR930 Be:
Key pathとかkey-value observing面白そうだけど何しているのかいまいちしっくりこない。
これあえて自分で使う事ってあるのかな?
65 Name: 名称未設定 [sage] Date: 2009/01/19(月) 01:22:16 ID: WxEnXMt70 Be:
同じようなことを実現するだけなら自前でももっと簡単なやり方があるだろうけど
大枠をbindingで作ってる場合、細かくいじる必要がある自作クラスを
key-value-coding準拠で作っておけば、全体のbindingの連携に組み込めるという話
66 Name: 名称未設定 [sage] Date: 2009/01/19(月) 01:36:07 ID: QeooMR930 Be:
なんとなく分かったような気がします。でも自分の書いているどんな処理をあえてそれに
当てはめた方がよいかと考えるとあまり思いつきませんけど。理解しなければCocoa
プログラミングできないというものでもなさそうなのでしばらくはスルーしておいても
良さそうですね。
67 Name: 名称未設定 [] Date: 2009/01/19(月) 01:41:12 ID: 9T/jZU8v0 Be:
bindingで一番効果が発揮するのはtableViewかな。
ぶっちゃけIBだけでコーディングできるし。
これを知ったとき、あのデータソースをつかって、
どうやって目的のセルに値を表示させることが出来るのか格闘していた自分が
惨めにおもえた。

このときの経験は、後々すごく役にたったけど。
68 Name: 名称未設定 [sage] Date: 2009/01/19(月) 01:53:58 ID: k1KJxZ8q0 Be:
便利だけど確かBinding、ていうかNSArrayControllerがスレッドセーフじゃないから困ったこともあるなぁ
あと、いろいろ自動でやってくれる新しいAPIって便利だけど重いんだよなぁ
69 Name: 名称未設定 [] Date: 2009/01/19(月) 03:24:53 ID: 9T/jZU8v0 Be:
たしかに、間に余分な物をはさむ分遅くなるしね。
70 Name: 名称未設定 [sage] Date: 2009/01/19(月) 14:52:03 ID: j0GQl9c30 Be:
ところでみんなNSArrayとSTL、どういう使い分けしてる?
STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。
71 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:05:47 ID: TXDBp2F00 Be:
>>70
STLってなに?
72 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:19:02 ID: 0IPPfgoR0 Be:
>>71
リーゼントのorz
73 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:20:17 ID: fO6WFzd+0 Be:
S: すばらしきかな
T: テンプレート
L: ライブラリーよ!
74 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:33:20 ID: FKWl3JcY0 Be:
>>70
>STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。
NSArray をサブクラス、とか言っている時点で Objective-C の素人さんですね。
http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_9.html
の Class Cluster の説明を読みましょう。
NSArray は配列の性質によって alloc init の結果が違うクラスになるのを
隠蔽しているので、知らずにサブクラスをするとおかしくなります。
だから機能を追加したいときはカテゴリを使います。
http://journal.mycom.co.jp/column/objc/032/index.html
http://jay.tuley.name/archives/2006/03/08/Class-Clusters
http://borkware.com/rants/agentm/collection-subclassing/
あたり参照。

Cocoa の Foundation のコレクションクラス一般の C++ 等との違いは
http://ridiculousfish.com/blog/?p=27
が詳しい。STL と NSArray の比較もあるよ。
75 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:46:31 ID: j0GQl9c30 Be:
>>74
機能というより異なるインスタンス変数をそれぞれ持たせたければサブクラス化するしかないんでないの?
↓以下Aを持つArrayA Class , Bを持つArrayB Class というように。
//A
typedef struct {
float y;
float x;
float z;
} float3;


//B
typedef struct {
int vert0,vert1,vert2;
}

カテゴリで追加する手法ならうちもfirstObject程度はやってるけど、それだともちろんNSArrayとしか振る舞わないからね。
NeXTやってた頃はBigNumberとかExtentとかST80近似に作ってprimitiveもNSArrayに入れるようにしてたけど、今はSTLあるからね・・
みんなどう工夫してるのか知りたかったのさ。
76 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:51:26 ID: TXDBp2F00 Be:
>>75
NSArrayはid型のものを入れるのにしか使わないから、どうしてもそういう構造体とか基本型入れるんなら
NSValue使って入れてる。この場合NSArrayのサブクラスは必要ないよね。

NSArrayを使わないんならCの配列やそのSTLとかいうので間に合うでしょ。
どっちの場合もNSArrayのサブクラスは必要ないと思うんだけど。
77 Name: 名称未設定 [sage] Date: 2009/01/19(月) 15:52:44 ID: FKWl3JcY0 Be:
それは失礼。こちらは日曜プログラマなので
C / C++ のオブジェクトなら STL,
Obj-C のオブジェクトなら NSArray で済ませてました。
そういう純粋 struct を NSArray (もしくはそのサブクラス)
にいれる利点はほとんどないんでは?

逆に id を STL にいれると retain カウントがおかしくなるのでどうしようと
おもっていて、これを機にしらべてみたら
http://lists.apple.com/archives/cocoa-dev/2008/Mar/msg01649.html
なんてのがありました。賢い。
78 Name: 名称未設定 [sage] Date: 2009/01/19(月) 16:16:11 ID: j0GQl9c30 Be:
>>76-77
>NSArrayのサブクラスは必要ないと思うんだけど
もちろん大抵はそうだよね。
ただtraverseでパフォーマンスを得なければならない場合が極稀にあるもので・・
そういう場合はid型じゃ困るんよ。
id型で済むのであればNSValueなりNSNumber、あるいはNSObjectから派生させたものを突っ込めばいいし、機能はカテゴリで増やせばいいってことなんだけどさ。

STLはvector<set<int> >とかとっても有り難いんだけど、set間の論理演算がないから書かなきゃいけないとか不満な所はそれなりにあるよ。
NSArray系は集合を扱うものがなかったと思うのでこれらもちょっと。

ま・・問題点とかというよりも普段みんなどんな使い分けをしてるか参考にしてみたい。
79 Name: 名称未設定 [sage] Date: 2009/01/19(月) 16:21:50 ID: TXDBp2F00 Be:
>>78
集合は普通NSArrayじゃなくてNSSetを使うよね?
パフォーマンスを得たい場合には直接配列をいじればいい。使い分けつってもそれくらいしか思いつかないな。
80 Name: 名称未設定 [sage] Date: 2009/01/19(月) 16:25:01 ID: j0GQl9c30 Be:
>>79
NSSetがあるとは知らなかった
あとでちょっと使ってみる。

ただ集合扱うのにNSArrayをset的に~って話ではないんだよ、もちろん。
81 Name: 名称未設定 [sage] Date: 2009/01/19(月) 16:37:32 ID: Vvone4rF0 Be:
おれもどうしてもパフォーマンスが欲しけりゃCで書くよ。 たとえば>>75にあるようなのはCで書くし、Cocoaでもシビアなところはそうしてる。 たとえばNSFontのgetBoundingRects:forGlyphs:count:は構造体配列を渡すようになってるでしょ。
82 Name: 名称未設定 [sage] Date: 2009/01/19(月) 16:53:09 ID: 0UmyVXJW0 Be:
NSCodingプロトコルのencodeWithCoderっていつ呼び出されるんですか?
83 Name: 名称未設定 [sage] Date: 2009/01/19(月) 16:57:56 ID: 0IPPfgoR0 Be:
>>82
NSCoderが何をする物かを理解すれば分かると思うよ。
84 Name: 名称未設定 [sage] Date: 2009/01/19(月) 17:09:27 ID: 0UmyVXJW0 Be:
>>83
その回答でわかりました。
85 Name: 名称未設定 [sage] Date: 2009/01/19(月) 17:16:39 ID: suWeNgYM0 Be:
NSNotification と KVO についての質問です。単純にある値を監視したい
とき、どっちの方が軽い処理なんでしょう?例えば単純に、Hoge の
インスタンス変数 BOOL foo を監視するような場合です。
Notification 使う場合は NSNotification を作ったり、通知対象を探すのに
時間かかりそうかなぁ?と思っているので、KVOの方が軽そうな印象を
持っているのですが。詳しい方、お教えください。
86 Name: 名称未設定 [sage] Date: 2009/01/19(月) 17:47:25 ID: iFBtkqAI0 Be:
setterをトラップするだけだから、observingに一票。
87 Name: 名称未設定 [sage] Date: 2009/01/19(月) 19:15:14 ID: suWeNgYM0 Be:
>>86
あ、やっぱりそう思われます?こんな場面でパフォーマンス稼ごうという気に
なっている訳ではないのですが…何か気になって(笑
どうもありがとうございました。
88 Name: 名称未設定 [sage] Date: 2009/01/19(月) 23:51:03 ID: 4VVsl/ct0 Be:
NSMutableDictionaryのsetValueとsetObjectってどう違うのでしょうか?
自作のPGではsetValueとvalueForKey、setObjectとobjectForKeyのペアで
どちらを使用してもうまく動くのですが。
89 Name: 名称未設定 [sage] Date: 2009/01/19(月) 23:57:13 ID: OBOP0rKe0 Be:
>>88
両方同じとリファレンスに書いてある。
以前は、setObjectとobjectForKeyしかなかったが、10.3でKVCのサポートが強化されたときにsetValueとvalueForKeyが追加された。
90 Name: 名称未設定 [sage] Date: 2009/01/20(火) 00:13:33 ID: 1geMWJWK0 Be:
>>88
>どちらを使用してもうまく動く

100%同じ挙動と思うと落とし穴あるぞ。NS(Mutable)Dictinaryのドキュメントよく読んだ方がいい度
91 Name: 名称未設定 [sage] Date: 2009/01/20(火) 01:07:44 ID: Qn/CmdU10 Be:
>>89
>両方同じ

[hoge setObject:nil forKey:@"uge"];→例外発生
[hoge setValue:nil forKey:@"uge"];→[hoge removeObjectForKey:@"uge"];
92 Name: 名称未設定 [sage] Date: 2009/01/20(火) 09:54:55 ID: J4NUz8bNi Be:
setNilValueForKey:
setValueForUndefinedKey:

とかもみるといいも。
93 Name: 名称未設定 [sage] Date: 2009/01/21(水) 00:49:27 ID: em2Uj4bF0 Be:
>>88です。
大変良くわかりました。ありがとうございます。
nilが入る可能性がある場合はとりあえずsetValueの方が良いのですね。

94 Name: 名称未設定 [sage] Date: 2009/01/21(水) 10:27:15 ID: 6tJD085I0 Be:
>>93
>nilが入る可能性がある場合はとりあえずsetValueの方が良いのですね。
違います。それだと値として nil を設定したい場合に setValue では、エントリが
削除されてしまうので、できないでしょ。ドキュメントではこの場合には
NSNullを使え、とあります。その辺りもちゃんと理解した方が良いかと。
nil が入る可能性うんぬん、ではなくエントリを削除したい場合に、
removeObjectForKey: のつもりで setValue:nil forKey:key を使うのです。
とりあえず NSMutableDictionry を理解し、そのKVCを理解するまでは、
setObject:forKey:を使う事をお勧めします。
95 Name: 名称未設定 [sage] Date: 2009/01/21(水) 12:33:25 ID: 52b1vsc70 Be:
なるほど、それではsetObjectを使うことにします。
96 Name: 名称未設定 [] Date: 2009/01/21(水) 16:00:24 ID: GWqklfd70 Be:
receiver となる instance の変数名を文字列で得てNSLogに表示したいのですが、
ivar_getName というのを使うのでしょうか? どうやるのでしょうか?
97 Name: 名称未設定 [sage] Date: 2009/01/21(水) 22:50:26 ID: tu4Rz/My0 Be:
>>96
やったことはないけど、objc2.0のリファレンスを見た感じでは。
Class class = [receiver class];
で、クラスオブジェクトを取得してから、
unsigned int outCount;
IVar* ivars = class_copyIvarList(class, &outCount);
で、インスタンス変数の配列を取得して、
char* name = ivar_getName(ivars[0]);
で、C文字列形式の変数名を取得する。
といったところかな。
98 Name: 名称未設定 [sage] Date: 2009/01/21(水) 23:06:24 ID: Aw/6XBfV0 Be:
>>88
>>93

でもいい質問だよ。
時間あったらKeyValueCodingについても調べてみてね。いずれsetValue:forKey:、valueForKey:をがんがん使うことになると思うよ
99 Name: 名称未設定 [] Date: 2009/01/22(木) 19:14:22 ID: ZpfLBz0W0 Be:
reference見れば,同じことがマンマ書かれているぞ。
100 Name: 名称未設定 [sage] Date: 2009/01/22(木) 19:24:05 ID: 7zOJ1PPW0 Be:
>>99
書いてあってもどうせ見る気ないんだろうから
レスしてやるだけ無駄だと思うぞ。

リファレンスに書いてあるような事をわざわざ質問してくるような馬鹿は
放置でいいと思うんだが、みんな優しいなぁと。
101 Name: 名称未設定 [] Date: 2009/01/22(木) 21:09:13 ID: Eb57WDtu0 Be:
おまえもおれもな
102 Name: 名称未設定 [sage] Date: 2009/01/23(金) 00:06:20 ID: Ai0xcuBl0 Be:
じゃあおれも
103 Name: 名称未設定 [sage] Date: 2009/01/23(金) 00:08:10 ID: GtS9tfT90 Be:
いやいや。俺も入れてくれよ。
104 Name: 名称未設定 [sage] Date: 2009/01/23(金) 01:30:11 ID: PZGWGn2f0 Be:
みんな最初は馬鹿だった
105 Name: 名称未設定 [sage] Date: 2009/01/23(金) 02:56:43 ID: DgTEvzZj0 Be:
最初は人に聞く前に調べるもんだ
106 Name: 名称未設定 [sage] Date: 2009/01/23(金) 09:06:11 ID: Ngn6b8eA0 Be:
>1
今気付いたけど、次が抜けてるな。
>初心者は教えてくれる方への感謝を忘れずに。
>上級者も初心者だった頃の気持ちを忘れずに。
107 Name: 名称未設定 [] Date: 2009/01/23(金) 09:51:17 ID: ZxnL70JI0 Be:
>>97 さん ありがとうございます。
[receiver receiverName] とやると'receiver'が得られる様な簡単な方法あると便利なんですが。
108 Name: 名称未設定 [sage] Date: 2009/01/23(金) 10:35:33 ID: xhdOSqSx0 Be:
>>105
最近は自分で調べるのがマンドクセー時代なんだよきっと
109 Name: 名称未設定 [sage] Date: 2009/01/23(金) 10:54:18 ID: My/P55Nt0 Be:
同時に人を育てようとしない時代とも言える。
>>106の気持ちが大切。
110 Name: 名称未設定 [sage] Date: 2009/01/23(金) 14:13:39 ID: VXuYipkz0 Be:
>>107
それって、receiverのクラス名が欲しいってこと?
NSStringFromClass([receiver class]);
111 Name: 名称未設定 [sage] Date: 2009/01/23(金) 16:08:21 ID: +ZnAyY+C0 Be:
>>110
>>107はローカル変数名が欲しいんじゃないかという悪寒がする。
デバッガ使えってことじゃね?
112 Name: 名称未設定 [sage] Date: 2009/01/23(金) 16:16:43 ID: pSjXfnZJ0 Be:
何のためにどのように使うのかワカンネから誰も的確な答えは出来ないでしょ

自分のインスタンス変数とかなら
#define HOGE_NAME(v) ##v
printf("%s --> %d\n", HOGE_NAME(foo) , foo);
でもいいし。
113 Name: 名称未設定 [] Date: 2009/01/23(金) 18:13:42 ID: ZxnL70JI0 Be:
>>107 です。すみません。ローカルなインスタンス変数をデバッグの一環として
リストアップしてモニタしたいという時に、その変数の値と同時に、その名前も表示
できたら便利だと思ったのです。>>111 >>112 さんのおっしゃる意図です。>>112
の方法を知りませんでした。試してみます。必要なヘッダファイル等あるのでしょうか?
114 Name: 名称未設定 [sage] Date: 2009/01/23(金) 18:19:34 ID: eHn0Trda0 Be:
普通にデバッガで見られるじゃん。
115 Name: 名称未設定 [] Date: 2009/01/23(金) 18:24:53 ID: ZxnL70JI0 Be:
どうやるのでしょうか?参考になるキーワードは何でひくと良いでしょう。
初歩的な問題なんですね。すみません。
116 Name: 名称未設定 [sage] Date: 2009/01/23(金) 18:30:55 ID: eHn0Trda0 Be:
>>115
まさかXcodeで「デバッガ」を使ったことがないというのか?
デバッガだぞ。デパ地下じゃなくてデバッガ。
117 Name: 名称未設定 [] Date: 2009/01/23(金) 19:41:41 ID: AZUY41n6O Be:
Cプリプロセッサの#だな。
char* rn=#変数名;

まあ、デバッガの使い方覚えたほうが百倍有益だが。
118 Name: 105 [sage] Date: 2009/01/23(金) 22:19:09 ID: DgTEvzZj0 Be:
>>106
私も初心者です
119 Name: 名称未設定 [sage] Date: 2009/01/23(金) 22:26:30 ID: 0/Pk3m510 Be:
僕は小心者です
120 Name: 名称未設定 [sage] Date: 2009/01/23(金) 22:28:40 ID: 8Os1ry6Y0 Be:
僕は小遊三です。
121 Name: 名称未設定 [sage] Date: 2009/01/23(金) 23:57:37 ID: Ai0xcuBl0 Be:
僕は小鳥遊です
122 Name: 名称未設定 [sage] Date: 2009/01/24(土) 01:10:50 ID: vLaJQL7q0 Be:
僕は小円遊です
123 Name: 名称未設定 [sage] Date: 2009/01/24(土) 01:11:50 ID: ubqtwZr30 Be:
僕は円形ハゲです
124 Name: 名称未設定 [] Date: 2009/01/24(土) 01:17:48 ID: C7l3u5Cn0 Be:
僕はハゲです http://www.computerworld.jp/images/_main/200807/1143291.jpg
125 Name: 名称未設定 [] Date: 2009/01/24(土) 03:35:40 ID: 4NMkVpLa0 Be:
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
126 Name: 名称未設定 [] Date: 2009/01/24(土) 06:01:13 ID: de117D7I0 Be:
25にして前髪が気になりだした・・・・・
もう禿げを笑えない。

俺の前では誰も禿を馬鹿にさせない!

プログラマーって若禿の割合ってどれくらいなのかな?
皆さんの周りは大丈夫っすか?
127 Name: 名称未設定 [] Date: 2009/01/24(土) 12:52:51 ID: kU43svfh0 Be:
QTKitについて初学者なのですが,質問です。
勉強のため,コマンドラインから音楽ファイルを再生したいのですが,うまくいきません。
ttp://developer.apple.com/jp/technotes/tn2004/tn2138.html
ttp://developer.apple.com/samplecode/QTKitCommandLine/index.html
参考にこのようなものを書きました。

#import <QTKit/QTKit.h>
int main ()
{
NSError* movieError = nil;
QTMovie* movie;
NSString* filePath = nil;
filePath = @"/Users/mini/Desktop/sample.mp3";
NSLog(@"path = %@", filePath);

movie = [[QTMovie alloc] movieWithFile:filePath error:&movieError];
[movie setVolume:1.0];
[movie play];
[movie release];
}

でgcc -o study -g study.m -framework QTKit -framework Foundationのコンパイルは問題ありませんが,
./studyとしてもエラーを出して再生されません。
*** _NSAutoreleaseNoPool(): Object 0x11b500 of class __NSCFDate autoreleased with no pool in place - just leaking
Stack: (0x95bf665c 0x95b23810 0x95b67524 0x92d4e120 0x92d4e008 0x91ccaab4 0x91cc9010 0x91cdb0c8)
が10ぐらいでます。
*** -[QTMovie movieWithFile:error:]: unrecognized selector sent to instance 0x11cd60というのもあります。
よろしくおねがいします。
環境は10.5.6です
128 Name: 名称未設定 [sage] Date: 2009/01/24(土) 12:55:27 ID: T3GSIXO90 Be:
[ movie release]を外せ
129 Name: 名称未設定 [sage] Date: 2009/01/24(土) 13:19:01 ID: UuMn6FBr0 Be:
#import <QTKit/QTKit.h>
BOOL didFinished = NO;
@interface Hoge : NSObject
@end
int main () {
NSError* movieError = nil;
QTMovie* movie;
NSString* filePath = nil;
filePath = @"/Users/mini/Desktop/sample.mp3";
NSLog(@"path = %@", filePath);
id pool = [[NSAutoreleasePool alloc] init];
id hoge = [[Hoge alloc] init];
movie = [QTMovie movieWithFile:filePath error:&movieError];
id nc = [NSNotificationCenter defaultCenter];
[nc addObserver:hoge selector:@selector(hoge:) name:QTMovieDidEndNotification object:movie];
[movie setVolume:1.0];
[movie play];
id ct = [NSThread currentThread];
while(!didFinished) [ct sleepForTimeInterval:0.1];
[pool release];
}
@implementation Hoge
- (id)hoge:(id)notification{ didFinished = YES;}
@end

コンパイルも何にもしてません。ランループ回してないからちゃんと動くかは不明。
130 Name: 名称未設定 [sage] Date: 2009/01/24(土) 13:22:41 ID: UuMn6FBr0 Be:
>127 のおかしな点

movie = [[QTMovie alloc] movieWithFile:filePath error:&movieError];
movieWithFile:error: はクラスメソッド。
さらにこのメソッドはNSAutoreleasePoolが居ないとだめです。

[movie release];
鳴らすためのものを捨てちゃダメでしょ。

鳴らしてる途中でツール自体を終了しちゃダメでしょ。

131 Name: 名称未設定 [sage] Date: 2009/01/24(土) 13:25:49 ID: UuMn6FBr0 Be:
あれ?
ごめん。
sleepForTimeInterval: はクラスメソッドだったわw
人の事言えねえwww
132 Name: 127 [] Date: 2009/01/24(土) 14:28:28 ID: kU43svfh0 Be:
>>128~131
どうもありがとうございます。
そもそも別のスレッドで再生する仕組みになっているとは知りませんでした。
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSError* movieError = nil;
QTMovie* movie;
[pool addObject: movie];
NSString* filePath = nil;
filePath = @"sample.mp3";
movie = [[QTMovie alloc] initWithFile:filePath error:&movieError];
QTTime theTime = [movie duration];
NSValue* qtValue = [NSValue valueWithQTTime: theTime];
NSLog(@"%@", QTStringFromTime([qtValue QTTimeValue]));
[movie setVolume:1.0];
[movie play];
sleep(15);// 15秒程のサウンドファイルなので
[pool release];
と書き換えてみたところエラーがでなくなりました。
とはいえ再生が完全でない(初めの数秒しか再生されない)ので,
もう少し調べてから,お知恵を拝借したいと存じます。
133 Name: 名称未設定 [sage] Date: 2009/01/24(土) 14:32:23 ID: KAvNfK720 Be:
Movieの読み込みは非同期です。
再生前に、Movieがきちんと読み込み終わるまで待つ必要があります。
134 Name: 名称未設定 [sage] Date: 2009/01/24(土) 14:35:14 ID: qTQC8jca0 Be:
[pool addObject:movie];
はおかしいですよ。その時点では movie にはいってるのはガラクタなので、
そんなのを登録してもだめです。alloc init のあとでしないと。
さらに、pool には普通自分で addObject しちゃだめです。
movie = [[QTMovie alloc] init...]
のあとに、
[movie autorelease]
とすると自動で適切な autorelease pool に登録してくれます。

あと、
QTTime theTime = [movie duration];
NSValue* qtValue = [NSValue valueWithQTTime: theTime];
NSLog(@"%@", QTStringFromTime([qtValue QTTimeValue]));
はなんか無駄な気がする。なんで NSValue につめてからまた取り出してるの?
単に QTStringFromTime(theTime) でいいのでは。
135 Name: 名称未設定 [sage] Date: 2009/01/24(土) 15:40:51 ID: iC4toJH20 Be:
#import <Cocoa/Cocoa.h>
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

NSString *path = @"/test.aif";
NSSound *sound = [[[NSSound alloc] initWithContentsOfFile:path byReference:YES] autorelease];
[sound play];
[NSThread sleepForTimeInterval:[sound duration]];

[pool drain];

と思ったらQTKitの勉強だったか、、吊ってくる
136 Name: 名称未設定 [sage] Date: 2009/01/24(土) 15:42:58 ID: ocqxJVJ40 Be:
QTKitってrunLoop回さなくていいの?
137 Name: 名称未設定 [sage] Date: 2009/01/24(土) 16:27:03 ID: 6oIPn9ie0 Be:
NSMedataItemからファイルパスを取り出すのってどうやればいいの?
attributesの中にそれっぽいのがないんだけど
138 Name: 名称未設定 [sage] Date: 2009/01/24(土) 16:34:43 ID: iC4toJH20 Be:
int main () {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

NSString *path = @"/test.aif";
QTMovie *movie = [QTMovie movieWithFile:path error:nil];
[movie play];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:15]];

[pool drain];
return 0;
}

これでおk。くそ、コマンドラインってとこでハマったわ。
139 Name: 名称未設定 [sage] Date: 2009/01/24(土) 16:42:38 ID: iC4toJH20 Be:
>>137
ファイルのメタデータにファイルパスは入ってない
140 Name: 名称未設定 [sage] Date: 2009/01/24(土) 16:50:53 ID: 6oIPn9ie0 Be:
>>139
どうもです。
じゃあNSMetadataQueryを使って検索した結果からファイルパスは得られないのかな?
141 Name: 名称未設定 [sage] Date: 2009/01/24(土) 16:54:24 ID: iC4toJH20 Be:
あれ、kMDItemPathってのがあるかも
それかQueryの方から得られると思う
昔作ったサンプルプロジェクトが見当たらなくて明確な回答ができません
142 Name: 名称未設定 [sage] Date: 2009/01/24(土) 17:04:07 ID: iC4toJH20 Be:
このへん読んで
http://developer.apple.com/technotes/tn2007/tn2192.html
143 Name: 名称未設定 [sage] Date: 2009/01/24(土) 17:57:51 ID: 6oIPn9ie0 Be:
>>141-142
どうもありがとうございます。kMDItemPathで得ることができました。
-attributesで得られるキーの配列のなかにkMDItemPathは入ってなかったので・・・
144 Name: 名称未設定 [sage] Date: 2009/01/24(土) 19:10:48 ID: TBOq/xmI0 Be:
すみません。
このようなケースの場合、どのように組めば(調べれば)いいのか教えて下さい

(1) 2つのウィンドウA、Bがあり、それぞれ共通のアクションがある(例えばNSTableViewで選択したリストの情報を見るなど)
(2) メインメニューで(1)のアクションを起動するメニューアイテムを定義する(例えば「Show Info」など)
(3) (2)のメニューアイテムからアクティブなウィンドウの方のアクションを起動したい
(4) (2)のメニューアイテムでアクティブなウィンドウの方の状態((NSTableViewで選択されているかなど)から
enable/disableを設定したい

(1)でA、Bのウィンドウに対してコントロールするクラスA、Bを記述してインスタンス化、
それぞれのインスタンスA、Bにアクションが定義されています。
145 Name: 名称未設定 [sage] Date: 2009/01/24(土) 19:27:59 ID: iC4toJH20 Be:
とりあえずResponderChainとFirstResponderと調べてみ
146 Name: 名称未設定 [] Date: 2009/01/24(土) 20:29:45 ID: P3BnVaEO0 Be:
C の実数配列を4次元ベクトルと見立て、インスタンス変数として持ち、簡単なベクトル演算をメソッドに定義した
クラス V をNSObject を継承して作り、別途、ベクトル計算をするクラスを作ってクラス V インスタンス生成し利用
した後、このベクトルのインスタンス解放をする段でクラス V の dealloc が呼ばれると思います。
この クラス V での dealloc の実装は [super dealloc]; のみで良いのでしょうか?
147 Name: 名称未設定 [sage] Date: 2009/01/24(土) 20:55:48 ID: /5n08FiC0 Be:
>>146
前レスでも話題になったけど、
基本的にはVクラスでallocして作成したインスタンスは
deallocで明示的にreleaseしておく。

148 Name: 名称未設定 [sage] Date: 2009/01/24(土) 21:04:57 ID: /5n08FiC0 Be:
>>147は正確ではないな。

他のクラスを参照しているインスタンス変数をdeallocで明示的にreleaseだな。

なぜならVクラスが解放されても、参照されている他のクラス自身は分からないからね。
必要がなくなったにもかかわらず、ずっと保持されてしまうことになる。
そうすることでリークを起こす可能性もあるわけだし・・・・・今はそんなことは無いかな?
149 Name: 名称未設定 [] Date: 2009/01/24(土) 21:15:13 ID: P3BnVaEO0 Be:
V クラスでは、基本演算(四則演算等)メソッドのみなので、計算結果をVクラスインスタンで使うのは、
メソッドの引数と返り値のみです。実際の演算は、別途のクラス(Wとします)で、Vクラスのインスタンス
をallocで生成して行います。この場合、Wクラスで生成したVのインスタンスはreleaseするのは分かるん
ですが、そのとき呼ばれる V の dealloc は、演算メソッドで引数に使った自分自身のインスタンス変数や
メソッド返り値のみです。これらも [aVector release]; [rVector release]; みたいにして V の dealloc 中
に記述するのでしょうか? という意味です。
150 Name: 名称未設定 [sage] Date: 2009/01/24(土) 21:26:06 ID: /5n08FiC0 Be:
>そのとき呼ばれる V の dealloc は、
>>演算メソッドで引数に使った自分自身のインスタンス変数やメソッド返り値のみです。

WクラスでVクラスをreleaseしたからってVクラスのdeallocが呼び出されるってわけでないけど、
Vクラスで他のクラスを参照しているインスタンス変数がないならば、
わざわざdeallocをオーバーライドして定義しておく必要なんてないんじゃない?

まぁ前スレでは基本的にはallocもしくはretainされたインスタンス変数はそこでreleaseして
参照カウンタを1減らしておくとかいう結論だったはず。
151 Name: 名称未設定 [sage] Date: 2009/01/24(土) 21:40:51 ID: YxulMnGO0 Be:
>>146
クラスVはインスタンス変数に他のオブジェクトを持っていないんだから、dealloc時にreleaseするものがそもそもない。
可変長配列をmallocなんかで作ってるんならfreeとかを入れるだろうけどね。
152 Name: 名称未設定 [sage] Date: 2009/01/24(土) 23:08:25 ID: P3BnVaEO0 Be:
皆さんありがとうございます。
クラスVは、インスタンス変数として、Cの実数変数だけしか持っておらず、他のクラスのオブジェクトは
無いし、メソッド実装に使われている引数、変数、返り値もやはりクラスV 以外のモノも無いので、dealloc
をオーバーライドする必要がないから、dealloc の記述は不要、という理解で良いのですね。

あと、ベクトルを表現するクラスVのような場合、メソッドの返り値はインスタンスのコピーを返す(渡す)
というのが適切という事でよいのでしょうか?
153 Name: 名称未設定 [sage] Date: 2009/01/24(土) 23:16:13 ID: /5n08FiC0 Be:
C言語では配列を返す関数はないからね。
オブジェクティブ指向から考えても、それでいいと思う。
154 Name: 名称未設定 [sage] Date: 2009/01/24(土) 23:28:51 ID: YxulMnGO0 Be:
ていうか4次元ベクトル固定なら構造体使えばいいじゃん。
俺は詳しくないけど、物理シミュレーションかなんかに使うならそういうベクトル演算のライブラリあるよね。
155 Name: 名称未設定 [sage] Date: 2009/01/24(土) 23:44:57 ID: d+Teu/bB0 Be:
ソース無いとなんのこっちゃなのかよくわからん
156 Name: 名称未設定 [sage] Date: 2009/01/25(日) 01:31:52 ID: bQWMzZr30 Be:
>あと、ベクトルを表現するクラスVのような場合、メソッドの返り値はインスタンスのコピーを返す(渡す)
>というのが適切という事でよいのでしょうか?

ここいらがよく理解できてません。一応動くソースではあるのですが、心得がないせいで時折全く不明な
停止状態になります。もう少し勉強して出直します。ありがとうございました。少し頭が整理されました。
157 Name: 名称未設定 [] Date: 2009/01/25(日) 10:35:40 ID: ivZ6d7js0 Be:
Cocoaのクラスというかフレムーワークにはシェルのgetoptやrubyのoptparseみたいな
コマンドライン(オプション)パーサってありますか?
それともwhileつかって、従来通りがしがし書いていくしか無いのですか?
158 Name: 名称未設定 [sage] Date: 2009/01/25(日) 10:46:06 ID: dVCCmgN10 Be:
getopt使えば良いじゃん
159 Name: 名称未設定 [sage] Date: 2009/01/25(日) 11:39:42 ID: zAeErYVm0 Be:
>>157
NSArgumentDomain
が役に立つかな?
160 Name: 名称未設定 [sage] Date: 2009/01/25(日) 14:43:56 ID: sL22S9gg0 Be:
>>147
その辺いまだに分からないんでリーク上等、autoreleaseに全部おまかせで作ってる。

newを発行したら+alloc , -initと呼ばれるよね。
alloc以外で領域確保する手段ってNSObject見ても書いてないし
それぞれのクラスがインスタンス生成用に作ってる+stringWithFormatとか
内部ではどうしてんだろね。
結局必ずalloc , initと通るなら同じ事なんだけどさ。
161 Name: 名称未設定 [sage] Date: 2009/01/25(日) 15:30:29 ID: IseXWGDP0 Be:
>>160
+stringWithFormatとかの中身

+ (id)hoge
{
id result = [[Hoge alloc] init];
return [result autorelease];
}
162 Name: 157 [] Date: 2009/01/25(日) 16:29:22 ID: ivZ6d7js0 Be:
>>158
Cのgetopt_longを使ったコードに#import <Cocoa/Cocoa.h>
を書き足すだけで,コンパイル時にエラーになってしまうので,
なにかCocoa用のものがあるのかと思っていたのです。
structがいけないのか
163 Name: 名称未設定 [sage] Date: 2009/01/25(日) 17:31:42 ID: zAeErYVm0 Be:
>>162
ヒントが足らんか?

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

NSMutableDictionary *dict = [[[NSUserDefaults standardUserDefaults] volatileDomainForName:NSArgumentDomain] mutableCopy];
NSLog(@"args are %@", dict);
[dict release];
[pool drain];
return 0;
}

./args -a foo -b bar -option myOption
2009-01-25 17:30:44.241 args[2303:10b] args are {
a = foo;
b = bar;
option = myOption;
}

164 Name: 162 [] Date: 2009/01/25(日) 18:03:31 ID: ivZ6d7js0 Be:
>>163
サンクス
ロングオプション(--)とオプション以外の引数は別処理なんですね
165 Name: 名称未設定 [sage] Date: 2009/01/25(日) 19:15:10 ID: KBsZcb+r0 Be:
スレを見始めた頃はチンプンカンプンだったのに
いつの間にか質問も回答も理解できるようになってて、ちょっと感激
日々の積み重ねって大事よね
166 Name: 名称未設定 [sage] Date: 2009/01/25(日) 23:28:02 ID: D0B6AaXh0 Be:
>>162
>Cのgetopt_longを使ったコードに#import <Cocoa/Cocoa.h>
>を書き足すだけで,コンパイル時にエラーになってしまうので,
うちでは Obj-C で getopt_long つかえるけど?
興味が有るのでどんなエラーがでるのか、
Cでは通るけど Obj-C ではとおらない最小限のソースを教えてください
167 Name: 名称未設定 [sage] Date: 2009/01/26(月) 07:36:50 ID: gWcJYF5K0 Be:
>>165
質問に回答して返事がなかったら萎えるよね
もう答えるの無駄だしやめよ、と何度思ったか
168 Name: 名称未設定 [sage] Date: 2009/01/26(月) 09:50:58 ID: QROzM0KB0 Be:
まぁ自分の勉強だと思えば・・・・。
他人に解説する際に気づくこともあるし。

169 Name: 名称未設定 [] Date: 2009/01/26(月) 11:26:26 ID: mXilku0z0 Be:
>>166
#import  <Cocoa/Cocoa.h>
#include <stdio.h>
#include <unistd.h>
#include <getopt.h>

extern char *optarg;
extern int optind, opterr, optopt;

int main(int argc, char *argv[]) {
int ch;
float time;

static struct option longopts[] = {
{"begin", no_argument, NULL, 'b'},
{0, 0, 0, 0}
};

opterr = 0;
while(( ch = getopt_long(argc, argv, "b:e:l:h", longopts, NULL)) != -1 ){
switch( ch ){
case 'b':
printf("Begin the begin\n");
break;
}
optarg = NULL;
}
}
です。
gcc -o test test.c -framework Cocoa
でコンパイル
170 Name: 名称未設定 [sage] Date: 2009/01/26(月) 11:32:13 ID: VOr2YZM+0 Be:
168が良い事を言った
171 Name: 名称未設定 [sage] Date: 2009/01/26(月) 11:52:17 ID: Wx1bIrtR0 Be:
>>169
それは #import のあとに、空白(0x20) だけでなくて
なぜか Unicode の no-break space (0xc2 0xa0) が入ってるからだと思う。
(テキストファイルをバイナリエディタで開いてみたら
何か変なことがわかるとおもいます。)
も一度 #import の行を消して書きなおしてみたらコンパイル通ると思うよ。
すくなくともうちの 10.5.6 の gcc では通った。
172 Name: 名称未設定 [sage] Date: 2009/01/26(月) 11:52:53 ID: 9akAS9r80 Be:
>>169
mv test.c test.m
173 Name: 名称未設定 [sage] Date: 2009/01/26(月) 21:54:16 ID: QROzM0KB0 Be:
>>807
http://pc11.2ch.net/test/read.cgi/mac/1231853172/
こっちで再度質問して。
174 Name: 名称未設定 [sage] Date: 2009/01/26(月) 21:55:18 ID: QROzM0KB0 Be:
173はゴバクっす。ごめんね。(≧ε≦)
175 Name: 名称未設定 [] Date: 2009/01/27(火) 11:26:15 ID: 9hNC4mxk0 Be:
ごめん ちょっと教えて
WindowsからSocketプログラム移植する時って
Cocoaで書き直した方が良い?
BDSソケットでもOK?

BDSソケットって移植性重視の低効率実装な可能性があるから心配

ちなみに元のPGは 独自プロトコルのTCPでスレッドで受信しているタイプです
176 Name: 名称未設定 [sage] Date: 2009/01/27(火) 11:34:15 ID: 4HjLNx/70 Be:
>>175
OS X の BSD socket は移植性のためのインターフェースじゃなくて
カーネルがはじめに実際に実装してるインターフェースです。
というか OS X は mach + BSD のハイブリッドなので。
というわけで心配せず BSD socket をそのまま使ってください。

Cocoa/CoreFoundation の socket インターフェースも
結局は BSD socket のうえに実装されてます。
177 Name: 名称未設定 [] Date: 2009/01/27(火) 12:05:14 ID: 9hNC4mxk0 Be:
ありがとうございます
カーネルがmach なので期待はしていましたが
何ぶんWindows生活が長くて

178 Name: 名称未設定 [sage] Date: 2009/01/27(火) 12:42:24 ID: yG2s1pTo0 Be:
>> 173
誘導どうもです。

最近、Cocoaプログラミング始めた初心者です。
会社のMacで簡単な工数計算のアプリを組んでみたんですが…
数値入力用のTextFieldに全角で数字を打ち込む人間がいて困っています。

そこで、特定のTextFieldにフォーカスが移った時に、
半角英数入力に強制的に替えるにはどうすればいいのでしょうか?

環境は、MacOS X 10.4.11 & Xcode 2.0 です。
179 Name: 名称未設定 [sage] Date: 2009/01/27(火) 12:48:31 ID: yISpEkrc0 Be:
"Only Roman Characters"が怪しい
180 Name: 名称未設定 [sage] Date: 2009/01/27(火) 12:50:09 ID: wonKckub0 Be:
>>178
mouseDownとか適当なイベント拾ってAppleScriptで半角切り替えかな。
でも強制切り替えはどうだろね。
運用でカバーした方がいい問題のような希ガス
181 Name: 名称未設定 [sage] Date: 2009/01/27(火) 12:57:47 ID: Qfd0k62B0 Be:
>>178
NSNumberFormatter 使えば済むのでは?
全角で入力されても内部で変換してしまえば良いし、他の文字が入ってたら
アラートも出せるし。って事ではないのかな???
182 Name: 名称未設定 [sage] Date: 2009/01/27(火) 13:02:13 ID: SWJ660ES0 Be:
>>180 181
やはり強制切替は難しいですか;
ちょうどNSNumberFormatterを調べてたので、
全角→半角変換で対応してみます。
どうもありがとうございます。
183 Name: 名称未設定 [sage] Date: 2009/01/27(火) 14:08:33 ID: L3yeV/fG0 Be:
>>182
検証してないけど、
http://lists.apple.com/archives/cocoa-dev/2008/Mar/msg00556.html
にText Input Sourceを使えばできるかもしれないってある
184 Name: 名称未設定 [sage] Date: 2009/01/27(火) 14:49:05 ID: SWJ660ES0 Be:
>>183
やりたい事はその質問と同じく、IME入力モードの切り替えなんですが…
Cocoa APIにはIMEの切り替え手段がないような事が書かれてますね;

うちの環境は10.4.11なので、「Text Input Source Services」の方はダメっぽいですか…
英語が不得意なので、ちょっと敷居が高そうですけど、
「Keyboard Layout Services Functions」の方を調べてみます。
ありがとうございました。
185 Name: 名称未設定 [sage] Date: 2009/01/27(火) 15:41:46 ID: RNAQzsjb0 Be:
素人が一言
キー入力せずにコピペで張る場合もあるぜ?
かな漢いじるよりNSNumberFormatter?で入力後の文字成型した方が現実には効果的だよ
まあかな漢制御したりキーボードイベント横取りしたりの方が
プログラマの征服感は満たされるけどね
186 Name: 名称未設定 [sage] Date: 2009/01/27(火) 15:57:33 ID: L3yeV/fG0 Be:
ただ、自動で英数モードに切り替わるほうがUI設計として適切な場合もある(例えばNSSecureTextField)。
両方行うのが最適解。
187 Name: 名称未設定 [] Date: 2009/01/27(火) 16:01:41 ID: hKpJgpLM0 Be:
半角モードに切り替わるテキストフィールド見た事あるけど
どうやってるかは知らん
188 Name: 名称未設定 [sage] Date: 2009/01/27(火) 16:21:16 ID: SWJ660ES0 Be:
同じMac上で、FileMaker Proを使っているんですが、
そこのTextFieldの『フィールド選択時の動作』設定では
『IMEモードの切り替え:Romanモードに固定』というのがあるので、
てっきりAPIで提供されていると思っていたんですよね;
189 Name: 名称未設定 [sage] Date: 2009/01/27(火) 16:51:41 ID: 5ofWyrnr0 Be:
>>188
Carbon + Control Managerにはあったなぁ。
遠い昔(4,5年前か?)なのでなんと言うやつだったか、さっぱり思い出せないけど。

すまないがCocoaの同等の機能は知らんなぁ。
NSControlから ControlRefでも取り出せればできるんだろうがね。
190 Name: 名称未設定 [sage] Date: 2009/01/27(火) 17:06:41 ID: 9ySZEYTP0 Be:
script manager だったと思う。
191 Name: 名称未設定 [sage] Date: 2009/01/27(火) 18:37:09 ID: yG2s1pTo0 Be:
>>189 >>190
Carbonにはあったんですか…

フィールドをタブで移動する時に、
備考入力欄なら全角に、数値や商品コード入力欄なら半角に…って感じで、
いちいち手作業で入力モードを変えなくていいので、
作業効率が全然違うんですよね;

いまさらCarbonで作り直す気力も時間もないし、
とりあえずは入力後変換で対応するようにしてみます。

ただ、お偉さんや同僚達は CocoaとCarbonの区別なんてつかないし、
説明しても理解できないので、
「何でFileMakerでは出来てるのに出来ないんだ?」とか
言われるのは悔しいですがw

皆さんありがとうございました。
192 Name: 名称未設定 [sage] Date: 2009/01/27(火) 18:56:28 ID: cZYADSu20 Be:
http://cocoawiki.aerial.st/index.php?NSTextField%2F半角英数TextField
これ参考にならんか?
193 Name: 名称未設定 [sage] Date: 2009/01/27(火) 18:59:59 ID: sxkNeV8c0 Be:
>>191
数字を入れるtextに全角で入力する馬鹿のために

なんでここまで苦しまなくちゃいけないんだって感じだよな。
194 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:03:14 ID: y317W0/+0 Be:
>>191

TextView サブクラス
- (BOOL)becomeFirstResponder
{
KeyScript( smKeyRoman );

return [super becomeFirstResponder];
}

と、NSNumberFormatterで半角のみに...
195 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:05:27 ID: y317W0/+0 Be:
ごめん、TextFieldのサブクラスだった...
196 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:07:26 ID: L3yeV/fG0 Be:
そっかfield editorか・・・
197 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:18:23 ID: yG2s1pTo0 Be:
>>192 >>194
おー!ありがとうございます!
なんかいけそうな感じですね。

今は、もう帰宅してしまってるので明日会社で試してみます!
感謝感謝です!!

>>193
自分もまさか全角数字を入力するやつはいないだろうと思ってたんですが、
「出来たから使ってね」って配布したその30分後、
「ちゃんと計算してくれないんだけど!」って言われましたw
198 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:21:22 ID: 5ofWyrnr0 Be:
気になって調べちゃったよ

10.5以降になってしまうが、
 -[NSTextFieldCell setAllowedInputSourceLocales:]
ってのがあるな。NSAllRomanInputSourcesLocaleIdentifierで secure fieldと同じくromanに保てるようだ。
199 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:40:16 ID: 5ofWyrnr0 Be:
ごめん、よく読んだら 10.4だったね。

ちなみに Control Managerのも思い出した。
kControlEditTextKeyScriptBehaviorTagだった。これが198のと同じ動作だろうね。
こっちは PerefersRomanと RequiresRomanと指定できて便利なんだな。
まぁControlRefが無いとダメだけど。

このくらい用意して欲しいよな。。。
200 Name: 名称未設定 [sage] Date: 2009/01/27(火) 19:59:22 ID: P+jy031y0 Be:
入力された文字列が数字以外ならエラーを返す関数なら
自作ので持ってるよ。
201 Name: 名称未設定 [sage] Date: 2009/01/27(火) 20:03:19 ID: yG2s1pTo0 Be:
>>198
お手数かけます;
会社の環境では試せませんけど、今後の参考&勉強になります!
本当にありがとうございます!!

プログラマーとして入社した訳でないのに、
通常業務とは別の空き時間に、AccessVBAで事務処理プログラムを作らされてて
今回初めてMacのアプリを作ってみたんですけど、Cocoa楽しいっす!
202 Name: 名称未設定 [sage] Date: 2009/01/27(火) 20:08:23 ID: yG2s1pTo0 Be:
>>200
勉強したいので、差し支えなければコードをお教え願えますか?
すみません;
203 Name: 名称未設定 [sage] Date: 2009/01/27(火) 20:59:16 ID: MKYO8yw90 Be:
例えば、NSTextViewのサブクラスで

- (BOOL)conformsToProtocol:(Protocol *)aProtocol
{
return NO;
}

とかってやると、NSTextInputプロトコルを実装してないことになり、OSから仮名漢字変換のサポートが受けられなくなるので、
結果的に、入力モードは切り替わらないけど、半角英数字しか入力できないフィールドエディターが出来上がります。

もし、「勝手に入力モードが切り替わるのがウザイ」とか言われたときは、こういう手もあります。
204 Name: 名称未設定 [sage] Date: 2009/01/27(火) 21:16:07 ID: MKYO8yw90 Be:
>> 200
もしかして、こんな感じ?
BOOL isInt(NSString* text)
{
return [[NSScanner scannerWithString:text] scanInt:NULL];
}
205 Name: 名称未設定 [sage] Date: 2009/01/27(火) 23:32:36 ID: BQbhAN2S0 Be:
>>202
VBAを使ったExcelのアプリは泥縄式で貧弱のだったらなんとか作れるんですが、
Macのアプリも同じような感じで作れますかね?
206 Name: 名称未設定 [sage] Date: 2009/01/28(水) 01:59:06 ID: 6dpH/5D9i Be:
>179のでオケーじゃないの?
IBでTextFieldの設定のAllows only roman charactersにチェックするだけじゃ?
加えてNumberFormatterでアルファベットをはじけば望む動作だと思うけど。
207 Name: 名称未設定 [sage] Date: 2009/01/28(水) 02:00:38 ID: 6dpH/5D9i Be:
あ、>206は>>178へのレスです。
208 Name: 名称未設定 [] Date: 2009/01/28(水) 03:12:35 ID: QC5LijlX0 Be:
こういうのはなんでもOgreKitに任せてしまうな。めんどくさいから。
209 Name: 名称未設定 [sage] Date: 2009/01/28(水) 09:34:22 ID: OjUJEHAK0 Be:
>>206-207
>>178
>環境は、MacOS X 10.4.11 & Xcode 2.0
210 Name: 名称未設定 [sage] Date: 2009/01/28(水) 12:25:06 ID: 1DgzpuuK0 Be:
NumberFormatterでいいと思うけどなー

すいません、質問なのですが
環境は10.5 Xcode3.1です
シグナルのキャッチってどう書くのが良いのでしょうか?
具体的にはSIGABRTをキャッチしてエラーメッセージを表示したいです。
その際、可能ならアプリが終了しない様にしたいと思っております。
よろしくお願い致します。
211 Name: 名称未設定 [sage] Date: 2009/01/28(水) 13:52:13 ID: ZgWOL2AA0 Be:
http://developer.apple.com/samplecode/PreLoginAgents/listing2.html
が参考になると思います。
signal ハンドラ内では Cocoa みたいな大げさなものは呼べないので、
なんとかして signal を Cocoa のレベルまで持ってこないといけないですが、
その部分は上のサンプルコードからそのまま取ってこれるでしょう。

ていうかなんで Cocoa の GUI app にシグナルが飛んでくるの?
そっちのほうに興味があるな。
Apple メニューから再起動のばあいは quit の AppleEvent だし。
212 Name: 名称未設定 [sage] Date: 2009/01/28(水) 14:07:38 ID: 1DgzpuuK0 Be:
>>211
ありがとうございます。
一度、拝見させて頂きます。

Cで作ったライブラリ内の関数を呼んでるんですけど、
その引数に特定の値を与えるとデバッガに「シグナルを受信しました:"SIGABRT"」
が表示されるんです。
ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…
213 Name: 名称未設定 [sage] Date: 2009/01/28(水) 23:10:46 ID: oju538Ej0 Be:
NSIndexPathを使ってNSTreeControllerにある目的のオブジェクトを一発で取得ってできないのね
214 Name: 名称未設定 [] Date: 2009/01/28(水) 23:39:54 ID: 4dls5RrY0 Be:
>>213
[[[treeController arrangedObjects] descendantNodeAtIndexPath:path] representedObject]

215 Name: 名称未設定 [sage] Date: 2009/01/28(水) 23:45:24 ID: oju538Ej0 Be:
>>214
なるほど、ツリーノード経由でアクセスすればいいのか
ありがとう!
216 Name: 名称未設定 [sage] Date: 2009/01/28(水) 23:57:25 ID: ZgWOL2AA0 Be:
>>212
>ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…
SIGINT/SIGTERM と違って、SIGABRT はキャッチできるが復帰出来なかった
気がしてきた。というわけでライブラリ側を直さないと仕方ないんじゃないかな。
http://en.wikipedia.org/wiki/SIGABRT
217 Name: 212 [sage] Date: 2009/01/29(木) 10:45:15 ID: yu3hvIXX0 Be:
>>216
うげー、まじっすか!
うっすらとそんな気はしてたんですが…

windowsのC++から同じライブラリを使用する時は
try~catchで例外に飛んでくれるのに、macはtry~catchだと落ちてしまう…
それで、シグナルのキャッチをしないといけないのかと思ったんですが、
復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
218 Name: 名称未設定 [sage] Date: 2009/01/29(木) 11:14:55 ID: jq8EMf7e0 Be:
もうちょっと状況を説明してください。
使っているライブラリは C++ のもので、C++ の例外を送出してるんですか?
それなら mac でも捉えられない筈はないです。
try ... catch は C++ のものを使ってますか?
Obj-C の例外と C++ の例外は別だから、
@try ブロックでは C++ の例外は捉えられなかった... とおもいます。
Obj-C++ をつかう (ファイルの拡張子を .mm にする)とかして、
ふつうに try{ ...} catch で捕まるはず。

SIGABRT がでているのは、多分 C++ の例外が捉えられずに標準の
terminate() が呼ばれて、それの標準の実装であるところの abort() が
呼ばれてるからでしょう。
219 Name: 名称未設定 [sage] Date: 2009/01/29(木) 11:17:56 ID: jq8EMf7e0 Be:
>>217
>復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
あと、この文脈で復帰というのはシグナルハンドラから抜けたらという
ことだから、SIGABRT がでた時点で GUI をいじってる暇はないです。
220 Name: 212 [sage] Date: 2009/01/29(木) 11:29:16 ID: yu3hvIXX0 Be:
むーーっちゃ参考になりました!!
解決致しました!!

>@try ブロックでは C++ の例外は捉えられなかった... とおもいます。
まさにこれでした…
ライブラリはC++でC++の例外を送出しておりました。
それを@tryで捉えようとしていた為に今回の様な事になっていたようです。
普通のtry~catchを使用した所、例外処理に飛びました。
ホントにどうもありがとうございました。

…今回のは自分の中でかなり勉強になった。w
221 Name: 名称未設定 [sage] Date: 2009/01/29(木) 11:54:06 ID: jq8EMf7e0 Be:
解決して良かったです。今後は
「A というのを解決するために B をしたい。しかし B の仕方が分からない。」
とい う構造のときは、B を質問するんじゃなくて A を質問してくださいね。
(今回は A: C++例外を取り損ねていた B: SIGABRT をキャッチしたい)
222 Name: 212 [sage] Date: 2009/01/29(木) 12:02:51 ID: yu3hvIXX0 Be:
あ、ホントですね…
改めて見ると質問おかしいですね(/▽*\)
以後気をつけます。。。
223 Name: 名称未設定 [] Date: 2009/01/29(木) 14:09:30 ID: adGsEShc0 Be:
今objective-cのアクセッサメソッドを勉強中なんですが、
NSArray* gooに対するアクセッサを例に質問させていただきます。

このgooのアクセッサメソッドの定義についてなんです

- (void)setGoo:(NSArray*)aGoo
{
// ①goo = [[NSArray alloc] initWithArray:aGoo];
// ②goo = aGoo;
}
①は新たにメモリ領域を確保しています
②はそのまんまポインタを代入しているのですが、
こういうのはそれぞれ使い分けていけばいいのでしょうか?

それとも・・・こうだという書き方があるのでしょうか?
224 Name: 名称未設定 [sage] Date: 2009/01/29(木) 14:15:22 ID: noz0c/Ci0 Be:
書き方は色々あるけど、渡されたオブジェクトをretainするのが普通。

- (void)setFoo:(id)bar
{
 if(foo != bar) {
  [foo release];
  foo = [bar retain];
 }
}

みたいな感じかな
225 Name: 名称未設定 [sage] Date: 2009/01/29(木) 14:26:11 ID: jq8EMf7e0 Be:
うむ。いずれ (2) だと release しすぎでクラッシュするよ。
retain/release/autorelease はきちんと理解しましょう。
226 Name: 名称未設定 [sage] Date: 2009/01/29(木) 14:36:15 ID: ek2lYM/y0 Be:
retain, release, autoreleaseの話題はそろそろテンプレ化してもいいんじゃねぇの?
227 Name: 名称未設定 [] Date: 2009/01/29(木) 14:36:35 ID: adGsEShc0 Be:
>>224
いろいろ参照していると
確かにそんな書き方をいくつか見かけました。
ただfooのメモリ領域を新たに確保したい場合はそれでは駄目ですよね。
そのときの書き方とかもありますか?

あとゲッターについてもなんですが、
普通に
-(NSArray*)foo
{
return foo;
}
でいいですか?
228 Name: 名称未設定 [] Date: 2009/01/29(木) 14:37:18 ID: adGsEShc0 Be:
>>225
なるほど。確かにそうですよね。
229 Name: 名称未設定 [sage] Date: 2009/01/29(木) 14:44:33 ID: qvTjmqpK0 Be:
>>227
興味本位で聞くけど、なんでそんな事をしたいの?
230 Name: 名称未設定 [sage] Date: 2009/01/29(木) 14:57:21 ID: um6KdJm70 Be:
Thread safeを考慮しなくていいという前提で行くけど

Setterは
- (void)setHogehoge:(id)newHogehoge
{
if(hogehoge != newHogehoge) {
[hogehoge autorelease];
hogehoge = [newHogehoge copy];
}
}

Getterは
- (hogehoge*)hogehoge
{
return [hogehoge copy] autorelease];
}

とか、copyでやるのが遅いが安全かなと思った。
231 Name: 名称未設定 [sage] Date: 2009/01/29(木) 15:02:55 ID: qvTjmqpK0 Be:
整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。
どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。
232 Name: 名称未設定 [sage] Date: 2009/01/29(木) 15:08:47 ID: /bmL0ZO50 Be:
NSArrayとかNSDictionaryとかだとdeep copyするかどうか
と考え込みすぎてしまいます
233 Name: 名称未設定 [] Date: 2009/01/29(木) 16:48:52 ID: adGsEShc0 Be:
返信レス遅くなってすみません。
いろいろな意見を聞かせて頂けて本当にありがとうございます。
みなさんがどの辺を意識しながらプログラムしているのか、ちょっと分かった気がします。
234 Name: 名称未設定 [sage] Date: 2009/01/30(金) 00:31:04 ID: x4D9q//I0 Be:
ターゲットが10.5以上ならしっかりとしたメモリ管理を覚えるのは後回しにしてもとりあえずプロパティを学べばおk
235 Name: 名称未設定 [sage] Date: 2009/01/30(金) 02:55:33 ID: 1T9rFWEx0 Be:
>>230
確かにこれはパフォーマンスが気になるような場合はちょっときついかな。
それに getter で autorelease してるなら setter の方は release でいいんじゃないの?
236 Name: 名称未設定 [sage] Date: 2009/01/30(金) 08:26:27 ID: tnqIJAcF0 Be:
copy するかしないかは場合によるでしょう、
安全性のもんだいだけじゃないよ。
GUI のクラスが渡されたときにそれを copy しても仕方なかったりするし。
NSString とか NSArray ならともかく。
237 Name: 212 [sage] Date: 2009/01/30(金) 12:22:51 ID: Xk99m0ql0 Be:
くそっ、昨日いけたと思っていtry~catchでSIGABRT捉える問題なんですが、
Releaseでビルドすると捉えれずに落ちてしまう…

debugだとデバッガがアタッチされてるからうまい事いってたのかなぁ…
238 Name: 名称未設定 [sage] Date: 2009/01/30(金) 13:45:42 ID: tnqIJAcF0 Be:
>>237
ビルド条件で挙動が変わるってのはなんかポインタの扱いが間違ってるとか
そんなバグがあるんだとおもいます。
うまく動いてるときでも偶然うまくいってたとおもったほうがいいとおもう。

あと、いっとくけど SIGABRT を捉えられてるんじゃないよ。
C++ の例外は、だれもキャッチしないで main 関数の外に抜けると
ランタイムが abort() に変換して、それが結局 SIGABRT になる。
だから、あなたが捉えてるのはあくまで C++ の例外のはずです。
set_terminate とか使って例外が底抜けているか調べたら?
239 Name: 名称未設定 [sage] Date: 2009/02/01(日) 08:21:57 ID: n9A0C94C0 Be:
>>231
>整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。
>どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。

って具体的に書くとどういう操作ですか?
240 Name: 名称未設定 [sage] Date: 2009/02/01(日) 09:35:31 ID: 1mYsSfAu0 Be:
231じゃないが、
オブジェクトは>224にあるようなsetterのコードを使っていて、
呼び出し元は、setterに渡す前にcopyしてから渡すってことだとおもう。

copyを使うかどうかは、外部と内部とで共有するオブジェクトを
排除したいかどうかだろうね。
241 Name: 名称未設定 [sage] Date: 2009/02/01(日) 14:49:50 ID: yyoukxzn0 Be:
>>223
http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_6.html
この辺の@propertyによるsetter/getterの実装と、その選択を考えれば
どういう風にするのがいいか解ると思う。
242 Name: 名称未設定 [sage] Date: 2009/02/02(月) 03:02:07 ID: oWvyvjyR0 Be:
>>240
>copyを使うかどうかは、外部と内部とで共有するオブジェクトを
>排除したいかどうかだろうね。

もっと現実に即した説明で言うなら、オブジェクトのそのときの値に用があるのか、
オブジェクトを参照したいのか、みたいな感じかと。

例えば NS(Mutable)Number や NS(Mutable)String を setter に渡して何かの最後の値を
記憶しておくようなクラスを作ったら、copy しておかないとおかしなことになりうる。

そうでなく、例えば NSWindow とか、値に用があるのなくそのオブジェクトを参照したい場合
は retain と。

-copy に答えるオブジェクト(NSCopying 準拠)かどうかというのもある。
243 Name: 名称未設定 [sage] Date: 2009/02/02(月) 03:14:22 ID: oWvyvjyR0 Be:
しまった、NSMutableNumber って何だよ俺。
244 Name: 名称未設定 [sage] Date: 2009/02/02(月) 06:27:53 ID: TONCedf+0 Be:
>>243
多倍長整数同士の演算を実装したクラスだな。
俺も持ってる
245 Name: 名称未設定 [sage] Date: 2009/02/02(月) 13:54:51 ID: 2xCIDXB+0 Be:
>NSMutableNumber
NSNumber を継承して、値に意味の中心があるクラスとして、NSCopying protocol 準拠で
copyWithZone:(NSZone) の実装をされたんでしょうか?
246 Name: 名称未設定 [sage] Date: 2009/02/02(月) 13:56:34 ID: yqjQEfKg0 Be:
そんなにいじめるなよ
247 Name: 名称未設定 [sage] Date: 2009/02/02(月) 14:01:26 ID: 2xCIDXB+0 Be:
それとも、NSMutableCopying protocol 準拠
- (id)mutableCopyWithZone:(NSZone *)zone
の方でしょうか?
248 Name: 名称未設定 [sage] Date: 2009/02/02(月) 14:03:09 ID: 2xCIDXB+0 Be:
あれ?タイポだって事?それなら失礼。
でも、実際、そういうクラス作るとしたら、準拠でしょうか?
249 Name: 名称未設定 [sage] Date: 2009/02/02(月) 14:34:12 ID: RTJ7jXP10 Be:
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 Name: 名称未設定 [sage] Date: 2009/02/02(月) 14:59:15 ID: oWvyvjyR0 Be:
>>244
>多倍長整数同士の演算を実装したクラスだな。

そうそうw

逆に、immutable で演算もないのは「基本、数値のラッパーでしかないクラスなのでよろしく」
ということなのかな。
251 Name: 名称未設定 [sage] Date: 2009/02/02(月) 18:45:00 ID: 2xCIDXB+0 Be:
よろしく。。。何なのでしょう?
252 Name: 名称未設定 [sage] Date: 2009/02/02(月) 19:13:04 ID: L7cRbMRK0 Be:
>>251
Yorosiku Protocolを知らんのか?
253 Name: 名称未設定 [sage] Date: 2009/02/02(月) 21:35:57 ID: AAETqkqJ0 Be:
Bonjourなら知ってる。
254 Name: 名称未設定 [sage] Date: 2009/02/02(月) 21:41:24 ID: AAETqkqJ0 Be:
Bonjourが出たついでなんだけどさぁ、NSSocketを使用して
リモート間のコンピュータ制御を行なった人います?

BonjourがCFSocketを使用しているせいか、こちらのAPIを使用する人がいないよね。
別にBSDSocketを使用しているからあまり問題ないんだけど・・・・・・
こいつの使い方が終に分からなくて、悔しい思いをしたので。
255 Name: 名称未設定 [sage] Date: 2009/02/03(火) 00:07:16 ID: 2ttErtYe0 Be:
NSSocketPort じゃなかったっけ?これは Distributed Objects 用でしょ。
だから一般的なソケット操作にはつかえません。
でも DO はやってみると案外面白いよ。
単一マシン内の二つの app でやっても充分面白いです。
他のプロセスの Obj-C クラスをまるで自分のプロセス内の
クラスであるかのように自在に操れるからね。
AppleEvent より全然つかいやすいとおもうのだが...
256 Name: 名称未設定 [sage] Date: 2009/02/03(火) 01:27:59 ID: 2ZhaM9y40 Be:
[me fuck]
257 Name: 名称未設定 [sage] Date: 2009/02/03(火) 06:25:45 ID: gjuIaaik0 Be:
>>254
Bounjour でサーバのサービスを発見して NSSocketPort 経由で繋いで後の通信は DO、
みたいな、なんちゃって分散システムを作ってる & 使ってる。
セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド
呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。
かなり楽ちん。

まあ実際にはエラー処理とかいろいろあるが... あとこれっていんちき Xgrid? という説もあるw
258 Name: 名称未設定 [sage] Date: 2009/02/03(火) 07:13:28 ID: btozHLBi0 Be:
>>257
heartbeatの処理とか入れてる?
処理投げてなかなか帰ってこないサービス内容とかもあるんで
うちは接続したら定期的にheartbeat返すようにしてる
259 Name: 名称未設定 [sage] Date: 2009/02/03(火) 09:59:34 ID: hBT6haPh0 Be:
ハートビート...
いい響きだね
260 Name: 名称未設定 [sage] Date: 2009/02/03(火) 12:03:48 ID: l8QIYOaqi Be:
エターナルフォースハートビートモーターズ!
261 Name: 名称未設定 [] Date: 2009/02/03(火) 12:21:34 ID: qYl1wxUJ0 Be:
質問というかただの興味ですが、
メソッドを書く時の書式は通常
- (NSString *)hoge:(NSString *)string;
とオブジェクト名とアスタリスクは離しますが、C的に書く必要がある場合どうでしょう?
NSString * getHoge(NSString *string);
この場合最初のアスタリスクの両側が空いているのに違和感を覚えるのですが、みなさんどう書いてます?
Apple公式でこういった書式のコードが見られるといいんですけど。
262 Name: 名称未設定 [sage] Date: 2009/02/03(火) 12:33:04 ID: C28DxKEb0 Be:
リモート人間接続をするにはどうすれば
263 Name: 名称未設定 [sage] Date: 2009/02/03(火) 12:40:24 ID: WATf/n1w0 Be:
普通に話せよw
264 Name: 名称未設定 [sage] Date: 2009/02/03(火) 14:09:23 ID: G1cDZxPk0 Be:
たとえば、InDesignなどのDTPソフトだと、フォントフォルダ(たとえば、/Library/Fonts)に、
フォントをFinderで追加すると、すぐに使用できるようになるのですが、
自作アプリでコピーをすると、いつまでたっても、フォント情報が更新されません。

InDesignが、フォントフォルダに変更があったよ~、的ななんらかのシグナルを
キャッチしていて、Finderはそのシグナルを発してるのでは、
と想像しているのですが、そのシグナルを発生させる方法はあるのでしょうか。
265 Name: 名称未設定 [sage] Date: 2009/02/03(火) 14:12:07 ID: WATf/n1w0 Be:
>>264
むしろ自作アプリで直接コピーするんじゃなくて、Finderにコピーをさせればどうだろう。
266 Name: 名称未設定 [sage] Date: 2009/02/03(火) 15:13:30 ID: 2ttErtYe0 Be:
>>264
http://developer.apple.com/documentation/Carbon/Conceptual/ATS_Concepts/atsfonts_concepts/chapter_2_section_5.html
http://developer.apple.com/documentation/Carbon/Conceptual/ATS_Concepts/atsfonts_tasks/chapter_3_section_6.html
267 Name: 名称未設定 [sage] Date: 2009/02/03(火) 15:16:29 ID: 2ttErtYe0 Be:
>>261
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html

関数の場合は * の両側をあける、ivar の場合は左側だけあけるんだと思う。
268 Name: 名称未設定 [sage] Date: 2009/02/03(火) 15:27:44 ID: Futh7gDNi Be:
FSEvent使うってのは??
269 Name: 名称未設定 [sage] Date: 2009/02/03(火) 16:28:09 ID: qYl1wxUJ0 Be:
>>267
おお、すっきりしました。ありがとうございます。
270 Name: 名称未設定 [sage] Date: 2009/02/03(火) 18:43:59 ID: nN7f7LmV0 Be:
カスタムのビューとスクローラーとそのイベント対応について質問させて下さい。

NSViewとそれをスクロールするNSScrollViewを、共にサブクラス化し、
共にacceptsFirstResponderをオーバーライドしてYESを返すようにしました。

これで、page up/downキーが押された場合は、NSViewのサブクラスで
オーバーライドした pageUp: と pageDown: が呼ばれます。

で、homeキー、endキーが押された場合を取りたいのですが、
NSResponderのスクロール関連のどのメソッドをオーバーライドしても
呼ばれないのですが、keyDown:から自分で判別するしかないのでしょうか?
271 Name: 名称未設定 [sage] Date: 2009/02/03(火) 19:06:35 ID: 4NqLeFNd0 Be:
>>270
scrollToBeginningOfDocument:とscrollToEndOfDocument:
NSResponderで定義されているメソッドでは、ありませんが。
272 Name: 名称未設定 [sage] Date: 2009/02/04(水) 09:05:27 ID: 327qCR/u0 Be:
>>257
>セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド
>呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。

この方法、凄く気になります。どこかにサンプルコードありませんか?
273 Name: 名称未設定 [sage] Date: 2009/02/04(水) 09:33:10 ID: eVwbmqQc0 Be:
http://www.borkware.com/corebook/second-edition-source-code
の Chap. 18, 19 を解読してみたら。本も買ったら勉強になります。
274 Name: 名称未設定 [sage] Date: 2009/02/04(水) 13:08:09 ID: yVzPM0e80 Be:
サンプルプロジェクトを、プロジェクト名は同じですが改造して、アプリを試作しました(A)。
(アイコン入替え、クラス追加等含め)
更に、それを少しだけ改変した別バージョン(B)を、別個に作ろうと、上記元の改造版を Finder
でフォルダごと複製して、プロジェクト名は同じで、ビルド作業もできておりました。
ところが、その際、(恐らく)Default.png か、Icon.png を更新して、ターゲットのクリーニング後、
ビルドは出来ても、アプリ起動した後、または途中で止まってしまう様になりました。
コードを、修正前の状態になるまで、コメントアウトしても、状況が変わりません。
こういう場合原因は何でしょう?
275 Name: 名称未設定 [sage] Date: 2009/02/04(水) 13:29:00 ID: eVwbmqQc0 Be:
エラーがデバッガ画面に出てるはずだからそれを説明しろ。
ここ読んでる人だってエスパーじゃないよ。
とりあえず Default.png / Icon.png ももとに戻して動くかみてみたら?
276 Name: 名称未設定 [sage] Date: 2009/02/04(水) 14:16:27 ID: vG3Eq+0R0 Be:
実機上でBundle ID同じアプリが2つ出来て混乱しているとか。変えてみ。
277 Name: 名称未設定 [sage] Date: 2009/02/04(水) 14:32:41 ID: GLh6l/ao0 Be:
>>276
ありえる。お前エスパーだろ?
278 Name: 名称未設定 [] Date: 2009/02/04(水) 16:48:00 ID: pU891sJp0 Be:
NSTableDataSouceプロトコルの
-(id)tableView:(NSTableView*)tb objectValueForTableColumn:row:
メソッドの引数tbを使用して
テーブルのラインナップを行う行為は常識はずれですか?

ただこのメソッドは何度も呼び出されるので、
一度呼び出されたときだけこのメソッドないでテーブルのラインナップを
する関数を呼び出しています。
簡単に用法をしめすと
-(id)tableView:(NSTableView*)tb objectValueForTableColumn:row:
{
if(count == 1)
{
/*
tbを使用してテーブルのラインナップ
    カラムを追加したりセルをセットしたり。
*/
  }
// 以下はreturnでセルに値を代入していくプログラム・・・
}
279 Name: 名称未設定 [sage] Date: 2009/02/04(水) 17:00:13 ID: /jro+NId0 Be:
普通はnibで既にカラムもセルもセットしておく。
どうしても動的に変えたいときはawakeFromNib:でやるかな。
280 Name: 名称未設定 [] Date: 2009/02/04(水) 17:06:55 ID: pU891sJp0 Be:
確かにほとんどの参考プログラムはそうですよね。
ただテーブル数が多い&動的
ということもあって、別に動くには動くしで・・・・
でも皆さんから見てどうなんかな?って思ったんで質問させてもらったんですが・・
281 Name: 名称未設定 [sage] Date: 2009/02/04(水) 19:03:12 ID: AZEIygKK0 Be:
動的に変更したいにしてもなんらかのトリガーはあるんだろうから
そこから別途カラムを設定するメソッドを呼んだ方がいいと思う
実際の動作から変数を作ってどうこう、とやり出すと
予想外なところでif文に該当してバグの元になる
282 Name: 名称未設定 [] Date: 2009/02/04(水) 21:24:41 ID: Gh/9lkTr0 Be:
iPhoneアプリ作成を始めた初心者です。Hello World! から勉強してます。
TableViewは作れましたが、TabelViewからタッチして別の画面
(別のcontroller)に飛びたいときはどうすればいいですか?
小さな複数のアプリをTabelViewでまとめたいのですが。
283 Name: 名称未設定 [sage] Date: 2009/02/04(水) 21:38:37 ID: kElp6NwL0 Be:
>>282
iPod touch/iPhone ネイティブアプリ製作 ver.8
http://pc11.2ch.net/test/read.cgi/mac/1231156968/
284 Name: 282 [] Date: 2009/02/04(水) 21:45:34 ID: Gh/9lkTr0 Be:
わかりました。そちらのスレでもう一度聞いてみます。ありがとうございました。
285 Name: 名称未設定 [sage] Date: 2009/02/04(水) 22:10:20 ID: nazm8P890 Be:
>>284
そしたらこっちでの質問を取り下げた方がいいよ。
286 Name: 270 [sage] Date: 2009/02/05(木) 00:02:28 ID: vPXIdXg90 Be:
>>271
NSViewのサブクラスにそれらを実装してみましたが、呼ばれませんでした。
少しググってみましたが、それらはNSTextViewで可能な方法ではないでしょうか。
何であれありがとうございました。
287 Name: 名称未設定 [sage] Date: 2009/02/05(木) 11:15:29 ID: qtw79+lW0 Be:
テキストフィールドのあるモーダルダイアログを表示し、
テキストフィールドに日本語を入力し確定する前(下線が付いたまま)に
ダイアログを閉じるとクラッシュしてしまう…
これはなんなのでしょうか…
288 Name: 名称未設定 [sage] Date: 2009/02/05(木) 11:21:22 ID: aBVo+1GJ0 Be:
>>287
ダイアログを破棄した後にUIを参照しようとしてない?
フォーカス関係の問題なら、フォーカス外してから閉じるとか。
289 Name: 名称未設定 [sage] Date: 2009/02/05(木) 11:22:28 ID: ih/Ab1m90 Be:
>>287
クラッシュログはなんていってるの?
つかってるのはことえり?ATOK?

それとは別問題として、モーダルダイアログは多用しないほうが...
せめてモーダルシートにしましょう
290 Name: 287 [sage] Date: 2009/02/05(木) 12:19:00 ID: qtw79+lW0 Be:
レスありがとうございます!

>>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 Name: 名称未設定 [sage] Date: 2009/02/05(木) 12:47:23 ID: k3HvMYJw0 Be:
すみません、自力で解決できなかったので教えて下さい。
NSViewのサブクラスを作り、NSBezierPath *contentPath(矩形)を持たせて
います。で、NSMutableArray に矩形ベジェを持たせていて NSArrayController で
前述のビューのcontentPathを入れ替えて再描画させる、というものを作りました。
制御自体はうまくいって、Arrayの中身を描けるのですが、パスのライン幅が一部
太くなってしまいます。挙動としては、矩形は幅または高さだけ変えたもの
(originは一緒)を描かせたときに古い矩形とオーバーラップする領域のみ線幅が
太くなります。

で、クリッピングが関係しているのかなと思い、wantsDefaultClipping をオーバー
ライドして NO を返すようにしてみたら、線幅は一定にはなったものの、今度は
設定した線幅 1.0 よりも太く書かれてしまいます。

どうすれば解決できますでしょうか、お知恵をお貸しください。
292 Name: 名称未設定 [sage] Date: 2009/02/05(木) 12:55:09 ID: ih/Ab1m90 Be:
>>290
それは retain/release がどっかでおかしくなってるんだとおもうけど。
ちゃんとやればもんだいないはず。NSZombie とかつかって
誰が二重 release してるかしらべてみては。

あと、僕の実経験では、Interface Builder でよく
Window のインスペクタで "release when closed" をチェックしてしまって
それのせいで release しすぎになりますが...
293 Name: 名称未設定 [sage] Date: 2009/02/05(木) 13:19:19 ID: k3HvMYJw0 Be:
>291 です……自己解決しました。原因は drawRect:[contentPath bounds] と
やったせいで、パスの線幅分のオフセットをやっていなかった為のようです。
とほほ…
294 Name: 名称未設定 [sage] Date: 2009/02/05(木) 16:30:33 ID: MZKKxZ3Z0 Be:
>>290
パネルがrelease when closedになってるとか?
295 Name: 290 [sage] Date: 2009/02/05(木) 17:03:08 ID: qtw79+lW0 Be:
release when closedになってたので、チェックを外すと今度は10.5でおかしくなったw
日本語入力したテキストフィールドにmakeFirstResponderでフォーカス移動して
postEventでreturnキーを送ってテキストフィールドを完全に確定(?)させてから
モーダルを閉じたら10.4でいけた…
一応NSZombieだと、やっぱreleaseしたものにアクセスしてるって出た…(10.4のみ)
わけわかめだ…
296 Name: 名称未設定 [sage] Date: 2009/02/05(木) 20:39:25 ID: p6wlshAm0 Be:
>>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 Name: 名称未設定 [sage] Date: 2009/02/05(木) 23:28:22 ID: ih/Ab1m90 Be:
>>295
それはあきらかにメモリ管理のバグなので、対処療法的に
こういう閉じ方ならクラッシュしない、という解決法ではなくて
どっかで retain/release のミスがあるのでそれをみつけてください。
まあ納入期限とかなければのはなしだけど。

clang static analyzer は
http://clang.llvm.org/StaticAnalysis.html
強力なのでいちどつかってみたら?
298 Name: 名称未設定 [] Date: 2009/02/08(日) 11:24:31 ID: x/17hb0Z0 Be:
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 Name: 名称未設定 [sage] Date: 2009/02/08(日) 12:17:18 ID: cbLnK3Uq0 Be:
当然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 Name: 名称未設定 [sage] Date: 2009/02/08(日) 13:40:23 ID: cbLnK3Uq0 Be:
後で気がついたが、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 Name: 名称未設定 [sage] Date: 2009/02/08(日) 15:41:18 ID: vQKSQI6y0 Be:
self.label.textColor = [UIColor colorWith~~]; でおk
302 Name: 名称未設定 [] Date: 2009/02/08(日) 17:29:03 ID: x/17hb0Z0 Be:
なるほど!ありがとうございます。よくわかりました。
autoreleaseされるcolorWithメソッドもあったんですね。
303 Name: 名称未設定 [] Date: 2009/02/09(月) 16:27:22 ID: xx/grS5S0 Be:
シンガポールの9歳少年がiphoneアプリの開発。
しかもこの少年2歳のときからコンピュータ使って
いまやすでに6言語をしようできるとか・・・・・。

スレッド間通信で悩んでいる俺もこんな英才教育受けてたら
いまや天才ハッカーだったのに・・・・・。

304 Name: 名称未設定 [sage] Date: 2009/02/09(月) 16:34:36 ID: 9F+2O8Cp0 Be:
まあ、その子の父親がそっち系の人だからね。
しょうがないよ
305 Name: 名称未設定 [sage] Date: 2009/02/09(月) 16:36:53 ID: r0qQWs5t0 Be:
実はオネェ系。
306 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:02:51 ID: svdYosUm0 Be:
そっち系ってどっち系か気になる
307 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:03:51 ID: SccJ/7Eo0 Be:
はぐれ刑事情熱系
308 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:11:06 ID: 9drXTDxV0 Be:
>>303
アジアには1ヶ月飲まず食わずの少年も居るよ。
鵜呑みにしない方がいい。
309 Name: 名称未設定 [] Date: 2009/02/09(月) 17:16:43 ID: QiGMMDTS0 Be:
父親が作ってるだろ、実際は。
話題性があれば、無駄に売れる。
310 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:21:15 ID: gsT/KdBz0 Be:
以前、10歳でアセンブラバリバリ使いこなす小学生に会ったことがある。
子供は物覚えが速いから、3Dとかの複雑な数学の必要なもの以外は余裕だよ。
311 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:23:48 ID: 0LhoQ2uS0 Be:
まあ、ポケモン数百匹のデータと対戦法すべて覚えてるガキなんかも多いしな。
312 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:33:17 ID: mKmE+zE/0 Be:
>>310
それかつての俺だ
まだ覚えてるかな
21 がLD HL
EDがIXのプレフィクスだっけかな

ハンドアセンブルは今にして思えば無駄な作業だったな・・
当時はセクションの考えもなかったし

>>311
そういうことだねw
313 Name: 名称未設定 [sage] Date: 2009/02/09(月) 17:35:49 ID: EdHXtXj80 Be:
ちなみに、いまハンドアセンブル用のシート売ってるのかな?ニモニック書けるやつ

8080,Z80時代はばりばり書いてたなあ
314 Name: 名称未設定 [sage] Date: 2009/02/09(月) 18:13:19 ID: bsNxoMZui Be:
アセンブラ買う金が無かったから、ハンドアセンブルしてました。
315 Name: 名称未設定 [sage] Date: 2009/02/09(月) 18:15:52 ID: yzs1V3zWi Be:
逆アセンブラは面倒だったんで、自分で書きました。
316 Name: 270,286 [sage] Date: 2009/02/09(月) 19:11:05 ID: /J57R7wN0 Be:
>>296 それでできました!

レスポンダーチェーンは知っていましたがキーバインドは単語だけ聞いた事ある、という感じでしたが勉強になりました。
ありがとうございました。
317 Name: 名称未設定 [sage] Date: 2009/02/09(月) 21:26:07 ID: j607E4t30 Be:
Mac OS X だと gas 以外に nasm も付いてくるし、逆アセンブルもできる (otool か gdb)。
なんて恵まれた環境(w しかし Mach-O がマイナー(w

x86 の ObjC のメソッドでは、self が 8(%ebp)、SELが 12(%ebp)、第一引数が 16(%ebp)。
これ豆知識。
と無理矢理 Cocoa に結びつけてみる。
318 Name: 名称未設定 [] Date: 2009/02/09(月) 21:43:05 ID: JA/hqyCL0 Be:
ttp://sourceforge.jp/magazine/09/02/09/0131209
QtもCocoa対応になるのか
あれ、前ってCarbonだったけ?中までチェックしてなかったなぁ
319 Name: 名称未設定 [sage] Date: 2009/02/09(月) 22:23:43 ID: 9drXTDxV0 Be:
藤子不二雄で育った世代が集まってるな。
320 Name: 名称未設定 [sage] Date: 2009/02/09(月) 23:48:04 ID: aEihI9Eo0 Be:
>>318
レパード発売直前に 64 bit Carbon GUI の廃止が発表されて
クロスプラットホームのひとはみんな慌てて Cocoa になってますよ。
Qt しかり、Open Office しかり。
Qt の開発者のブログはこのあたり
http://labs.trolltech.com/blogs/2007/06/21/wwdc-qt-carbon-64-bit-and-other-buzzwords/
http://labs.trolltech.com/blogs/2008/03/03/qtmac-cocoa-port-alpha-released/
もっと最近のポストもあるけど、初期のほうがおもろい。
321 Name: 名称未設定 [sage] Date: 2009/02/10(火) 08:06:37 ID: lUyxbS2f0 Be:
>>319
残念、テッカマンとサンダーバードで育ちますた。
あと日曜のliving tomorrow

あの番組によればとっくに核融合炉稼働、電車はすべてリニア、衛星軌道の太陽電池発電などが現実のものになってなければいけないのだが・・
21世紀にもなって相変わらず石油依存だったり雇用不安真っ盛りだったり
あげくの果てにハゲもダウンするしなんだかなもう。
322 Name: 名称未設定 [sage] Date: 2009/02/10(火) 08:18:35 ID: HCu6PKfT0 Be:
テレ東と閣下で育った俺が来ましたよ。
>>320
MSのOfficeはどうなんだろうって思って2008でotoolしてみたけどいまいちどうなってるんだかよくわからん。
Carbon.frameworkあるから普通にCarbonだとは思うがPowerPlant.frameworkがあるのが気になる。
Xcode移行したんじゃなかったのか?

>>321
ひとまずAppleには雇用不安も不景気も無縁だと思う。
あとJobsの後継者探しも問題ないだろう。
ここにいる連中を見る限り。
http://www.apple.com/pr/bios/
323 Name: 名称未設定 [sage] Date: 2009/02/10(火) 09:25:02 ID: A84c3i310 Be:
>>322
PowerPlant は XCode で使えるユニバーサル版が公開されてるよ。
MS がつかってるのは彼らなりの手の加わったバージョンだと思うが。
http://sourceforge.net/projects/open-powerplant

まあ Office は 64 bit にする必要もないから Carbon GUI のままでいいのでは...
Adobe はがんばって Cocoa に書きなおしているらしい。
324 Name: 名称未設定 [sage] Date: 2009/02/10(火) 09:32:01 ID: HCu6PKfT0 Be:
>>323
Freescaleがオープンソースで公開してたのか。知らなかった。

Win側のOfficeは次のバージョンの14はWeb志向らしいし64bit化はないかもな。
Adobeが書き直し中で、MSは64bit対応予定無しだとすると、後残った大手ベンダーはどこだ?
325 Name: 名称未設定 [sage] Date: 2009/02/10(火) 09:47:28 ID: A84c3i310 Be:
>>324
Mozilla Firefox も Firefox 3 を期に Cocoa になったらしいよ。
http://boomswaggerboom.wordpress.com/2008/06/10/firefox-3-for-mac-os-x-under-the-hood/
Java GUI も Swing は Apple 自身が Cocoa 化したはず。SWT はいまがんばって書き換え中。
326 Name: 名称未設定 [] Date: 2009/02/10(火) 11:32:28 ID: a+EfxJDo0 Be:
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 Name: 名称未設定 [sage] Date: 2009/02/10(火) 11:37:35 ID: HXxSGtyR0 Be:
>>326
>int student_id = [dict objectForKey:@"id"];

それNSNumberのオブジェクトのまま

int student_id = [[dict objectForKey:@"id"] intValue];

でないの?
328 Name: 名称未設定 [sage] Date: 2009/02/10(火) 11:38:03 ID: Ie9BcbwC0 Be:
objectForKey:で取り出せるのはint型ではなく、格納したときのNSNumberオブジェクト
int student_id = [[dict objectForKey: @"id"] intValue];
329 Name: 名称未設定 [sage] Date: 2009/02/10(火) 11:38:31 ID: Ie9BcbwC0 Be:
かぶったすまん
330 Name: 名称未設定 [] Date: 2009/02/10(火) 11:39:44 ID: a+EfxJDo0 Be:
>>328
即レス
ありがとう。
上手くいきました。!!!!!!!!!!!!!!!!!!1
331 Name: 名称未設定 [] Date: 2009/02/10(火) 11:42:33 ID: a+EfxJDo0 Be:
>>327-328さんにです。本当にありがとうございました。
332 Name: 名称未設定 [sage] Date: 2009/02/10(火) 13:45:11 ID: 4mx4xlFL0 Be:
Finderで既に存在するファイルと同名ファイルをwriteTo系のメソッドで保存しようとした時に、上書きせずに自動で別名ファイルにする方法はありますか?
もしくは自動で変更された作られる予定の別名ファイルのパスを取得するようなメソッドはありませんか?
title → title 2 みたいな感じのです。
今はディレクトリの中をループで回して同名ファイルのチェックと保存先のファイルパスの変更をしているのですが、一発でパスを取得できる方法があるのかなと思いまして。
333 Name: 名称未設定 [sage] Date: 2009/02/10(火) 14:35:44 ID: A84c3i310 Be:
[[NSFileManager defaultManager] fileExistsAtPath:@"..."] で出来るよ。
NSFileManager / NSWorkspace のメソッドを確認してみてください。
334 Name: 名称未設定 [sage] Date: 2009/02/10(火) 14:45:38 ID: 4mx4xlFL0 Be:
それはファイルがあるかどうかの確認だけですよね;
今それをforループの中で使ってファイルがあればファイルパスに文字列を足して新しいファイルパスを自分で生成しているのですが、それを一発で教えてくれるメソッドはないでしょうか?
335 Name: 名称未設定 [sage] Date: 2009/02/10(火) 14:58:25 ID: vzscJY1q0 Be:
>>334
それはプログラム側で指定するべきなわけで。
メソッドが用意されていないのではなく、プログラマの裁量で決められると考えるべき。
336 Name: 名称未設定 [sage] Date: 2009/02/10(火) 15:03:31 ID: A84c3i310 Be:
う~ん、Finder から Trash に移動させるばあいの API は 10.5 になって公開されましたがね。FSPathMoveObjectToTrashSync とか。
このあたりの API は Carbon に 10.4 / 10.5 になって
何を今更追加しているのかという。
しかも char* と CFStringRef が混在していて意味がよう分からん。
337 Name: 名称未設定 [sage] Date: 2009/02/10(火) 15:28:22 ID: 4mx4xlFL0 Be:
>>335
今はFinder準拠でファイル名+半角スペース+数字で連番ファイルを作成してるのですが、
使ってるメソッドがNSStringのstringWithFormatやstringByAppendingStringあたりなので、
"もし"将来的にFinderの挙動が変わるようなことがあった時のことを考えて提供されるAPIがあればそちらを使いたいと思ったわけです。
なぜFinder準拠にしたいかというとnamesOfPromisedFilesあたりを触っていたからです。
338 Name: 名称未設定 [sage] Date: 2009/02/10(火) 15:58:27 ID: CXjHgp8s0 Be:
hetimaさんとこで重複しないファイル名を返す隠しメソッドが紹介されてるよ。
http://d.hatena.ne.jp/hetima/20080224/1203794038
339 Name: 名称未設定 [sage] Date: 2009/02/10(火) 16:19:23 ID: 4mx4xlFL0 Be:
>>338
試してみました、こんなのあるんですね。情報ありがとうございます。
340 Name: 名称未設定 [sage] Date: 2009/02/12(木) 09:32:25 ID: eLgnTgxN0 Be:
WebViewを勉強中なのですが、現在表示中のhtmlのリンクをクリックされた時に
それをトラップしてアプリケーション側で独自の動作をさせることは可能でしょうか?
マニュアルのdelegateやnotificationの部分を見てもそれらしいものが見あたらないの
ですがオーバーライド?すればできるようになるのでしょうか?
341 Name: 名称未設定 [sage] Date: 2009/02/12(木) 09:42:25 ID: DD9Ylpvl0 Be:
>>340
webView:decidePolicyForNavigationAction:request:frame:decisionListener:
を調べてください。 WebView は高機能なので delegate が何種類もあります。
downloadDelegate, frameLoadDelegate, policyDelegate,
resourceLoadDelegate, UIDelegate とこんなけ。
342 Name: 名称未設定 [sage] Date: 2009/02/12(木) 11:43:50 ID: eLgnTgxN0 Be:
>>341
ありがとうございました。
343 Name: 名称未設定 [sage] Date: 2009/02/12(木) 12:20:32 ID: J98woQq60 Be:
>>339
目的が >>337 なのだったら隠しメソッドじゃ駄目だよね。それが今後も使われる保証はないし。
公開された API がないなら、それこそ AppleEvent で Finder を駆動してみるとかしか
なかったりして。
ってゆうか数字を付けてくれるのって Finder ではどういう処理をしたときだっけ?
344 Name: 名称未設定 [sage] Date: 2009/02/12(木) 16:44:47 ID: TYRWS1hv0 Be:
Privateなメソッドは使いませんでしたが、中でやっぱりこういうの使ってるんだよなというので納得しました。
Finderだとoption+ドラッグで同じディレクトリにファイルをコピーするか、当該ファイルのコピーペーストで"スペース+数字"の連番ファイルが作成されます。
Finder意外だとQTの録画やcommand+shift+3のスクリーンキャプチャなんかも同じように連番ファイルができます。
ちなみにファイルを選択してcommand+Dだと"スペース+のコピー"が付加されます。"名称未設定フォルダ"を2回duplicateすると"名称未設定フォルダ のコピー のコピー"になります。
参考までに、Safariのダウンロードだと"ハイフン+数字"が付加されます。NSURLDownloadのメソッドを利用して得られる連番ファイルパスはこれと同じ形式でした。
てことで公開されたメソッドがないので今のところ自力で実装しています。
345 Name: 名称未設定 [sage] Date: 2009/02/13(金) 16:41:45 ID: 1BSDHBM30 Be:
NSUserDefaultsControllerってIB上で作ることができるみたいですけどこれってIBでやる意味
何かあるんでしょうか?
ソースコード上で[NSUserDefaults standardUserDefaults]を呼ぶのと何か違うんでしょうか?
346 Name: 名称未設定 [sage] Date: 2009/02/13(金) 16:50:56 ID: 1BSDHBM30 Be:
standardUserDefaults以外のNSUserDefaultsが使えるので複数のNSUserDefaultsを
使い分けたりできるとこに意味があるのかな?

関係ないけどIDがBSDだw
347 Name: 名称未設定 [sage] Date: 2009/02/13(金) 17:08:14 ID: V9L4a6Ta0 Be:
NSUserDefaultsControllerはNSUserDefaultsにバインディングするためのコントローラ
348 Name: 名称未設定 [] Date: 2009/02/13(金) 22:01:09 ID: O3BrJaE30 Be:
WebViewを使ったアプリを作っているのですが、
Flashを使用したサイトを[webView setMainFrameURL:~];
で開くと、SIGINTでアプリが落ちてしまいます。
NibのほうでPlug-Inを無効にすれば落ちないのですが、
Flashを使用したサイトにも対応したいと考えています。
どなたか対処法等についての情報お持ちのかたいますでしょうか。
よろしくお願いします。
349 Name: 名称未設定 [sage] Date: 2009/02/13(金) 22:08:33 ID: t171ec4y0 Be:
シフトキーを単独で押したときにもkeyDownを呼んでほしいんだが、だめだね。
cocoaじゃ無理なんかね?
誰かやりかた知ってる?
350 Name: 名称未設定 [sage] Date: 2009/02/13(金) 22:17:19 ID: 1jUpgeeN0 Be:
イベントで拾えないか?
351 Name: 名称未設定 [sage] Date: 2009/02/13(金) 22:17:20 ID: OpdAEVCx0 Be:
>>349
知ってますが何か?
352 Name: 名称未設定 [sage] Date: 2009/02/13(金) 22:21:59 ID: l2YznzJu0 Be:
>>348
フラッシュプレイヤーの方に問題があるかも。
バージョン10は動画によっては頻繁にシークするとよく落ちます。
353 Name: 名称未設定 [sage] Date: 2009/02/13(金) 23:45:27 ID: O3BrJaE30 Be:
>>352
ありがとうございますm(_ _)m
Flash Playerを9にダウングレードしたら解決しました。

【まとめ】
・実行するクライアントのFlash Playerは9でも10でもOK
・コンパイルする時の環境は必ず9
354 Name: 名称未設定 [sage] Date: 2009/02/13(金) 23:52:13 ID: mZsjWfd80 Be:
>>353
なんでそんな「まとめ」になったの?
コンパイル時にプラグインが 9 か 10 かなんか関係ないんでは...

ユーザーが Flash 10 をつかってたら実行時に死ぬこともあるだろうし。
355 Name: 名称未設定 [sage] Date: 2009/02/14(土) 00:24:05 ID: RTjWpyaW0 Be:
俺もそのまとめには疑問符だな
WebKit使ってるだけだろ?
356 Name: 名称未設定 [sage] Date: 2009/02/14(土) 07:51:06 ID: //bDM35q0 Be:
>>354
Flash 9の時に作成したソフトは、10を入れていた時にも動作しました…
何故だかはわからないですorz
357 Name: 名称未設定 [sage] Date: 2009/02/14(土) 08:29:01 ID: GpKiar830 Be:
現実
ttp://www.atmarkit.co.jp/news/200902/13/wp.html
358 Name: 名称未設定 [sage] Date: 2009/02/14(土) 08:57:30 ID: E27FFzgQ0 Be:
ていうか理想は何なんだ?
359 Name: 名称未設定 [sage] Date: 2009/02/14(土) 10:28:04 ID: kiPUxtDD0 Be:
AとBの2種類のWindowControllerがあってそれぞれが複数のウィンドを開いているとして
その中からAのWindowControllerで現在一番上にあるものを判定するにはどうしたらいいで
しょうか?[NSApp windows]だとすべてのウィンドの配列が得られますが作られた順番は
わかるものの現在の重なっている順番はわからないみたいです
360 Name: 名称未設定 [sage] Date: 2009/02/14(土) 10:46:31 ID: kiPUxtDD0 Be:
自己解決しました
[NSApp windows]じゃなくて[NSApp orderedWindows]を呼べばいいみたいですね
361 Name: 名称未設定 [sage] Date: 2009/02/14(土) 10:55:01 ID: BKRyyfk/0 Be:
並び順は NSWindowList で取得できると思う
362 Name: 名称未設定 [] Date: 2009/02/15(日) 10:22:04 ID: F45b1+V/0 Be:
自作のUIViewクラスの位置を変えたいと思い
[myview setOrigin:CGPointMake(100.0f, 100.0f)];
とやっています。一応、正しく動作するのですがXcodeが
warning: MyView may not respond to '-setOrigin:'
というwarningを出してきます。ヘルプでもUIViewにはoriginというプロパティはないのですが、位置を変えるときはsetOrigin:を使ってよいのでしょうか?
363 Name: 名称未設定 [] Date: 2009/02/15(日) 10:25:56 ID: F45b1+V/0 Be:
すみません、自己解決しました。
UIViewの拡張仕様らしく
@interface UIView (Extended)
- (void)setOrigin:(CGPoint)aPoint;
@end
を追加したらWarningは消えました。
364 Name: 名称未設定 [] Date: 2009/02/15(日) 11:59:57 ID: +QMCuHp60 Be:
カテゴリでメソッドの宣言を追加したら、
メソッドの実体が無くても警告はでなくなるよ。
だから、それやって警告がでなくなったというのは
使っていいかどうかの印ではないです。

動くということは Apple がメソッドを実装してるってことですが、
レファレンスにのってないってことは公開されてないわけで、
iPhone OS のバージョンがあがると突然うごかなくなるかもしれません。

だから、そういうやばいことをしていることをキチンと理解して、
次のバージョンがでたら思い出してチェックしないといけないと覚えておく。

でもそういうヤバいことはすごい有用な機能をつかうときだけにしておいて、
origin に関してはそのかわりに公開されてる
frame.origin か center をつかっておけばいいんじゃないかと思いますが。
そんなところで危ない橋をわたることはないです
365 Name: 名称未設定 [sage] Date: 2009/02/15(日) 15:39:09 ID: dj1QUhiw0 Be:
インストールされてるアプリのリストを得ようとしたら
やっぱりSpotlightしかない?
366 Name: 名称未設定 [sage] Date: 2009/02/15(日) 15:48:27 ID: BvllGNq50 Be:
システムプロファイラ
367 Name: 名称未設定 [sage] Date: 2009/02/15(日) 16:15:36 ID: +QMCuHp60 Be:
>>365
ほんとに無差別に全部の app がほしいんでしょうか、
特定のファイルを開けるソフトを探したいとかいう場合は
LaunchServices をつかったほうがいいです。
http://developer.apple.com/DOCUMENTATION/Carbon/Conceptual/LaunchServicesConcepts/
http://developer.apple.com/DOCUMENTATION/Carbon/Reference/LaunchServicesReference/Reference/
368 Name: 名称未設定 [sage] Date: 2009/02/15(日) 16:49:10 ID: Sph+Cv+80 Be:
無差別に他のアプリを見つけてremoveとか。
369 Name: 名称未設定 [] Date: 2009/02/16(月) 22:22:33 ID: u+2CJCuL0 Be:
Core Graphicsに指定したピクセルのRGB値を抽出するような関数はないでしょうか?
370 Name: 名称未設定 [sage] Date: 2009/02/16(月) 23:14:36 ID: Dlu6/AHb0 Be:
NSBitmapImageRepにはあるけど、どうにかNSBitmapImageRepに変換してそれをうまく使えないですかねぇ
自分も最近CoreGraphics興味あるんですけど、参考になるサイトとかありませんか?Apple以外で
371 Name: 名称未設定 [sage] Date: 2009/02/16(月) 23:16:25 ID: Dlu6/AHb0 Be:
あ、どうやらNSBitmapImageRepはCGImageRefから生成できるようですよ
This page was generated by Dat2HTML Rev.