名称未設定<>sage<>2009/01/13(火) 22:26:12 ID:TtNlCCCM0<> 前スレ
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/ <>Cocoaはさっぱり!!! version.12 名称未設定<>sage<>2009/01/13(火) 22:28:24 ID:TtNlCCCM0<> 関連スレ
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/ <> 名称未設定<>sage<>2009/01/13(火) 22:39:37 ID:TtNlCCCM0<> 関連追加
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/
<> 名称未設定<><>2009/01/13(火) 23:08:47 ID:H0hDNQK00<> 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 <> 名称未設定<>sage<>2009/01/14(水) 01:13:18 ID:bEd33IEe0<> >>1
(・ω・`)乙  これは乙じゃなくてポニーテールなんだからね! <> 名称未設定<><>2009/01/14(水) 01:51:20 ID:zQKDdF+j0<> >>1
ポニーテール! <> 名称未設定<><>2009/01/14(水) 16:52:14 ID:2Od3YeYO0<>                            ,,,,,,_
                     ,,,,,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アプリをアクティブにしたいのですがどうしたらよいのでしょうか… <> 名称未設定<>sage<>2009/01/14(水) 16:58:22 ID:2Od3YeYO0<> 自己解決しました(´・ω・`)
スレ汚してすんません… <> 名称未設定<>sage<>2009/01/14(水) 19:35:07 ID:P+BRcwQe0<> 解決方法はどんなときでも晒しといた方が
同じ問題にぶち当たった人のためになると思う <> 名称未設定<>sage<>2009/01/15(木) 01:00:17 ID:N5HZEMqr0<> そろそろ確定申告の事を考えないといかん時期だな。 <> 名称未設定<>sage<>2009/01/15(木) 01:03:14 ID:N5HZEMqr0<> 盛大に誤爆ったorz <> 名称未設定<><>2009/01/15(木) 01:09:22 ID:upzL9L0e0<> MORINAGAの人? <> 名称未設定<>sage<>2009/01/16(金) 22:20:19 ID:z0eHNRBe0<> ここにいる方々は、普段どんな仕事をしてるんですか? <> 名称未設定<>sage<>2009/01/16(金) 22:43:09 ID://jRGAOJ0<> 底辺プログラマ <> 名称未設定<>sage<>2009/01/17(土) 14:18:31 ID:w58sAeN+0<> 他人の書いたプログラムの虫取り(´;ω;`) <> 名称未設定<>sage<>2009/01/17(土) 16:59:24 ID:FvBk0qG30<> ぶっちゃけ今はiPhoneぐらいだもんね。飯の種は。
cocoaで便利なアプリを作っても金を出してまで買ってくれる人はそんなにいなさそう。

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

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

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

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

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


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

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

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


<> 名称未設定<>sage<>2009/01/18(日) 16:32:15 ID:qnipeswc0<> >>42
44でuserInfoにdictionaryを設置する。 <> 名称未設定<>sage<>2009/01/18(日) 16:34:41 ID:qnipeswc0<>
45は全然、43の答えではないな。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

このときの経験は、後々すごく役にたったけど。 <> 名称未設定<>sage<>2009/01/19(月) 01:53:58 ID:k1KJxZ8q0<> 便利だけど確かBinding、ていうかNSArrayControllerがスレッドセーフじゃないから困ったこともあるなぁ
あと、いろいろ自動でやってくれる新しいAPIって便利だけど重いんだよなぁ <> 名称未設定<><>2009/01/19(月) 03:24:53 ID:9T/jZU8v0<> たしかに、間に余分な物をはさむ分遅くなるしね。 <> 名称未設定<>sage<>2009/01/19(月) 14:52:03 ID:j0GQl9c30<> ところでみんなNSArrayとSTL、どういう使い分けしてる?
STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。 <> 名称未設定<>sage<>2009/01/19(月) 15:05:47 ID:TXDBp2F00<> >>70
STLってなに? <> 名称未設定<>sage<>2009/01/19(月) 15:19:02 ID:0IPPfgoR0<> >>71
リーゼントのorz <> 名称未設定<>sage<>2009/01/19(月) 15:20:17 ID:fO6WFzd+0<> S: すばらしきかな
T: テンプレート
L: ライブラリーよ!
<> 名称未設定<>sage<>2009/01/19(月) 15:33:20 ID:FKWl3JcY0<> >>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 の比較もあるよ。 <> 名称未設定<>sage<>2009/01/19(月) 15:46:31 ID:j0GQl9c30<> >>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あるからね・・
みんなどう工夫してるのか知りたかったのさ。
<> 名称未設定<>sage<>2009/01/19(月) 15:51:26 ID:TXDBp2F00<> >>75
NSArrayはid型のものを入れるのにしか使わないから、どうしてもそういう構造体とか基本型入れるんなら
NSValue使って入れてる。この場合NSArrayのサブクラスは必要ないよね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

プログラマーって若禿の割合ってどれくらいなのかな?
皆さんの周りは大丈夫っすか? <> 名称未設定<><>2009/01/24(土) 12:52:51 ID:kU43svfh0<> 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です <> 名称未設定<>sage<>2009/01/24(土) 12:55:27 ID:T3GSIXO90<> [ movie release]を外せ <> 名称未設定<>sage<>2009/01/24(土) 13:19:01 ID:UuMn6FBr0<> #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

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

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

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

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

<> 名称未設定<>sage<>2009/01/24(土) 13:25:49 ID:UuMn6FBr0<> あれ?
ごめん。
sleepForTimeInterval: はクラスメソッドだったわw
人の事言えねえwww <> 127<><>2009/01/24(土) 14:28:28 ID:kU43svfh0<> >>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];
と書き換えてみたところエラーがでなくなりました。
とはいえ再生が完全でない(初めの数秒しか再生されない)ので,
もう少し調べてから,お知恵を拝借したいと存じます。 <> 名称未設定<>sage<>2009/01/24(土) 14:32:23 ID:KAvNfK720<> Movieの読み込みは非同期です。
再生前に、Movieがきちんと読み込み終わるまで待つ必要があります。
<> 名称未設定<>sage<>2009/01/24(土) 14:35:14 ID:qTQC8jca0<> [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) でいいのでは。 <> 名称未設定<>sage<>2009/01/24(土) 15:40:51 ID:iC4toJH20<> #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の勉強だったか、、吊ってくる <> 名称未設定<>sage<>2009/01/24(土) 15:42:58 ID:ocqxJVJ40<> QTKitってrunLoop回さなくていいの? <> 名称未設定<>sage<>2009/01/24(土) 16:27:03 ID:6oIPn9ie0<> NSMedataItemからファイルパスを取り出すのってどうやればいいの?
attributesの中にそれっぽいのがないんだけど <> 名称未設定<>sage<>2009/01/24(土) 16:34:43 ID:iC4toJH20<> 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。くそ、コマンドラインってとこでハマったわ。 <> 名称未設定<>sage<>2009/01/24(土) 16:42:38 ID:iC4toJH20<> >>137
ファイルのメタデータにファイルパスは入ってない <> 名称未設定<>sage<>2009/01/24(土) 16:50:53 ID:6oIPn9ie0<> >>139
どうもです。
じゃあNSMetadataQueryを使って検索した結果からファイルパスは得られないのかな? <> 名称未設定<>sage<>2009/01/24(土) 16:54:24 ID:iC4toJH20<> あれ、kMDItemPathってのがあるかも
それかQueryの方から得られると思う
昔作ったサンプルプロジェクトが見当たらなくて明確な回答ができません <> 名称未設定<>sage<>2009/01/24(土) 17:04:07 ID:iC4toJH20<> このへん読んで
http://developer.apple.com/technotes/tn2007/tn2192.html <> 名称未設定<>sage<>2009/01/24(土) 17:57:51 ID:6oIPn9ie0<> >>141-142
どうもありがとうございます。kMDItemPathで得ることができました。
-attributesで得られるキーの配列のなかにkMDItemPathは入ってなかったので・・・ <> 名称未設定<>sage<>2009/01/24(土) 19:10:48 ID:TBOq/xmI0<> すみません。
このようなケースの場合、どのように組めば(調べれば)いいのか教えて下さい

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

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

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

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

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

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

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

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

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

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

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

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

<> 名称未設定<><>2009/01/26(月) 11:26:26 ID:mXilku0z0<> >>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
でコンパイル <> 名称未設定<>sage<>2009/01/26(月) 11:32:13 ID:VOr2YZM+0<> 168が良い事を言った <> 名称未設定<>sage<>2009/01/26(月) 11:52:17 ID:Wx1bIrtR0<> >>169
それは #import のあとに、空白(0x20) だけでなくて
なぜか Unicode の no-break space (0xc2 0xa0) が入ってるからだと思う。
(テキストファイルをバイナリエディタで開いてみたら
何か変なことがわかるとおもいます。)
も一度 #import の行を消して書きなおしてみたらコンパイル通ると思うよ。
すくなくともうちの 10.5.6 の gcc では通った。
<> 名称未設定<>sage<>2009/01/26(月) 11:52:53 ID:9akAS9r80<> >>169
mv test.c test.m <> 名称未設定<>sage<>2009/01/26(月) 21:54:16 ID:QROzM0KB0<> >>807
http://pc11.2ch.net/test/read.cgi/mac/1231853172/
こっちで再度質問して。 <> 名称未設定<>sage<>2009/01/26(月) 21:55:18 ID:QROzM0KB0<> 173はゴバクっす。ごめんね。(≧ε≦) <> 名称未設定<><>2009/01/27(火) 11:26:15 ID:9hNC4mxk0<> ごめん ちょっと教えて
WindowsからSocketプログラム移植する時って
Cocoaで書き直した方が良い?
BDSソケットでもOK?

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

ちなみに元のPGは 独自プロトコルのTCPでスレッドで受信しているタイプです <> 名称未設定<>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 のうえに実装されてます。 <> 名称未設定<><>2009/01/27(火) 12:05:14 ID:9hNC4mxk0<> ありがとうございます
カーネルがmach なので期待はしていましたが
何ぶんWindows生活が長くて

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

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

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

環境は、MacOS X 10.4.11 & Xcode 2.0 です。 <> 名称未設定<>sage<>2009/01/27(火) 12:48:31 ID:yISpEkrc0<> "Only Roman Characters"が怪しい <> 名称未設定<>sage<>2009/01/27(火) 12:50:09 ID:wonKckub0<> >>178
mouseDownとか適当なイベント拾ってAppleScriptで半角切り替えかな。
でも強制切り替えはどうだろね。
運用でカバーした方がいい問題のような希ガス <> 名称未設定<>sage<>2009/01/27(火) 12:57:47 ID:Qfd0k62B0<> >>178
NSNumberFormatter 使えば済むのでは?
全角で入力されても内部で変換してしまえば良いし、他の文字が入ってたら
アラートも出せるし。って事ではないのかな??? <> 名称未設定<>sage<>2009/01/27(火) 13:02:13 ID:SWJ660ES0<> >>180 181
やはり強制切替は難しいですか;
ちょうどNSNumberFormatterを調べてたので、
全角→半角変換で対応してみます。
どうもありがとうございます。 <> 名称未設定<>sage<>2009/01/27(火) 14:08:33 ID:L3yeV/fG0<> >>182
検証してないけど、
http://lists.apple.com/archives/cocoa-dev/2008/Mar/msg00556.html
にText Input Sourceを使えばできるかもしれないってある <> 名称未設定<>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」の方を調べてみます。
ありがとうございました。
<> 名称未設定<>sage<>2009/01/27(火) 15:41:46 ID:RNAQzsjb0<> 素人が一言
キー入力せずにコピペで張る場合もあるぜ?
かな漢いじるよりNSNumberFormatter?で入力後の文字成型した方が現実には効果的だよ
まあかな漢制御したりキーボードイベント横取りしたりの方が
プログラマの征服感は満たされるけどね <> 名称未設定<>sage<>2009/01/27(火) 15:57:33 ID:L3yeV/fG0<> ただ、自動で英数モードに切り替わるほうがUI設計として適切な場合もある(例えばNSSecureTextField)。
両方行うのが最適解。 <> 名称未設定<><>2009/01/27(火) 16:01:41 ID:hKpJgpLM0<> 半角モードに切り替わるテキストフィールド見た事あるけど
どうやってるかは知らん <> 名称未設定<>sage<>2009/01/27(火) 16:21:16 ID:SWJ660ES0<> 同じMac上で、FileMaker Proを使っているんですが、
そこのTextFieldの『フィールド選択時の動作』設定では
『IMEモードの切り替え:Romanモードに固定』というのがあるので、
てっきりAPIで提供されていると思っていたんですよね; <> 名称未設定<>sage<>2009/01/27(火) 16:51:41 ID:5ofWyrnr0<> >>188
Carbon + Control Managerにはあったなぁ。
遠い昔(4,5年前か?)なのでなんと言うやつだったか、さっぱり思い出せないけど。

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

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

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

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

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

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

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

return [super becomeFirstResponder];
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

windowsのC++から同じライブラリを使用する時は
try〜catchで例外に飛んでくれるのに、macはtry〜catchだと落ちてしまう…
それで、シグナルのキャッチをしないといけないのかと思ったんですが、
復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
<> 名称未設定<>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() が
呼ばれてるからでしょう。 <> 名称未設定<>sage<>2009/01/29(木) 11:17:56 ID:jq8EMf7e0<> >>217
>復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
あと、この文脈で復帰というのはシグナルハンドラから抜けたらという
ことだから、SIGABRT がでた時点で GUI をいじってる暇はないです。 <> 212<>sage<>2009/01/29(木) 11:29:16 ID:yu3hvIXX0<> むーーっちゃ参考になりました!!
解決致しました!!

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

…今回のは自分の中でかなり勉強になった。w <> 名称未設定<>sage<>2009/01/29(木) 11:54:06 ID:jq8EMf7e0<> 解決して良かったです。今後は
「A というのを解決するために B をしたい。しかし B の仕方が分からない。」
とい う構造のときは、B を質問するんじゃなくて A を質問してくださいね。
(今回は A: C++例外を取り損ねていた B: SIGABRT をキャッチしたい)
<> 212<>sage<>2009/01/29(木) 12:02:51 ID:yu3hvIXX0<> あ、ホントですね…
改めて見ると質問おかしいですね(/▽*\)
以後気をつけます。。。 <> 名称未設定<><>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はそのまんまポインタを代入しているのですが、
こういうのはそれぞれ使い分けていけばいいのでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

そうそうw

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

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

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

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

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

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

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

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

この方法、凄く気になります。どこかにサンプルコードありませんか?
<> 名称未設定<>sage<>2009/02/04(水) 09:33:10 ID:eVwbmqQc0<> http://www.borkware.com/corebook/second-edition-source-code
の Chap. 18, 19 を解読してみたら。本も買ったら勉強になります。 <> 名称未設定<>sage<>2009/02/04(水) 13:08:09 ID:yVzPM0e80<> サンプルプロジェクトを、プロジェクト名は同じですが改造して、アプリを試作しました(A)。
(アイコン入替え、クラス追加等含め)
更に、それを少しだけ改変した別バージョン(B)を、別個に作ろうと、上記元の改造版を Finder
でフォルダごと複製して、プロジェクト名は同じで、ビルド作業もできておりました。
ところが、その際、(恐らく)Default.png か、Icon.png を更新して、ターゲットのクリーニング後、
ビルドは出来ても、アプリ起動した後、または途中で止まってしまう様になりました。
コードを、修正前の状態になるまで、コメントアウトしても、状況が変わりません。
こういう場合原因は何でしょう? <> 名称未設定<>sage<>2009/02/04(水) 13:29:00 ID:eVwbmqQc0<> エラーがデバッガ画面に出てるはずだからそれを説明しろ。
ここ読んでる人だってエスパーじゃないよ。
とりあえず Default.png / Icon.png ももとに戻して動くかみてみたら? <> 名称未設定<>sage<>2009/02/04(水) 14:16:27 ID:vG3Eq+0R0<> 実機上でBundle ID同じアプリが2つ出来て混乱しているとか。変えてみ。 <> 名称未設定<>sage<>2009/02/04(水) 14:32:41 ID:GLh6l/ao0<> >>276
ありえる。お前エスパーだろ? <> 名称未設定<><>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でセルに値を代入していくプログラム・・・
}
<> 名称未設定<>sage<>2009/02/04(水) 17:00:13 ID:/jro+NId0<> 普通はnibで既にカラムもセルもセットしておく。
どうしても動的に変えたいときはawakeFromNib:でやるかな。 <> 名称未設定<><>2009/02/04(水) 17:06:55 ID:pU891sJp0<> 確かにほとんどの参考プログラムはそうですよね。
ただテーブル数が多い&動的
ということもあって、別に動くには動くしで・・・・
でも皆さんから見てどうなんかな?って思ったんで質問させてもらったんですが・・ <> 名称未設定<>sage<>2009/02/04(水) 19:03:12 ID:AZEIygKK0<> 動的に変更したいにしてもなんらかのトリガーはあるんだろうから
そこから別途カラムを設定するメソッドを呼んだ方がいいと思う
実際の動作から変数を作ってどうこう、とやり出すと
予想外なところでif文に該当してバグの元になる <> 名称未設定<><>2009/02/04(水) 21:24:41 ID:Gh/9lkTr0<> iPhoneアプリ作成を始めた初心者です。Hello World! から勉強してます。
TableViewは作れましたが、TabelViewからタッチして別の画面
(別のcontroller)に飛びたいときはどうすればいいですか?
小さな複数のアプリをTabelViewでまとめたいのですが。 <> 名称未設定<>sage<>2009/02/04(水) 21:38:37 ID:kElp6NwL0<> >>282
iPod touch/iPhone ネイティブアプリ製作 ver.8
http://pc11.2ch.net/test/read.cgi/mac/1231156968/ <> 282<><>2009/02/04(水) 21:45:34 ID:Gh/9lkTr0<> わかりました。そちらのスレでもう一度聞いてみます。ありがとうございました。 <> 名称未設定<>sage<>2009/02/04(水) 22:10:20 ID:nazm8P890<> >>284
そしたらこっちでの質問を取り下げた方がいいよ。 <> 270<>sage<>2009/02/05(木) 00:02:28 ID:vPXIdXg90<> >>271
NSViewのサブクラスにそれらを実装してみましたが、呼ばれませんでした。
少しググってみましたが、それらはNSTextViewで可能な方法ではないでしょうか。
何であれありがとうございました。 <> 名称未設定<>sage<>2009/02/05(木) 11:15:29 ID:qtw79+lW0<> テキストフィールドのあるモーダルダイアログを表示し、
テキストフィールドに日本語を入力し確定する前(下線が付いたまま)に
ダイアログを閉じるとクラッシュしてしまう…
これはなんなのでしょうか… <> 名称未設定<>sage<>2009/02/05(木) 11:21:22 ID:aBVo+1GJ0<> >>287
ダイアログを破棄した後にUIを参照しようとしてない?
フォーカス関係の問題なら、フォーカス外してから閉じるとか。 <> 名称未設定<>sage<>2009/02/05(木) 11:22:28 ID:ih/Ab1m90<> >>287
クラッシュログはなんていってるの?
つかってるのはことえり?ATOK?

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

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

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

あと、僕の実経験では、Interface Builder でよく
Window のインスペクタで "release when closed" をチェックしてしまって
それのせいで release しすぎになりますが... <> 名称未設定<>sage<>2009/02/05(木) 13:19:19 ID:k3HvMYJw0<> >291 です……自己解決しました。原因は drawRect:[contentPath bounds] と
やったせいで、パスの線幅分のオフセットをやっていなかった為のようです。
とほほ… <> 名称未設定<>sage<>2009/02/05(木) 16:30:33 ID:MZKKxZ3Z0<> >>290
パネルがrelease when closedになってるとか? <> 290<>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のみ)
わけわかめだ… <> 名称未設定<>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:
となります。 <> 名称未設定<>sage<>2009/02/05(木) 23:28:22 ID:ih/Ab1m90<> >>295
それはあきらかにメモリ管理のバグなので、対処療法的に
こういう閉じ方ならクラッシュしない、という解決法ではなくて
どっかで retain/release のミスがあるのでそれをみつけてください。
まあ納入期限とかなければのはなしだけど。

clang static analyzer は
http://clang.llvm.org/StaticAnalysis.html
強力なのでいちどつかってみたら? <> 名称未設定<><>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];
<> 名称未設定<>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で生成するオブジェクトは、主にインスタンス変数などに長く保持したい場合などに使う。 <> 名称未設定<>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してよい。 <> 名称未設定<>sage<>2009/02/08(日) 15:41:18 ID:vQKSQI6y0<> self.label.textColor = [UIColor colorWith~~]; でおk <> 名称未設定<><>2009/02/08(日) 17:29:03 ID:x/17hb0Z0<> なるほど!ありがとうございます。よくわかりました。
autoreleaseされるcolorWithメソッドもあったんですね。
<> 名称未設定<><>2009/02/09(月) 16:27:22 ID:xx/grS5S0<> シンガポールの9歳少年がiphoneアプリの開発。
しかもこの少年2歳のときからコンピュータ使って
いまやすでに6言語をしようできるとか・・・・・。

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

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

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

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

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

レスポンダーチェーンは知っていましたがキーバインドは単語だけ聞いた事ある、という感じでしたが勉強になりました。
ありがとうございました。 <> 名称未設定<>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 に結びつけてみる。 <> 名称未設定<><>2009/02/09(月) 21:43:05 ID:JA/hqyCL0<> ttp://sourceforge.jp/magazine/09/02/09/0131209
QtもCocoa対応になるのか
あれ、前ってCarbonだったけ?中までチェックしてなかったなぁ <> 名称未設定<>sage<>2009/02/09(月) 22:23:43 ID:9drXTDxV0<> 藤子不二雄で育った世代が集まってるな。 <> 名称未設定<>sage<>2009/02/09(月) 23:48:04 ID:aEihI9Eo0<> >>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/
もっと最近のポストもあるけど、初期のほうがおもろい。 <> 名称未設定<>sage<>2009/02/10(火) 08:06:37 ID:lUyxbS2f0<> >>319
残念、テッカマンとサンダーバードで育ちますた。
あと日曜のliving tomorrow

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

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

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

Win側のOfficeは次のバージョンの14はWeb志向らしいし64bit化はないかもな。
Adobeが書き直し中で、MSは64bit対応予定無しだとすると、後残った大手ベンダーはどこだ?
<> 名称未設定<>sage<>2009/02/10(火) 09:47:28 ID:A84c3i310<> >>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 はいまがんばって書き換え中。 <> 名称未設定<><>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"];

正しく取り出せていないのでしょうか? <> 名称未設定<>sage<>2009/02/10(火) 11:37:35 ID:HXxSGtyR0<> >>326
>int student_id = [dict objectForKey:@"id"];

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

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

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

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

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

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

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

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

でもそういうヤバいことはすごい有用な機能をつかうときだけにしておいて、
origin に関してはそのかわりに公開されてる
frame.origin か center をつかっておけばいいんじゃないかと思いますが。
そんなところで危ない橋をわたることはないです <> 名称未設定<>sage<>2009/02/15(日) 15:39:09 ID:dj1QUhiw0<> インストールされてるアプリのリストを得ようとしたら
やっぱりSpotlightしかない? <> 名称未設定<>sage<>2009/02/15(日) 15:48:27 ID:BvllGNq50<> システムプロファイラ <> 名称未設定<>sage<>2009/02/15(日) 16:15:36 ID:+QMCuHp60<> >>365
ほんとに無差別に全部の app がほしいんでしょうか、
特定のファイルを開けるソフトを探したいとかいう場合は
LaunchServices をつかったほうがいいです。
http://developer.apple.com/DOCUMENTATION/Carbon/Conceptual/LaunchServicesConcepts/
http://developer.apple.com/DOCUMENTATION/Carbon/Reference/LaunchServicesReference/Reference/
<> 名称未設定<>sage<>2009/02/15(日) 16:49:10 ID:Sph+Cv+80<> 無差別に他のアプリを見つけてremoveとか。 <> 名称未設定<><>2009/02/16(月) 22:22:33 ID:u+2CJCuL0<> Core Graphicsに指定したピクセルのRGB値を抽出するような関数はないでしょうか? <> 名称未設定<>sage<>2009/02/16(月) 23:14:36 ID:Dlu6/AHb0<> NSBitmapImageRepにはあるけど、どうにかNSBitmapImageRepに変換してそれをうまく使えないですかねぇ
自分も最近CoreGraphics興味あるんですけど、参考になるサイトとかありませんか?Apple以外で <> 名称未設定<>sage<>2009/02/16(月) 23:16:25 ID:Dlu6/AHb0<> あ、どうやらNSBitmapImageRepはCGImageRefから生成できるようですよ <> 名称未設定<>sage<>2009/02/16(月) 23:17:09 ID:ftiiYlkU0<> CGBitmapContextGetData <> 名称未設定<>sage<>2009/02/16(月) 23:23:10 ID:0MWDdaGv0<> >>369
CoreGraphicsはpixelに直結している訳じゃないし、ColorSpaceに
よってもpixel値は変わるから、けちけち1x1サイズのBitmapContext
作って実際に描画して調べるのが定石
この例のDoTheHitTest()が参考になる。
http://developer.apple.com/samplecode/MouseTracking/listing2.html <> 名称未設定<>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);

こんな感じでビットマップ配列取得して
ループ内で各ピクセルのチャンネルごとの値を調べられる。 <> 名称未設定<>sage<>2009/02/17(火) 01:26:52 ID:huwz60HN0<> IBOutletでつないだIB上のWevViewに
[webView setMainFrameURL:@"http://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だとこの現象は起こりませんでした。
一体何が起こっているのでしょう?開けるページと開けないページの違いとは? <> 名称未設定<>sage<>2009/02/17(火) 01:31:49 ID:96tRpUJJ0<> プロジェクトうp <> 名称未設定<>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:@"http://www.yahoo.co.jp/"];
}
- (IBAction)openGoogle:(id)sender {
[webView setMainFrameURL:@"http://www.google.co.jp/"];
}
@end
IBでアウトレットとアクションを接続
これだけです。
ちなみに
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.yahoo.co.jp/"]]];
に置き換えてもダメでした。 <> 名称未設定<>sage<>2009/02/17(火) 02:05:51 ID:huwz60HN0<> 試しにIB上のインスペクタでPlug-insをオフにしたらYahoo!開けました。
今日はもう遅いので後日Flashのバージョンとか入れ替えて試してみます。が、詳しい方いましたら是非とも教えてください。 <> 名称未設定<>sage<>2009/02/17(火) 02:36:14 ID:96tRpUJJ0<> あ、ほんとだ。
デバッグモードで起動したアプリ内のWebViewがFlashを含むページを読み込んだだけで終了する。
Flashプラグインのせいなのかな? <> 名称未設定<>sage<>2009/02/17(火) 03:44:28 ID:eBKgwb/Q0<> うちはPlug-insオンでも全然問題ないぞ <> 名称未設定<>sage<>2009/02/17(火) 07:49:54 ID:a/gWfwad0<> http://www.stinkbot.com/blog/archives/69
とかにもありますが、なんか Flash 10 plugin を出荷するさいに
Adobe がデバッガ立ちあげコードを消すのを忘れたらしいです。
だから、デバッガが繋がってない状況だと大丈夫ですが、
XCode などでデバッガが繋がってるとデバッガがよばれてしまうらしいです。 <> 名称未設定<>sage<>2009/02/17(火) 09:57:42 ID:huwz60HN0<> おはようございます、情報サンクスです <> 名称未設定<>sage<>2009/02/17(火) 13:49:15 ID:KlMBN10B0<> >>381
さすがアドベ
やってくれるなw <> 名称未設定<>sage<>2009/02/17(火) 14:20:04 ID:a/gWfwad0<> まあ Adobe はむちゃくちゃだから...
http://www.betalogue.com/2008/11/13/adobe-cs4-installer/
とかみると笑える。まあ Apple もそんなにかわらんかも知らんが。
まあこの betalogue の主は毎日文句をこんなに書き連ねて
よく飽きないなと思いますが。スレ違いすいません。 <> 名称未設定<>sage<>2009/02/17(火) 15:22:35 ID:nDyJwcW00<> Xcodeの実行メニューのDebugger()/DebugStr()で停止をオフにすれば? <> 名称未設定<>sage<>2009/02/17(火) 15:33:28 ID:a/gWfwad0<> なるほど。旧 mac のころはプログラムをしてなかったので
Debugger(), DebugStr() を知りませんでした。
これってレファレンスにのってなくありません?
CoreServices.framework の中の CarbonCore.framework のなかに
MacTypes.h で定義されてますが... <> 名称未設定<>sage<>2009/02/17(火) 18:59:32 ID:huwz60HN0<> >>386
帰宅しました
ADC Home > Reference Library > Reference > Darwin > Kernel Framework Reference
にある
void Debugger(const char * reason);
じゃないですかね <> 名称未設定<><>2009/02/17(火) 21:39:27 ID:xoCyoJOy0<> 返事が遅くなりましたが、上の方でピクセル値取得に答えてくださった方ありがとうございます。そのキーワードを参考に調べてみます。 <> 名称未設定<>sage<>2009/02/18(水) 14:27:00 ID:4adWTljt0<> Cocoaプログラミングを始めたばかりなのですが、↓をCocoaでやる方法はありますか?

FSRef dirRef;
FSFindFolder(kLocalDomain, kPreferencesFolderType, kDontCreateFolder, &dirRef); <> 名称未設定<>sage<>2009/02/18(水) 14:29:07 ID:TOS+xHXH0<> NSSearchPathForDirectoriesInDomains <> 名称未設定<>sage<>2009/02/18(水) 14:51:11 ID:4adWTljt0<> >>390
ありがとうございます。
NSSearchPathForDirectoriesInDomainsを調べてみました。
LocalDomainのPreferencesフォルダは直に取得できないようですね。

LocalDomainのPreferencesフォルダを参照するには、LocalDomainのLibraryフォルダを取得した後、
パスにPreferencesをアペンドする感じになるのでしょうか? <> 名称未設定<>sage<>2009/02/18(水) 15:15:26 ID:MJb3Ggc80<> >>389
別に FSFindFolder を Cocoa で呼んでもいいと思うけど。
もちろん結果の FSRef は CFURLRef や path に変換する必要があるだろうけど。 <> 名称未設定<>sage<>2009/02/18(水) 15:19:20 ID:LxpICSxd0<> Cocoaだけでやるんならそれしかあるまい。Carbonとハイブリッドさせるなら
FSFindFolder()で得られたdirRefからファイルパスを取り出す。 <> 名称未設定<>sage<>2009/02/18(水) 15:32:35 ID:4adWTljt0<> >>392
>>393
レスありがとうございます。
Cocoaだけで作らなければいけないため、NSSearchPathForDirectoriesInDomainsを使う事にします。 <> 名称未設定<>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で同じような設定はどこでやればいいのでしょう? <> 名称未設定<>sage<>2009/02/18(水) 20:38:40 ID:ztNxZmzz0<> >>394
64bitですか? <> 名称未設定<>sage<>2009/02/18(水) 23:40:46 ID:hVtp5F3g0<> >>394
というか Cocoa では ~/Library/Preferences を自前で開く必要はないはずだが。
NSUserDefaults をつかうと、
設定ファイルを開いて設定を読み書きするところまで全部背後でやってくれます。 <> 名称未設定<>sage<>2009/02/18(水) 23:51:23 ID:Ik84VQ3T0<> 任意ファイル名のPreferences ファイルにしたかったら Core Foundation に
それ用の関数があるし、データを保存するならば Application Support フォルダに
いれるべきだしね <> 名称未設定<>sage<>2009/02/19(木) 00:42:38 ID:a/3Rvlm00<> >>394
64 bit で Cocoa だけでやらないといけないと思ってるんだったら、
Carbon 全部が使えないわけでないことを知っといたほうがいいよ。
64 bit で使えなくなったのは Carbon の GUI まわりだけだから、
FSFindFolder は使えると思います。
http://developer.apple.com/DOCUMENTATION/Carbon/Reference/Folder_Manager/Reference/reference.html#//apple_ref/c/func/FSFindFolder
とかみると 64 bit で使えないとは書いてないでしょ。
HIほげほげとかのドキュメントをみると
64 bit では使えないとあからさまに書いてます。
http://developer.apple.com/documentation/Carbon/Conceptual/Carbon64BitGuide/OtherAPIChanges/chapter_6_section_21.html
とかも参照。 <> 394<>sage<>2009/02/19(木) 10:07:55 ID:daDL34zI0<> レスどうもです。

>>397
外部ツールが/Library/Preferences/・・・に吐き出したファイルを開くアプリを作成しています。
外部ツールの仕様は変更できないため、/Library/Preferencesを自前で開くしかない状況です。

>>399
CarbonGUI周りだけが64bitで使えないのは知っていました。
SnowLeopardでCarbonが廃止されるという噂があるので、Cocoa Onlyで作成したいと思った次第です。 <> 名称未設定<>sage<>2009/02/19(木) 11:09:53 ID:a/3Rvlm00<> 10.5 で動いてたソフトが 10.6 で動かなくなるというのは
さすがにないと思います。根拠のない噂でしょう。
まあ Cocoa からできる機能は Cocoa から
呼んでおいたほうがいいかもしれませんが、
Cocoa API がなくて C の API しかないのは山のようにありますよ。
プロパティリストを開くのは NSPropertyListSerialization とかつかってください。
ってなんか他のスレでも同じような話をしたな... <> 394<>sage<>2009/02/19(木) 11:22:35 ID:daDL34zI0<> >>401
確かに、10.5で動いてたソフトが10.6で動かなくなってしまったら大変な事になりますよね。。。
とりあえずGUI周りだけはCocoa Onlyで実装するようにしておいて、他の部分が10.6で動かなくなったらその時に考える事にします。
ありがとうございました。 <> 名称未設定<>sage<>2009/02/19(木) 11:42:30 ID:E6aTnY+e0<> 64bit bainary持ってなければ、32bitで上がるだけ。
PlugIn系は親が64bitになるから、絶対対応が必要、と。 <> 名称未設定<>sage<>2009/02/19(木) 11:53:09 ID:Xb83Jjel0<> deprecatedに指定されていなければ、いきなり廃止されることはないと
思うけど。そんなことになったら大騒ぎになるよ。

PICTも廃止されたら代わりになるものがない。PDFじゃ編集出来るソフトは
Illustratorくらいだし。 <> 名称未設定<>sage<>2009/02/19(木) 12:39:24 ID:BqoQTulc0<> NSなんたら以外は使わないようにしてる <> 名称未設定<>sage<>2009/02/19(木) 12:47:13 ID:a/3Rvlm00<> PDF を編集出来るようがんばってるシェアウェアもあります
http://purgatorydesign.com/Intaglio/

PICT は残念ながらいずれ死亡でしょう。
ほとんど関連APIが deprecacted で、CoreGraphics のコンテキストに
直接描ける QDPictほげほげ系の API も 64bit ではつかえないし。
/usr/sbin/pictd ってのをつかえば 64bit Cocoa からも pict が
描けるんだと勝手におもってますが...
<> 名称未設定<>sage<>2009/02/19(木) 13:04:22 ID:FXkl7wUg0<> PICTって今じゃ使う機会がなくない? <> 名称未設定<>sage<>2009/02/19(木) 13:13:15 ID:a/3Rvlm00<> Keynote '09 が MathType とやりとりしてるデータは PICT だよ。 <> 名称未設定<><>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);
<> 名称未設定<><>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

<> 名称未設定<><>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);
}
<> 名称未設定<>sage<>2009/02/19(木) 13:36:47 ID:xsNjWzM+0<> 結果どうなるかと NSLog の結果も書けば? <> 名称未設定<><>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の値を直接書き換えたのが描画内容に反映されていない原因が
思い当たりません・・・ <> 名称未設定<>sage<>2009/02/19(木) 14:03:31 ID:Xb83Jjel0<> >>407
俺はまだ使ってるよ。CarbonからCocoaに何年もかけて移行してるけど
最後に残ったのがPICT。他に使えるフォーマットがないんだよね。
どうせtext, line, rect, ovalしか使ってないからrtfにしてしまう手もあるけど。
今のとこ自前でドローソフトを作って専用フォーマットにしようかと思ってる。
PICTのようなドロー系の汎用フォーマットがないのが困る。

>>406
残念。intaglioはPDFを一つのオブジェクトにしてしまうみたい。
PDFオブジェクトのグループ解除やPDF自体の編集は出来ないみたいだ。 <> 名称未設定<>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 <> 名称未設定<>sage<>2009/02/19(木) 14:15:14 ID:Xb83Jjel0<> >>414
と思ったら、Preferenceで設定すればPDFを編集できるんだな。
思ってたよりも良く出来てる。 <> 名称未設定<>sage<>2009/02/19(木) 14:26:24 ID:xsNjWzM+0<> >>411
>CGImageCreate の alpha 設定あたりが怪しいんじゃないかな <> 名称未設定<>sage<>2009/02/19(木) 14:33:59 ID:xsNjWzM+0<> >>413
>(255,255,255,255)

黒で塗りつぶしたのなら 0,0,0,255 じゃないの? <> 名称未設定<>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 をよべば
使えるっぽいです。やったことないけど。
<> 名称未設定<><>2009/02/19(木) 14:45:14 ID:gZR/wLEh0<> >>417
引数を調べてみます。
>>418
その通りでしたorzその前に白でやってたので間違えました。
<> 名称未設定<><>2009/02/19(木) 14:49:01 ID:gZR/wLEh0<> すみませんorz
もう一度よく目をこしらえたら赤い点がありました
左上が原点だと思って左上ばかり見てましたが、
左下が原点らしく左下の方にありました。

お騒がせしました。 <> 名称未設定<>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 に描画しないんでしょう ???
<> 名称未設定<><>2009/02/19(木) 17:27:59 ID:gZR/wLEh0<> >>422
ピクセル単位でRGBの読み込み、画像処理、書き込みしたかったからです。
とりあえずテストで1ピクセルだけ書き込めるかテストしてました。
1ピクセルでなくて線を引けばすぐ気づいたのにorz
<> 名称未設定<>sage<>2009/02/19(木) 17:32:58 ID:IupgEOPD0<> タブブラウザを作りたいんですけどWebKitにはタブ化の機能はないみたいですが
これを自前でやるのは結構大変でしょうか? <> 名称未設定<>sage<>2009/02/19(木) 17:56:43 ID:cdmrNj430<> 難しそうだね
しいらを参考にするとか?
<> 名称未設定<>sage<>2009/02/19(木) 18:14:07 ID:IupgEOPD0<> NSSegmentedControlを使う方法だと無理があるでしょうか?
開きたいタブの数に応じてセグメントの数を動的に変更して
それぞれのセグメントのViewに動的に作ったWebViewを割りあてる
というような感じだとどうでしょうか? <> 名称未設定<>sage<>2009/02/19(木) 18:19:06 ID:Qczx1P3r0<> つ PSMTabBarControl
<> 名称未設定<>sage<>2009/02/19(木) 18:21:36 ID:ZJRPFUT00<> >>426
私は最初はそれで作りましたので出来ないことではないです。
自分でViewを入れ替える代わりに、NSTabViewをタブ非表示にして使う手もあります。
後者の場合はPSMTabBarControlを使えば、Safari風に出来てクローズや並び替えも出来るのでオススメです。
http://www.positivespinmedia.com/dev/PSMTabBarControl.html <> 名称未設定<>sage<>2009/02/19(木) 18:34:14 ID:IupgEOPD0<> PSMTabBarControlを教えてくれてありがとうございました
これを使うのが一番良さそうですね <> 名称未設定<>sage<>2009/02/19(木) 18:44:00 ID:ZJRPFUT00<> ただし私が使ったときにPSMTabBarControlはちょっとバグっぽいところがいくつかありました。
・Enumeration中に対象のNSMutableArrayからオブジェクトを削除する
・KVOを解除せずに対象オブジェクトをreleaseする

コードは適宜修正した方がいいかもしれません。 <> 名称未設定<>sage<>2009/02/19(木) 18:46:06 ID:Qczx1P3r0<> 僕は直接いじるのが面倒だったのでカテゴリで無理やり上書きしましたw <> 名称未設定<>sage<>2009/02/19(木) 19:49:11 ID:TRDvRyIy0<> パネルの枠だけを非表示にするメソッドが分かりません。
NSWindow を調べてみましたが、ウィンドウ上の内容もろとも
透明になってしまいました。

枠だけを消すにはどのようにしたら良いでしょうか?お願いします。 <> 名称未設定<>sage<>2009/02/19(木) 19:57:39 ID:ZtyLyBTC0<> >>432
枠って何よ <> 名称未設定<>sage<>2009/02/19(木) 21:07:01 ID:TRDvRyIy0<> >>433
枠というか、背景ということです。
ウィンドウに乗っかってる内容だけを表示して、ウィンドウそのものを
消すという意味です。

そもそもオリジナルのマウスカーソルを表示させたり、オリジナルの
ツールチップを出す場合はこういう手法で良いですか? <> 名称未設定<>sage<>2009/02/19(木) 21:27:50 ID:ZJRPFUT00<> >>434
カーソルならNSCursorでいいと思いますし、ツールチップはNSViewサブクラスならIBから設定したりsetToolTipすればいいと思います。 <> 名称未設定<>sage<>2009/02/19(木) 22:00:56 ID:xsNjWzM+0<> homepage.mac.com/ryanstevens/.Public/TooltipWindowDemo.zip <> 名称未設定<>sage<>2009/02/19(木) 22:47:52 ID:TRDvRyIy0<> 説明不足ですいません。
マウスカーソルは NSCursor だと大きい画像が設定できないと
ドキュメントにありました。

ツールチップはOSが標準で提供しているものなら setToolTip で
いいと思いますが、
http://www.panic.com/jp/coda/img/screenshots/files-screenshot_03.png

このようなオリジナルのツールチップを出す手法が知りたいのです。
つたない説明で申し訳ないです。 <> 名称未設定<>sage<>2009/02/19(木) 23:05:30 ID:ZtyLyBTC0<> >>437
ウインドウ内ならCALayer使えばいいんじゃね? <> 名称未設定<>sage<>2009/02/19(木) 23:19:02 ID:a/3Rvlm00<> >>437
ふつうに枠なし window を表示すればいいとおもいます。
http://developer.apple.com/samplecode/RoundTransparentWindow/
とか参照。 <> 名称未設定<>sage<>2009/02/19(木) 23:59:52 ID:ObnIMvo/0<> UIToolbarみたいにwindowの上部でなくて下部に設置できるNSToolbarってないんですかね
IBでは提供されていないのにiTunesとかその他Appleソフトでは普通に使われてますよね <> 名称未設定<>sage<>2009/02/20(金) 00:13:30 ID:NNWa+kQMi<> >>440
あれはウインドウの下にボタンを配置してるだけでは?nibは見てないけど。
toolbarみたいにカスタマイズできるようにするのは大変かもしれないけどただのボタン群ならそれで十分でしょ。 <> 名称未設定<>sage<>2009/02/20(金) 00:14:18 ID:gTSMnnNF0<> 普通に配置してるだけ <> 名称未設定<>sage<>2009/02/20(金) 00:29:02 ID:6fzrNojY0<> >>440
Apple Human Interface Guidelinesの

Bottom Bars
http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/chapter_18_section_4.html#//apple_ref/doc/uid/20000961-SW6

Rectangular-Style Toolbar Controls
http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGControls/chapter_19_section_2.html#//apple_ref/doc/uid/TP30000359-SW10
を読みましょう <> 名称未設定<>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を読んでいますが詳しい方いたら教えてください。 <> 名称未設定<>sage<>2009/02/20(金) 02:05:01 ID:thVrN14b0<> いくつかのアプリケーションについて調べたところ、標準のアプリも専用のBottomToolbarというのは使用しておらず
Windowの下部にボタンを配置してそれらしく見せているだけでした。
しかしいくつかのアプリケーションのBottomToolbarの色がIB標準のTextureの色と違う点については
iCalのCalenderWindow.nibの場合は独自のクラスCALWindowを使用していたり
iChatのMyProfile.nibの場合は独自クラスを使っていなかったり(おそらくカテゴリかな)
まぁアプリによっていろいろ実装方法が違えど工夫があるみたいですね。
とりあえずIB標準のものが気に入らなければ自分で実装するしかないみたいです。
分けの分からん質問ですいませんでした。 <> 名称未設定<>sage<>2009/02/20(金) 07:39:47 ID:6fzrNojY0<> >>445
443だけど、それはtextured windowではなくて、NSWindowの
setContentBorderThicknessを使うのです。

SourceView
http://developer.apple.com/samplecode/SourceView/
のコードを見ましょう
<> 名称未設定<>sage<>2009/02/20(金) 10:16:03 ID:thVrN14b0<> >>446
おおお完璧です!ありがとうございました!
作ったサブクラスは即捨てます。 <> 名称未設定<>sage<>2009/02/20(金) 18:37:19 ID:D53ExNTJ0<> NSTabViewのタブってIB上だとドラッグして順番変えられるけど
アプリにして起動するとドラッグできないんですけどこういうもん
なんでしょうか?

V2Cっていう2chブラウザだとドラッグできるけどこれはJavaだから? <> 名称未設定<>sage<>2009/02/20(金) 19:02:36 ID:BBYdLV+c0<> >>448
そういうもんです。
並び替え出来るタブは>>427-428を使えば良いかと。見た目が変わっちゃいますが。 <> 名称未設定<>sage<>2009/02/20(金) 20:38:22 ID:maxZ/9TX0<> 最近はどのアプリもパーツは凝ってて
純正だとショボくて見劣りするんだよなあ。
作る方はマンドクセでやってらんないし。 <> 名称未設定<>sage<>2009/02/20(金) 23:15:56 ID:gTSMnnNF0<> >>448
DnDは自分で実装する <> 名称未設定<>sage<>2009/02/25(水) 12:51:07 ID:GTgWYfeH0<> Safari 4でだいぶタブが変わっちゃったね
SnowではWindowのTitleBarにもうちょいアクセスできるようになるのだろうか <> 名称未設定<>sage<>2009/02/25(水) 12:54:44 ID:lH7VFHaH0<> ダウンロードしてないけど、自前の描画でしょ。自前でやるなら何だって出来る。 <> 名称未設定<>sage<>2009/02/25(水) 14:11:56 ID:ObXDktwm0<> タブコントロールが標準で搭載するという夢をみた。
というか IB で NSWindow のインスペクタでチェックボックスを
クリックするだけで OK、とかそんな感じだったらいいな... <> 名称未設定<>sage<>2009/02/25(水) 14:40:57 ID:DSwcYgaS0<> タイトルバー侵略しちゃったらドラッグとかしにくいだろ。 <> 名称未設定<>sage<>2009/02/25(水) 15:13:11 ID:GTgWYfeH0<> >>455
Safariがしちゃったけどね
>>夢を見た
Snowあるからインスコしてみればいいんだけどね
新しいXcodeとかAPIのドキュメントとか入ってんのかな
変更するかも知れないものだし積極的に触ってない…
>>453
後で3と4のnibでも見比べてみるわ <> 名称未設定<>sage<>2009/02/25(水) 18:44:08 ID:fYlgQHqq0<> まったく、safari4でタイトルバータブなんて変態UIをやってくれたもんだ。
ウインドウシェードできないじゃん。 <> 名称未設定<>sage<>2009/02/25(水) 23:28:50 ID:JqmefXPg0<> 今日Flashのアップデートが出てたので入れてみましたが
嘆かわしいことにDebugger() was called!問題は修正されていませんでした。
以上報告まで。 <> 名称未設定<>sage<>2009/02/26(木) 11:05:49 ID:yg2R2lH40<> >>458
んでパフォーマンスはうpしたの? <> 名称未設定<>sage<>2009/02/26(木) 11:08:28 ID:94ZoWN0W0<> すみません、お願いします。

NSURL* theURL;
theURL=[NSURL URLWithString:@"http://www.yahoo.co.jp/"];

if ([[NSWorkspace sharedWorkspace]openURL:theURL])
{

}
のようにすると、指定したURLをデフォルトのブラウザで開くことができると思うのですが、
なぜかブラウザが落ちてしまいます。SafariでもFirefoxでも同じです。
設定するURLによってはちゃんと開くのですが、ページ内のリンクをクリックして、
表示されるページが遷移すると落ちる場合もあります。

これは何が原因で、どうすると回避できるのでしょうか。

<> 名称未設定<>sage<>2009/02/26(木) 11:26:31 ID:8t+pRt+l0<> うちでは問題ないよ。OS X のバージョンは?
あと、Safari のクラッシュログをはってみてください。 <> 名称未設定<>sage<>2009/02/26(木) 16:54:35 ID:94ZoWN0W0<> ありがとうございます。すみません、いま出先なので、クラッシュログは後ではりますね。明日になるかもしれません。
OSは10.5.6、Intel Macです。
そのページのURLを手入力で直接表示すると何ともなくて、
先に書いたコードからページを開いたときにトラブルが発生するので、
どこかどうにかなっているんだと思います。 <> 名称未設定<>sage<>2009/02/26(木) 19:03:44 ID:bjUky8mz0<> OmniObjectMeterがフリーになったんだねぇ。
つーかOmniにはいろいろとお世話になってまつ。 <> 名称未設定<><>2009/02/26(木) 21:05:39 ID:tomYC/Na0<> Mac OS 10.5.6 (intel) / Xcode 3.1環境にて、WebKitを使ったソフトを作成しています。

[webView setMainFrameURL:@"http://www.google.com"];
[webView setMainFrameURL:@"http://www.nicovideo.jp"];
[webView setMainFrameURL:@"http://www.youtube.com"];
等は問題無いのですが
[webView setMainFrameURL:@"http://www.nicovideo.jp/search/hoge"];
[webView setMainFrameURL:@"http://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
が呼び出される前に落ちてしまっているようでした。
特定のページ(ニコニコの一部のページ)を表示できない原因はなんなのでしょうか。
<> 名称未設定<>sage<>2009/02/26(木) 21:26:00 ID:tomYC/Na0<> すみません、google等でも問題が発生してしまったので再検証してみます。 <> 名称未設定<>sage<>2009/02/26(木) 21:45:36 ID:Fel0Nrhg0<> >>459
ついでにSafari4にしたのでなんとも言えんです <> 460<>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
これが原因かもしれません。 <> 名称未設定<>sage<>2009/02/27(金) 08:13:38 ID:Owu4WLfr0<> 2つのMenuItemがあってこれをトグルのように動作させたいんですが
動作についてはそれぞれにIBActionを結びつけてうまくいきました
あとは両者の選択状態をチェックマークで表したいんですけど
片方のMenuItemが呼ばれたときに他方のMenuItemのチェックマークを
はずすためにはどうしたらいいんでしょうか?

それぞれにIBOutletを結びつければいいのかと思ったんですが、RadioGroup
のように自動化する機構みたいなのはないんでしょうか? <> 名称未設定<>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 がチェック無し状態です。 <> 名称未設定<>sage<>2009/02/27(金) 16:06:15 ID:Owu4WLfr0<> >>469
ありがとうございます
やっぱり自分で実装するんですね <> 名称未設定<>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する。 <> 名称未設定<>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;
みたいなんでもいいと思う <> 名称未設定<>sage<>2009/02/27(金) 19:32:53 ID:7k3/xzqN0<> 1行ぬけてたごめん
[currentMenuItem setState:NSOffState];
currentMenuItem = sender;
[currentMenuItem setState:NSOnState]; <> 名称未設定<>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プロパティを設定するだけ <> 名称未設定<>sage<>2009/02/27(金) 22:26:13 ID:FirvgHyF0<> >>464
こちらのコードを試してみてはいかかでしょうか?

webViewのサブクラスで

NSURL *url = [NSURL URLWithString:@"http://www.hoge.com"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[[self mainFrame] loadRequest:req];
<> 名称未設定<>sage<>2009/02/27(金) 22:47:34 ID:wlMPknXO0<> >>475
[webView setMainFrameURL:]

[[webView mainFrame] loadRequest:]
は同じ <> 名称未設定<>sage<>2009/02/28(土) 10:06:48 ID:6LJrsjQH0<> http://www.objective-basic.com/
てのをみつけた。β版のダウンロードすら出来んが... <> 名称未設定<><>2009/02/28(土) 10:44:36 ID:cDuyCEKF0<> 35ドルか <> 名称未設定<>sage<>2009/02/28(土) 10:50:57 ID:XR/39gz50<> 2008年第4四半期の売り上げで、前年同期比965%増という大躍進を遂げているのはObjective-C
Mac OS XやiPhoneでの開発に注目が集まったこと以外に、この成長の理由は考えつかないとしている。
http://www.atmarkit.co.jp/news/200902/27/langs.html
<> 名称未設定<>sage<>2009/02/28(土) 13:53:15 ID:6LJrsjQH0<> ところで、64bit + GC mode で PDFKit をつかうと failed integrity check とかいってよく GC thread が落ちるんだけど僕だけ? <> 名称未設定<>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;
}

低レベルな質問ですいません <> 名称未設定<>sage<>2009/02/28(土) 18:59:47 ID:eY0ZEIjm0<> そもそも動かない気がするんだが。
写し間違い? <> 名称未設定<>sage<>2009/02/28(土) 19:27:08 ID:+2oNMzSz0<> >>482
一字一句間違えてないです
引数が一つだと動くのですが
二つ以上だと「too many arguments to function」が出てしまうんだす
可変引数って「...」で合ってますよね? <> 名称未設定<>sage<>2009/02/28(土) 20:18:40 ID:vm9zXEnV0<> その本読んでないけど、メソッド内のstringByAppendingPathComponent「s」は本当はstringByAppendingPathComponentな気がする <> 名称未設定<>sage<>2009/02/28(土) 21:09:04 ID:7RcuzfIS0<> >>483
無限再帰呼び出しになってるんだけど。
スタックオーバーフローが出るよ。たぶん。
じゃなくて、単にメモリ不足で落ちるのかな?今は。

>>484
これっぽいけど、エラーの原因はよくわからんね。
警告出てても無視してるんなら、宣言が間違ってる可能性がある。 <> 名称未設定<>sage<>2009/02/28(土) 21:14:19 ID:RtPTalEM0<> あてずっぽだが
option+[;]で入る、三連ピリオドを入力しているとか。 <> 名称未設定<>sage<>2009/02/28(土) 21:24:58 ID:+7yc1jv1i<> >>481
写間違えてるな
whileの下のstringByAppendingPathComponent
だな
sがいらない

Xcodeの補間機能使ってるとよくある <> 名称未設定<>sage<>2009/02/28(土) 21:45:20 ID:+2oNMzSz0<> 皆様レスありがとうございます
指摘された箇所とmain関数の方では逆に「s」を付け忘れてました
プログラム云々の前に、落ち着いて再度見直すべきでした
カスみたいな質問に回答してくださってありがとうございました <> 名称未設定<>sage<>2009/02/28(土) 21:55:32 ID:vm9zXEnV0<> 不覚にも吹いたw <> 名称未設定<>sage<>2009/02/28(土) 22:33:32 ID:95WSMilk0<> ちょっとほのぼのしたw <> 名称未設定<>sage<>2009/03/01(日) 01:27:11 ID:VJx+qHpp0<> あの補完機能は罠だよな
便利だけど <> 名称未設定<>sage<>2009/03/01(日) 08:15:24 ID:EiWEylNr0<> >>481
ところで作者さんの名前は「荻原(おぎはら)」さんね。萩原(はぎわら)はなくて。

...と思うんだけど「萩原 Objective-C」でもかなりヒットするのでちょっと不安になったw
まあ全国の萩原さん&荻原さんに共通した悩みかもしれんがw <> 名称未設定<>sage<>2009/03/01(日) 09:29:22 ID:ngCPRk3q0<> ずっとハギワラって読んでたわ <> 名称未設定<><>2009/03/01(日) 10:38:11 ID:OZuV8YBg0<> Cocoa本で儲けてるね <> 名称未設定<><>2009/03/01(日) 10:51:51 ID:iuVtn2zf0<> ことえり@leopardだと、おぎわらで変換すると荻原も萩原も両方でるね。
なんだよコレ! <> 名称未設定<>sage<>2009/03/01(日) 12:03:10 ID:EiWEylNr0<> >>495
たしか萩原で「おぎわら」と読ませる名字もあるんだと思った。
なお作者さんのお名前は「おぎわら」でなく「おぎはら」とお読みする模様。奥が深い。 <> 名称未設定<>sage<>2009/03/01(日) 19:58:33 ID:nSlqd6vqi<> 漢字が違うことすら今初めて知った俺は負け組。。。 <> 名称未設定<>sage<>2009/03/01(日) 20:04:42 ID:bE6+K5TB0<> 大丈夫、個々にもう一人居るorz <> 名称未設定<><>2009/03/01(日) 20:14:12 ID:OZuV8YBg0<> http://www.youtube.com/watch?v=QhDvCt7N2fk <> 名称未設定<>sage<>2009/03/01(日) 20:40:37 ID:ikYIOl0J0<> あるオブジェクトAからオブジェクトBを取りだし、
取りだしたオブジェクトBに元のオブジェクトAを入れると
世界が終わりますか? <> 名称未設定<>sage<>2009/03/01(日) 20:46:01 ID:wxn7spBQ0<> 終わりません。
別の新しい世界が始まります。 <> 名称未設定<>sage<>2009/03/01(日) 21:16:50 ID:kyCkI9Cc0<> オブジェクトBにAを入れるとtype mismatchでコンパイルも通らない

と空気を読まずに適当にほざいてみる <> 名称未設定<>sage<>2009/03/01(日) 21:23:00 ID:nhsz2S6p0<> >>499
それよりこっちの方が凄くねか
http://www.youtube.com/watch?v=pqHg5yhSWxk <> 名称未設定<>sage<>2009/03/01(日) 22:14:21 ID:gsG7+5zG0<> 全スレ>>981
存在は知ってるけどきちんと調べないと出てこないくらいの機能で
しかもベータで、8/31までに限定されている機能を偉そうに言われても。 <> 名称未設定<>sage<>2009/03/01(日) 22:14:44 ID:gsG7+5zG0<> 誤爆しました。 <> 名称未設定<>sage<>2009/03/01(日) 22:23:00 ID:nD9JQ2Z80<> >>504
偉そうな誤爆・・・ <> 名称未設定<>sage<>2009/03/01(日) 22:23:21 ID:Swn1B2EX0<> >>499,503
ところで、このキャラクターは何? <> 名称未設定<>sage<>2009/03/01(日) 23:34:43 ID:Lpr4cl+S0<> オリジナルのキャラじゃないでしょうか <> 名称未設定<>sage<>2009/03/02(月) 19:42:31 ID:zFsp46jM0<> KVO についてなんですが、みなさん context: って何に使ってますか?
何か有効に使えるような例ってありますかね?
addObserver: forKeyPath: options: context: <> 名称未設定<>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
<> 名称未設定<>sage<>2009/03/02(月) 20:48:30 ID:zFsp46jM0<> >>510
あ、すみません。聞き方が悪かったです。んーと、 observeValueForKeyPath:
ofObject: change: context: で使うのは分かっているのですが、バインド数が
少ない事もあり、addObserver:forKeyPath:options:context: の第4引数を
NULL で渡して、keyPath と object で識別しています。
ただ、もっとうまく使う方法はないかなぁ、と思いまして聞いた次第です。
何かこういう使い方すると〜、ってのがあればお願いします。 <> 名称未設定<>sage<>2009/03/02(月) 20:55:57 ID:+eP5TcnG0<> >>511
良く嫁。
読んでも分からんならそれが君のレベル。 <> 名称未設定<>sage<>2009/03/02(月) 21:09:36 ID:3ZPdt5AI0<> >>511
結局、何が知りたいのかが良く分かりません。
contextをnullにして問題がないなら、それでいいんじゃないの?
<> 名称未設定<>sage<>2009/03/02(月) 21:43:05 ID:zFsp46jM0<> んー、どうやら今ひとつ分かってないみたいです。出直してきます。
ありがとうございました。 <> 名称未設定<>sage<>2009/03/02(月) 22:49:33 ID:ITECLOA50<> 質問です。
Finderで下部にファイルパスがアイコン付きで出ているのは、何を使ってるのでしょうか?
こんなやつ↓
http://mrox.net/blog/wp-content/uploads/2008/08/lt2-path-bar.png

最初、NSBrowserかと思ったのですが、リサイズの動きを見てると1行のNSTableview?
っぽい気がしますが。NSViewでマトリックス的に描いてる気もします。
<> 名称未設定<>sage<>2009/03/02(月) 22:55:04 ID:WNc4tkl70<> NSPathControl
10.5 <> 名称未設定<>sage<>2009/03/02(月) 22:56:07 ID:WNc4tkl70<> てかまずIBを見ようよ… <> 名称未設定<>sage<>2009/03/03(火) 00:07:24 ID:xPw77iU/0<> >>516-517
ああ、すみません・・10.4・・
10.5からあるんですか。わかりました。
10.4でも検索した時は下に出るんですよね。研究します。 <> 名称未設定<>sage<>2009/03/03(火) 00:28:08 ID:0wdKrcR60<> >>518
10.4でもあるならまだAPIが公開されてないだけ。
ちなみに>>515の写真がモロ10.5だったから10.4の話しとは思いもしなかったよ <> 名称未設定<>sage<>2009/03/03(火) 07:11:12 ID:2r7A6olG0<> >>518
NSPathControl ほどではないがこういうのもある。
10.3 くらいでも使えるようだ。↓
ttp://zathras.de/sourcecode.htm#UKFilePathView <> 名称未設定<>sage<>2009/03/03(火) 15:13:52 ID:7S0UavSNi<> NSWindowのサブクラスのinitWithContentRect~をオーバーライドして
NSBorderlessWindowMaskを指定しTextFieldを配置したビューを表示させると、
そのTextFieldはFirstResponderにはなれないみたいなんですが
FirstRsponderにして編集できるようにするにはどうしたらよいのでしょうか。 <> 名称未設定<>sage<>2009/03/03(火) 15:17:45 ID:A3m2MNkE0<> >>521
NSBorderlessWindowMaskのNSWindowはkeyWindowになれません。
ので、
- (BOOL)canBecomeKeyWindow { return YES; }
を実装。 <> 名称未設定<>sage<>2009/03/03(火) 15:23:40 ID:7S0UavSNi<> >>522
あ、なるほど。
ありがとうございます。 <> 名称未設定<>sage<>2009/03/04(水) 14:10:49 ID:8OFab0YV0<> すみません、教えて下さい。Finder や Safari の「進む」「戻る」ボタンと
同じ様なものを作りたいのです。具体的には、NSArrayController の
canSelectNext, canSelectPrevious にそれぞれバインドして enable/disable
させたいんです。
聞きたい事は、(1)このボタンって NSSegmentedControll, SegmentedCell
なのか? (2)もしそうならどうやってバインドしているのか?
です。NSSegmentedCell の中身をとってくるメソッドが無く、直接バインド
することができません。なので、そもそもNSSegmentedCellじゃないのかと
思った次第です。よろしくお願いします。 <> 名称未設定<>sage<>2009/03/04(水) 14:14:56 ID:gggWBHUU0<> >>524
>NSSegmentedCell
ではなくて、くっついているような画像で作ったボタンだと思われ <> 名称未設定<>sage<>2009/03/04(水) 14:43:16 ID:B4H9BmJw0<> Safariのnib開いたらNSSegmentedControlだったよ <> 名称未設定<>sage<>2009/03/04(水) 14:59:31 ID:8OFab0YV0<> >>525, 526
ありがとうございます。NSSegmentedControll ですか…そうすると
キー値監視だけやって enable/disable をコントロールしているんでしょうね。
やってみた所うまくいきました。
これって下手にバインドすると危険だから…かな <> 名称未設定<>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]; <> 名称未設定<>sage<>2009/03/04(水) 21:06:58 ID:8OFab0YV0<> >>528
なるほどー、思いつかなかったですが、そういう手もありですね。
情報ありがとうございます。 <> 名称未設定<><>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];
} <> 名称未設定<><>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];
} <> 名称未設定<><>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];
}
} <> 名称未設定<><>2009/03/07(土) 08:42:51 ID:/VcjeVf50<> 言い忘れました
やりたいことはメインスレッドから該当するサブスレッドの停止です。 <> 名称未設定<>sage<>2009/03/07(土) 10:56:04 ID:jvcfXHix0<> なにがやりたいのか全くわからないが、
タイマーをなぜ別スレッドで作ってるのかわからないんだけど?
タイマーだけでよければ、main thread で
NSTimer* timer=[Timer scheduledTimerWithTimeInterval...]
で作るだけでいいとおもうけど。
で、ボタンのターゲットアクションで [timer invalidate] で止まります。

そのためだけに NSConnection とかつかうのは大げさすぎます。
むかしの OpenStep の参考書だとかだと、thread 間通信は Distributed Objects
(NSConnection) をつかえということだったと思いますが...
<> 名称未設定<><>2009/03/07(土) 11:03:11 ID:/VcjeVf50<> すみません。
スレッドの勉強でつくったやつです。
気にしないでください。
やりたいことは、メイン側からサブスレッドの停止です。 <> 名称未設定<>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];
-------------------------
とか。
<> 名称未設定<>sage<>2009/03/07(土) 11:53:56 ID:jvcfXHix0<> >>535,536
10.5 以降は、 536 さんの書いてる willExit に相当するプロパティが
標準で NSThread に実装されてます。
ドキュメントの -[NSThread cancel] と
-[NSThread isCancelled] をみてください。
<> 名称未設定<><>2009/03/07(土) 12:14:00 ID:/VcjeVf50<> >>536

うーーーーーーーーーーん。なるほどーーーーーー。
ありがとうございます。

<> 名称未設定<><>2009/03/07(土) 12:15:01 ID:/VcjeVf50<> >>537

さっそく確認します。
ありがとうございます。
<> 名称未設定<>sage<>2009/03/07(土) 15:33:28 ID:NdfDHhsK0<> Window、またはViewのsubviewsの中から指定したクラスのインスタンスを取り出すようなメソッドってありましっけ?
もしくは現在アプリケーションで使用されているインスタンスの中からクラス名指定で取り出しだったか、、記憶があいまいなのであったかどうかも覚えていませんが、あれば教えてください <> 名称未設定<>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!!!!");
}
......

適当に今書いたので動く保証はない。

下のはない。 <> 名称未設定<>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者に違いがでてくるのか分かりません。
この一時的なインスタンスが正しく自分で管理されていると仮定するならば、後者を使用するのが常に正しいでしょうか? <> 名称未設定<>sage<>2009/03/07(土) 18:24:31 ID:7emvzKVD0<> >>542
NSColorはライトウエイトだと信じきって見なかったことにするw

@try{
NSArray *array = [[NSArray alloc] initWith...];
処理
}
@finally{
[array release];
}
じゃないとダメ。
とかきちんとするならね。 <> 名称未設定<>sage<>2009/03/08(日) 01:38:36 ID:rBsRDVjQ0<> >>542
AutoreleasePool は、イベントループ一回ごとにかならず解放されます。
(とドキュメントのどこかにかいてある。)
基本的には自分で書いたメソッドが呼ばれて、
Cocoa のシステムに帰った時点で解放されるとおもっていいです。
だから、イベントハンドラ内で何百個と alloc するのでないかぎり
autorelease されたのをつかっておいて問題ないです。

NSColor に関してもそうですが、最適化は想像でやっても意味がないです。
Shark とか Instruments つかって、実際に一番時間がかかっているコードが
どこか測定してから、そこを最適化したほうがよいです。 <> 名称未設定<>sage<>2009/03/08(日) 01:43:15 ID:8zHqR9wl0<> 他のアプリから文字列を直接ドロップしてアプリを起動(&ドロップされた文字列を処理)したい場合、
どのように実装すればよろしいのでしょうか? <> 名称未設定<>sage<>2009/03/08(日) 02:17:13 ID:rBsRDVjQ0<> >>545
ファインダーのアイコンに文字列をドロップするのは不可能なんじゃないかと
思いますがよくわかりません。なんかできるソフトしってますか?

Dock アイコンにドロップでよければ、
http://developer.apple.com/documentation/Cocoa/Conceptual/SysServices/SysServices.html
にしたがって文字列を受け取るサービスをひとつ登録すれば、
文字列ドロップで登録したメソッドが呼び出されますよ。 <> 名称未設定<>sage<>2009/03/08(日) 12:05:29 ID:NuJ1Axz/0<> NSDrawerについて質問させて下さい
これを開いた状態で親ウィンドウをサイズしてもドロワーはもとのサイズのままですが
親ウィンドウのリサイズ後にドロワーの取っ手の部分をクリックすると
親ウィンドウのサイズにフィットします
親ウィンドウのリサイズに追随してドロワーもリサイズさせる設定とかあるんでしょうか?
それとも親ウィンドウのwindowWillResizeとかで手動でドロワーだけリサイズさせるんでしょうか? <> 名称未設定<>sage<>2009/03/08(日) 13:30:48 ID:1H4HNmlA0<> >>541
やっぱそんなメソッドないですかね。単なる記憶違いかな。
てか書いてもらってなんですけど、subviewsをピックアップする時に型をチェックしてmutableArrayで返した方が処理の手間が省けていいのではないでしょうか。
あとふと思ったのは、ケースバイケースでしょうけど、
型 メソッド名:(型)値; でなくて
型 メソッド名(型 値) でメソッド実装する人って多いんですかね?呼び出される状況によってはこの方が便利な気もしますが。
ちなみに自分はCocoaとCarbonでがっつり分けています。 <> 名称未設定<>sage<>2009/03/08(日) 14:50:27 ID:rBsRDVjQ0<> >>548
>型 メソッド名:(型)値; でなくて
>型 メソッド名(型 値) でメソッド実装
後者はメソッドじゃなくて単に関数になると思うが。
後者だと self が使えないよ. <> 名称未設定<>sage<>2009/03/08(日) 15:25:24 ID:1toaEf+C0<> >>548
>てか書いてもらってなんですけど、subviewsをピックアップする時に型をチェックしてmutableArrayで返した方が処理の手間が省けていいのではないでしょうか。
だったらそうすれば良いよ。方法を示しただけだから。
Cの関数で書いたのは、再帰呼び出しのオーバーヘッドを減らすため。 <> 名称未設定<>sage<>2009/03/08(日) 15:56:44 ID:PGulKxjh0<> >>550
>>Cの関数で書いたのは、再帰呼び出しのオーバーヘッドを減らすため。
なるほど、参考になりました。
特定のクラスのビューをsubviewsから探す方法は既に自分で実装済みなので、一発で取得できないかなということで質問させていただきました。
なので知りたいのは方法でなくて指定クラスのインスタンスを返すようなメソッドの有無なのですが…。 <> 名称未設定<>sage<>2009/03/08(日) 17:25:10 ID:rBsRDVjQ0<> >>551
NSView のドキュメントをなぜ読まない?
あと、なんでそもそもそんなことをしたいのかよくわからないんだけど。
IBOutlet でつないでおけばいいと思いますが...
なんか window 内で沢山ビューをだしたり消したり、
すごいダイナミカルなことをやってるんですか? <> 名称未設定<>sage<>2009/03/08(日) 20:06:46 ID:ShyRSmJk0<> >>537
たしかNSAutorelesePoolって、スレッドごとに手動で用意しなきゃダメじゃなかったっけ?

- (void)myThread:(id)arg
{
NSAutorelesePool* pool = [NSAutoreleasePool new];

// スレッド内の処理

[pool release];
}

-[NSThread cancel]で強制終了させたら、メモリリークにならないか? <> 名称未設定<>sage<>2009/03/08(日) 20:28:08 ID:uApWwWOP0<> >>552
NSViewのドキュメントを読んだ上で分からなかったので、NSViewのsubviewsにこだわらず>>540のように聞いているのですが。
なぜしたいかというのは、自分がターゲットになるインスタンスを管理していないからです。
自分が管理しないインスタンスに埋め込まれている自動で生成、破棄されるNSViewのサブクラスのインスタンスに自分がアクセスする際に現状はsubviewsをたぐっていくしかない状態なんですよねー
ちなみに一度そいつを見つけたら、そいつが存在する間はインスタンス変数として保持して直接アクセスしてます。
そもそもPrivateなとこ叩いてるので変なことしてるのは承知です。Privateなインスタンス変数名とそいつへのアクセス方が分かればぐっと楽になるのですが。
>>なんか window 内で沢山ビューをだしたり消したり、
>>すごいダイナミカルなことをやってるんですか?
確かに言われればダイナミカルですね。中の人は少しでも全体の動作を機敏にしてメモリ使用量を減らすためにやっているのでしょうかね。 <> 名称未設定<>sage<>2009/03/08(日) 20:36:05 ID:3G7Vb/lI0<> 私も「あるクラスのインスタンスを全て把握したい」ときはあります。
そういう場合は自前でファイルスタティックなretain/releaseをしないCFMutableArrayなりSetなりを作っておいて、
initで追加しdeallocで削除するようにしてます。標準のAPIはなかったと思います。 <> 名称未設定<>sage<>2009/03/08(日) 20:48:05 ID:ShyRSmJk0<> >>554
つまり、NSWindow上に、アプリの実行中に生成・破棄されるNSViewがいて、そのNSViewのインスタンスを参照したいということですか?
手っ取り早いのは、そのViewに-(NSInteger)tagメソッドを実装して、-[NSView viewWithTag:]で検索することです。 <> 名称未設定<>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も上書きしてやれば良いということにまで頭が回りませんでした。アドバイスありがとうございました。 <> 名称未設定<>sage<>2009/03/08(日) 21:27:38 ID:ShyRSmJk0<> >>557
ええと、NSViewのリファレンスをよく読んでおいてね。
カテゴリー実装やメソッド差し替えを行うべきなのは、initじゃなくて、tagメソッドの方だよ。 <> 名称未設定<>sage<>2009/03/08(日) 21:52:07 ID:UUT+J//+0<> >>558
あ、tag付けしてやるんじゃなくて任意のtagを返すようにしてやればいいんですね、すいません。 <> 名称未設定<>sage<>2009/03/09(月) 20:23:01 ID:NrpW0GGy0<> NSTableViewの使い方なんですけど
A:NSArrayControllerとCocoa Bindingして使う方法
B:WindowControllerをdataSourceにして使う方法
の2種類が一般的なような気がしますが、どちらかに決める決定的な基準みたいなものってあるんでしょうか?
最初はAを選ぶべきと思ってたんですけどデータ構造が入り組んでくるとBの方が見通しがいいようにも思えて
迷っています。

単に好みの問題でどっちでもいいんでしょうか? <> 名称未設定<>sage<>2009/03/09(月) 21:07:19 ID:XNtUUhqmP<> >>560
データの内容を、テーブルビューのスクロールに合わせて動的に読み込んだりするのは
NSArrayControllerじゃできないから、そういう場合はdataSource使うかな…

NSArrayControllerで済む場合はNSArrayController使うことが多い。 <> 名称未設定<>sage<>2009/03/09(月) 21:23:56 ID:jtM8Ljjr0<> >>561
-countOf<Key>とか-objectIn<Key>AtIndex:といった、arrayなアクセッサメソッドを実装すれば、NSArrayControllerでも要素の動的読み込みができるんじゃないかな?
ためしたことないけど。 <> 名称未設定<><>2009/03/09(月) 22:10:23 ID:d+Iiet9p0<> 下のような感じでAmazon APIの返してくるxmlをNSXMLParserで解析しようとすると行数0となり、parserがxmlを読み込んでないという結果になりました。<AmazonAPIのURL>を直接ブラウザに打ち込むとXMLは表示されていました。

ためしに別のサイトhttp://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];
<> 名称未設定<>sage<>2009/03/09(月) 22:11:34 ID:n1Oa/5pR0<> >>543, 544
遅くなりましたが、アドバイスありがとうございました。 <> 名称未設定<><>2009/03/09(月) 22:14:39 ID:d+Iiet9p0<> すみません。書き込んですぐですが自己解決しました。
URLの部分にクエリを日本語で入れると動かないようです。
URLエンコーディングしないとダメですねorz <> 名称未設定<><>2009/03/09(月) 22:31:47 ID:d+Iiet9p0<> ちなみにですがURLエンコードのやり方

NSString *url = @"http:// ... 日本語文字列";
NSString *encodedURL = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(encodedURL); <> 名称未設定<>sage<>2009/03/09(月) 23:52:44 ID:y2m6EAHl0<> >>566
ソースコードの @"..." の中に日本語書き込んじゃだめだよ。
コンパイラがバイナリにその文字列をどのエンコーディングで書き込むかが
コンパイラの設定に依存するし、
バイナリが起動されたときに、Cocoa のランタイムがバイナリにある
文字列を NSString に読み取る際にどのエンコーディングだと考えるかは
システム環境設定の言語環境とかに複雑に依存します。

その辺が今は偶然動いてるかもしれないけど、
OS のバージョンとかコンパイラの設定とか変えると
突然おかしくなる可能性があります。
日本人の知り合いに自作ソフトをつかってもらおうと思ったときも、
相手が英語モードで OS X をつかってたらおかしくなります。

あと NSLog のなかにそのまま encodedURL を突っ込むのは危険では?
encodedURL 内に %d とか %@ が含まれてると、
次の変数を読み込もうとしてクラッシュしますよ。 <> 名称未設定<>sage<>2009/03/09(月) 23:58:12 ID:k2nG3i0I0<> まあ俺だったら「http://」とかにくっつける前にURLエンコードするし、NSLog(@"%@", encodedURL)とするね。 <> 名称未設定<>sage<>2009/03/10(火) 00:22:38 ID:ePnM2L++P<> >>568
>日本人の知り合いに自作ソフトをつかってもらおうと思ったときも、
>相手が英語モードで OS X をつかってたらおかしくなります。

当方英語環境だが、
@"日本語"で問題無く動いてる。
NSString、内部的には全部Unicodeになるんじゃなかったか? <> 名称未設定<>sage<>2009/03/10(火) 00:58:02 ID:AD9MBakd0<> 567 です。おかしくなる「可能性がある」くらいにしておけばよかったですね。
http://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で保存して
コンパイルしておけば問題ないようですね。 <> 名称未設定<>sage<>2009/03/10(火) 01:09:39 ID:wdDjvl570<> >>569
>@"日本語"で問題無く動いてる

それはめでたいな。 <> 名称未設定<>sage<>2009/03/10(火) 01:30:14 ID:AD9MBakd0<> やっと以上の話をどこで読んだか思い出しました。
http://lists.apple.com/archives/cocoa-dev/2008/Nov/msg02226.html
きちんと動くようになったのは XCode 3.0 以上らしいです。 <> 名称未設定<>sage<>2009/03/10(火) 02:42:47 ID:G7aIvJgc0<> クパチーノに日本人で中のコード書いてる人とかいる? <> 名称未設定<>sage<>2009/03/10(火) 02:45:22 ID:KQQaXFQt0<> ことえりはどこで開発してんだ?アップルジャパン? <> 名称未設定<>sage<>2009/03/10(火) 10:22:56 ID:Ri0Qw33v0<> AJは開発には携わってない <> 名称未設定<>sage<>2009/03/10(火) 11:27:56 ID:/242Njp/0<> 前は某MLでADCの人がレスしてくれたりしてたけど、
今はそのML自体が死んでるからねwww <> 名称未設定<>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 にすると動きます。
まあこれと@"..."内に日本語を書くとどうなるかも全く別問題ですが...
スレ汚し失礼しました。 <> 名称未設定<>sage<>2009/03/10(火) 11:46:50 ID:AD9MBakd0<> ああ、書き込んだらバックスラッシュが円記号になった... まあいいですよね... 失礼しました... <> 名称未設定<><>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]
}
<> 名称未設定<><>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で作成したスレッドを停止させたい*/

} <> 名称未設定<>sage<>2009/03/10(火) 12:06:31 ID:G56mpIxy0<> stopでインスタンス変数のshouldStopをYESにするなりして、別スレッドの方で回ってるループ内でチェックして止めればいいだけじゃね? <> 名称未設定<>sage<>2009/03/10(火) 12:08:06 ID:AD9MBakd0<> >>536--539
で全く同じ会話が既にされてるわけだが... <> 名称未設定<>sage<>2009/03/10(火) 12:12:09 ID:G56mpIxy0<> ほんとだw
てかマルチスレッドでNSPortとかNSConnectionとか使ったことないわ。 <> 名称未設定<>sage<>2009/03/10(火) 12:18:12 ID:AD9MBakd0<> あ、NSRunLoop を止めたいからさらに困ってるのかな。
その場合は CFRunLoopStop をつかってください。 <> 名称未設定<><>2009/03/10(火) 12:20:19 ID:g3ZMAThN0<> その質問は僕です。
でも・・・>>581-582
そういう方法しかないんですか?
スレッドの数が動的になるので、
どれだけヘッダーファイルでshoudStopを用意していいのか分からないこともあって、
再度の質問をさせていただきました。


<> 名称未設定<>sage<>2009/03/10(火) 12:32:54 ID:G56mpIxy0<> スレッドの数だけそのスレッドを回すオブジェクトを作ればいいのでは?
NSOperationみたいな感じで隠蔽して。
ってか10.5以上ならNSOperation使えばいいね。 <> 名称未設定<>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 を登録しておけばいいわけです。 <> 名称未設定<>sage<>2009/03/10(火) 12:41:34 ID:Rm75bWrc0<> 質問です。

ドラッグ中にマウスを左右方向のみ動かせるようにして、上下方向を
固定させたいと思います。

そこで、ドラッグ開始時のマウスの y座標を記録しておいて、
ドラッグ中はマウスのy座標をその値に変更し続ける、という
実装方法を考えました。まず、この実装方法は適切でしょうか?

また、マウスポインタを指定した座標に移動する方法がわかりません。
NSEvent のドキュメントをあさってみましたが、マウスポインタの
位置を取得するメソッドはあっても、位置を移動させるメソッドが
見つけられませんでした。

よろしくお願いします。 <> 名称未設定<>sage<>2009/03/10(火) 12:43:21 ID:G56mpIxy0<> マウスポインタじゃなくてドラッグされる対象の動きを制限すればいいでしょ。 <> 名称未設定<>sage<>2009/03/10(火) 12:49:14 ID:Rm75bWrc0<> >>589
質問の仕方が悪かったのですが、ドラッグといっても
オブジェクトを動かしてるわけではないんです。

Photoshop で数値の入力ボックスをマウスで左右に
ひっぱると数値を変更できますよね。
あれをやりたいんです。

<> 名称未設定<>sage<>2009/03/10(火) 13:00:05 ID:G56mpIxy0<> >>590
それマウスポインタまで拘束されるの?見たことないんだけど。俺のがElementsだからかな。 <> 名称未設定<>sage<>2009/03/10(火) 13:03:18 ID:AD9MBakd0<> >>585
あんまり関係ないですが、誰に習ってマルチスレッドで NSConnection を使おうという気になったのか興味があるんですが。
普通の用途では performSelectorOnMainThread: で十分だと思うんですけど。
というかいったいスレッドでどういう作業をやるつもり?

>>590
普通にシステム標準のスライダーを使うのでは駄目なの?
http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/Slider/Tasks/UsingSliderTickMarks.html
非アドビ製のソフトでは、
数値を入れる NSTextField と NSSlider を同じ値に binding でつないでおいて
おしまい、というのが普通のような気がしますが。
どうしても、どうしても、どうしてもシステム非標準のコントロールをつくりたいというなら
http://developer.apple.com/documentation/GraphicsImaging/Conceptual/QuartzDisplayServicesConceptual/Articles/MouseCursor.html
でマウスの位置までコントロールできますが、おすすめしません。 <> 名称未設定<>sage<>2009/03/10(火) 15:18:02 ID:RsqUeGkkP<> 単純にドラッグ中のxもしくはy座標の増減だけを見ればいいんじゃない? <> 名称未設定<>sage<>2009/03/10(火) 15:35:22 ID:98oXKA9A0<> マウスポインタが画面の端に到達するとそれ以上ドラッグできなくなっちゃうね <> 名称未設定<>sage<>2009/03/10(火) 17:28:16 ID:Rm75bWrc0<> >>592
これを参考にやってみます。

>マウスの位置までコントロールできますが、おすすめしません。

システム標準でないコントロールを作るのはダメという前提で、
それでも必要な状況だと判断してやってます。

レスしてくださった皆さん、ありがとうございました。 <> 名称未設定<>sage<>2009/03/10(火) 21:07:43 ID:ScxCqSFP0<> DocumentBasedApplicationで、Open Recent...(最近使った項目を開く...)からファイルを開く時に、ファイルがゴミ箱に入っていても開けてしまう。ファイルがゴミ箱に入っているかチェックする方法はないのか。
と思ったけど、テキストエディットで同じことやってみたらゴミ箱の中でも普通に開けた。
ゴミ箱の中からドキュメントを開く事はできないけど、Open Recent...で読みこめるのはデフォルトの挙動なのね。
という独り言でした。 <> 名称未設定<>sage<>2009/03/11(水) 02:13:02 ID:5p/IvifE0<> >>596
「読ませるけど、保存できないよ」ってフラグ付ける必要あるかもね、と横レス <> 名称未設定<>sage<>2009/03/11(水) 07:17:19 ID:B9AzFWBci<> >>595
タッチパネルやタブレットでも使えるようになるの?
ちょっときになったけど、特殊用途なら問題ないね。

<> 名称未設定<><>2009/03/11(水) 09:24:26 ID:EIJ5qsVo0<> >>587

一晩かけて作り変えました。
無事に成功です。
本当に本当にありがとうございます。 <> 名称未設定<>sage<>2009/03/11(水) 11:00:49 ID:6NqjH2Xo0<> >>597
保存時はNSDocumentが自動で「ゴミ箱に入ってて保存できない」とエラー処理してくれるようです。 <> 名称未設定<>sage<>2009/03/11(水) 15:12:45 ID:ycfRQZWD0<> 初心者な質問ですいません
キーボード上キーを押さなくても上キーを押すメッセージを送りたいです。
どういう風に書いたらいいですか? <> 名称未設定<>sage<>2009/03/11(水) 15:15:00 ID:OScXIKZ20<> NSEvent
ttp://110k.net/old/category.php?k=NSEvent <> 名称未設定<>sage<>2009/03/11(水) 15:21:46 ID:PkUVAqJv0<> なんでこんな変な質問ばかりなの?
>601
本当に↑キーのイベント投げないとダメなの?
実際は
「現在は↑キーで動いてる動作を別のイベントなどで動作させたい。」
っていう質問なんじゃないの?


最終的にやりたいことを書いたほうが得だよ。
<> 名称未設定<>sage<>2009/03/11(水) 21:49:36 ID:bVeKF8Lc0<> 俺も最初の頃は自動演奏ピアノみたいな発想してたなぁ。
自分にはピアノは作れないから…って、
むしろ譲歩した案なんだけど実は余計複雑という罠。 <> 名称未設定<>sage<>2009/03/11(水) 22:33:48 ID:hV+fJwFN0<> iPhoneのせいかCocoa新規参入者が増えてるのかな <> 名称未設定<>sage<>2009/03/11(水) 23:31:20 ID:S/cvZCTC0<> >>605
>Cocoa新規参入者が増えてるのかな

間違いないな。尼洋書でiPhoneやると参考書山ほどだもの <> 名称未設定<>sage<>2009/03/11(水) 23:33:53 ID:hshpKLBm0<> 最近じゃここよりひどい質問があったりするぜ

iPod touch/iPhone ネイティブアプリ製作 ver.9
http://pc11.2ch.net/test/read.cgi/mac/1234555020/ <> 名称未設定<>sage<>2009/03/11(水) 23:39:15 ID:LlQ4aBLC0<> >>607
そこまだましだ
今はdat落ちしてるかもしれないがiPhone板にあった開発スレはひどかったんだぜ
Windowsで開発できますか?とか押し入れにある5色のiMacで開発できますか?とかいろいろw
<> 名称未設定<>sage<>2009/03/11(水) 23:47:39 ID:ycfRQZWD0<> apple remoteをキーボードの十字キーに置き換えるプログラムを作りたいです。
>>602 603ありがとうございます。
>>602 rubycocoaで書くと、どうなりますか?
すいません、色々分らない事だらけで… <> 名称未設定<>sage<>2009/03/12(木) 00:00:16 ID:Yb25iyhx0<> >>608
Windowsで開発できないと知ると、逆ギレするヤツとかいたしなw
<> 名称未設定<>sage<>2009/03/12(木) 00:02:12 ID:74bq1mfN0<> >>608
>iPhone板にあった開発スレはひどかった

まっ過疎よりはいいよ。半年で1刷れ消費なんて時代もあった品 <> 名称未設定<>sage<>2009/03/12(木) 00:03:02 ID:S/cvZCTC0<> >>610
>逆ギレするヤツ

いたいた。釣りかもしれんかったけどな <> 名称未設定<>sage<>2009/03/12(木) 00:05:49 ID:qTt1ReQn0<> >>609
>>rubycocoaで書くと、どうなりますか?
さすがに自分で書くとこだよ <> 名称未設定<>sage<>2009/03/12(木) 00:07:25 ID:Ji+6RR370<> 何か知らないけど、iPhoneアプリはお手軽に作れるみたいな風潮よね <> 名称未設定<>sage<>2009/03/12(木) 00:08:10 ID:SWhOqJao0<> >>609
自分の作ってる app 内だけで Apple remote をつかいたいの?
それともシステム全体で Apple remote が使えるようにしたい?
Apple Remote のイベントを読み取るのはなかなか難しいです、
というのは Apple が API を公開してないので。
ネット上にはオープンソースで API を解析したのが転がってますが。

で、システム全体のイベントを乗っ取りたいばあいはかなり難しいよ。
http://developer.apple.com/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html
というのを使わないといけません。Ruby からでも呼べるでしょうが、
ここまで低レベルになると C / Objective-C にしたほうがいいのでは。

RubyCocoa は、現状では Objective-C と Cocoa を知ってる人が
Ruby でぱっと書きたいなというときに使うもので、
Ruby しか知らない人が Cocoa が急に使えるようになるものでもないです。
>>602 にかいてあるソースが Ruby に翻訳できないようでは
RubyCocoa でプログラムするのは到底むりです。

とまあげんなりさせるようなことばかり書くのも何ですが...
と思ってググったら
http://www.rubycocoa.com/appleremote/
てのがありましたよ。2ch で質問する前にググってみましょうね。

あと、正直車輪の再発明をするより、既に売ってる
http://twistedmelon.com/mira/
とか
http://gravityapps.com/sofacontrol/overview/
買ったほうがいいんじゃないかと思います。$15 だし。 <> 名称未設定<>sage<>2009/03/12(木) 00:51:09 ID:F79VyjKk0<> みなさんありがとうございます。
http://www.rubycocoa.com/appleremote/を読んでapple remoteから
何らかのレスポンスが返ってくるまではいったのですが>>602の意味が…
もうちょっと読めるようになってから、また来たいと思います。
本当に皆さん、つき合って頂いてありがとうございました。 <> 名称未設定<>sage<>2009/03/12(木) 10:04:37 ID:0rXED9iY0<> >>608
企業がiPhoneアプリやっても儲からないって書かれたらキレはじめたバカがいたんだよな。 <> 名称未設定<>sage<>2009/03/13(金) 14:35:33 ID:jg++sCo60<> CoreDataなんですが、
NSManagedObjectContextObjectsDidChangeNotificationだと1件の変更毎に通知がくるけど、
まとめて大量に変更して、完了後にその変更内容の通知を受け取ることってできます? <> 名称未設定<>sage<>2009/03/13(金) 14:45:26 ID:uNFeJWMf0<> http://developer.apple.com/jp/Documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/AutoVsManual.html#//apple_ref/doc/uid/20001844

これが関係してるような、してないような。 <> 618<>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みたいな感じ?
が、あったらいいなぁと思うわけですが、ないでしょうか? <> 名称未設定<>sage<>2009/03/13(金) 22:46:53 ID:lzvKvkx70<> import 中はフラグをたてて notification を無視して、
全部おわったら MOC に save を送るように僕はしてます
なんか巧くない方法ですが。 <> 名称未設定<>sage<>2009/03/13(金) 22:53:31 ID:1BaWfpUHP<> CoreDataはほとんどやったことがないから,よくわからないけど.

Notificationの回数をカウントして,
それがある程度の値にいったときに保存するように組む.
ただ,いつでもそんな大量の変更が来るとは限らないから,
大量の変更が来るとわかってるときには,
前述のようにNotificationを処理するフラグを立てるとか. <> 618<>sage<>2009/03/13(金) 23:09:47 ID:sro+VwiR0<> >>621-622
どうもです。やっぱそんな感じになりますか。

NSEditorとかで調子良い事にならないかな〜なんて淡い期待を抱いてましたが、
とりあえず自前で transactionもどきを作ることにします。
<> 名称未設定<>sage<>2009/03/14(土) 14:41:42 ID:MODPMYYB0<> >>620
アプローチを変えてみたらどうですか?

import用に臨時のcontextを作って、そのcontextにデータを(できれば別スレッドで)
importします。
完了後にsave,releaseし、メインのcontextにmergeChangesFromContextDidSaveNotification
を送れば、change notificationが個別に送信されることは、ないはずです。

また、効率もアップするでしょう。

Core Data Programming Guideの該当部を参照してみてください。
<> 名称未設定<>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(だっけ?)で
エラーでいいかと思ったけどまさかの落とし穴。。。
あ、ちなみに自分で呼んでるってことはないです。
まぁもちろんそんなネーミングの拡張はやめた方がいいとかエラー処理が甘いとか
いろいろあるだろうけどそこらへんは一応わかってるつもりです。
<> 618<>sage<>2009/03/14(土) 23:38:13 ID:+H3YO1wa0<> >>624
これはいい情報どうもです。こんなのがあるんですね。

時間が取れなかったのでいまちょっとだけ触れてみたんですが、
ユーザトリガ以外で勝手に保存したくないので save:はしたくないのと、
インポートするデータには、元の context内の他の entityとの
リレーションが必要なのですが、この辺がうまく扱えそうになかったです。

InMemoryStoreで context作って、それにインポート
終わったら元の context (SQLStore)とマージ、なんてこと可能でしょうか?

あでも、リレーションは結局だめかな。
ボケてるっぽいので今日は寝ます。 <> 名称未設定<>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];
<> 名称未設定<>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のドキュメントとかってありますでしょうか? <> 名称未設定<>sage<>2009/03/15(日) 10:51:46 ID:4doVEivB0<> 完全に透明なウィンドウを作るには、
NSBorderlessWindowMask を使えば良いと分かりました。

ところが、これはウィンドウの初期か段階でしか適用できません。
一度つくったウィンドウを完全に透明にする手段はあるのですか?
よろしくお願いします。 <> 名称未設定<>sage<>2009/03/15(日) 10:56:46 ID:pU7ZxSKm0<> >>627
Fooのinit内で一時的に使ったオブジェクトを消すのにこだわってるんじゃないかね
知らんけど。

後者は
return [[[Foo alloc] init] autorelease];
ってやるならいいけど、objをまだそのスコープの中で使うんだったら
早々にautoreleaseしてしまうのは後々混乱の元だと思う <> 名称未設定<><>2009/03/15(日) 10:59:06 ID:rrinlKsL0<> XcodeでCmd押しながらクリックするとコードジャンプできますが、ジャンプした後元の位置に戻るのってどうやるんでしょうか? <> 名称未設定<>sage<>2009/03/15(日) 12:04:20 ID:wCF8FgO7P<> >>629
- (void)setAlphaValue:(CGFloat)windowAlpha <> 名称未設定<>sage<>2009/03/15(日) 14:15:04 ID:v27cJsFXi<> >>631
左上の戻るボタン <> 名称未設定<>sage<>2009/03/15(日) 14:22:36 ID:93wRIpIZ0<> この調子でMacのソフトが増えれば良いね
ただiPhoneレベルのアプリが溢れてもあまり嬉しくないな

iPhoneアプリ開発者を集めてMacのソフト会社をつくるか!(金はあるぞ) <> 名称未設定<>sage<>2009/03/15(日) 14:24:12 ID:pU7ZxSKm0<> >>634
マジおねがいします。Cocoa使えても仕事ないのよね <> 名称未設定<><>2009/03/15(日) 14:39:24 ID:SMvBJJQJ0<> textViewでカーソルを常に下に定めていきたいのですが、どうすればいいでしょうか?
ibでできそうだと思うんですが・・・・・ <> 名称未設定<>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のサンプルにスライダーで透明度が変わるサンプルがあったような。
リサイズやクローズボタンは表示されないので自前で作る必要があるかと。
<> 名称未設定<>sage<>2009/03/15(日) 15:13:15 ID:wCF8FgO7P<> >>645に同じく。
ほんとCocoaの仕事少なすぎ…
<> 名称未設定<>sage<>2009/03/15(日) 15:15:16 ID:wCF8FgO7P<> 安価ミス >>635 <> 名称未設定<>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が呼ばれない」という話は知らないんだけど
インスタンス変数とプロパティはイコールじゃないんだから、
自分の持ってるインスタンス変数を解放するのにプロパティのアクセサメソッド使うのって話の筋としておかしくね?
<> 名称未設定<>sage<>2009/03/15(日) 15:58:17 ID:2Ipvh/SI0<> >>640
ありがとうございます。
Appleのサンプルコードに
- (void)dealloc {
 [image release];
 image = nil;
 [super dealloc];
}
ってのがあって、なぜnilを入れているのかと不思議に思っていました。
下の件ですが、propertyについて勉強しなおしてきます。 <> 636<><>2009/03/15(日) 18:16:45 ID:SMvBJJQJ0<> 自己解決しました。

一応書いておきます。てかこれは効率悪いですか?


NSRange r;
r.location = [textStorage length];
r.length = 0;
[textView scrollRangeToVisible:r];
[textView display];


<> 名称未設定<>sage<>2009/03/15(日) 20:21:41 ID:pU7ZxSKm0<> >>642
そのやりかたが一番基本だと思うよ <> 名称未設定<>sage<>2009/03/15(日) 20:39:08 ID:VbWILUHd0<> >>643
こんな処理はIBで出来るようにしてほしい。
これからIBをもっともっと進化させていけば、MACの開発も盛り上がると思うんだよね。

残念ながら開発環境はVisual Studioには遠く及ばない。
でもMVCの理論的でシンプルなコードと読みやすさはC#,Basicどちらにもない。

<> 名称未設定<>sage<>2009/03/15(日) 20:56:29 ID:p8AS3qSz0<> >>644
この処理を実装すべきなのは、IBじゃなくて、NSTextViewの方だと思うよ。
IBはNSTextViewのプロパティーを設定するだけで、処理を追加することはできないからね。
Visual Studioのデザイナでも、そんなことできないでしょ? <> 名称未設定<>sage<>2009/03/15(日) 21:10:00 ID:HoZJ0We50<> >>642 じゃカーソルは一番下にならないとおもうけど

[textView setSelectedRange:r];
がひつようじゃね? <> 名称未設定<>sage<>2009/03/15(日) 21:13:30 ID:VbWILUHd0<> >>646
バリバリなってたよ。 <> 名称未設定<>sage<>2009/03/15(日) 21:29:24 ID:4St/rSG20<> >>644
まずはIBを日本語化してほしい...
XCodeだけ日本語だと半端すぐるorz <> 名称未設定<>sage<>2009/03/15(日) 21:59:26 ID:v27cJsFXi<> Xcodeってさ、ローカライズされてるの日本語だけだよね?嬉しい反面、ちょっと恥ずかしくなった <> 名称未設定<>sage<>2009/03/15(日) 22:00:07 ID:2Ipvh/SI0<> 確かにw <> 名称未設定<>sage<>2009/03/15(日) 22:01:21 ID:qAnMHcPl0<> >>648
半端な日本語リソースで余計におかしくなりそうな悪寒 <> 名称未設定<>sage<>2009/03/15(日) 22:04:33 ID:VwdUyDys0<> 正直XcodeやIBやリファレンスが英語でも困らないけどな <> 名称未設定<>sage<>2009/03/15(日) 22:07:13 ID:ih/GgaFl0<> リファレンスが日本語化されてないのにIBだけされてもさして嬉しくないし。 <> 名称未設定<>sage<>2009/03/16(月) 02:02:22 ID:hFIBxONHP<> >>644
NSTextViewのサブクラスを作り、その処理を実装。
さらにIB用プラグインも作ってフレームワークにして読み込めば完成。
IBはいくらでも拡張できるからね <> 名称未設定<>sage<>2009/03/16(月) 08:43:12 ID:/fHEuLJ50<> >>654
そうした。
<> 名称未設定<>sage<>2009/03/16(月) 08:44:33 ID:/fHEuLJ50<> あーサブ作って関数で実装したってことね。
<> 636<><>2009/03/16(月) 12:14:18 ID:PNGkc5p00<> リファレンスは有志の方が参考例付で作っているホームページがあったけどね。
あのサイトはすごい。
まぁ英語のリファレンスはそんなにたいした英語量があるわけじゃないし、
しっかり区分分けしてくれてるから慣れれば問題ないんだよ。

問題はプログラミングガイド!
ここをもっと分かりやすい日本語を用いて作り変えてほしい。!
別にそのまんま訳す必要もないし、それだとおかしくなると思うんだよね。
それにまだ日本語は限られてるし。
誰か分散オブジェクトあたりだけでいいから、分かりやすく日本語サイトに作ってほしい。
スレッド間、プロセス間通信もリモート間通信も。
なお出来れば、ボンジュールあたりの解説も。 <> 名称未設定<>sage<>2009/03/16(月) 12:26:55 ID:VzkVWi9F0<> その辺は
http://www.amazon.co.jp/dp/0974078514/
の日本語訳を期待したほうがよさそう

ていうか諦めて英語勉強したほうが速いよ。
レファレンスに慣れたんだったらいずれガイドのほうも慣れます。 <> 名称未設定<><>2009/03/16(月) 12:32:09 ID:LbGA6N/G0<> MOSAが最悪だからな。
権利もらってるくせに、2006年からほったらかし。
しかも、pdfしか用意してない。
やる気ねーんなら最初からやるなって。
翻訳済みの分も全権Appleに譲渡しろ。 <> 名称未設定<>sage<>2009/03/16(月) 20:52:09 ID:jeDjX52y0<> ここでゴルァしてないで...
で、MOSAってなんとなく聞き覚えがあるんだがなんだっけ <> 名称未設定<><>2009/03/16(月) 21:52:10 ID:xZxis74v0<> >>633
あーーエディタのすぐ上にこんな小さくあったのか・・・
メニューの方ばっか探してました。
ありがとうございます。 <> 名称未設定<>sage<>2009/03/16(月) 21:53:49 ID:f4VfZL0V0<> メニューにも「戻る」ってあるよ。 <> 名称未設定<>sage<>2009/03/16(月) 22:18:51 ID:Als/3B9m0<> オブジェクト変数の宣言の書式はAppleのサンプルでは
UIWindow *window;
となっているのですが木下誠さんの本では
UIWindow* window;
となっていて、「クラス名にアスタリスクをつけて変数の型とする」と説明されています。
いずれの書式でも警告やエラーなしにコンパイルが通るということは
コンパイラにとってはどちらでもいっしょということなのだと思いますが、
人間や人間がつくった文法的にはどうなのでしょうか?
どちらがより好ましいとかありますか? それともどっちでも好きな方を使ったらいいですか? <> 名称未設定<><>2009/03/16(月) 22:29:49 ID:xZxis74v0<> >>662
ヘルプウィンドウにあるような三角ボタンがどこかにあるはずだ!と探してました。
なぜか気がつかなかったorz
<> 名称未設定<><>2009/03/16(月) 22:31:21 ID:xZxis74v0<> >>663
C言語のポインタの文法でどっちも同じです。
私はUIWindow *windowの方がしっくりくるけど意味的にはUIWindow* windowの方がわかりやすそう。
<> 名称未設定<>sage<>2009/03/16(月) 22:47:19 ID:6HsSTdQa0<> UIWindow* window1, window2;
と書いた場合、次のような意味になってしまう
UIWindow *window1;
UIWindow window2;

だから、俺はいつも変数の方に*を付けてるな
UIWindow *windo1, *window2;

UIWindowだったら、エラーになるからすぐ分かると思うんだけど
構造体へのポインタだとエラーにならずにコンパイルできてしまうから
どこでバグるのかが見つけにくい <> 名称未設定<>sage<>2009/03/16(月) 23:00:45 ID:PqEmjohQ0<> UIWindow *win1, *win2;
と書くより、素直に
UIWindow *win1;
UIWindow *win2;
と書くなぁ。

変数あんまり多過ぎても、メソッド全体がわかりづらくなるし。
K&Rに慣れすぎたのかもしれん。ANSIにすればいいんだが。
<> 名称未設定<>sage<>2009/03/16(月) 23:16:09 ID:/fHEuLJ50<> 俺はポインタの*とエイリアスの*とを区別するために

MyClass* obj1;
MyClass* obj2;

だな。
<> 名称未設定<>sage<>2009/03/16(月) 23:35:10 ID:VzkVWi9F0<> >>668
alias って何? <> 名称未設定<>sage<>2009/03/16(月) 23:39:14 ID:RaVBYPZa0<> 女スパイがくねくねするドラマだよ <> 名称未設定<>sage<>2009/03/17(火) 00:19:50 ID:UG7LQ61M0<> >>663
そうそう、自分も最初
NSWindow* window;って書いてたけど
最近>>666のように書いて、こっちの方が正しいんじゃないかとやっと気付いた。
でもAppleのサンプルだと確かものによって違ったと思うので、書き手によるんじゃないでしょうかね。 <> 名称未設定<>sage<>2009/03/17(火) 00:22:33 ID:wp8dS/jc0<> >>669
シンボリックリンクや窓のはなんつったっけ
あんなのと比較にならないほど優秀なファイルリンクをもう忘れたのか <> 663<>sage<>2009/03/17(火) 00:25:13 ID:Lvc3OPTN0<> たくさん返事をいただきありがとうございます。
書き手や書き方にもよるが、クラス名につけると場合によっては意図しない結果になることもあり得るということですね。
とりあえず書式に関しては変数名につけることにします。
みなさんの説明で今の私では理解しきれないところもあったので、メモして残しておきます。
ありがとうございました。 <> 名称未設定<>sage<>2009/03/17(火) 00:53:01 ID:UG7LQ61M0<> >>673
言い忘れてたけど自分も最初木下氏の本でその書き方を覚えました。
今ではメインのクラス名はAppControllerがデフォになってしまってます。
最近ではiPhone開発にならってApp_Delegateみたいなのが主流なのかな。 <> 名称未設定<>sage<>2009/03/17(火) 07:57:13 ID:RT19/yFd0<> >>672
いや、それは知ってるんだけど、>>668 の文脈ではちがわない? <> 名称未設定<>sage<>2009/03/17(火) 12:51:00 ID:csg2JhxK0<> CoreDataで質問です。
特定のプロパティをデータに保存せずに一時として取り使うにはデータをモデリングする際に「一時」にチェックもしくはNSPropertyDescriptionのsetTransient:でできると思いますが、
特定のプロパティ、たとえば配列の一部だけを保存しないように設定するのは可能でしょうか?
具体的にはNSTreeControllerとNSOutlineViewで表示してるデータを以下のように取り扱いたいのです。

▼保存したくないグループ
 内容0
▼保存したいグループ
 内容0
 内容1

といった感じです。
複数のNSOutlineViewを使うとリサイズやスクロールが変なことになるのでできれば1枚でできればと思っています。
データの保存時に一時的に保存したくないグループを取り除き、保存後にもとに戻すという方法も考えられますが、
何か解決策、案などありましたらよろしくお願いします。 <> 名称未設定<>sage<>2009/03/17(火) 20:00:01 ID:3esZjowZ0<> 例えばC言語でポインタを宣言するとき

pointa *p; って書く人と
pointa* p; っ書く人がいるけど、

後者の場合はたいていエイリアスとの区別のために行なっているんだよね。

p = a; とすると
*pはaの別名(エイリアス)になる。

で、ここでポインタの宣言のところを見ると

pointa *p 

っておかしくね?ってこと。

*pはエイリアスを表す記号でもあるんだから。

それだったらポインタの宣言は

pointa* p

のほうが理論的じゃん。
<> 名称未設定<>sage<>2009/03/17(火) 20:04:21 ID:YXfeRtuD0<> その理屈はおかしいだろ。
区別のために行ってるんなら、その人は両方の書き方をするはずだ <> 名称未設定<>sage<>2009/03/17(火) 20:10:32 ID:YXfeRtuD0<> ああ、つまりこういうことか?


ポインタとエイリアスの両方を「pointer *p;」って書く人と
ポインタを「pointer *p;」エイリアスとして使うポインタを「pointer* p;」って書き分ける人がいる。


あるポインタをエイリアスとして使うかどうか、ってのがそんなに明確に分離できるとは思えないから
俺としてはあんまり意味のあるルールって気はしないけどね。 <> 名称未設定<>sage<>2009/03/17(火) 20:20:03 ID:3esZjowZ0<> >>679
全然違う。
pointa* p = a; とかく人は

pointa *p = a; を理論的じゃないって考えるって話。 <> 名称未設定<>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;」みたいな宣言はエイリアスじゃないポインタ用ってことにすれば区別できてよくね?

という話なんだよね?

<> 名称未設定<>sage<>2009/03/17(火) 20:26:29 ID:3esZjowZ0<> 区別とかじゃないの!
ポインタ用とかとエイリアス用とかって区別してないの!

とに角
pointa *p = a;
は邪道で全然理論的じゃないってこと。 <> 名称未設定<>sage<>2009/03/17(火) 20:29:48 ID:YXfeRtuD0<> 俺が理解できてないことを確認するためにひとつだけ教えてくれ

>p = a; とすると
>*pはaの別名(エイリアス)になる。

このときaの宣言は何よ?本気でわからないんだが <> 名称未設定<>sage<>2009/03/17(火) 20:39:29 ID:3esZjowZ0<> pointa型
例えばintとか構造体とか・・・。

int a = 10;
int *p = a;  //ポインタpの宣言だけど、*pはエイリアスの意味でもあるから、それだったら int* p = a; の方がポインタpの宣言&aを指し示すってことで理論的。 <> 名称未設定<>sage<>2009/03/17(火) 20:41:39 ID:YXfeRtuD0<> マジでそのコードでいいの?
それで間違ってないんだとしたら俺はC言語1から勉強しなおさにゃならん
<> 名称未設定<>sage<>2009/03/17(火) 20:44:52 ID:3esZjowZ0<> &が抜けてる・・・・・・・・・・。

<> 名称未設定<>sage<>2009/03/17(火) 20:46:04 ID:3esZjowZ0<> すみません。
<> 名称未設定<>sage<>2009/03/17(火) 20:50:25 ID:YXfeRtuD0<> ようやく我々はスタートラインに立ったわけだ

で、エイリアスを「type *p;」で宣言するべきって主張は理解できるんだが

ポインタ宣言をそれとは違う「type* p」にすべきって言うんだったら
ポインタとエイリアスを区別したいという話じゃなければなんなのさ? <> 名称未設定<>sage<>2009/03/17(火) 20:55:23 ID:3esZjowZ0<> すみません。

そうそうなの。&があるからこそ
int *p = &a;はおかしいの!

*pはエイリアス(別名)を意味するものでしょ。
つまり*pはaであるわけだ!

だから上の式はおかしい!って話。 <> 名称未設定<>sage<>2009/03/17(火) 20:58:13 ID:YXfeRtuD0<> やっぱりわかんないや!もう寝る!うえーん!! <> 名称未設定<>sage<>2009/03/17(火) 21:05:06 ID:HCBvbpo10<> ワロタw <> 名称未設定<>sage<>2009/03/17(火) 21:13:53 ID:3esZjowZ0<> 大学の教授がゆうてたんやから・・・・・
int *p = &a;はおかしいて・・・・・・・。
ポインタの宣言は
int* p = &a;こそまさに正しく、現にC++ではこっちが正当だとか・・・僕はやったことないけど。 <> 名称未設定<>sage<>2009/03/17(火) 21:20:05 ID:gGLs4SOn0<> こっちでやれ

C/C++ Coding Style Thread
http://pc11.2ch.net/test/read.cgi/tech/1096687703/
コーディング規約 第3条
http://pc11.2ch.net/test/read.cgi/tech/1170599322/
コーディングスタイルにこだわるスレ
http://pc11.2ch.net/test/read.cgi/tech/1193554741/ <> 名称未設定<>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枚でできればと思っています。
データの保存時に一時的に保存したくないグループを取り除き、保存後にもとに戻すという方法も考えられますが、
何か解決策、案などありましたらよろしくお願いします。 <> 名称未設定<>sage<>2009/03/17(火) 21:26:44 ID:4Y1MmBF60<> 要するに宣言式は

 型名 変数名;

の形式なんだから、

 int* p; // intポインタ型 intポインタ型の変数

のほうが論理的ってことだろ?

並べて書きたいとか深く考えたくないとかいろいろある人は
typedefすりゃ悩まなくていい。


>>676
すっかりスルーされてるけど、

> 特定のプロパティ、たとえば配列の一部だけを保存しないように設定するのは可能でしょうか?

結局保存したくないのは NSManagedObjectなの?
だったらそのオブジェクトを InMemoryStoreに保存すれば良いと思うけど。

<> 名称未設定<>sage<>2009/03/17(火) 22:33:22 ID:b2z+I8FG0<> * についての一連の流れ、最高でした。 <> 名称未設定<>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つずつ)してやれば良いということでしょうか? <> 名称未設定<>sage<>2009/03/17(火) 23:55:17 ID:ifuq6k5C0<> 保存する/しないの属性を追加して終了時にdeleteObjectするとか。
親が保存しない、の子供なら終了時にdeleteObjectするとか。 <> 名称未設定<>sage<>2009/03/18(水) 00:50:11 ID:Nl8MvSTb0<> >>697
それでもいいのですが、アプリケーションを終了するタイミング以外でも保存できるようにしたく、一時的に消してまた追加するのが回りくどく感じてしまったので…。
>>695
の件に関して過去ログなども参考にしながらいくつか試してみました。
NSManagedObjectをInMemoryStoreにアサインしようとしましたが、
NSTreeControllerでadd:してNSManagedObjectを追加した場合、自動での初期化等いろいろしてくれるようで、
このObjectのPersistentStoreをアサインし直したりというのは難しそうでした。(いろいろエラーが出て結局分からずじまい)
まだ試してないですが、Controllerのadd:などを使わずに自前でManagedObjectを生成、PersistentStoreCoordinatorを設定、
そしてControllerにインサートしてやればうまくいくような気がします。 <> 名称未設定<>sage<>2009/03/18(水) 00:58:10 ID:Nl8MvSTb0<> 見直したら誤字いくつかありますね、加えて分かりにくい文章ですいません。 <> 名称未設定<>sage<>2009/03/18(水) 07:35:18 ID:BEEAD/bv0<> 気にせずファイルに保存しておいて、
次にファイルを開く際に要らないのを全部 fetch して即座に削除すれば?
まあこの方法も汚いけど、save の際に毎回汚いことをするよりはマシでしょう。 <> 名称未設定<>sage<>2009/03/18(水) 10:17:03 ID:lFoNT2oi0<> WebViewから現在選択されているテキストを取得したいんですけど
リファレンス見るとそれらしいAPIはselectedDOMRangeがありました
これを使うとテキスト以外のタグも返ってくるんですけど
シンプルに選択されているテキストだけを取る方法ってあるんでしょうか?
それともDOMのデータをパースして自分でテキストを取り出すしかないんでしょうか? <> 名称未設定<>sage<>2009/03/18(水) 11:01:38 ID:INzDTAut0<> NSString* string = [[[[[webView mainFrame] frameView] documentView] attributedString] string]; <> 名称未設定<>sage<>2009/03/18(水) 12:34:05 ID:lFoNT2oi0<> >>703
attributedStringはWebDocumentTextのメソッドだからWebDocumentView*であるdocumentView
からは呼べないとコンパイラーから警告がでました

WebDocumentTextにはそのものずばりのselectedTextもあるのでこれが使えれば何よりですが、WebView
から呼ぶことはできなさそうですね

やっぱりselectedDOMRangeを使ったほうが手っ取り早いですかね? <> 名称未設定<>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さんのヒントのおかげです。ありがとうございました。 <> 名称未設定<>sage<>2009/03/18(水) 15:42:38 ID:lFoNT2oi0<> すいません、もう1つ質問させて下さい

1つのウィンドウ上にNSTextFieldが3つあったとして、現在そのうちのどれが入力フォーカス(?)
を持っているかを知ることは可能でしょうか?以下の情報だと無理だと書かれているのですが...

http://www.cocoabuilder.com/archive/message/cocoa/2005/4/6/132387 <> 名称未設定<>sage<>2009/03/18(水) 15:57:50 ID:eq95d6De0<> イベント/通知(Notification)は飛んできません。って書いてる。
現在何処?なら、firstResponderがそれです。 <> 名称未設定<>sage<>2009/03/18(水) 16:31:57 ID:lFoNT2oi0<> すいません、解決しました
私も最初firstResponderを見ていたのですがこれが返す値はNSTextField*じゃなくてNSText*に
なっていました。これが何かわからなかったのですが、結局NSControlのcurrentEditorの値らしい
とわかりました。これが>>706のリンクで言われている1つしかないインスタンスなので、これと
NSTextField*を比較してもだめで、個々のNSTextFieldでcurrentEditorを呼んで、その時にnilでない
値を返すNSTextFieldがその時点で入力フォーカスを持っていると考えていいみたいですね <> 名称未設定<>sage<>2009/03/18(水) 19:16:48 ID:r5RVNS6X0<> >>708
そのNSTextのDelegateが、フォーカスの当たっているNSTextFieldになっています。

ttp://www.stripe-net.jp/cocoa/documents/chapter3/chapter3-7.html
<> 名称未設定<>sage<>2009/03/18(水) 19:38:01 ID:lFoNT2oi0<> >>709
なるほど、確かにそうなってますね

if ([[self window] firstResponder] == MyNSTextField01)
みたいにしてだめだったんですけど

if ([[[self window] firstResponder] delegate] == MyNSTextField01)
にするとうまくいきました <> 名称未設定<>sage<>2009/03/18(水) 21:54:29 ID:Nl8MvSTb0<> >>701
データを保存するタイミングがアプリの終了時だけでないのと、
InMemoryStoreを利用すると複数の人から同じファイルを参照して保存時に編集結果をマージ
(たぶん挙動としては保存+シンクになるかと)した場合もうまくいきそうだなぁと思いこの手法を掘り下げてみました。
あとはプロパティが全く同じだけど全て一時に設定されているモデルを作成するのもいいかも知れませんね。
いやはや時間がなくてまったく試していませんが。 <> 名称未設定<>sage<>2009/03/19(木) 00:48:27 ID:Dg1/nG6V0<> ここは親切なインターネッツですね <> 名称未設定<><>2009/03/19(木) 10:06:11 ID:U94je7dF0<> iPhone関係のプログラミングの話題もここでいいの?
iPhone版探したけどそれらしいのがなかったんですが。 <> 名称未設定<>sage<>2009/03/19(木) 10:47:34 ID:J6t3XWox0<> 「iPhoneで」って書いとけばいいんじゃないの?
微妙に違うから、書いておかないとみんな混乱しちゃう。 <> 名称未設定<>sage<>2009/03/19(木) 11:42:05 ID:um7AEN9C0<> >>713
つhttp://pc11.2ch.net/test/read.cgi/mac/1234555020/ <> 名称未設定<>sage<>2009/03/19(木) 13:40:08 ID:Utyhy8qr0<> iPhoneはAppleとの規約が五月蝿かったような。 <> 名称未設定<>sage<>2009/03/19(木) 16:07:14 ID:ksx9OqeN0<> >>716
規約変更でβ以外の話はしてもよくなった。 <> 636<><>2009/03/19(木) 18:36:27 ID:PpHiwVi20<> NSTableViewでセルを左クリックした際、row全体が選択されるのですが、
これを解消するAPIとかありますか? <> 名称未設定<>sage<>2009/03/19(木) 20:06:08 ID:SjN6XR7fi<> >>609
解消ってなんだよ。
選択解除をしたいのか、選択処理自体が起こらないようにしたいのかどっちだ。
前者ならどのタイミングでだ。
ちなみに俺には全く分からん。 <> 名称未設定<>sage<>2009/03/19(木) 20:47:27 ID:I6nb5Wil0<> >>719
選択処理自体が起こらないようにしたい

としか読めなかったが <> 名称未設定<>sage<>2009/03/19(木) 23:06:02 ID:6c/V/xKf0<> エスパーの俺が思うにrowの選択時に特定のcolumnだけ選択状態にしたいってことだろう
いろいろやればできんこともなさそうだがその挙動ならTableView使わなければいいと思う <> 名称未設定<>sage<>2009/03/19(木) 23:36:50 ID:bfz6W/740<> エクセルのセルみたいに使いたいのかな <> 名称未設定<>sage<>2009/03/20(金) 00:15:17 ID:Raq7MuIX0<> >>718
NSTableViewのサブクラスで行が選択された時の挙動を制御できるかと。
リファレンスとか、ここ?
http://d.hatena.ne.jp/sunpro/20080820/1219217880 <> 名称未設定<>sage<>2009/03/20(金) 03:53:24 ID:KD/uL4hGi<> -_highlightRow:inCripRect:をオーバーライドしてマウスロケーションからカラムの位置を特定、clipRectを変更してsuperに渡せば大方のぞみの挙動では?
非公開メソッドだから使わないべきだけど。 <> 名称未設定<>sage<>2009/03/20(金) 16:07:07 ID:ztTjYrEW0<> cocoaのサンプルコードを読むと、たいがい小数は
float型で宣言されています。

double を使わずに float を使う傾向があるようですが、
どういう理由によるものですか? <> 名称未設定<>sage<>2009/03/20(金) 16:11:19 ID:iDYY1j1o0<> 画面の座標がfloatだからじゃね? <> 名称未設定<>sage<>2009/03/20(金) 17:28:10 ID:D7KrySdW0<> >>726
64bit では座標は double なわけだが... そういう話なら >>725 の言うサンプルとやらも
適宜 double に変えないといかんね。
ってゆうか生の float とかを使うべきじゃないかもね。 <> 名称未設定<>sage<>2009/03/20(金) 17:40:13 ID:EvkiWkY40<> >>727
CGFloat
http://developer.apple.com/documentation/Cocoa/Conceptual/Cocoa64BitGuide/64BitChangesCocoa/64BitChangesCocoa.html#//apple_ref/doc/uid/TP40004247-CH4-SW13
<> 名称未設定<>sage<>2009/03/21(土) 08:44:05 ID:bG0sbfJc0<> なるほど、Cocoaフレームワークでは画面の座標などで
float を使っているから、普段は float を使っていれば無難
という事ですね。 <> 名称未設定<>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 でコンパイルしてもキチンと動きます。 <> 名称未設定<>sage<>2009/03/21(土) 22:41:06 ID:bG0sbfJc0<> >>730
あ、すいません。よくわかりました。
ありがとうございました。 <> 名称未設定<>sage<>2009/03/22(日) 13:36:04 ID:YQgr14t00<> 自分のCocoaアプリケーションがバックグラウンドにいるときに定期的な処理をすることは可能でしょうか?
昔のCWのCarbonアプリだとPowerPlantのSpendTimeを継承すれば可能でしたが、Cocoaだとやり方がよく
わかりません。cocoa-devの中を検索していてCFRunLoopAddObserverでコールバックを登録すればいいの
かと思いましたが、これだとフォアグラウンドのアイドリングでしかコールされませんでした。 <> 名称未設定<>sage<>2009/03/22(日) 13:41:15 ID:D0Hx6S+/0<> NSTimer <> 名称未設定<>sage<>2009/03/22(日) 14:37:42 ID:i9Um2BIK0<> Cocoaで、ポップアップメニューとテキストフィールドがあって、
特定項目を選択したときだけテキストフィールドが有効になるように
したいです。(タグ番号で区別など)
Binding指定一発で行かないか調べているのですが、簡単な指定方法は
ありますか?

現在、出来ているのは、
・コントローラに値を持たせて、
・ポップアップメニューのアクションでフラグをKVCで書き換えして
・テキストフィールドに反映させる方法
くらいです。 <> 名称未設定<>sage<>2009/03/22(日) 14:40:02 ID:D0Hx6S+/0<> どうしても一発でやりたいんなら専用のNSValueTransformerを作るとか。 <> 名称未設定<>sage<>2009/03/22(日) 14:45:16 ID:D0Hx6S+/0<> あーもちろんポップアップメニューで選択されるオブジェクトに該当するプロパティがあるんならそれ使えばいいよ。 <> 名称未設定<>sage<>2009/03/22(日) 15:16:49 ID:oZHejVcE0<> >>734
つまり、NSMenuの特定のNSMenuItemを選択したときに、NSTextFieldのenabled値を変更したいんだよね?
メニューから項目を選択したときに、コントローラーのプロパティーを変更して、そのプロパティーとテキストフィールドのenabledをバインドすればよいかと

<> 名称未設定<>sage<>2009/03/22(日) 18:16:51 ID:i9Um2BIK0<> >>735-737
コメントありがとうございます。
なるほど、やはりBindingのなかで式を評価してもらえればとか、
つい期待してしまうのですけど、所詮は甘い考えでしたね。残念。
<> 名称未設定<>sage<>2009/03/22(日) 18:20:26 ID:645xXQJS0<> NSMenuItemのタグを0か1にして、ユーザデフォルトにバインディング。
それをNSTextFieldのenabledにバインディング。 <> 名称未設定<>sage<>2009/03/22(日) 20:23:39 ID:hnBK/g2f0<> タグを使うのはなかなか楽ちんで素晴らしいね
タグを別に利用できなくなっちゃうけど
まぁバインディングしてアクセッサを書けばいいんじゃないかね <> 名称未設定<>sage<>2009/03/22(日) 21:14:45 ID:i9Um2BIK0<> >>739
おお、確かにそれだとコントローラに依存しなくて済みますね。

・・・ただ、自分のコードはプラグインなので、親側のアプリの
plistに書き込んじゃうような気がします。
少しひねってアイディアが使えないか考えてみます。
<> 名称未設定<>sage<>2009/03/22(日) 22:31:33 ID:6qTjK3TA0<> >>741
>・・・ただ、自分のコードはプラグインなので、親側のアプリの
>plistに書き込んじゃうような気がします。
なが〜い key にしておけば何の問題もないと思いますが。
com.bokuno.plugin.hagemenu とか。 <> 名称未設定<>sage<>2009/03/23(月) 18:55:34 ID:EF7hX8Ek0<> >>739
menuItemのtagとUserDefaultsをバインドしても、tagとUserDefaultsの値が同期するだけで、メニューの選択によりUserDefaultsの値が変化する形にはならないと思うよ。
UserDefaultsの値を変化させたいなら、どこかで
[bindedMenuItem setTag:1];
などといった処理が必要です。

>>741
プラグインっていうのは、Cocoa Bundleのことかな?
メニューは親側のアプリが持っていて、そのテキストフィールドがプラグイン側にあるのだとしたら、IntarfaceBuilderでいくらがんばっても無駄ですよ。
メニュー選択のアクションを親アプリ側のコントローラで受け取り、親アプリ側のコントローラからプラグイン側のコントローラにフラグ値を設定する。
などといった方法を取るしかないと思います。 <> 名称未設定<>sage<>2009/03/23(月) 20:19:05 ID:jkNDz75K0<> NSTableViewのフォントを変更したときにsetRowHeightでセルの高さを指定してやる必要が
ありますが、その数値をどう求めるべきかで迷っています。現在は使いたいNSFontのfontBounding.size.height
を指定していて正常に表示されてはいるのですが、なんか上下にスペースが多すぎて間延びした
ような感じに見えるのですが、かといってそれより小さい数値にするとフォントによって見切れるかも
しれないような気もします。

ここで使うべき適切な数値に求め方ってあるんでしょうか? <> 名称未設定<>sage<>2009/03/23(月) 22:58:51 ID:DDSljpI20<> fontBoundingって何? <> 名称未設定<>sage<>2009/03/24(火) 02:29:36 ID:1Hl/Tw2xi<> NSStringとかNSAttributedStringのAppKitAdditionsにあるsizeWithAttributesやsizeあたりを使うのは? <> 名称未設定<>sage<>2009/03/24(火) 08:58:24 ID:BucbIRTg0<> Safari4 のようにタイトルバー上に描画したいのですが、
どのような手段があるでしょうか。 <> 名称未設定<>sage<>2009/03/24(火) 11:48:17 ID:OjHK9J6Y0<> ウィンドウのパーツをすべて自前で用意して描画。 <> 名称未設定<>sage<>2009/03/24(火) 11:51:30 ID:NpoR6Dsl0<> >>747
Snow Leopardまで待つのがいい気がする
IBのパーツ的意味で <> 名称未設定<>sage<>2009/03/24(火) 15:52:34 ID:UQpOmHiZ0<> >>749
多分ないだろうね <> 名称未設定<>sage<>2009/03/24(火) 16:52:58 ID:BucbIRTg0<> >>749
あればいいんですけど・・・
Safari は今までのバージョンでも認証のあるサイトにいくと
右上にカギのマークが表示されてましたが、あの程度でも
ウィンドウのパーツをすべて描画してるんでしょうか? <> 名称未設定<>sage<>2009/03/24(火) 17:00:29 ID:J1mQBwRc0<> 昔HMDTで「NSWindowのcontentviewのsuperviewのsubviewsとして追加する」という手を見た希ガス
試したことはない <> 名称未設定<>sage<>2009/03/24(火) 17:16:52 ID:OjHK9J6Y0<> >>751
その程度ならテクスチャ付きウィンドウのバックグラウンドを適宜変更することで出来そうな気が。 <> 名称未設定<>sage<>2009/03/24(火) 18:14:37 ID:ZfUbWmv40<> NSView *view = [[window contentView] superview];
に貼り付ける。
undocumentedですが。 <> 名称未設定<>sage<>2009/03/24(火) 20:49:21 ID:pl3M8j5W0<> >>747

NSGraphicsContext* gc = [NSGraphicsContext graphicsContextWithWindow:window];
[NSGraphicsContext setCurrentContext:gc];
/** ここで、NSBezierPathとか、NSImageとかを使って描画 **/
[gc flushGraphics];

これで、ウインドウ全体(タイトルバーを含めて)をlockFocusしたような感じになるので、タイトルバーエリアにも描画できます。 <> 名称未設定<><>2009/03/24(火) 21:56:23 ID:LUOigXSf0<> iPhoneなんですが、View-basedのプロジェクトを作成してXXXViewControllerに用意されている
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
をコメントアウトしてもこのメソッドが呼び出されないのですが他にどこか修正が必要なのでしょうか?
<> 名称未設定<><>2009/03/24(火) 22:22:01 ID:LUOigXSf0<> ああAppDelegateで自分でViewControllerをinitNibNameで作る必要があったみたいです。 <> 751<>sage<>2009/03/25(水) 07:54:32 ID:0SM9ZDQS0<> ありがとうございました。やってみます。 <> 名称未設定<>sage<>2009/03/25(水) 13:12:12 ID:5iE+9ayji<> >>756
コメントアウトの使い方がまちがっている。 <> 名称未設定<>sage<>2009/03/25(水) 14:15:35 ID:5bK3eLy80<> コメントアウトアウトだな <> 名称未設定<>sage<>2009/03/25(水) 20:49:30 ID:TIvJ7Wev0<> ドックを右クリックした時に出るような吹き出し型のメニューを呼び出すAPIはありますか? <> 名称未設定<>sage<>2009/03/25(水) 22:03:07 ID:pm0pHKwl0<> 少なくとも正式なAPIとしては用意されていません <> 名称未設定<>sage<>2009/03/26(木) 00:15:13 ID:rC0n3m6s0<> >>762
それが分かっただけでも十分です
ありがとうございます <> 名称未設定<>sage<>2009/03/27(金) 06:14:28 ID:XlooH+OZ0<> おまいらXcodeのテキストキーバインドって実際どのくらい使ってますか?
時代に乗り遅れて最近LeopardのXcodeに移行したんだけど使いこなし切れない
とりあえずこれだけは便利だから使っとけってのは無いかな <> 名称未設定<>sage<>2009/03/27(金) 06:58:00 ID:uVBk9I9P0<> >>764
ctrl + /
次のプレースホルダ <> 名称未設定<>sage<>2009/03/27(金) 20:55:36 ID:yJIEOHNY0<> >>764
command + /
選択範囲のコメントアウト、コメントの解除 <> 名称未設定<>sage<>2009/03/27(金) 21:02:16 ID:G8IYg3Ly0<> Objective-Cのメソッドの両側の括弧を自動的に入れてくれる機能。 <> 名称未設定<>sage<>2009/03/27(金) 21:35:53 ID:Eaa1yLc60<> >>767
そんなのあるの? <> 名称未設定<>sage<>2009/03/28(土) 02:54:55 ID:NZomFomOP<> command + shift + alt + /
ドキュメントの表示。重い… <> 名称未設定<>sage<>2009/03/28(土) 03:54:24 ID:yJwPFz9Ki<> みんなスラッシュにこだわるなw <> 名称未設定<>sage<>2009/03/28(土) 18:37:20 ID:0eMQjnwh0<> ドキュメントの表示は opt+ダブルクリック
定義にジャンプは cmd+ダブルクリックだな。

>765 も使うけど その前に ctrl+. する。
ごくまれに cmd+opt+↑ 名前なんだっけ?ヘッダと実装ファイルのトグル。
cmd + opt + ← もたまに。 <> 名称未設定<>sage<>2009/03/29(日) 11:07:23 ID:FT9y+teW0<> GCを使うis敗北ネ!!
ギリギリまでreleaseを我慢して
YOUのアグレッシブなメモリマネージメントを見せつけてwant you !!! <> 名称未設定<>sage<>2009/03/29(日) 11:19:21 ID:C5UY2wzI0<> >>772
どうした?大丈夫か? <> 名称未設定<>sage<>2009/03/29(日) 13:07:48 ID:PKo3KxaT0<> 過開放のバグを潰すのに疲れたんだろう… きっと。 <> 名称未設定<>sage<>2009/03/29(日) 13:12:21 ID:BoW5aWaw0<> 俺の知り合いで「autorelease を使ったら負け」とおっしゃる方がいたけどなw
どうやらメモリ管理をよくわからないものに任すのが嫌みたいなんだが。
まーそんなこと言い始めるとmalloc/freeあたりですら怪しいと思うんだがw

現実問題として、クラスによっては autorelease されたインスタンスが前提なのが
あって、autorelease 無しには Cocoa は使えないんじゃなかったかな... <> 名称未設定<>sage<>2009/03/29(日) 13:26:52 ID:PKo3KxaT0<> autorelease使ったら負けって…

まあ他人の趣味だからいいけどさ。どう考えてもフレームワーク内部でAutorelease
がんがん使ってんだから意味ないじゃん。 <> 名称未設定<>sage<>2009/03/29(日) 13:40:52 ID:0+hbEKM60<> 昔々C言語の頃は配列の添字を使ったら負けで
ポインタをインクリメントしたら勝ちだったのさ

まぁそう主張する奴のソースはコーディングレベルで最適化wしようとしたあげく
アルゴリズムの方がおろそかになってたりしてたけどね <> 名称未設定<>sage<>2009/03/29(日) 13:41:51 ID:6ZHfBTXx0<> 理解していればどうということはない
使わざるを得ない時もあるし <> 名称未設定<>sage<>2009/03/29(日) 14:37:03 ID:FT9y+teW0<> 遅い奴には、コードは追えない。
そういうことさ…… <> 名称未設定<>sage<>2009/03/29(日) 14:43:36 ID:C5UY2wzI0<> >>775
>どうやらメモリ管理をよくわからないものに任すのが嫌みたいなんだが。
autorelease pool は「よくわからなくないもの」では全くないと思うが...
そいつが autorelease を「なんかよくわからんがいつのまにか解放してくれる」
とかいう風に勘違いしてたんじゃないの? <> 名称未設定<>sage<>2009/03/29(日) 20:27:58 ID:IFUODtjp0<> きっとその人はオートマの車を運転したら負けなんだろうな。 <> 名称未設定<><>2009/03/29(日) 21:58:55 ID:Arvynqjh0<> F-1でオートマ乗ったら負けだろうな <> 名称未設定<>sage<>2009/03/29(日) 23:09:03 ID:0+hbEKM60<> エンジンをかけるときはクランクを力強く一気に廻す
エンジンがかかると勢い良くクランクが回転するので
あごの骨を砕かれる恐れがあるので顔を近づけない事 <> 名称未設定<>sage<>2009/03/29(日) 23:28:56 ID:ZtbTYtIP0<> 自分に対して無駄な制限をかける人って、たまに居るよね
別にかまわないし、個人の自由だと思うけど
周りに迷惑がかかるようならやめて欲しい <> 名称未設定<>sage<>2009/03/30(月) 00:12:23 ID:LEpUUYlh0<> 宗教とかな <> 名称未設定<>sage<>2009/03/30(月) 01:26:40 ID:/GsaEKKp0<> もともと半分ネタな話題の上にさらにネタを重ねるけどもw

>>782
F1はオートマって言ってもセミオートマだし。で人間がクラッチ操作するより素早く
シフトチェンジするし、いわば人間+技術で最高の効率を追求してる感じ。

autorelease は、オブジェクトの寿命をルーズにするから、メモリのある種の利用効率
という点では手動できっちり管理する場合より落ちる。って感じ。


さて、次は「retain/releaseを使ったら負け」でもいってみますかw <> 名称未設定<>sage<>2009/03/30(月) 02:37:07 ID:utyEfR7Gi<> >>786
開放するのがまけなんだろ、きっと。

男は黙って 確保したまま。
男は黙って 確保したまま。
メモリ不足でアプリが強制終了しちゃうよ〜 <> 名称未設定<>sage<>2009/03/30(月) 02:50:51 ID:OjkMXpC10<> >>787
iPhone はともかく、Mac では
>メモリ不足でアプリが強制終了しちゃうよ〜
てことはないのでは? <> 名称未設定<>sage<>2009/03/30(月) 11:36:33 ID:NTIDxucM0<> 32bitアプリで2GB超えたら強制終了したよ。 <> 名称未設定<>sage<>2009/03/30(月) 20:05:01 ID:cs/pyE5p0<> 初歩的な質問で申し訳ないのですが・・・

NSTableViewで複数行があったとして、ファーストレスポンダが行最後のセルにあり、
ここでtabキーを押した時、次の行の先頭セルにファーストレスポンダを移す事って、
IBだけで出来るでしょうか? <> 名称未設定<>sage<>2009/03/30(月) 21:13:10 ID:jWZzU8wmi<> >>790
TableViewの内部のセル自体がファーストレスポンダになることはありません。
その場合、編集中ならセルの位置に表示されてるFieldEditorが、
そうでないならTableViewそれ自体がファーストレスポンダということになります。
IBだけではその制御はできません。 <> 790<>sage<>2009/03/30(月) 22:52:23 ID:cs/pyE5p0<> >>791
なるほど、レスありがとうございました。 <> 名称未設定<>sage<>2009/03/31(火) 08:35:35 ID:5nYIQ3Ld0<> >>787
>男は黙って 確保したまま。

別に dealloc は駄目とは書かれてないのだが.... 「ネタ」の意味が理解されなかったか。
だったらメモリリークしまくりのコードを書く奴は? 男も堕ちたもんだw <> 名称未設定<>sage<>2009/03/31(火) 10:40:26 ID:g4GAqv8E0<> 明示的にdeallocをしてはいけません
raleaseCountが0になった時オブジェクトは自動的にdeallocされメモリを解放します <> 名称未設定<>sage<>2009/03/31(火) 10:42:51 ID:HzS6wNkv0<> NSDrawerを使っていて時間のかかるループの前にこれを閉じたいんですけど
closeを呼んでも実際に閉じられるのはループが終わってからになってしまいます
updateとかdisplayとかいろいろ呼んでみたんですがうまくいきません
sendEventとかしないといけないんでしょうか? <> 名称未設定<>sage<>2009/03/31(火) 10:53:36 ID:fhQmN1Q/0<> drawer が閉じたのを確認した後で時間がかかるループを開始すればok <> 名称未設定<>sage<>2009/03/31(火) 11:33:02 ID:SrzqsxLr0<> Drawerの開閉が1回のイベントループ内で終わるのなら、
長い処理を
[obj performSelector:@selector(hogehoge) withObject:nil afterDelay:0.0];
で次のイベントループで実行させればいいよ。
<> 名称未設定<>sage<>2009/03/31(火) 12:18:47 ID:g4GAqv8E0<> NSDrawerDidCloseNotification <> 名称未設定<>sage<>2009/03/31(火) 13:29:11 ID:HzS6wNkv0<> >>797
ありがとうございます。やってみましたけどだめでした。すでに開いているNSDrawerがあって
特定のボタン(長いループのある処理に入る)が押されたときに閉じようとしています。

>>796
>>798
NSDrawerDidCloseNotificationを待ってから処理に入ればいいということでしょうか <> 名称未設定<>sage<>2009/03/31(火) 21:19:34 ID:pZH39k4v0<> ループの中身をメソッドで取り出して、
forでなく、runLoopにやらせるようにするだけでいい。
UIをブロックしなくなるし。ちょっと遅くなるけれど。 <> 名称未設定<>sage<>2009/03/31(火) 22:13:14 ID:W0bP27zQ0<> くあしくコードプリーズ <> 名称未設定<>sage<>2009/03/31(火) 23:32:05 ID:g4GAqv8E0<> 初心者なら素直に木下本買ってこい <> 名称未設定<>sage<>2009/04/01(水) 16:55:54 ID:0krntT+A0<> ヒレガス本3の翻訳版発行決定! <> 名称未設定<>sage<>2009/04/01(水) 17:06:18 ID:4AaZewpW0<> >>803
>ヒレガス本3の翻訳版発行決定!

kwsk <> 名称未設定<>sage<>2009/04/01(水) 18:56:12 ID:oB/YB7UU0<> >>803
>ヒレガス本3の翻訳版発行決定

今日は釣られまくりだから話半分だが、本当なら歓喜。 <> 名称未設定<>sage<>2009/04/01(水) 19:36:37 ID:iuoA8v2yi<> 四月バカだろ <> 名称未設定<>sage<>2009/04/01(水) 19:45:04 ID:DRntOKsR0<> 木下本の翻訳版も発行決定! <> 名称未設定<>sage<>2009/04/01(水) 20:07:24 ID:4KWajs9t0<> >>801
[self performSelector:@selector(mainLoop:) withObject:nil afterDelay:0.0];
<> 名称未設定<><>2009/04/01(水) 23:23:21 ID:Vo0+Ha3v0<> スポットライトみたいに、ステータスバーのメニューにテキストフィールドを付けたいんですが、どうすればいいんでしょうか? <> 名称未設定<>sage<>2009/04/01(水) 23:39:40 ID:Q1sA2Ti00<> >>809
Leopardからはメニューアイテムに任意のビューを設定できるようになったけど、キー入力を受け付けないからテキストフィールドは無理。
だから独自にウインドウを作ってやらなきゃいけない。 <> 名称未設定<><>2009/04/01(水) 23:46:26 ID:Vo0+Ha3v0<> >>810
独自ウィンドウを張り付けるしかないんですね。
レスありがとうございました。 <> 名称未設定<>sage<>2009/04/02(木) 03:37:02 ID:5TIUDo8P0<> spotlightメニューはうまくカーソルに表示が合ってくれないことがあるな。
独自にメニューっぽくしているせいかな。 <> 名称未設定<>sage<>2009/04/02(木) 10:19:51 ID:WZa/mRAt0<> NSUnko <> 名称未設定<>sage<>2009/04/02(木) 14:23:23 ID:A+0IvFxU0<> カスタムURL Schemeを作ってURLのリンクから自分のアプリを起動させたいんですが
info.plistにURL Typesを記入してアプリケーションフォルダに入れたところ
カスタムURLでアプリケーションを起動できるようにはなりましたが
URLのパラメータを受け取る方法が分かりません
iPhoneだとUIApplicationのhandleOpenURLでURLの文字列を受け取れるようですが
NSApplicationだと同様のメソッドが見つかりません
openFileはやってみましたがリンクからの起動だとよばれませんでした <> 名称未設定<>sage<>2009/04/02(木) 14:34:36 ID:UTSfwlh00<> AppleEventで受け取れます。
起動時にこうやって登録しておいて(applicationWillFinishLaunching:とか?)
[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleAppleEvent:withReplyEvent:) forEventClass:'GURL'
andEventID:'GURL'];

(指定したセレクタである)handleAppleEvent:が呼ばれるのでそこでURLを開く処理をします。
-(void)handleAppleEvent:(NSAppleEventDescriptor*)event
withReplyEvent:(NSAppleEventDescriptor*)replyEvent {
AEEventClass eventClass = [event eventClass];
AEEventID eventID = [event eventID];
if (eventClass == 'GURL' && eventID == 'GURL') {
NSString *URLString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
//ここでURLを開く処理
}
} <> 名称未設定<>sage<>2009/04/02(木) 14:46:38 ID:y1ZTNRX80<> >>814

http://developer.apple.com/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_handle_AEs/SAppsHandleAEs.html
に URL ハンドラの書き方がのってますが、
NSAppleEventDescripter を使うのは若干めんどうです。

もうちょっと簡単?なほうほうは、
http://www.xmldatabases.org/WK/blog/1154_Handling_URL_schemes_in_Cocoa.item
にやりかたがのってます。そこにかいてる
.scriptSuite , .scriptTerminology をつかうのは古くて、
Tiger, Leopardでは .sdef をつかうことが推奨されてますが。
まとめると、
1. なんか NSScriptCommand のサブクラスをつくって、
その中の performDefaultImplementation を定義する。
パラメタは [self directParameter] でとれる。
2. クラス名をまあ URLHandlerCommand とすると、
それが呼び出されるようにシステムに教えてあげないといけないです。
3. そのためには、Info.plist に、CFBundleURLTypes だけでなくて、
まず NSAppleScriptEnabled を YES にして、さらに
OSAScriptingDefinition を appName.sdef とかに設定。
4. で、appName.sdef を作成。
これは長くなるので次のレスに貼ります。


以上説明するとどっちが簡単かわからなくなりました。 <> 名称未設定<>sage<>2009/04/02(木) 14:48:31 ID:y1ZTNRX80<> とおもったらもう標準の方法が 815 さんによって解説されてました...
まあ折角なので .sdef ファイルもはっておきます。お騒がせしました。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary title="spires.app Terminology" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include
href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef"
xpointer="xpointer(/dictionary/suite)"
/>
<suite name="url dispatcher" code="GURL">
<command name="Get URL" code="GURLGURL" description="Load a URL">
<cocoa name="Get URL" class="URLHandlerCommand"/>
<direct-parameter description="URL to be opened">
<type type="text"/>
</direct-parameter>
</command>
</suite>
<suite name="Standard Suite" code="????">
<enumeration name="saveable file format" code="savf">
<enumerator name="PDF" code="PDF " description="Portable Document Format">
<cocoa string-value="com.adobe.pdf"/>
</enumerator>
</enumeration>
</suite>
</dictionary> <> 名称未設定<>sage<>2009/04/02(木) 14:49:20 ID:A+0IvFxU0<> >>815
うわぁありがとうございました
2時間ほどググりまくっていた問題が一気に解決しました

AppleEventで調べる必要があったんですね <> 名称未設定<>sage<>2009/04/02(木) 14:53:18 ID:A+0IvFxU0<> ID:y1ZTNRX80さんもありがとうございます
>>814のURLは私も一度は見たんですが理解できないでいました <> 名称未設定<>sage<>2009/04/02(木) 14:54:06 ID:A+0IvFxU0<> >>819
>>814のURLじゃなくて>>816のURLでしたorz <> 名称未設定<><>2009/04/03(金) 04:31:31 ID:kr+MhVDt0<> コンピュータ上でなっている音を取得するには
cocoaのクラスからとれるのでしょうか?
WireTap Studio のようなものを作りたいと考えています <> 名称未設定<>sage<>2009/04/03(金) 07:31:42 ID:0sGNYkMu0<> >>821
無理です。ライン入力とかなら取れなくはないですが、
他のアプリの出している音を乗っ取るのは非常に技術が要ります。
システムに介入しないといけないので。 <> 名称未設定<>sage<>2009/04/03(金) 08:44:24 ID:Og7DGAUY0<> 余程の気合いがあるんじゃなきゃSoundflower同梱とかの方がいいんじゃない
そういう系のソフトはほとんどSoundflower使ってるしね <> 名称未設定<>sage<>2009/04/03(金) 09:46:36 ID:jpTzW8Iz0<> Macの前にラジカセを置き、カセットを入れて録音ボタンを押します。
「ごはんよ〜」の声が入ってしまったら、最初からやり直しです。
<> 名称未設定<>sage<>2009/04/03(金) 13:32:43 ID:AiyPEDkL0<> >>824
昭和やな〜

エアチェックをしている間は蛍光灯をon/offしないように家族に言っておくこと。 <> 名称未設定<>sage<>2009/04/03(金) 21:22:15 ID:qdlsyawP0<> ガスコンロの点火時もノイズがでるお。 <> 名称未設定<>sage<>2009/04/05(日) 14:09:09 ID:83uBhGqF0<> ディスクの空き容量が知りたくて以下のようにしてみました
NSDictionary* disk_info = [[NSFileManager defaultManager] fileSystemAttributesAtPath:@"/"];
UInt32 freeSpace = [[disk_info objectForKey:NSFileSystemFreeSize] unsignedLongValue];
NSLog(@"%@", disk_info);

この時freeSpaceに返ってくる値は517242880なのにコンソールにダンプされた値は
NSFileSystemFreeSize = 26287296512;になっていて一致しません。Finderではコンソールと
同じ値が出ます。なんで違う値が返ってくるんでしょうか? <> 名称未設定<>sage<>2009/04/05(日) 14:13:05 ID:8LQg3s6/0<> unsignedLongLongValue
じゃないとダメなんじゃないの <> 名称未設定<>sage<>2009/04/05(日) 14:15:59 ID:gG/8aUpN0<> NSNumber のままおいておけばいいのに <> 名称未設定<>sage<>2009/04/05(日) 14:17:50 ID:83uBhGqF0<> そうでした
unsignedLongLongValueにしたら同じになりました <> 名称未設定<>sage<>2009/04/09(木) 10:37:20 ID:RClB6d580<> unsignedLongLongWindingLoadにしたらどう? <> 名称未設定<>sage<>2009/04/09(木) 10:58:52 ID:eprEQztd0<> >>831
道は Road だよ... <> 名称未設定<>sage<>2009/04/09(木) 20:24:30 ID:v0hm+/s+0<>              /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     / <> 名称未設定<>sage<>2009/04/09(木) 20:24:54 ID:kxyDh27z0<> iAmRoadVoldemort はどうかな <> 名称未設定<>sage<>2009/04/09(木) 23:13:19 ID:eprEQztd0<> >>834
卿 は Lord だよ... <> 名称未設定<>sage<>2009/04/10(金) 01:16:31 ID:lMV4dI+Y0<> <チラシの裏>
ふと iPhone 開発スレ覗いてみたけど、なんか雰囲気ちがうね。
商業臭ただようというか...
いや、悪いことではないんだけど、ほかの Cocoa スレとか
Mac でプログラムスレとの雰囲気の違いにおどろきました。
</チラシの裏> <> 名称未設定<>sage<>2009/04/10(金) 02:13:47 ID:RK3azGGN0<> */
あそこはWindowsから人がたくさん流れてきたからじゃないかな
別にドザだからとかじゃなくて
単に人が多いって意味で
/* <> 名称未設定<>sage<>2009/04/10(金) 03:32:59 ID:JxPZ9CsV0<> // っていうか、金になるんじゃね? <> 名称未設定<>sage<>2009/04/10(金) 04:04:11 ID:t15MZLZB0<> #どいつも勘違いしてがっつき杉 <> 名称未設定<>sage<>2009/04/10(金) 06:15:27 ID:eWmhQGXgi<> '行頭に変なの付けてるのは何故? <> 名称未設定<>sage<>2009/04/10(金) 07:00:27 ID:2o58G56l0<> xmlとかコメアウじゃね? <> 名称未設定<>sage<>2009/04/10(金) 18:31:30 ID:pP4CQL0ci<> >>837
/* コメントアウトできてないぞ */ <> 名称未設定<>sage<>2009/04/10(金) 19:55:08 ID:yo3vIio10<> >>840
rem BASICでつかw <> 名称未設定<>sage<>2009/04/10(金) 22:46:32 ID:QRxcESwQ0<> C---- コメント ハ コウダロ <> 名称未設定<>sage<>2009/04/10(金) 23:16:50 ID:c7OE8xm+i<> (* きっと俺らをコメントアウトしたいんだろう。 *) <> 名称未設定<>sage<>2009/04/10(金) 23:48:11 ID:lMV4dI+Y0<> <!-- 何故かコメントアウトスレに ... --> <> 名称未設定<>sage<>2009/04/11(土) 00:07:31 ID:ziWgrDBx0<> /**
* 誰かがコメントアウトしそこなったから
* コメントアウトレスが加速した感じがある…。
*/ <> 名称未設定<>sage<>2009/04/11(土) 00:21:14 ID:M/3h2QRB0<> ;; 誰かネタ投下してくれ <> 名称未設定<>sage<>2009/04/11(土) 00:21:25 ID:oTq1Gx7P0<> #pragma mark 俺だ、すまん <> 名称未設定<>sage<>2009/04/11(土) 00:22:26 ID:EUd93H6g0<> //ここからスレ再開 <> 名称未設定<>sage<>2009/04/11(土) 00:29:18 ID:i+pld3jh0<> "いきなり伸びてるから何かと思えば…"
"これからは雑談はコメントアウトでやるようにすればいいんじゃね?" <> 名称未設定<>sage<>2009/04/11(土) 01:01:47 ID:T+uwMsm40<> >>848
じゃぁ投下します、

ココアやってからiPhoneアプリに手を出した方がいいかな?
iPhone SDKをDLしてちょっとやってみたけどチンプンカンプン。 <> 名称未設定<>sage<>2009/04/11(土) 01:36:34 ID:JNPnISaL0<> >>852
Cocoaやってからっていうか iPhone のプログラミングそのものが
Cocoa だから。

iPhoneアプリに手を出すことは Cocoa に手を出すこととほぼ同義。 <> 名称未設定<>sage<>2009/04/11(土) 02:16:21 ID:nrczj+F50<> まずは電卓アプリから。
0で割って世界の終焉させるんだ。 <> 名称未設定<>sage<>2009/04/11(土) 02:57:58 ID:Vy7fh83e0<> cocoaアプリからターミナルを起動して、指定したコマンドを実行させるにはどうすればよいのでしょうか?
cocoaアプリ内からNSTaskで起動するのではなく、純粋にターミナルを起動して投げっぱなしにしたいのです。
よろしくお願いします。
<> 名称未設定<>sage<>2009/04/11(土) 03:14:18 ID:oTq1Gx7P0<> AS使ってSystem Event触ればいけると思う。
で、実際にはどういうことしたいの? <> 名称未設定<>sage<>2009/04/11(土) 03:29:18 ID:Vy7fh83e0<> レスありがとうございます。
例えば、コマンド "ls 指定のパス > hoge.log"を、ターミナルを起動して
明示的にコマンドを見せて実行、そのまま投げっぱなしとかです。
ユーザがキャンセルしたければターミナルで強制終了もできる、感じで。

実際にはかなり時間のかかるコマンドを実行します。
NSTaskでwaitUntilExitをかけずに実行しても良いのですが、ターミナルで進行状況が見えないと
ストレスがたまりそうで。

<> 名称未設定<>sage<>2009/04/11(土) 04:12:06 ID:oTq1Gx7P0<> 自分のアプリでNSTaskの出力を全部表示してやるという選択肢もある気がする。(もちろんキャンセルにも対応できる)
まぁこだわるならさっき言った方法かな。 <> 名称未設定<>sage<>2009/04/11(土) 04:32:31 ID:Vy7fh83e0<> ご指南、ありがとうございます。
NSAppleScriptでなんとか出来ました。
AppleScriptの実行文てNSStringで書けるんですね。
別途でスクリプトを用意する必要があると思ってました。

<> 名称未設定<>sage<>2009/04/12(日) 14:28:39 ID:Tcxou7xri<> Xcode 3.1.2を使ってて、Cでプログラムを書こうと思って、
Cプログラムのテンプレートを選択し、main.cで

#include <malloc.h>

としたところ
そんなファイルかディレクトリはないよ、と怒られたんですが、
これって何が原因なんでしょうか。
あ、もちろんmalloc.hはありますよ。

ちなみにstring.hやらstlib.hは正しくincludeできてます。 <> 名称未設定<>sage<>2009/04/12(日) 15:23:55 ID:OVLj7fwL0<> malloc.hはどのディレクトリにありましたか?
string.hやstlibとやらがあるディレクトリとの違いは?
あと、スレタイ読めますか? <> 名称未設定<>sage<>2009/04/12(日) 15:52:38 ID:Tcxou7xri<> >>861
>malloc.hはどのディレクトリにありましたか?
>string.hやstlibとやらがあるディレクトリとの違いは?

大事なヒントありがとうございます。

<sys/malloc.h>
ってことでいけそうです。

みなさんスレ違い申し訳ありません。 <> 名称未設定<>sage<>2009/04/12(日) 21:19:16 ID:/hUPemb50<>             ∧  ∧
            |1/ |1/
          / ̄ ̄ ̄`ヽ、
         /        ヽ
        /  ⌒  ⌒    |
        |  へ  へ    |   ふふ、そそっかしい子♪
        /          |
       /           |
      (          _ |
      (ヽ、       /  )|
       | ``ー――‐''"|  ヽ|
       ゝ ノ       ヽ  ノ
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ <> 名称未設定<>sage<>2009/04/13(月) 02:40:13 ID:XbZlX+0H0<> >>861
問題はそもそもそこじゃねえんだよ。こうやってまた間違った知識が...

でも続けたくても別の場所でやってな。 <> 名称未設定<>sage<>2009/04/13(月) 04:41:59 ID:saDQjNlFi<> >>864
間違った知識を正してあげられないのなら、黙ってな。
とも思うけど、間違ってることだけ教えるのもありか。
原因わかったなら、正しい解決法も探せるでしょうと。 <> 名称未設定<>sage<>2009/04/13(月) 09:18:29 ID:T3b417LD0<> #import <Foundation.framework/Headers/Foundation.h> ですか!
わかりません>< <> 名称未設定<>sage<>2009/04/14(火) 08:53:40 ID:9sXWHctA0<> こうしてまた一人挫折して行くのであった…。
<> 名称未設定<>sage<>2009/04/14(火) 10:26:05 ID:2uVSb8FI0<> 自作のヘッダファイルが沢山ある場合、全てのヘッダファイルのinclude文を書いた
ヘッダファイルを用意するのが常道? <> 名称未設定<>sage<>2009/04/14(火) 11:00:28 ID:rtd9JLSP0<> んなことない。

もう枯れてきて変更なんてありえないヘッダならともかく、
がんがん更新されていくヘッダを含めるとビルド毎に泣くことになる。

もう枯れてきて変更なんてありえないヘッダもまとめる意味が無ければまとめない。
まとまりがきちんとしてるならframework化も考える。

変更ないならプリコンパイルヘッダに入れる。 <> 名称未設定<>sage<>2009/04/14(火) 11:06:14 ID:JfNB/R0u0<> 依存関係はきちんとしようってことだね。
あとincludeじゃなくてimportね。これのせいで楽したくなるのかもしれんけど。 <> 名称未設定<>sage<>2009/04/15(水) 13:40:40 ID:nNaJ+IsG0<> >>803
>ヒレガス本3の翻訳版発行決定!

これって結局4月バカだったの?
iPhone本バシバシ出てるこのご時世じゃ、普通に出てきてもいい気がするんだが。 <> 名称未設定<>sage<>2009/04/15(水) 14:22:39 ID:+j9ZO/FD0<> >>871
初版を売って稼ぐためのどうでもいい本ばかり出版されて、
よくできている本を地道に訳すという面倒くさい儲からないのには
手を出さないというのが出版業界の常道... と邪推してます <> 名称未設定<>sage<>2009/04/15(水) 15:25:12 ID:W0Lv7omj0<> >>872
ライターが締切を守らない、それが出版業界の常識。
出版するって発表できてる時点で、取次との話は終わってるんだから、あとは作るだけなんだ。 <> 名称未設定<>sage<>2009/04/15(水) 17:23:02 ID:ECwGWgwz0<> 今出てるCocoaのプログラミング本なんてカスばっかりだからな。
ヒレガス本一つあれば他に入門書なんて要らないのに、なぜか
そのヒレガス本の日本語版の新しいのが出てこないんだよね。 <> 名称未設定<>sage<>2009/04/15(水) 20:29:36 ID:4t00hiQ00<> >>874
長い目で見ると待つよりか英語勉強した方がいいのかもな。
ドキュメントも直で読めるようになるし。
情報量が違う。 <> 名称未設定<>sage<>2009/04/15(水) 22:11:43 ID:ECwGWgwz0<> >>875
英語版というかオリジナルのヒレガス本の第3版も買ってるけど、歳のせいか
英文を読んでると眠くなるんだよね。 <> 名称未設定<>sage<>2009/04/17(金) 17:30:33 ID:8EfQ+82K0<> NSProgressIndicator で setDisplayedWhenStopped を NO にして stopAnimation
を呼ぶとNSProgressIndicatorが消えたり消えなかったりすることがあって
CocoaDev とか検索してみるとかなり前から指摘されているバグみたいなんですけど
これって決定的な回避方法ってあるんでしょうか?
Leopard 以降でビルドしても変わらないんで 10.6待ちでしょうか? <> 名称未設定<>sage<>2009/04/17(金) 21:28:03 ID:Md+GhA680<> [indicator performSelectorOnMainThread:@selector(stopAnimation:) withObject:nil waitUntilDone:YES];
ではダメか <> 名称未設定<>sage<>2009/04/17(金) 21:37:41 ID:SxIq6mGx0<> 二重にストップかけるとダメとか?
ならストップ前に確認とか、ストップ前はYESにして
止めたらNOとか。

めんどくさー(笑) <> 名称未設定<>sage<>2009/04/19(日) 10:31:43 ID:G428OKfY0<> MacOSX:10.5.6を使っています。
今まではデスクトップに常駐してるアプリケーションを作っていたのですが、
lingrRaderやdoplioの様にDockに出ず、メニューバーに常駐しているような
アプリケーションを作る必要が出てきました。そこでGoogleで検索したのですが
なにも参考になるサイトが見つかりませんでした。
上記の様なメニューバーに常駐するアプリケーションはどのようにして作るのでしょうか
参考サイト or 方法をお教え願います。
よろしくおねがいします。 <> 名称未設定<>sage<>2009/04/19(日) 10:55:25 ID:ph0yaqGa0<> >>880
>そこでGoogleで検索したのですがなにも参考になるサイトが見つかりませんでした。
そんなはずはないな。NSStatusItem とか LSUIElement でぐぐってみてください。
山のように記述はあります。 <> 名称未設定<>sage<>2009/04/19(日) 13:34:21 ID:GuW1EJA80<> このスレタイで12まで来たのに
Cocoaはやっぱり!を知らない人がいるっていうのは嘆かわしいことよ <> 名称未設定<>sage<>2009/04/19(日) 14:01:30 ID:ZKTfRKR10<> >>882
>Cocoaはやっぱり!

作者iPhone本に参入の模様
ttp://www.amazon.co.jp/dp/4797350504/ <> 名称未設定<>sage<>2009/04/19(日) 14:06:07 ID:GuW1EJA80<> 別スレでも君の書き込みを見たよ
日本語で読める本だとエリカ以外みんな初心者向けの本を出してるよね <> 名称未設定<>sage<>2009/04/19(日) 21:10:30 ID:e5XlZRzR0<> 次スレから「Cocoaはこってり!!!」になります。 <> 名称未設定<>sage<>2009/04/19(日) 21:14:24 ID:h8vxOpc20<> むしろ最近iPhoneでCocoa始める人増えたから副職でやる意味を込めて"Cocoaはこっそり!!!"でw <> 名称未設定<><>2009/04/19(日) 21:23:57 ID:aaPg35j60<> Cocoaで大もうけ!!! <> 名称未設定<>sage<>2009/04/19(日) 21:29:15 ID:hYj0grvc0<> 【本当は】ココアでガッポリ!!!【ガッカリ】 <> 名称未設定<>sage<>2009/04/20(月) 09:37:37 ID:hwlAV6Zy0<> Cocoaでしっぽり!!! <> 名称未設定<>sage<>2009/04/20(月) 12:13:12 ID:KQ+7dEek0<> ねっとり!!! <> 名無し募集中。。。<>sage<>2009/04/20(月) 14:35:49 ID:bkmFWndi0<> QTMovieView に入っている QTMovie の音声部分の生データを取得したいのですが、
どのような API を使うのがよいのでしょうか。
どなたかご存知の方、何かとっかかりだけでも頂ければ幸いです。 <> 名称未設定<>sage<>2009/04/20(月) 15:08:30 ID:Iksg4Wfi0<> 生じゃなくって AIFF に変換するなら,Apple の AIFFWriter てのが参考になると思う。
もしかしらた生で取り出す事ができるかも知れないけど、よくしらないので。。。参考までに。 <> 名無し募集中。。。<>sage<>2009/04/20(月) 15:28:44 ID:bkmFWndi0<> ありがとうございます。AIFFWriter を見てみたらお勧めしないドキュメントになっていました。
しかしこのソースも読んでみたいと思います。うまく取り出せるヒントがあるかもしれません。 <> 名称未設定<>sage<>2009/04/20(月) 15:49:08 ID:Iksg4Wfi0<> >>893
>AIFFWriter

でドキュメント検索して上位にあるコードを読めばいいと思うけど <> 名称未設定<>sage<>2009/04/20(月) 16:55:44 ID:r4u60OBG0<> Audio Extraction API
http://developer.apple.com/QuickTime/audioextraction.html <> 名称未設定<>sage<>2009/04/20(月) 19:18:28 ID:LUVHItoy0<> afconvertでいいんじゃない? <> 名称未設定<>sage<>2009/04/20(月) 19:47:27 ID:XzRBSuOv0<> 今からカボーンで書けってか <> 名称未設定<>sage<>2009/04/20(月) 22:41:20 ID:BmaZ6RE10<> てか、AIFFだってAIFCでなければ
再生時間とかビットレートとかが記録された程度で生データのはずだが...
# AIFCは圧縮されてる <> 名称未設定<>sage<>2009/04/21(火) 01:51:09 ID:jSgwnMNJ0<> >>893
>お勧めしないドキュメントになっていました
ttp://developer.apple.com/samplecode/QuickTime/idxMusicAudio-date.html
はLeopard Sample Codeの下にあるので問題ないドキュメントだと思って
いたのですが、どこにそのような記述があったでしょう?教えて頂ける
と幸いです。

QTExtractAndConvertToAIFFのAudioConverterはかなり参考にさせても
らって自分用の変換クラス作ってます、、、
<> 名称未設定<>sage<>2009/04/21(火) 19:40:02 ID:tJb5665a0<> iMacを買って、たのしいcocoa本でプログラミングを始めたばかりの者です。
たのしいcocoaプログラミングのアウトレットとアクションの接続(P.82)について質問さ
せて下さい。

App Controlerのインスタンスを選択してcontrolキーを押しつつドラッグ、線が伸びて
テキストフィールドにドロップすると、アウトレットを表示する黒いウィンドウが出るとあ
るのですが、黒いウィンドウが出ません(青い線は伸びます)。
アクションの接続でも同様です。

逆にテキストフィールドからApp Controllerだと、黒ウィンドウ(Outlets delegate)が出
ます。
また、試しに「Say Hello」のボタンからテキストフィールドにcontrolでドラッグドロップし
てみると黒いウィンドウは出まして、
App Controller、テキストフィールド、ボタンを単体でcontrolキーを押すと黒いウィンド
ウは出ますが、AppControllerからテキストフィールドだと出てくれません。

やり直してみたのですが黒ウィンドウは出ず、ググってみてもそれらしき原因が分かり
ません。
情けない質問で申し訳ありませんが、原因またはアドバイスをいただけないでしょうか。

<> 名称未設定<>sage<>2009/04/21(火) 19:45:15 ID:6KVeCMf70<> >>900
AppController.hを保存(コマンド+S)してからInterface Builderで操作する。 <> 名称未設定<>sage<>2009/04/21(火) 20:06:19 ID:tJb5665a0<> >>901
900です。
Xcodeを保存して終了した後、Interface Builderでもう一度接続を試みたところ
今度は黒ウィンドウが出て本の通りに出来ました!
(command+Sだけでは黒ウィンドウが出ませんでしたので、保存終了してみました)
情けない質問にお答えいただいて本当にありがとうございました。
m(_ _)m
<> 名称未設定<>sage<>2009/04/21(火) 20:11:44 ID:6KVeCMf70<> >>902
補足しておくと、多分ヘッダファイルにIBOutlet〜で始まるアウトレットを書いたと思うけど
そのヘッダファイルを保存さえすればいい。Xcodeの終了は必要ない。 <> 名称未設定<>sage<>2009/04/21(火) 20:22:30 ID:tJb5665a0<> >>903
ありがとうございます。
Xcodeは終了せずヘッダファイルだけですね。
了解しました。
<> 名称未設定<>sage<>2009/04/22(水) 12:42:38 ID:DqppF6fm0<> >>902
その本の著者のサイトに保存の記述が抜けてたと書いてあったよ。
他にもいろいろ間違いがあるので目を通しておいた方がいいよ。
ttp://hmdt.jp/books/enjoyCocoa/errata.html

でも、あの本は自分みたいなまったくの初心者にはちょっと分かりにくかったな…。
>>883でも買ってみようかな。 <> 名称未設定<>sage<>2009/04/22(水) 18:59:44 ID:mANVyBLi0<> >>899
ここを開くとワーニングでない?
http://developer.apple.com/samplecode/AIFFWriter/index.html#//apple_ref/doc/uid/DTS10000904

Not Recommended Document
Important: The information in this document is Not Recommended and should
not be used for new development.
Current information on this Reference Library topic can be found here:
QuickTime > QuickTime Component Creation

<> 名称未設定<>sage<>2009/04/22(水) 20:11:25 ID:56XqzhhX0<> >>906
>899氏はこっちをいっていると思う。そっちもAIFFWriterだが、
こっちにもAIFFWriterがある。
ttp://developer.apple.com/samplecode/QTExtractAndConvertToAIFF/index.htm <> 891<>sage<>2009/04/22(水) 20:24:13 ID:tMnqeG/TP<> すみません! お勧めしないドキュメントになってたのはまさに >>906 にあるものでした。
他にもありましたね。すみませんです。
その後、大規模規制にあって書き込みできずにおろおろしながら
MovieAudioExtractionで始まるAPI (>>895) を見つけて格闘しております。

出てくる AudioBufferList の見方がよくわからずまだ格闘中です。 <> 899<>sage<>2009/04/22(水) 22:55:04 ID:DwUsCRRs0<> >>907 の書いている通りです。
ttp://developer.apple.com/samplecode/QTExtractAndConvertToAIFF/listing2.html
のAIFFWriter.mはMovieAudioExtractionRefを利用したラッパクラスになって
いるので、まさに>>891 氏が探しているものではないかと。ファイル書き出し
になっているので、メモリ内だけで見たければ一工夫必要になりますが。

ちなみに、>>906 の指しているドキュメントはQuickTimeのExport Componentな
ので今回の目的とは合致しないと思います。もちろん参考にするのはnot reccomend
です。CodeWarriorの環境だし:-)

<> 名称未設定<>sage<>2009/04/23(木) 18:37:48 ID:1CS/bYEr0<> 久々にPerlをいじったら
変数名の前に$とか@とかウゼー!
$var = @"hoge";とか、BOOLとか書いてダセー! <> 名称未設定<>sage<>2009/04/23(木) 23:18:41 ID:coHpjbSb0<> Ruby-Cocoa はどうなんじゃろ
Objective-C でいいじゃんという気はするが Ruby には惹かれる <> 名称未設定<>sage<>2009/04/23(木) 23:26:55 ID:qlfXGITq0<> >>911
Javaのことがあるからな
10.7あたりで残ってるかどうか... <> 名称未設定<>sage<>2009/04/23(木) 23:35:45 ID:QVn2uHvI0<> マジレスすると、Cocoa-JavaとBridgeSupportは全然違う <> 名称未設定<>sage<>2009/04/23(木) 23:47:03 ID:xmy2zjV30<> MacRubyがApple主導で走り始めてるので1.9以降はそっちに乗り換える予感
<> 名称未設定<>sage<>2009/04/24(金) 00:07:27 ID:LmHY1KpqP<> >>910
マジレスするとその @ は Objective-C のそれのような気が <> 名称未設定<>sage<>2009/04/24(金) 04:39:51 ID:FlQBhCRYi<> sVar = @"hoge";とか書いてだせーw <> 名称未設定<>sage<>2009/04/24(金) 08:07:45 ID:AJMzph/L0<> >>916
いいかげんハンガリアンは止めようよ。 <> 名称未設定<>sage<>2009/04/24(金) 10:27:43 ID:pGzSzX+90<> sEx = @"やりてー"; <> 名称未設定<>sage<>2009/04/24(金) 12:13:57 ID:fYJAPbTJi<> [jc retain];
[jk release];
<> 名称未設定<>sage<>2009/04/24(金) 16:11:41 ID:r8LbacuH0<> jk を確保したり保持していたことがあるのかな
いやどちらもただの妄想か・・・(つまり nil) <> 名称未設定<>sage<>2009/04/24(金) 18:27:36 ID:i+2SSGKN0<> 他所でお願いします。 <> 名称未設定<>sage<>2009/04/25(土) 00:21:25 ID:xCMCtydA0<> jkmanko(timpo, NULL, NULL); <> 名称未設定<>sage<>2009/04/25(土) 00:34:23 ID:3cYDNmou0<> (;^ω^)
<> 名称未設定<>sage<>2009/04/26(日) 16:49:43 ID:LoHqtxFZ0<> Obj-C、メソッドの引数が複数ある場合、
引数への説明っぽく命名できていいね。
somethingFrom: a To: bとかいい感じ。

他言語だと引数に対する説明を
別途用意せにゃならんところだ。 <> 名称未設定<>sage<>2009/04/26(日) 18:59:58 ID:TT0SlhA9P<> LLだとハッシュが代わりに使えるね
コード補完までは無理だけど <> 名称未設定<>sage<>2009/04/29(水) 23:00:49 ID:V1XwN29tP<> iPhoneってGLUTつかえないの? <> 名称未設定<>sage<>2009/04/30(木) 09:31:48 ID:doMwuFEEi<> >>926
使えないし、スレ違い。 <> 名称未設定<><>2009/04/30(木) 18:12:51 ID:BhjGtgrJ0<> Cocoaだと使う画像やサウンドファイルが全部 .app パッケージに入っていてとてもわかりやすいのですが
それはたとえばゲームを作りたいときにあだになりますよね。
ラスボスの画像やそのときの音楽、シナリオのセリフなどすべて丸見えでは RPG は作れません。

そのようなものを隠したい場合(もちろん逆アセンブルなどされたらどうしようもないとは思いますが)
Cocoa 的には何か普通こうするというような手法があるのでしょうか?
それとも独自で暗号化データパッケージクラスなどを作るしかないのでしょうか? <> 名称未設定<>sage<>2009/04/30(木) 18:35:17 ID:Y52FrpgC0<> NSArchiverじゃ駄目?
あとはzlibとか。 <> 名称未設定<>sage<>2009/04/30(木) 18:46:55 ID:3T4HQS2t0<> NSImage,NSSound,NSString すべて NSCodingプロトコルを採用してるから
NSCoderをカテゴリでオーバーライドして特殊なエンコードあるいは暗号化して
NSKeyedArchiverでアーカイブしちゃう

がCocoa的かもしれない。

カテゴリじゃなくてmethod_exchangeImplementationsでもいいにょろ <> 名称未設定<>sage<>2009/04/30(木) 18:48:35 ID:SsTdRFyO0<> >>930
なぜに鶴屋さんw <> 名称未設定<>sage<>2009/04/30(木) 18:51:27 ID:BhjGtgrJ0<> >>929>>930
ふむふむ。なるほどそれなら Cocoa 的に気持ちよく暗号化できそうですね。
やってみます。楽しい RPG が出来たら遊んでください。なんちゃって
<> 名称未設定<>sage<>2009/04/30(木) 18:53:29 ID:ARLKd8nT0<> 私だったら拡張子変えるくらいで妥協しちゃいますね。 <> 名称未設定<>sage<>2009/05/01(金) 00:33:14 ID:qCwap6rl0<> .ipa程度でおk <> 名称未設定<>sage<>2009/05/01(金) 00:38:37 ID:sNlWbaBw0<> 俺は絶対妥協できねぇw

>>930
いいね。Rbではシコシコ自作する部分がすでにあるなんて。
まぁ逆に、俺はその辺を自作するのが楽しくもあるんだけど。

でも、標準API使うと簡単にクラックされかねないかね。
NSCoderで暗号化するという最後の砦を強化したほうが良さげだ。 <> 名称未設定<>sage<>2009/05/01(金) 01:20:02 ID:a6vciBvgP<> >>931
にょろは、鶴屋さんだけじゃないにょろ <> 名称未設定<>sage<>2009/05/01(金) 05:33:31 ID:XyZ1My4c0<> NSCodingをカテゴリって・・・

標準クラスのカテゴリ拡張は一般に危険じゃね?特にオーバーライドについては。
DivX 6.4とかで起きた非互換問題をしらない?

そういうときは自分でカテゴリ作るもんだろ? <> 名称未設定<>sage<>2009/05/01(金) 10:41:36 ID:kW3ZIjhL0<> マシンのローカルIPアドレスを取得したいのですが、
ttp://www.geekpage.jp/programming/macosX-network/NSHost-currentHost-addresses.php
このページに記載されている方法を使うと、マシンによって正しい値が得られなかったり
取得までに3分以上かかる場合があります。
正しいアドレスをより早く取得する方法はないものでしょうか? <> 名称未設定<>sage<>2009/05/01(金) 11:15:38 ID:4yfL6aV70<> Appleにサンプルプログラムがあったと思ったが。 <> 名称未設定<><>2009/05/01(金) 14:15:16 ID:m3p/mNLQ0<> Leopardのプレビューというアプリですが,あのアプリの構成を教えていただきたいです。
画像を表示しているところはカスタムビューだと思うのですが,
サムネイルを表示しているところは、あれもカスタムビューなのでしょうか。
つまりNSWindowの上に,カスタムビューを2つ置いていることになるのでしょうか. <> 名称未設定<>sage<>2009/05/01(金) 15:19:10 ID:e9P6WHDV0<> split view にカスタムビューがそれぞれ配置されてるみたい <> 名称未設定<>sage<>2009/05/01(金) 15:26:54 ID:6oCtWMG+0<> >>940
右側部分は,その全体がカスタムビューで、一つ一つのサムネイルを表示するのもカスタムビュー。
<> 940<>sage<>2009/05/01(金) 15:42:11 ID:m3p/mNLQ0<> >>941,942
ありがとうございます.NSSpitViewを置いてみたところイメージがわいてきました.
スプリットされている二つのビューはカスタムビューとなっています.
サムネイルするには画像一個に対して,自前でビューを生成するわけですか.
なるほど流れが理解できました. <> 名称未設定<>sage<>2009/05/01(金) 19:22:35 ID:sNlWbaBw0<> JPEGなんかは始めからサムネが埋まってたりするから
画像の構造も勉強しとくとある程度の高速化が見込まれるかも <> 名称未設定<>sage<>2009/05/01(金) 21:40:24 ID:1mDpxgDQ0<> >>939
ありがとうございます。探してみます。 <> 名称未設定<>sage<>2009/05/01(金) 23:50:58 ID:qCwap6rl0<> アプリのパッケージ開いてnibを見ると勉強になるよ <> 名称未設定<><>2009/05/02(土) 09:34:39 ID:tDRT3W7Y0<> 初めてcocoaを使うんですがInterface Bulderを起動してもパレットウインドウがでません。
どうすればパレットウインドウをだせますか? <> 名称未設定<>sage<>2009/05/02(土) 09:42:32 ID:cnQwfWKq0<> バージョンによるね <> 名称未設定<>sage<>2009/05/02(土) 09:44:44 ID:Y0F3beo/0<> 俺も最初悩んだ。
2.5だとメニューバーのウィンドウでなくツールから表示できた。
<> 名称未設定<>sage<>2009/05/02(土) 10:02:52 ID:A5rs166U0<> >>947
少しは自分で探した方が良いと思うが。
5分も触ってれば分かるだろ。 <> 名称未設定<><>2009/05/02(土) 10:03:59 ID:tDRT3W7Y0<> すいません書き忘れましたバージョン3.0です。
>>949さんのやり方ででました。
ツール-ライブラリで出せました。ありがとうございます。 <> 名称未設定<>sage<>2009/05/02(土) 10:57:46 ID:Gup2aMh60<> ヴァージョンに関係なくCmd-Shift-I で出てこなかったっけ?

それはイスペクタか…… <> 名称未設定<>sage<>2009/05/02(土) 10:59:33 ID:A5rs166U0<> >>952
cmd+shift+L <> 名称未設定<>sage<>2009/05/02(土) 13:43:21 ID:F+a2R1yl0<> seashoreよりももっと高度な、フォトショップ並のアプリってココアで作れるものですか? <> 名称未設定<>sage<>2009/05/02(土) 13:55:55 ID:l93hc1HI0<> 作れるよ。開発者が十分有能で、時間があって、相応の見返りがあれば。 <> 名称未設定<>sage<>2009/05/02(土) 17:09:40 ID:K31Opzmr0<> そうなんですか?
勉強始めたばかりですが、最初に作るアプリは何にしようかと検討中で
Intuos4 買う代わりにソフトを作ってみようかと。
どもでした。 <> 名称未設定<>sage<>2009/05/02(土) 17:17:25 ID:q9a6kjwb0<> 最初に作るには…まぁ頑張れ <> 名称未設定<>sage<>2009/05/02(土) 17:50:51 ID:Y0F3beo/0<> 最初に作るのは2chブラウザでお願いします。 <> 名称未設定<>sage<>2009/05/02(土) 20:02:46 ID:MpZ3Hpp90<> iPhoneアプリは有料目当てで作ってる人多いけど
cocoaはその辺りどうなんでしょう? <> 名称未設定<>sage<>2009/05/02(土) 20:09:20 ID:l93hc1HI0<> 俺はどっちもやってるけどどっちも趣味。
iPhoneアプリもそんなに本気で儲けたい個人はいないと思う。
あの魅力的な機械でアプリを動かしたいってだけ。 <> 940<>sage<>2009/05/02(土) 23:07:51 ID:MYUakcjP0<> >>960
いいことおっしゃいますね.
その通りと思います. <> 名称未設定<>sage<>2009/05/03(日) 01:31:20 ID:hOPc0CNr0<> HTML片をArrayControllerを介して管理して、左側のリストで選ばれた項目を右側のWebViewで表示、直接編集出来るソフトを作っています。

WebView *webView があったとすると、編集後(?)のHTMLソースは

[[[[webView mainFrame] mainFrameDocument] documentElement] innerHTML]

で取得出来る様なのですが、これに相当する値と、NSArrayController の selection との間にCocoaバインディングを張ることは可能でしょうか?
別にIBからだけでなくてソースを弄らなくてはいけなくても構いません。 <> 名称未設定<>sage<>2009/05/03(日) 01:44:32 ID:AXTSpR7c0<> It's easy. <> 名称未設定<>sage<>2009/05/03(日) 12:53:06 ID:lt0zRowS0<> 最近、Cocoaに手を出したんだが
「Cocoaではじめよう」って本が分かりやすかったよ
俺と同じような初心者が見てるか知らんが、一応オススメしておく <> 962<>sage<>2009/05/03(日) 13:58:27 ID:hOPc0CNr0<> >>963
その後自分で色々と調べてみました。

- bind:toObject:withKeyPath:options:
を使えば良いことがわかったので、

webView:didFinishLoadForFrame: でフレームの読み込みが完了するのを待って

[[[frmame DOMDocument] documentElement] bind: @"innerHTML"
toObject: arrayController withKeyPath:@"selection.data" options: nil]

とメッセージを送ってみました。
すると、左側の TableView で選ばれたHTMLの内容にしたがって、WebViewの内容は変わる様になりましたが、WebView の内容を編集して他の項目に移り再び戻ってくると、変更内容が反映されていませんでした。 <> 名称未設定<>sage<>2009/05/03(日) 14:46:27 ID:RcZ6JGDQ0<> arrayController側のdataにinnerHTMLが反映されていないのでしょうね。
NSLogで確認されてみては?
フレームの読み込みが完了した時点でarrayControllerのdataにsetValueする必要があるのかな?

<> 名称未設定<>sage<>2009/05/03(日) 14:47:10 ID:YfgEBWph0<> ところで、WebViewってデフォでどのくらいの再現能力なの?
ただウィンドウに貼っただけでSafariと同レベルまで再現してくれるとは思えないんだが... <> 名称未設定<>sage<>2009/05/03(日) 14:54:05 ID:j3xN9IWh0<> >>965
View側のプロパティは何でもBindできるわけではありません。
Cocoa Bindingというのは名前に反して自動で双方向同期するようにはできていないのです。
この場合、documentElementのinnerHTMLはBindしてもRead-Onlyになります。
WebView側で編集が確定されたのを受け取り、自前でモデル側にセットする必要があるでしょう。

>>967
経験上は全く同レベルです。SafariもWebViewをほぼそのまま使っていると思われます。 <> 962<>sage<>2009/05/03(日) 15:04:24 ID:hOPc0CNr0<> >>966
どうやらその様です。

bind:〜 の呼び出しを awakeFromNib からする様にコーディングしていたのですが、[mainFrame DOMDocument] がnilとなって仕舞っていたので(WebView, mainFrameは存在する)す。
先に awakeFromNib 内で mainFrame に ダミーのHTML片を喰わせてみても同じだったので、最初に読み込みが完了してDOMDocumentが存在してから弄る事にしました。

>>968
なるほど……ある程度込み入ったことをやろうとするとMVCを完璧に分離する事は難しくなるんですね。ありがとうございます。 <> 名称未設定<>sage<>2009/05/03(日) 15:15:02 ID:j3xN9IWh0<> >>969
いえ、Cocoa Bindingはあくまで汎用のControllerを使えるようにする仕組みですので、自分でControllerを作れば
MVCの分離はそのままです。

そのControllerはBindingに使用しているNSArrayControllerのカスタムサブクラスでもいいし、新たに一つ作ってもいいです。
いずれにせよ、(WebEditingDelegateのメソッドを実装して)WebViewの編集の通知を受けたら
NSArrayControllerのselectedObjectsか何かで選択されているモデルを得て、そこにSetすればいいと思います。 <> 名称未設定<>sage<>2009/05/03(日) 15:27:05 ID:1y+Azwgv0<> >>968
CSSもFlashもAjaxもformの表示も?
だとしたら>>962のソフトは面白くなりそうだな。
いやまぁ俺はFlashもAjaxもいらなくてCSSで十分なんだが。 <> 名称未設定<>sage<>2009/05/03(日) 15:40:28 ID:j3xN9IWh0<> >>971
ええ、Safariに表示できるものは何でも。CSSもJavascriptもばっちりです。DOMはObjective-Cでもいじれます。
Flashなどのプラグインも、Safariと共有しているので自動的に使えます。 <> 名称未設定<><>2009/05/03(日) 18:19:23 ID:ftJS1kVw0<> >>969
MVCのデータの流れは、Model→Viewの一方通行が基本です。

だから、どちらかと言うと、

> この場合、documentElementのinnerHTMLはBindしてもRead-Onlyになります。

これが普通なのであって、NSTextFieldのvalueのように双方向にデータが流れる方が特殊なのだと思います。 <> 962<>sage<>2009/05/03(日) 21:30:08 ID:hOPc0CNr0<> >>970
なるほど、ありがとうございます。自分でクラスを作って仕舞えば良いのですね。
WebView側からDelegateしないといけないのが少し口惜しいですが、 >>973 と云う事なんですね。

みなさん本当に有り難うございます!

>>971
iPhone のメモ帳がデータをHTML片にしてsqliteのdbファイルに格納して管理しているので、それを読み出すアプリを作っていました。WYSISYGエディタを作っていた訳ではないです……

しかし、それも面白そうなので、余裕があったら挑戦してみようと思います。有り難うございました。 <> 名称未設定<>sage<>2009/05/04(月) 08:02:06 ID:YhcfvWkI0<> >>974
それって公開予定なの?リジェクトされるんじゃね? <> 名称未設定<>sage<>2009/05/04(月) 09:52:11 ID:9NGlg4KAi<> >>975
俺にはこの人がiPhoneアプリ作ろうとしてるようには読めないぞ <> 名称未設定<>sage<>2009/05/04(月) 12:26:35 ID:uDYhVLXL0<> 次スレ

Cocoaはさっぱり!!! version.13
http://pc11.2ch.net/test/read.cgi/mac/1241407525/ <> 名称未設定<>sage<>2009/05/04(月) 14:46:06 ID:+npOCs8n0<> うめ <> 名称未設定<>sage<>2009/05/04(月) 19:26:09 ID:o9jzJPr20<> [me retain];

違うかw <> 名称未設定<>sage<>2009/05/04(月) 19:51:28 ID:YkMfY5x90<> [self ume]; <> 名称未設定<>sage<>2009/05/04(月) 21:06:10 ID:bViyRk8N0<> [self release]; <> 名称未設定<>sage<>2009/05/05(火) 01:39:27 ID:gJ+XAZG+0<> [self threadWillEnd]; <> 名称未設定<>sage<>2009/05/05(火) 01:53:14 ID:AzkkoBM30<> - (void)threadDidTerminate:(NSNotification *)aNotification
{
int no = [[aNotification object] intValue];
if(no == 1000){
NSLog(@"Good bye");
}
} <> 名称未設定<>sage<>2009/05/05(火) 06:06:47 ID:FhY/AGgmi<> ; // umeume <> 名称未設定<>sage<>2009/05/05(火) 22:06:42 ID:/Vj6hUZR0<> [self ume]; <> 名称未設定<>sage<>2009/05/05(火) 22:23:23 ID:j9HM4GInI<> うめ <> 名称未設定<>sage<>2009/05/05(火) 22:27:59 ID:j9HM4GIn0<> for(int i=0;i<14;++i)
[self ume]; <> 名称未設定<>sage<>2009/05/05(火) 22:34:25 ID:8tS77hvh0<> 横着はいかんよ <> 名称未設定<>sage<>2009/05/05(火) 22:35:47 ID:8tS77hvh0<> >>986, 987
IDの末尾だけ違うって、同じネットワーク内でiPhoneからとPCから書き込みの違い? <> 名称未設定<>sage<>2009/05/05(火) 22:40:50 ID:j9HM4GIn0<> 986はiPod touchのSafari、987はBB2Cから書き込んだ。
で、今度はPCから書き込んでみるテスト。 <> 名称未設定<>sage<>2009/05/06(水) 01:23:24 ID:jAMjc3Of0<> (´・∀・`)ヘー
touchからのレスは、SafariとBB2Cで末尾変わるのか
なんでなん? <> 名称未設定<><>2009/05/06(水) 01:29:53 ID:6fHcxaIz0<> Wifiか3Gかじゃね? <> 名称未設定<>sage<>2009/05/06(水) 02:02:07 ID:EeyzVtsCi<> >>992
touchだから3Gはないだろ。 <> 名称未設定<>sage<>2009/05/06(水) 02:32:49 ID:oBXNZ56K0<> iPhone or touch + WebKitだったら末尾iだと予想
専ブラは直接スクリプトかなんか投げたり返したりしてるはずなので <> 名称未設定<>sage<>2009/05/06(水) 02:43:01 ID:oBXNZ56K0<> WebKitっていうか、用意されてるWebViewのこと <> 名称未設定<>sage<>2009/05/06(水) 03:47:21 ID:I/zXaFZU0<> ふーん <> 名称未設定<>sage<>2009/05/06(水) 03:50:57 ID:I/zXaFZU0<> ふーん <> 名称未設定<>sage<>2009/05/06(水) 03:51:46 ID:I/zXaFZU0<> ふーん <> 名称未設定<>sage<>2009/05/06(水) 03:52:31 ID:I/zXaFZU0<> ふーん <> 停止しました。。。<>停止<>2009/05/06(水) 03:59:49 ID:I/zXaFZU0<> 真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ <> 1001<><>Over 1000 Thread<> このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 <>