Cocoaはさっぱり!!! version.12at MAC
Cocoaはさっぱり!!! version.12 - 暇つぶし2ch1:名称未設定
09/01/13 22:26:12 TtNlCCCM0
前スレ
Cocoaはさっぱり!!! version.11
スレリンク(mac板)

Cocoaはさっぱり!!! version.X(10)
スレリンク(mac板)
Cocoaはさっぱり!!! version.9
スレリンク(mac板)
Cocoaはさっぱり!!! version.8
スレリンク(mac板)
Cocoaはさっぱり!!! version.7
スレリンク(mac板)
Cocoaはさっぱり!!! version.6
スレリンク(mac板)
Cocoaはさっぱり!!! version.5
スレリンク(mac板)
Cocoaはさっぱり!!! version.4
スレリンク(mac板)
Cocoaはさっぱり!!! Version.3
スレリンク(mac板)
Cocoaはさっぱり!version:2
スレリンク(mac板)
Cocoaはさっぱり!
スレリンク(mac板)

2:名称未設定
09/01/13 22:28:24 TtNlCCCM0
関連スレ
Macでプログラミング{9}
スレリンク(mac板)
MacOS XをUnixとして使ってる人の為のスレ その14
スレリンク(mac板)
Xcode part7
スレリンク(mac板)
MacでJava その4
スレリンク(mac板)
RubyCocoa 初心者質問【Leopardバンドル記念】
スレリンク(mac板)
AppleScript アップルスクリプト 質問、発表 3
スレリンク(mac板)

3:名称未設定
09/01/13 22:39:37 TtNlCCCM0
関連追加
iPod touch/iPhone ネイティブアプリ製作 ver.8
スレリンク(mac板)
Objective-C [ObjC part:3];
スレリンク(tech板)


4:名称未設定
09/01/13 23:08:47 H0hDNQK00
Web
Cocoa wiki
URLリンク(cocoawiki.aerial.st)
ADC
URLリンク(developer.apple.com)
CocoaDevCentral
URLリンク(cocoadevcentral.com)
CocoaDev
URLリンク(cocoadev.com)
Cocoa Blogs
URLリンク(cocoablogs.com)
Cocoaはやっぱり!
URLリンク(www.big.or.jp)
HMDT
URLリンク(homepage.mac.com)
OOMORI.com - Cocoaリファレンス
URLリンク(www.oomori.com)
Cocoa Study Blog
URLリンク(blog.cocoa-study.com)
Cocoa Break!
URLリンク(park15.wakwak.com)
Cocoa Bindings Examples and Hints
URLリンク(homepage.mac.com)
Cocoaで遊ぼう!!
URLリンク(homepage.mac.com)
itok's Lab
URLリンク(110k.net)
Vacuous Virtuoso
URLリンク(lipidity.com)
MOSA テクニカルドキュメント
URLリンク(www.mosa.gr.jp)

5:名称未設定
09/01/14 01:13:18 bEd33IEe0
>>1
(・ω・`)乙  これは乙じゃなくてポニーテールなんだからね!

6:名称未設定
09/01/14 01:51:20 zQKDdF+j0
>>1
ポニーテール!

7:名称未設定
09/01/14 16:52:14 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アプリをアクティブにしたいのですがどうしたらよいのでしょうか…

8:名称未設定
09/01/14 16:58:22 2Od3YeYO0
自己解決しました(´・ω・`)
スレ汚してすんません…

9:名称未設定
09/01/14 19:35:07 P+BRcwQe0
解決方法はどんなときでも晒しといた方が
同じ問題にぶち当たった人のためになると思う

10:名称未設定
09/01/15 01:00:17 N5HZEMqr0
そろそろ確定申告の事を考えないといかん時期だな。

11:名称未設定
09/01/15 01:03:14 N5HZEMqr0
盛大に誤爆ったorz

12:名称未設定
09/01/15 01:09:22 upzL9L0e0
MORINAGAの人?

13:名称未設定
09/01/16 22:20:19 z0eHNRBe0
ここにいる方々は、普段どんな仕事をしてるんですか?

14:名称未設定
09/01/16 22:43:09 //jRGAOJ0
底辺プログラマ

15:名称未設定
09/01/17 14:18:31 w58sAeN+0
他人の書いたプログラムの虫取り(´;ω;`)

16:名称未設定
09/01/17 16:59:24 FvBk0qG30
ぶっちゃけ今はiPhoneぐらいだもんね。飯の種は。
cocoaで便利なアプリを作っても金を出してまで買ってくれる人はそんなにいなさそう。



17:名称未設定
09/01/17 18:09:22 nxgihjOe0
Cocoaでエロゲつくればドザが釣れるかも試練

18:名称未設定
09/01/17 19:24:02 /MEyp2B50
あんなもん画像に合わせて音とテキスト流してるだけだから
作ろうと思えばすぐに作れるだろうな。

19:名称未設定
09/01/17 20:32:16 b7hUTCNO0
CoreAnimationまわりのフレームワーク使ったらかなり楽に作れる気はする。

紙芝居的なシロモノだが。

20:名称未設定
09/01/17 21:04:09 j2Iu8BFS0
>>19
Flashでええやん、紙芝居ならw
もうすっかり忘れちまったよObjC

21:名称未設定
09/01/17 21:46:34 8QKDDPhx0
>>20
よく考えたら、Windowsのエロゲ程度ならFlashで
作れそうだよな。

22:名称未設定
09/01/17 21:49:12 fqNr3t6F0
Cocoaで書けばAppstoreで金儲け

23:名称未設定
09/01/18 03:27:46 qnipeswc0
日本のエロゲー文化が世界に進出する瞬間だな。

24:名称未設定
09/01/18 04:06:37 0BtTldEf0
>>22,23
エロが入るかどうかは知らんが
MOONSTONEがiPod touch/iPhone版Giftを開発中らしい。
が、去年の最初の発表以降情報がないようで(´・ω・`)

25:名称未設定
09/01/18 04:27:33 9Du8SxzA0
あなたの時は止まったままですか?

とっくに出てるみたいだけど>Gift

26:名称未設定
09/01/18 04:43:16 qnipeswc0
URLリンク(www.moon-stone.jp)
  2009.01.13 Gift iPhone/iPod touch版発売!!

27:名称未設定
09/01/18 07:56:36 0BtTldEf0
>>25,26
なんと!
MOONSTONEは積極的だな。
そのうち冗談抜きでMac版が来そうだw

でもその前にGiftの製品ページ更新しようよ(´・ω・`)

28:名称未設定
09/01/18 10:45:01 tC3ieAbi0
iPhoneアプリをマックアプリに移植なんて簡単でしょ

29:名称未設定
09/01/18 11:20:11 b8XPQbTx0
なら、Macに移植する仕事すれば儲かるんじゃね?

30:名称未設定
09/01/18 11:23:24 tC3ieAbi0
アップルがMacAppStoreを始めればいいのに

31:名称未設定
09/01/18 11:29:39 630p3L3w0
携帯以外のプラットフォームで
ぽっと出の会社が出しても赤字にならないソフトって
そもそもあるか?

32:名称未設定
09/01/18 11:31:46 BqFofErM0
MoonStoneなんて、25年待ったって出やしねぇよ!

33:名称未設定
09/01/18 12:40:30 x/r4yEXa0
なぜ25年なのか気になる

34:名称未設定
09/01/18 13:35:55 pcVVaY0/0
石の上にも25年

35:名称未設定
09/01/18 15:07:01 lpSD9VBZ0
XcodeでVisual Studioみたいに例外が投げられた時点で自動的にブレークするにはどうしたらいいですか?

36:名称未設定
09/01/18 15:25:57 lfTHOEWB0
スルー&キャッチ

37:名称未設定
09/01/18 15:39:47 lpSD9VBZ0
スルーじゃなくてスローですよね。
でもそれだと、どこから飛んできたかが分からないのですが。

38:名称未設定
09/01/18 15:40:51 qnipeswc0
スローで投げるオブジェクトで区別したら良いじゃん。


39:名称未設定
09/01/18 15:57:46 lpSD9VBZ0
それって大きなプログラムのどこで飛ばしているか、誰が飛ばしているか(自分が発行していない場合もあり得る)
が、分からない状態だと手当たり次第にprintfを挟むのと大して違いがないと思うのですが。

質問の答えとしては「自動的にはブレークできない」ということなんですかね。

40:名称未設定
09/01/18 16:03:34 qnipeswc0
スローしたら自動的にキャッチに飛ぶわけだから・・・
キャッチがループ外にあれば、自動的にブレイクするでしょ。


まぁキャッチそのものの定義がループ内にあったらブレイクしないけどね。
明示的にブレイクする必要はある。

41:名称未設定
09/01/18 16:10:41 qnipeswc0
40だけど、自分で言っててなんだけど、
キャッチをループ内に定義するなんてありえないよね・・・・?やるの?

それにどこから飛んできたか分からないっていうなら
dictionaryを放り投げれば良いじゃん。
キーでどこから投げたのかとかいろいろ情報を区別できるんだから。


42:名称未設定
09/01/18 16:17:18 lpSD9VBZ0
んーと、イベントとか読み書きとか不確定要素が多くて
どこで起きてるか、何が飛んでくるか分からない場合に
少ない手順で発生源を知る方法はないという事ですよね?

極端な話、存在しうる全ての例外を知っていたところで
main()
{
try{
func();
}catch(e_a & e){
}catch(e_b & e){
}catch(e_c & e){
...
...
...
}
}
って全部羅列してられないですし、補足できてもbad_allocみたいな一般的なものだったら
どこで起きてるか全く分からないですし、
例外が起きる行を絞り込んでいって、その行にブレークポイントを置かないと
例外が起きている状態のコールスタックと変数は分からないわけで。

43:名称未設定
09/01/18 16:20:18 lpSD9VBZ0
連投すみません。
dictionaryをどこに設置するかをどうやって決めるのですか?

44:名称未設定
09/01/18 16:30:57 qnipeswc0

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

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




45:名称未設定
09/01/18 16:32:15 qnipeswc0
>>42
44でuserInfoにdictionaryを設置する。

46:名称未設定
09/01/18 16:34:41 qnipeswc0

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

43は具体的にどういうこと?

47:名称未設定
09/01/18 16:45:28 lpSD9VBZ0
dictionaryの設置箇所が分かっているなら既に当たりを付けた後じゃないかなと。
無論、最初から全ての箇所でdictionaryを投げるように書いておけばいいんでしょうけど。

あと、C++を使う事の方が多いので42ではbad_allocと書きましたが
NSExceptionにしたってシステムが出す例外は場所の特定がしづらいですよね。

48:名称未設定
09/01/18 16:50:14 qnipeswc0


システム自体が出す例外ってかなり特殊ですよね・・・・。
僕もこいつらがどんな例外情報を送ってれるのかしらないけど、
nameとかresonとかだけでは特定できないのかな?

49:名称未設定
09/01/18 16:53:13 xDMM8zcg0
流れがよく分からんが、-[NSException raise]にブレークポイントを設定するんじゃ駄目なの?

50:名称未設定
09/01/18 16:54:18 lpSD9VBZ0
!!

51:名称未設定
09/01/18 16:58:06 qnipeswc0
>>49
そんなクラスメソッドなんてあったけ?

raiseって例外を明示的に発生させるインスタンスメソッドだよね。
+ raise:format:
+ raise:format:arguments:
どちらかと勘違いされているのですか?

52:名称未設定
09/01/18 17:01:46 xDMM8zcg0
>>51
…シンボリックブレークポイント使ったことないのかな?
(特定のクラスの)特定のメソッドが呼ばれたときにブレークするには、シンボリックブレークポイントの追加でこういう風に入力するの。
インスタンスメソッドなら-、クラスメソッドなら+。

53:名称未設定
09/01/18 17:02:08 lpSD9VBZ0
今更過ぎですが>>49を呼んで試してみたらNSExceptionはobjc_exception_throwを呼んでいて、
こいつは__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__を呼んでいて、
その中でint3(ブレーク)してますね。

つ、ついでにC++で自動的にブレークする方法も分かったりしないでしょうか?
スレ違いかな。

54:名称未設定
09/01/18 17:06:52 lpSD9VBZ0
メニューの[実行]->[ブレークポイントを管理]->[C++ 例外のブレークポイントを追加]ダイアログで
[すべての例外]というチェックボックスがありました。

大変お騒がせし、スレを汚してしまい申し訳ありませんでした。
でもこの一連の流れのおかげでNSExceptionとXcodeの理解が深まりました。

55:名称未設定
09/01/18 17:12:01 qnipeswc0
>>52
へぇー、今度試してみます。
cocoa referenceで
breakはインスタンスメソッドで例外にジャンプするってあったから
なんでクラスに対してメッセージを送信するんだろうって思いました。

それならクラスメソッドの以下のメソッドじゃないのかって・・・・。


56:名称未設定
09/01/18 17:14:07 qnipeswc0
55、breakじゃなくてraiseですね。

これクラスにいっぺん送ってみます・・・・。
質問主さんは解決されたみたいだけど、僕は?????状態っす。

57:名称未設定
09/01/18 17:32:11 xDMM8zcg0
>>55,56
あ、いやこれメソッドの実行じゃないのよ。
特定の関数とか特定のメソッドを呼び出したところでブレークするために、
自分で書いたソースコードの行とかじゃなくて、関数名やメソッド名そのものをブレークポイントとして使うの。
「実行」>「ブレークポイントを管理」>「シンボリックブレークポイントを追加」して、ダイアログに入れる内容が>>49

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

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

58:名称未設定
09/01/18 17:49:23 qnipeswc0
>>57さん、ありがとう。
そうなのか。
結構ブレイクポイント使用するけど、そこまで考えたこと無いわ。

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

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

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

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

そうですよね?

59:名称未設定
09/01/18 18:03:01 lpSD9VBZ0
いえ、多分最初の理解で合ってるんじゃないかと思います。

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

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

C++は>>54をONにする事で勝手に止まるように出来ました。

60:名称未設定
09/01/18 18:05:06 lpSD9VBZ0
>>58が発生源が分からないエラーの発生場所を特定するという理解
をしていただいたのであれば、その通りです。

61:名称未設定
09/01/18 18:13:17 ZuNSxY880
なんだこのグダグダな流れ...

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

そういう自分も Leopard 上のマニュアル(リリースノート)を読んだ方がいいな。
Leopard を使ってないなら仕方ないかもしれんが。

62:名称未設定
09/01/18 18:46:39 xDMM8zcg0
>>61
-[NSException raise]だと@throwで投げた例外はキャッチされないからobjc_exception_throw使えってことか。
サンクス。

63:名称未設定
09/01/18 20:30:54 kMPqyzsk0
久しぶりにCocoaを触ってCoreDataとか新しく追加されたAppkitとか触ったら
昔何日も徹夜して作ったようなものがコード一行もなしに動いて
秋葉原で涙する元KGBスパイみたいな気分になった。

64:名称未設定
09/01/19 01:07:41 QeooMR930
Key pathとかkey-value observing面白そうだけど何しているのかいまいちしっくりこない。
これあえて自分で使う事ってあるのかな?

65:名称未設定
09/01/19 01:22:16 WxEnXMt70
同じようなことを実現するだけなら自前でももっと簡単なやり方があるだろうけど
大枠をbindingで作ってる場合、細かくいじる必要がある自作クラスを
key-value-coding準拠で作っておけば、全体のbindingの連携に組み込めるという話


66:名称未設定
09/01/19 01:36:07 QeooMR930
なんとなく分かったような気がします。でも自分の書いているどんな処理をあえてそれに
当てはめた方がよいかと考えるとあまり思いつきませんけど。理解しなければCocoa
プログラミングできないというものでもなさそうなのでしばらくはスルーしておいても
良さそうですね。

67:名称未設定
09/01/19 01:41:12 9T/jZU8v0
bindingで一番効果が発揮するのはtableViewかな。
ぶっちゃけIBだけでコーディングできるし。
これを知ったとき、あのデータソースをつかって、
どうやって目的のセルに値を表示させることが出来るのか格闘していた自分が
惨めにおもえた。

このときの経験は、後々すごく役にたったけど。

68:名称未設定
09/01/19 01:53:58 k1KJxZ8q0
便利だけど確かBinding、ていうかNSArrayControllerがスレッドセーフじゃないから困ったこともあるなぁ
あと、いろいろ自動でやってくれる新しいAPIって便利だけど重いんだよなぁ

69:名称未設定
09/01/19 03:24:53 9T/jZU8v0
たしかに、間に余分な物をはさむ分遅くなるしね。

70:名称未設定
09/01/19 14:52:03 j0GQl9c30
ところでみんなNSArrayとSTL、どういう使い分けしてる?
STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。

71:名称未設定
09/01/19 15:05:47 TXDBp2F00
>>70
STLってなに?

72:名称未設定
09/01/19 15:19:02 0IPPfgoR0
>>71
リーゼントのorz

73:名称未設定
09/01/19 15:20:17 fO6WFzd+0
S: すばらしきかな
T: テンプレート
L: ライブラリーよ!


74:名称未設定
09/01/19 15:33:20 FKWl3JcY0
>>70
>STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。
NSArray をサブクラス、とか言っている時点で Objective-C の素人さんですね。
URLリンク(developer.apple.com)
の Class Cluster の説明を読みましょう。
NSArray は配列の性質によって alloc init の結果が違うクラスになるのを
隠蔽しているので、知らずにサブクラスをするとおかしくなります。
だから機能を追加したいときはカテゴリを使います。
URLリンク(journal.mycom.co.jp)
URLリンク(jay.tuley.name)
URLリンク(borkware.com)
あたり参照。

Cocoa の Foundation のコレクションクラス一般の C++ 等との違いは
URLリンク(ridiculousfish.com)
が詳しい。STL と NSArray の比較もあるよ。

75:名称未設定
09/01/19 15:46:31 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あるからね・・
みんなどう工夫してるのか知りたかったのさ。


76:名称未設定
09/01/19 15:51:26 TXDBp2F00
>>75
NSArrayはid型のものを入れるのにしか使わないから、どうしてもそういう構造体とか基本型入れるんなら
NSValue使って入れてる。この場合NSArrayのサブクラスは必要ないよね。

NSArrayを使わないんならCの配列やそのSTLとかいうので間に合うでしょ。
どっちの場合もNSArrayのサブクラスは必要ないと思うんだけど。

77:名称未設定
09/01/19 15:52:44 FKWl3JcY0
それは失礼。こちらは日曜プログラマなので
C / C++ のオブジェクトなら STL,
Obj-C のオブジェクトなら NSArray で済ませてました。
そういう純粋 struct を NSArray (もしくはそのサブクラス)
にいれる利点はほとんどないんでは?

逆に id を STL にいれると retain カウントがおかしくなるのでどうしようと
おもっていて、これを機にしらべてみたら
URLリンク(lists.apple.com)
なんてのがありました。賢い。

78:名称未設定
09/01/19 16:16:11 j0GQl9c30
>>76-77
>NSArrayのサブクラスは必要ないと思うんだけど
もちろん大抵はそうだよね。
ただtraverseでパフォーマンスを得なければならない場合が極稀にあるもので・・
そういう場合はid型じゃ困るんよ。
id型で済むのであればNSValueなりNSNumber、あるいはNSObjectから派生させたものを突っ込めばいいし、機能はカテゴリで増やせばいいってことなんだけどさ。

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

ま・・問題点とかというよりも普段みんなどんな使い分けをしてるか参考にしてみたい。

79:名称未設定
09/01/19 16:21:50 TXDBp2F00
>>78
集合は普通NSArrayじゃなくてNSSetを使うよね?
パフォーマンスを得たい場合には直接配列をいじればいい。使い分けつってもそれくらいしか思いつかないな。

80:名称未設定
09/01/19 16:25:01 j0GQl9c30
>>79
NSSetがあるとは知らなかった
あとでちょっと使ってみる。

ただ集合扱うのにNSArrayをset的に~って話ではないんだよ、もちろん。

81:名称未設定
09/01/19 16:37:32 Vvone4rF0
おれもどうしてもパフォーマンスが欲しけりゃCで書くよ。 たとえば>>75にあるようなのはCで書くし、Cocoaでもシビアなところはそうしてる。 たとえばNSFontのgetBoundingRects:forGlyphs:count:は構造体配列を渡すようになってるでしょ。

82:名称未設定
09/01/19 16:53:09 0UmyVXJW0
NSCodingプロトコルのencodeWithCoderっていつ呼び出されるんですか?


83:名称未設定
09/01/19 16:57:56 0IPPfgoR0
>>82
NSCoderが何をする物かを理解すれば分かると思うよ。

84:名称未設定
09/01/19 17:09:27 0UmyVXJW0
>>83
その回答でわかりました。


85:名称未設定
09/01/19 17:16:39 suWeNgYM0
NSNotification と KVO についての質問です。単純にある値を監視したい
とき、どっちの方が軽い処理なんでしょう?例えば単純に、Hoge の
インスタンス変数 BOOL foo を監視するような場合です。
Notification 使う場合は NSNotification を作ったり、通知対象を探すのに
時間かかりそうかなぁ?と思っているので、KVOの方が軽そうな印象を
持っているのですが。詳しい方、お教えください。

86:名称未設定
09/01/19 17:47:25 iFBtkqAI0
setterをトラップするだけだから、observingに一票。

87:名称未設定
09/01/19 19:15:14 suWeNgYM0
>>86
あ、やっぱりそう思われます?こんな場面でパフォーマンス稼ごうという気に
なっている訳ではないのですが…何か気になって(笑
どうもありがとうございました。

88:名称未設定
09/01/19 23:51:03 4VVsl/ct0
NSMutableDictionaryのsetValueとsetObjectってどう違うのでしょうか?
自作のPGではsetValueとvalueForKey、setObjectとobjectForKeyのペアで
どちらを使用してもうまく動くのですが。


89:名称未設定
09/01/19 23:57:13 OBOP0rKe0
>>88
両方同じとリファレンスに書いてある。
以前は、setObjectとobjectForKeyしかなかったが、10.3でKVCのサポートが強化されたときにsetValueとvalueForKeyが追加された。

90:名称未設定
09/01/20 00:13:33 1geMWJWK0
>>88
>どちらを使用してもうまく動く

100%同じ挙動と思うと落とし穴あるぞ。NS(Mutable)Dictinaryのドキュメントよく読んだ方がいい度

91:名称未設定
09/01/20 01:07:44 Qn/CmdU10
>>89
>両方同じ

[hoge setObject:nil forKey:@"uge"];→例外発生
[hoge setValue:nil forKey:@"uge"];→[hoge removeObjectForKey:@"uge"];

92:名称未設定
09/01/20 09:54:55 J4NUz8bNi
setNilValueForKey:
setValueForUndefinedKey:

とかもみるといいも。


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



94:名称未設定
09/01/21 10:27:15 6tJD085I0
>>93
>nilが入る可能性がある場合はとりあえずsetValueの方が良いのですね。
違います。それだと値として nil を設定したい場合に setValue では、エントリが
削除されてしまうので、できないでしょ。ドキュメントではこの場合には
NSNullを使え、とあります。その辺りもちゃんと理解した方が良いかと。
nil が入る可能性うんぬん、ではなくエントリを削除したい場合に、
removeObjectForKey: のつもりで setValue:nil forKey:key を使うのです。
とりあえず NSMutableDictionry を理解し、そのKVCを理解するまでは、
setObject:forKey:を使う事をお勧めします。

95:名称未設定
09/01/21 12:33:25 52b1vsc70
なるほど、それではsetObjectを使うことにします。

96:名称未設定
09/01/21 16:00:24 GWqklfd70
receiver となる instance の変数名を文字列で得てNSLogに表示したいのですが、
ivar_getName というのを使うのでしょうか? どうやるのでしょうか?

97:名称未設定
09/01/21 22:50:26 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文字列形式の変数名を取得する。
といったところかな。

98:名称未設定
09/01/21 23:06:24 Aw/6XBfV0
>>88
>>93

でもいい質問だよ。
時間あったらKeyValueCodingについても調べてみてね。いずれsetValue:forKey:、valueForKey:をがんがん使うことになると思うよ

99:名称未設定
09/01/22 19:14:22 ZpfLBz0W0
reference見れば,同じことがマンマ書かれているぞ。


100:名称未設定
09/01/22 19:24:05 7zOJ1PPW0
>>99
書いてあってもどうせ見る気ないんだろうから
レスしてやるだけ無駄だと思うぞ。

リファレンスに書いてあるような事をわざわざ質問してくるような馬鹿は
放置でいいと思うんだが、みんな優しいなぁと。

101:名称未設定
09/01/22 21:09:13 Eb57WDtu0
おまえもおれもな

102:名称未設定
09/01/23 00:06:20 Ai0xcuBl0
じゃあおれも

103:名称未設定
09/01/23 00:08:10 GtS9tfT90
いやいや。俺も入れてくれよ。

104:名称未設定
09/01/23 01:30:11 PZGWGn2f0
みんな最初は馬鹿だった

105:名称未設定
09/01/23 02:56:43 DgTEvzZj0
最初は人に聞く前に調べるもんだ

106:名称未設定
09/01/23 09:06:11 Ngn6b8eA0
>1
今気付いたけど、次が抜けてるな。
>初心者は教えてくれる方への感謝を忘れずに。
>上級者も初心者だった頃の気持ちを忘れずに。

107:名称未設定
09/01/23 09:51:17 ZxnL70JI0
>>97 さん ありがとうございます。
[receiver receiverName] とやると'receiver'が得られる様な簡単な方法あると便利なんですが。

108:名称未設定
09/01/23 10:35:33 xhdOSqSx0
>>105
最近は自分で調べるのがマンドクセー時代なんだよきっと

109:名称未設定
09/01/23 10:54:18 My/P55Nt0
同時に人を育てようとしない時代とも言える。
>>106の気持ちが大切。

110:名称未設定
09/01/23 14:13:39 VXuYipkz0
>>107
それって、receiverのクラス名が欲しいってこと?
NSStringFromClass([receiver class]);

111:名称未設定
09/01/23 16:08:21 +ZnAyY+C0
>>110
>>107はローカル変数名が欲しいんじゃないかという悪寒がする。
デバッガ使えってことじゃね?


112:名称未設定
09/01/23 16:16:43 pSjXfnZJ0
何のためにどのように使うのかワカンネから誰も的確な答えは出来ないでしょ

自分のインスタンス変数とかなら
#define HOGE_NAME(v) ##v
printf("%s --> %d\n", HOGE_NAME(foo) , foo);
でもいいし。

113:名称未設定
09/01/23 18:13:42 ZxnL70JI0
>>107 です。すみません。ローカルなインスタンス変数をデバッグの一環として
リストアップしてモニタしたいという時に、その変数の値と同時に、その名前も表示
できたら便利だと思ったのです。>>111 >>112 さんのおっしゃる意図です。>>112
の方法を知りませんでした。試してみます。必要なヘッダファイル等あるのでしょうか?

114:名称未設定
09/01/23 18:19:34 eHn0Trda0
普通にデバッガで見られるじゃん。

115:名称未設定
09/01/23 18:24:53 ZxnL70JI0
どうやるのでしょうか?参考になるキーワードは何でひくと良いでしょう。
初歩的な問題なんですね。すみません。

116:名称未設定
09/01/23 18:30:55 eHn0Trda0
>>115
まさかXcodeで「デバッガ」を使ったことがないというのか?
デバッガだぞ。デパ地下じゃなくてデバッガ。

117:名称未設定
09/01/23 19:41:41 AZUY41n6O
Cプリプロセッサの#だな。
char* rn=#変数名;

まあ、デバッガの使い方覚えたほうが百倍有益だが。

118:105
09/01/23 22:19:09 DgTEvzZj0
>>106
私も初心者です

119:名称未設定
09/01/23 22:26:30 0/Pk3m510
僕は小心者です

120:名称未設定
09/01/23 22:28:40 8Os1ry6Y0
僕は小遊三です。

121:名称未設定
09/01/23 23:57:37 Ai0xcuBl0
僕は小鳥遊です

122:名称未設定
09/01/24 01:10:50 vLaJQL7q0
僕は小円遊です

123:名称未設定
09/01/24 01:11:50 ubqtwZr30
僕は円形ハゲです

124:名称未設定
09/01/24 01:17:48 C7l3u5Cn0
僕はハゲです URLリンク(www.computerworld.jp)

125:名称未設定
09/01/24 03:35:40 4NMkVpLa0
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

126:名称未設定
09/01/24 06:01:13 de117D7I0
25にして前髪が気になりだした・・・・・
もう禿げを笑えない。

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

プログラマーって若禿の割合ってどれくらいなのかな?
皆さんの周りは大丈夫っすか?

127:名称未設定
09/01/24 12:52:51 kU43svfh0
QTKitについて初学者なのですが,質問です。
勉強のため,コマンドラインから音楽ファイルを再生したいのですが,うまくいきません。
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)
参考にこのようなものを書きました。

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

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

でgcc -o study -g study.m -framework QTKit -framework Foundationのコンパイルは問題ありませんが,
./studyとしてもエラーを出して再生されません。
*** _NSAutoreleaseNoPool(): Object 0x11b500 of class __NSCFDate autoreleased with no pool in place - just leaking
Stack: (0x95bf665c 0x95b23810 0x95b67524 0x92d4e120 0x92d4e008 0x91ccaab4 0x91cc9010 0x91cdb0c8)
が10ぐらいでます。
*** -[QTMovie movieWithFile:error:]: unrecognized selector sent to instance 0x11cd60というのもあります。
よろしくおねがいします。
環境は10.5.6です

128:名称未設定
09/01/24 12:55:27 T3GSIXO90
[ movie release]を外せ

129:名称未設定
09/01/24 13:19:01 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

コンパイルも何にもしてません。ランループ回してないからちゃんと動くかは不明。

130:名称未設定
09/01/24 13:22:41 UuMn6FBr0
>127 のおかしな点

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

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

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



131:名称未設定
09/01/24 13:25:49 UuMn6FBr0
あれ?
ごめん。
sleepForTimeInterval: はクラスメソッドだったわw
人の事言えねえwww

132:127
09/01/24 14:28:28 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];
と書き換えてみたところエラーがでなくなりました。
とはいえ再生が完全でない(初めの数秒しか再生されない)ので,
もう少し調べてから,お知恵を拝借したいと存じます。

133:名称未設定
09/01/24 14:32:23 KAvNfK720
Movieの読み込みは非同期です。
再生前に、Movieがきちんと読み込み終わるまで待つ必要があります。


134:名称未設定
09/01/24 14:35:14 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) でいいのでは。

135:名称未設定
09/01/24 15:40:51 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の勉強だったか、、吊ってくる

136:名称未設定
09/01/24 15:42:58 ocqxJVJ40
QTKitってrunLoop回さなくていいの?

137:名称未設定
09/01/24 16:27:03 6oIPn9ie0
NSMedataItemからファイルパスを取り出すのってどうやればいいの?
attributesの中にそれっぽいのがないんだけど

138:名称未設定
09/01/24 16:34:43 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。くそ、コマンドラインってとこでハマったわ。

139:名称未設定
09/01/24 16:42:38 iC4toJH20
>>137
ファイルのメタデータにファイルパスは入ってない

140:名称未設定
09/01/24 16:50:53 6oIPn9ie0
>>139
どうもです。
じゃあNSMetadataQueryを使って検索した結果からファイルパスは得られないのかな?

141:名称未設定
09/01/24 16:54:24 iC4toJH20
あれ、kMDItemPathってのがあるかも
それかQueryの方から得られると思う
昔作ったサンプルプロジェクトが見当たらなくて明確な回答ができません

142:名称未設定
09/01/24 17:04:07 iC4toJH20
このへん読んで
URLリンク(developer.apple.com)

143:名称未設定
09/01/24 17:57:51 6oIPn9ie0
>>141-142
どうもありがとうございます。kMDItemPathで得ることができました。
-attributesで得られるキーの配列のなかにkMDItemPathは入ってなかったので・・・

144:名称未設定
09/01/24 19:10:48 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にアクションが定義されています。

145:名称未設定
09/01/24 19:27:59 iC4toJH20
とりあえずResponderChainとFirstResponderと調べてみ

146:名称未設定
09/01/24 20:29:45 P3BnVaEO0
C の実数配列を4次元ベクトルと見立て、インスタンス変数として持ち、簡単なベクトル演算をメソッドに定義した
クラス V をNSObject を継承して作り、別途、ベクトル計算をするクラスを作ってクラス V インスタンス生成し利用
した後、このベクトルのインスタンス解放をする段でクラス V の dealloc が呼ばれると思います。
この クラス V での dealloc の実装は [super dealloc]; のみで良いのでしょうか?

147:名称未設定
09/01/24 20:55:48 /5n08FiC0
>>146
前レスでも話題になったけど、
基本的にはVクラスでallocして作成したインスタンスは
deallocで明示的にreleaseしておく。



148:名称未設定
09/01/24 21:04:57 /5n08FiC0
>>147は正確ではないな。

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

なぜならVクラスが解放されても、参照されている他のクラス自身は分からないからね。
必要がなくなったにもかかわらず、ずっと保持されてしまうことになる。
そうすることでリークを起こす可能性もあるわけだし・・・・・今はそんなことは無いかな?


149:名称未設定
09/01/24 21:15:13 P3BnVaEO0
V クラスでは、基本演算(四則演算等)メソッドのみなので、計算結果をVクラスインスタンで使うのは、
メソッドの引数と返り値のみです。実際の演算は、別途のクラス(Wとします)で、Vクラスのインスタンス
をallocで生成して行います。この場合、Wクラスで生成したVのインスタンスはreleaseするのは分かるん
ですが、そのとき呼ばれる V の dealloc は、演算メソッドで引数に使った自分自身のインスタンス変数や
メソッド返り値のみです。これらも [aVector release]; [rVector release]; みたいにして V の dealloc 中
に記述するのでしょうか? という意味です。

150:名称未設定
09/01/24 21:26:06 /5n08FiC0
>そのとき呼ばれる V の dealloc は、
>>演算メソッドで引数に使った自分自身のインスタンス変数やメソッド返り値のみです。

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

まぁ前スレでは基本的にはallocもしくはretainされたインスタンス変数はそこでreleaseして
参照カウンタを1減らしておくとかいう結論だったはず。


151:名称未設定
09/01/24 21:40:51 YxulMnGO0
>>146
クラスVはインスタンス変数に他のオブジェクトを持っていないんだから、dealloc時にreleaseするものがそもそもない。
可変長配列をmallocなんかで作ってるんならfreeとかを入れるだろうけどね。

152:名称未設定
09/01/24 23:08:25 P3BnVaEO0
皆さんありがとうございます。
クラスVは、インスタンス変数として、Cの実数変数だけしか持っておらず、他のクラスのオブジェクトは
無いし、メソッド実装に使われている引数、変数、返り値もやはりクラスV 以外のモノも無いので、dealloc
をオーバーライドする必要がないから、dealloc の記述は不要、という理解で良いのですね。

あと、ベクトルを表現するクラスVのような場合、メソッドの返り値はインスタンスのコピーを返す(渡す)
というのが適切という事でよいのでしょうか?

153:名称未設定
09/01/24 23:16:13 /5n08FiC0
C言語では配列を返す関数はないからね。
オブジェクティブ指向から考えても、それでいいと思う。

154:名称未設定
09/01/24 23:28:51 YxulMnGO0
ていうか4次元ベクトル固定なら構造体使えばいいじゃん。
俺は詳しくないけど、物理シミュレーションかなんかに使うならそういうベクトル演算のライブラリあるよね。

155:名称未設定
09/01/24 23:44:57 d+Teu/bB0
ソース無いとなんのこっちゃなのかよくわからん

156:名称未設定
09/01/25 01:31:52 bQWMzZr30
>あと、ベクトルを表現するクラスVのような場合、メソッドの返り値はインスタンスのコピーを返す(渡す)
>というのが適切という事でよいのでしょうか?

ここいらがよく理解できてません。一応動くソースではあるのですが、心得がないせいで時折全く不明な
停止状態になります。もう少し勉強して出直します。ありがとうございました。少し頭が整理されました。

157:名称未設定
09/01/25 10:35:40 ivZ6d7js0
Cocoaのクラスというかフレムーワークにはシェルのgetoptやrubyのoptparseみたいな
コマンドライン(オプション)パーサってありますか?
それともwhileつかって、従来通りがしがし書いていくしか無いのですか?

158:名称未設定
09/01/25 10:46:06 dVCCmgN10
getopt使えば良いじゃん

159:名称未設定
09/01/25 11:39:42 zAeErYVm0
>>157
NSArgumentDomain
が役に立つかな?


160:名称未設定
09/01/25 14:43:56 sL22S9gg0
>>147
その辺いまだに分からないんでリーク上等、autoreleaseに全部おまかせで作ってる。

newを発行したら+alloc , -initと呼ばれるよね。
alloc以外で領域確保する手段ってNSObject見ても書いてないし
それぞれのクラスがインスタンス生成用に作ってる+stringWithFormatとか
内部ではどうしてんだろね。
結局必ずalloc , initと通るなら同じ事なんだけどさ。

161:名称未設定
09/01/25 15:30:29 IseXWGDP0
>>160
+stringWithFormatとかの中身

+ (id)hoge
{
id result = [[Hoge alloc] init];
return [result autorelease];
}

162:157
09/01/25 16:29:22 ivZ6d7js0
>>158
Cのgetopt_longを使ったコードに#import <Cocoa/Cocoa.h>
を書き足すだけで,コンパイル時にエラーになってしまうので,
なにかCocoa用のものがあるのかと思っていたのです。
structがいけないのか

163:名称未設定
09/01/25 17:31:42 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;
}



164:162
09/01/25 18:03:31 ivZ6d7js0
>>163
サンクス
ロングオプション(--)とオプション以外の引数は別処理なんですね

165:名称未設定
09/01/25 19:15:10 KBsZcb+r0
スレを見始めた頃はチンプンカンプンだったのに
いつの間にか質問も回答も理解できるようになってて、ちょっと感激
日々の積み重ねって大事よね

166:名称未設定
09/01/25 23:28:02 D0B6AaXh0
>>162
>Cのgetopt_longを使ったコードに#import <Cocoa/Cocoa.h>
>を書き足すだけで,コンパイル時にエラーになってしまうので,
うちでは Obj-C で getopt_long つかえるけど?
興味が有るのでどんなエラーがでるのか、
Cでは通るけど Obj-C ではとおらない最小限のソースを教えてください

167:名称未設定
09/01/26 07:36:50 gWcJYF5K0
>>165
質問に回答して返事がなかったら萎えるよね
もう答えるの無駄だしやめよ、と何度思ったか

168:名称未設定
09/01/26 09:50:58 QROzM0KB0
まぁ自分の勉強だと思えば・・・・。
他人に解説する際に気づくこともあるし。



169:名称未設定
09/01/26 11:26:26 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
でコンパイル

170:名称未設定
09/01/26 11:32:13 VOr2YZM+0
168が良い事を言った

171:名称未設定
09/01/26 11:52:17 Wx1bIrtR0
>>169
それは #import のあとに、空白(0x20) だけでなくて
なぜか Unicode の no-break space (0xc2 0xa0) が入ってるからだと思う。
(テキストファイルをバイナリエディタで開いてみたら
何か変なことがわかるとおもいます。)
も一度 #import の行を消して書きなおしてみたらコンパイル通ると思うよ。
すくなくともうちの 10.5.6 の gcc では通った。


172:名称未設定
09/01/26 11:52:53 9akAS9r80
>>169
mv test.c test.m

173:名称未設定
09/01/26 21:54:16 QROzM0KB0
>>807
スレリンク(mac板)
こっちで再度質問して。

174:名称未設定
09/01/26 21:55:18 QROzM0KB0
173はゴバクっす。ごめんね。(≧ε≦)

175:名称未設定
09/01/27 11:26:15 9hNC4mxk0
ごめん ちょっと教えて
WindowsからSocketプログラム移植する時って
Cocoaで書き直した方が良い?
BDSソケットでもOK?

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

ちなみに元のPGは 独自プロトコルのTCPでスレッドで受信しているタイプです

176:名称未設定
09/01/27 11:34:15 4HjLNx/70
>>175
OS X の BSD socket は移植性のためのインターフェースじゃなくて
カーネルがはじめに実際に実装してるインターフェースです。
というか OS X は mach + BSD のハイブリッドなので。
というわけで心配せず BSD socket をそのまま使ってください。

Cocoa/CoreFoundation の socket インターフェースも
結局は BSD socket のうえに実装されてます。

177:名称未設定
09/01/27 12:05:14 9hNC4mxk0
ありがとうございます
カーネルがmach なので期待はしていましたが
何ぶんWindows生活が長くて



178:名称未設定
09/01/27 12:42:24 yG2s1pTo0
>> 173
誘導どうもです。

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

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

環境は、MacOS X 10.4.11 & Xcode 2.0 です。

179:名称未設定
09/01/27 12:48:31 yISpEkrc0
"Only Roman Characters"が怪しい

180:名称未設定
09/01/27 12:50:09 wonKckub0
>>178
mouseDownとか適当なイベント拾ってAppleScriptで半角切り替えかな。
でも強制切り替えはどうだろね。
運用でカバーした方がいい問題のような希ガス

181:名称未設定
09/01/27 12:57:47 Qfd0k62B0
>>178
NSNumberFormatter 使えば済むのでは?
全角で入力されても内部で変換してしまえば良いし、他の文字が入ってたら
アラートも出せるし。って事ではないのかな???

182:名称未設定
09/01/27 13:02:13 SWJ660ES0
>>180 181
やはり強制切替は難しいですか;
ちょうどNSNumberFormatterを調べてたので、
全角→半角変換で対応してみます。
どうもありがとうございます。

183:名称未設定
09/01/27 14:08:33 L3yeV/fG0
>>182
検証してないけど、
URLリンク(lists.apple.com)
にText Input Sourceを使えばできるかもしれないってある

184:名称未設定
09/01/27 14:49:05 SWJ660ES0
>>183
やりたい事はその質問と同じく、IME入力モードの切り替えなんですが…
Cocoa APIにはIMEの切り替え手段がないような事が書かれてますね;

うちの環境は10.4.11なので、「Text Input Source Services」の方はダメっぽいですか…
英語が不得意なので、ちょっと敷居が高そうですけど、
「Keyboard Layout Services Functions」の方を調べてみます。
ありがとうございました。


185:名称未設定
09/01/27 15:41:46 RNAQzsjb0
素人が一言
キー入力せずにコピペで張る場合もあるぜ?
かな漢いじるよりNSNumberFormatter?で入力後の文字成型した方が現実には効果的だよ
まあかな漢制御したりキーボードイベント横取りしたりの方が
プログラマの征服感は満たされるけどね

186:名称未設定
09/01/27 15:57:33 L3yeV/fG0
ただ、自動で英数モードに切り替わるほうがUI設計として適切な場合もある(例えばNSSecureTextField)。
両方行うのが最適解。

187:名称未設定
09/01/27 16:01:41 hKpJgpLM0
半角モードに切り替わるテキストフィールド見た事あるけど
どうやってるかは知らん

188:名称未設定
09/01/27 16:21:16 SWJ660ES0
同じMac上で、FileMaker Proを使っているんですが、
そこのTextFieldの『フィールド選択時の動作』設定では
『IMEモードの切り替え:Romanモードに固定』というのがあるので、
てっきりAPIで提供されていると思っていたんですよね;

189:名称未設定
09/01/27 16:51:41 5ofWyrnr0
>>188
Carbon + Control Managerにはあったなぁ。
遠い昔(4,5年前か?)なのでなんと言うやつだったか、さっぱり思い出せないけど。

すまないがCocoaの同等の機能は知らんなぁ。
NSControlから ControlRefでも取り出せればできるんだろうがね。

190:名称未設定
09/01/27 17:06:41 9ySZEYTP0
script manager だったと思う。

191:名称未設定
09/01/27 18:37:09 yG2s1pTo0
>>189 >>190
Carbonにはあったんですか…

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

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

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

皆さんありがとうございました。

192:名称未設定
09/01/27 18:56:28 cZYADSu20
URLリンク(cocoawiki.aerial.st)半角英数TextField
これ参考にならんか?

193:名称未設定
09/01/27 18:59:59 sxkNeV8c0
>>191
数字を入れるtextに全角で入力する馬鹿のために

なんでここまで苦しまなくちゃいけないんだって感じだよな。


194:名称未設定
09/01/27 19:03:14 y317W0/+0
>>191

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

return [super becomeFirstResponder];
}

と、NSNumberFormatterで半角のみに...

195:名称未設定
09/01/27 19:05:27 y317W0/+0
ごめん、TextFieldのサブクラスだった...

196:名称未設定
09/01/27 19:07:26 L3yeV/fG0
そっかfield editorか・・・

197:名称未設定
09/01/27 19:18:23 yG2s1pTo0
>>192 >>194
おー!ありがとうございます!
なんかいけそうな感じですね。

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

>>193
自分もまさか全角数字を入力するやつはいないだろうと思ってたんですが、
「出来たから使ってね」って配布したその30分後、
「ちゃんと計算してくれないんだけど!」って言われましたw


198:名称未設定
09/01/27 19:21:22 5ofWyrnr0
気になって調べちゃったよ

10.5以降になってしまうが、
 -[NSTextFieldCell setAllowedInputSourceLocales:]
ってのがあるな。NSAllRomanInputSourcesLocaleIdentifierで secure fieldと同じくromanに保てるようだ。


199:名称未設定
09/01/27 19:40:16 5ofWyrnr0
ごめん、よく読んだら 10.4だったね。

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

このくらい用意して欲しいよな。。。

200:名称未設定
09/01/27 19:59:22 P+jy031y0
入力された文字列が数字以外ならエラーを返す関数なら
自作ので持ってるよ。

201:名称未設定
09/01/27 20:03:19 yG2s1pTo0
>>198
お手数かけます;
会社の環境では試せませんけど、今後の参考&勉強になります!
本当にありがとうございます!!

プログラマーとして入社した訳でないのに、
通常業務とは別の空き時間に、AccessVBAで事務処理プログラムを作らされてて
今回初めてMacのアプリを作ってみたんですけど、Cocoa楽しいっす!

202:名称未設定
09/01/27 20:08:23 yG2s1pTo0
>>200
勉強したいので、差し支えなければコードをお教え願えますか?
すみません;

203:名称未設定
09/01/27 20:59:16 MKYO8yw90
例えば、NSTextViewのサブクラスで

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

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

もし、「勝手に入力モードが切り替わるのがウザイ」とか言われたときは、こういう手もあります。

204:名称未設定
09/01/27 21:16:07 MKYO8yw90
>> 200
もしかして、こんな感じ?
BOOL isInt(NSString* text)
{
return [[NSScanner scannerWithString:text] scanInt:NULL];
}


205:名称未設定
09/01/27 23:32:36 BQbhAN2S0
>>202
VBAを使ったExcelのアプリは泥縄式で貧弱のだったらなんとか作れるんですが、
Macのアプリも同じような感じで作れますかね?

206:名称未設定
09/01/28 01:59:06 6dpH/5D9i
>179のでオケーじゃないの?
IBでTextFieldの設定のAllows only roman charactersにチェックするだけじゃ?
加えてNumberFormatterでアルファベットをはじけば望む動作だと思うけど。

207:名称未設定
09/01/28 02:00:38 6dpH/5D9i
あ、>206は>>178へのレスです。

208:名称未設定
09/01/28 03:12:35 QC5LijlX0
こういうのはなんでもOgreKitに任せてしまうな。めんどくさいから。

209:名称未設定
09/01/28 09:34:22 OjUJEHAK0
>>206-207
>>178
>環境は、MacOS X 10.4.11 & Xcode 2.0


210:名称未設定
09/01/28 12:25:06 1DgzpuuK0
NumberFormatterでいいと思うけどなー

すいません、質問なのですが
環境は10.5 Xcode3.1です
シグナルのキャッチってどう書くのが良いのでしょうか?
具体的にはSIGABRTをキャッチしてエラーメッセージを表示したいです。
その際、可能ならアプリが終了しない様にしたいと思っております。
よろしくお願い致します。

211:名称未設定
09/01/28 13:52:13 ZgWOL2AA0
URLリンク(developer.apple.com)
が参考になると思います。
signal ハンドラ内では Cocoa みたいな大げさなものは呼べないので、
なんとかして signal を Cocoa のレベルまで持ってこないといけないですが、
その部分は上のサンプルコードからそのまま取ってこれるでしょう。

ていうかなんで Cocoa の GUI app にシグナルが飛んでくるの?
そっちのほうに興味があるな。
Apple メニューから再起動のばあいは quit の AppleEvent だし。

212:名称未設定
09/01/28 14:07:38 1DgzpuuK0
>>211
ありがとうございます。
一度、拝見させて頂きます。

Cで作ったライブラリ内の関数を呼んでるんですけど、
その引数に特定の値を与えるとデバッガに「シグナルを受信しました:"SIGABRT"」
が表示されるんです。
ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…

213:名称未設定
09/01/28 23:10:46 oju538Ej0
NSIndexPathを使ってNSTreeControllerにある目的のオブジェクトを一発で取得ってできないのね

214:名称未設定
09/01/28 23:39:54 4dls5RrY0
>>213
[[[treeController arrangedObjects] descendantNodeAtIndexPath:path] representedObject]



215:名称未設定
09/01/28 23:45:24 oju538Ej0
>>214
なるほど、ツリーノード経由でアクセスすればいいのか
ありがとう!

216:名称未設定
09/01/28 23:57:25 ZgWOL2AA0
>>212
>ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…
SIGINT/SIGTERM と違って、SIGABRT はキャッチできるが復帰出来なかった
気がしてきた。というわけでライブラリ側を直さないと仕方ないんじゃないかな。
URLリンク(en.wikipedia.org)


217:212
09/01/29 10:45:15 yu3hvIXX0
>>216
うげー、まじっすか!
うっすらとそんな気はしてたんですが…

windowsのC++から同じライブラリを使用する時は
try~catchで例外に飛んでくれるのに、macはtry~catchだと落ちてしまう…
それで、シグナルのキャッチをしないといけないのかと思ったんですが、
復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…


218:名称未設定
09/01/29 11:14:55 jq8EMf7e0
もうちょっと状況を説明してください。
使っているライブラリは C++ のもので、C++ の例外を送出してるんですか?
それなら mac でも捉えられない筈はないです。
try ... catch は C++ のものを使ってますか?
Obj-C の例外と C++ の例外は別だから、
@try ブロックでは C++ の例外は捉えられなかった... とおもいます。
Obj-C++ をつかう (ファイルの拡張子を .mm にする)とかして、
ふつうに try{ ...} catch で捕まるはず。

SIGABRT がでているのは、多分 C++ の例外が捉えられずに標準の
terminate() が呼ばれて、それの標準の実装であるところの abort() が
呼ばれてるからでしょう。

219:名称未設定
09/01/29 11:17:56 jq8EMf7e0
>>217
>復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
あと、この文脈で復帰というのはシグナルハンドラから抜けたらという
ことだから、SIGABRT がでた時点で GUI をいじってる暇はないです。

220:212
09/01/29 11:29:16 yu3hvIXX0
むーーっちゃ参考になりました!!
解決致しました!!

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

…今回のは自分の中でかなり勉強になった。w

221:名称未設定
09/01/29 11:54:06 jq8EMf7e0
解決して良かったです。今後は
「A というのを解決するために B をしたい。しかし B の仕方が分からない。」
とい う構造のときは、B を質問するんじゃなくて A を質問してくださいね。
(今回は A: C++例外を取り損ねていた B: SIGABRT をキャッチしたい)


222:212
09/01/29 12:02:51 yu3hvIXX0
あ、ホントですね…
改めて見ると質問おかしいですね(/▽*\)
以後気をつけます。。。

223:名称未設定
09/01/29 14:09:30 adGsEShc0
今objective-cのアクセッサメソッドを勉強中なんですが、
NSArray* gooに対するアクセッサを例に質問させていただきます。

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

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

それとも・・・こうだという書き方があるのでしょうか?

224:名称未設定
09/01/29 14:15:22 noz0c/Ci0
書き方は色々あるけど、渡されたオブジェクトをretainするのが普通。

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

みたいな感じかな

225:名称未設定
09/01/29 14:26:11 jq8EMf7e0
うむ。いずれ (2) だと release しすぎでクラッシュするよ。
retain/release/autorelease はきちんと理解しましょう。

226:名称未設定
09/01/29 14:36:15 ek2lYM/y0
retain, release, autoreleaseの話題はそろそろテンプレ化してもいいんじゃねぇの?

227:名称未設定
09/01/29 14:36:35 adGsEShc0
>>224
いろいろ参照していると
確かにそんな書き方をいくつか見かけました。
ただfooのメモリ領域を新たに確保したい場合はそれでは駄目ですよね。
そのときの書き方とかもありますか?

あとゲッターについてもなんですが、
普通に
-(NSArray*)foo
{
return foo;
}
でいいですか?

228:名称未設定
09/01/29 14:37:18 adGsEShc0
>>225
なるほど。確かにそうですよね。

229:名称未設定
09/01/29 14:44:33 qvTjmqpK0
>>227
興味本位で聞くけど、なんでそんな事をしたいの?

230:名称未設定
09/01/29 14:57:21 um6KdJm70
Thread safeを考慮しなくていいという前提で行くけど

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

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

とか、copyでやるのが遅いが安全かなと思った。

231:名称未設定
09/01/29 15:02:55 qvTjmqpK0
整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。
どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。

232:名称未設定
09/01/29 15:08:47 /bmL0ZO50
NSArrayとかNSDictionaryとかだとdeep copyするかどうか
と考え込みすぎてしまいます

233:名称未設定
09/01/29 16:48:52 adGsEShc0
返信レス遅くなってすみません。
いろいろな意見を聞かせて頂けて本当にありがとうございます。
みなさんがどの辺を意識しながらプログラムしているのか、ちょっと分かった気がします。

234:名称未設定
09/01/30 00:31:04 x4D9q//I0
ターゲットが10.5以上ならしっかりとしたメモリ管理を覚えるのは後回しにしてもとりあえずプロパティを学べばおk

235:名称未設定
09/01/30 02:55:33 1T9rFWEx0
>>230
確かにこれはパフォーマンスが気になるような場合はちょっときついかな。
それに getter で autorelease してるなら setter の方は release でいいんじゃないの?

236:名称未設定
09/01/30 08:26:27 tnqIJAcF0
copy するかしないかは場合によるでしょう、
安全性のもんだいだけじゃないよ。
GUI のクラスが渡されたときにそれを copy しても仕方なかったりするし。
NSString とか NSArray ならともかく。

237:212
09/01/30 12:22:51 Xk99m0ql0
くそっ、昨日いけたと思っていtry~catchでSIGABRT捉える問題なんですが、
Releaseでビルドすると捉えれずに落ちてしまう…

debugだとデバッガがアタッチされてるからうまい事いってたのかなぁ…

238:名称未設定
09/01/30 13:45:42 tnqIJAcF0
>>237
ビルド条件で挙動が変わるってのはなんかポインタの扱いが間違ってるとか
そんなバグがあるんだとおもいます。
うまく動いてるときでも偶然うまくいってたとおもったほうがいいとおもう。

あと、いっとくけど SIGABRT を捉えられてるんじゃないよ。
C++ の例外は、だれもキャッチしないで main 関数の外に抜けると
ランタイムが abort() に変換して、それが結局 SIGABRT になる。
だから、あなたが捉えてるのはあくまで C++ の例外のはずです。
set_terminate とか使って例外が底抜けているか調べたら?

239:名称未設定
09/02/01 08:21:57 n9A0C94C0
>>231
>整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。
>どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。

って具体的に書くとどういう操作ですか?

240:名称未設定
09/02/01 09:35:31 1mYsSfAu0
231じゃないが、
オブジェクトは>224にあるようなsetterのコードを使っていて、
呼び出し元は、setterに渡す前にcopyしてから渡すってことだとおもう。

copyを使うかどうかは、外部と内部とで共有するオブジェクトを
排除したいかどうかだろうね。

241:名称未設定
09/02/01 14:49:50 yyoukxzn0
>>223
URLリンク(developer.apple.com)
この辺の@propertyによるsetter/getterの実装と、その選択を考えれば
どういう風にするのがいいか解ると思う。


242:名称未設定
09/02/02 03:02:07 oWvyvjyR0
>>240
>copyを使うかどうかは、外部と内部とで共有するオブジェクトを
>排除したいかどうかだろうね。

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

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

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

-copy に答えるオブジェクト(NSCopying 準拠)かどうかというのもある。

243:名称未設定
09/02/02 03:14:22 oWvyvjyR0
しまった、NSMutableNumber って何だよ俺。

244:名称未設定
09/02/02 06:27:53 TONCedf+0
>>243
多倍長整数同士の演算を実装したクラスだな。
俺も持ってる

245:名称未設定
09/02/02 13:54:51 2xCIDXB+0
>NSMutableNumber
NSNumber を継承して、値に意味の中心があるクラスとして、NSCopying protocol 準拠で
copyWithZone:(NSZone) の実装をされたんでしょうか?

246:名称未設定
09/02/02 13:56:34 yqjQEfKg0
そんなにいじめるなよ

247:名称未設定
09/02/02 14:01:26 2xCIDXB+0
それとも、NSMutableCopying protocol 準拠
- (id)mutableCopyWithZone:(NSZone *)zone
の方でしょうか?

248:名称未設定
09/02/02 14:03:09 2xCIDXB+0
あれ?タイポだって事?それなら失礼。
でも、実際、そういうクラス作るとしたら、準拠でしょうか?

249:名称未設定
09/02/02 14:34:12 RTJ7jXP10
NSNumber を単純に継承しても動かんよ、クラスクラスタだから…という話は
置いておいて。NSMutableCopying Protocol のリファレンスには、
> Only classes that define an “immutable vs. mutable” distinction should
> adopt this protocol. Classes that don’t define such a distinction should
> adopt NSCopying instead.
とあるので、不変クラスが無ければ、NSCopyingだけで良いんじゃない?

250:名称未設定
09/02/02 14:59:15 oWvyvjyR0
>>244
>多倍長整数同士の演算を実装したクラスだな。

そうそうw

逆に、immutable で演算もないのは「基本、数値のラッパーでしかないクラスなのでよろしく」
ということなのかな。

251:名称未設定
09/02/02 18:45:00 2xCIDXB+0
よろしく。。。何なのでしょう?

252:名称未設定
09/02/02 19:13:04 L7cRbMRK0
>>251
Yorosiku Protocolを知らんのか?

253:名称未設定
09/02/02 21:35:57 AAETqkqJ0
Bonjourなら知ってる。


254:名称未設定
09/02/02 21:41:24 AAETqkqJ0
Bonjourが出たついでなんだけどさぁ、NSSocketを使用して
リモート間のコンピュータ制御を行なった人います?

BonjourがCFSocketを使用しているせいか、こちらのAPIを使用する人がいないよね。
別にBSDSocketを使用しているからあまり問題ないんだけど・・・・・・
こいつの使い方が終に分からなくて、悔しい思いをしたので。


255:名称未設定
09/02/03 00:07:16 2ttErtYe0
NSSocketPort じゃなかったっけ?これは Distributed Objects 用でしょ。
だから一般的なソケット操作にはつかえません。
でも DO はやってみると案外面白いよ。
単一マシン内の二つの app でやっても充分面白いです。
他のプロセスの Obj-C クラスをまるで自分のプロセス内の
クラスであるかのように自在に操れるからね。
AppleEvent より全然つかいやすいとおもうのだが...

256:名称未設定
09/02/03 01:27:59 2ZhaM9y40
[me fuck]

257:名称未設定
09/02/03 06:25:45 gjuIaaik0
>>254
Bounjour でサーバのサービスを発見して NSSocketPort 経由で繋いで後の通信は DO、
みたいな、なんちゃって分散システムを作ってる & 使ってる。
セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド
呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。
かなり楽ちん。

まあ実際にはエラー処理とかいろいろあるが... あとこれっていんちき Xgrid? という説もあるw

258:名称未設定
09/02/03 07:13:28 btozHLBi0
>>257
heartbeatの処理とか入れてる?
処理投げてなかなか帰ってこないサービス内容とかもあるんで
うちは接続したら定期的にheartbeat返すようにしてる

259:名称未設定
09/02/03 09:59:34 hBT6haPh0
ハートビート...
いい響きだね

260:名称未設定
09/02/03 12:03:48 l8QIYOaqi
エターナルフォースハートビートモーターズ!

261:名称未設定
09/02/03 12:21:34 qYl1wxUJ0
質問というかただの興味ですが、
メソッドを書く時の書式は通常
- (NSString *)hoge:(NSString *)string;
とオブジェクト名とアスタリスクは離しますが、C的に書く必要がある場合どうでしょう?
NSString * getHoge(NSString *string);
この場合最初のアスタリスクの両側が空いているのに違和感を覚えるのですが、みなさんどう書いてます?
Apple公式でこういった書式のコードが見られるといいんですけど。

262:名称未設定
09/02/03 12:33:04 C28DxKEb0
リモート人間接続をするにはどうすれば

263:名称未設定
09/02/03 12:40:24 WATf/n1w0
普通に話せよw

264:名称未設定
09/02/03 14:09:23 G1cDZxPk0
たとえば、InDesignなどのDTPソフトだと、フォントフォルダ(たとえば、/Library/Fonts)に、
フォントをFinderで追加すると、すぐに使用できるようになるのですが、
自作アプリでコピーをすると、いつまでたっても、フォント情報が更新されません。

InDesignが、フォントフォルダに変更があったよ~、的ななんらかのシグナルを
キャッチしていて、Finderはそのシグナルを発してるのでは、
と想像しているのですが、そのシグナルを発生させる方法はあるのでしょうか。

265:名称未設定
09/02/03 14:12:07 WATf/n1w0
>>264
むしろ自作アプリで直接コピーするんじゃなくて、Finderにコピーをさせればどうだろう。

266:名称未設定
09/02/03 15:13:30 2ttErtYe0
>>264
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)

267:名称未設定
09/02/03 15:16:29 2ttErtYe0
>>261
URLリンク(developer.apple.com)

関数の場合は * の両側をあける、ivar の場合は左側だけあけるんだと思う。

268:名称未設定
09/02/03 15:27:44 Futh7gDNi
FSEvent使うってのは??

269:名称未設定
09/02/03 16:28:09 qYl1wxUJ0
>>267
おお、すっきりしました。ありがとうございます。

270:名称未設定
09/02/03 18:43:59 nN7f7LmV0
カスタムのビューとスクローラーとそのイベント対応について質問させて下さい。

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

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

で、homeキー、endキーが押された場合を取りたいのですが、
NSResponderのスクロール関連のどのメソッドをオーバーライドしても
呼ばれないのですが、keyDown:から自分で判別するしかないのでしょうか?


271:名称未設定
09/02/03 19:06:35 4NqLeFNd0
>>270
scrollToBeginningOfDocument:とscrollToEndOfDocument:
NSResponderで定義されているメソッドでは、ありませんが。


272:名称未設定
09/02/04 09:05:27 327qCR/u0
>>257
>セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド
>呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。

この方法、凄く気になります。どこかにサンプルコードありませんか?


273:名称未設定
09/02/04 09:33:10 eVwbmqQc0
URLリンク(www.borkware.com)
の Chap. 18, 19 を解読してみたら。本も買ったら勉強になります。

274:名称未設定
09/02/04 13:08:09 yVzPM0e80
サンプルプロジェクトを、プロジェクト名は同じですが改造して、アプリを試作しました(A)。
(アイコン入替え、クラス追加等含め)
更に、それを少しだけ改変した別バージョン(B)を、別個に作ろうと、上記元の改造版を Finder
でフォルダごと複製して、プロジェクト名は同じで、ビルド作業もできておりました。
ところが、その際、(恐らく)Default.png か、Icon.png を更新して、ターゲットのクリーニング後、
ビルドは出来ても、アプリ起動した後、または途中で止まってしまう様になりました。
コードを、修正前の状態になるまで、コメントアウトしても、状況が変わりません。
こういう場合原因は何でしょう?

275:名称未設定
09/02/04 13:29:00 eVwbmqQc0
エラーがデバッガ画面に出てるはずだからそれを説明しろ。
ここ読んでる人だってエスパーじゃないよ。
とりあえず Default.png / Icon.png ももとに戻して動くかみてみたら?

276:名称未設定
09/02/04 14:16:27 vG3Eq+0R0
実機上でBundle ID同じアプリが2つ出来て混乱しているとか。変えてみ。

277:名称未設定
09/02/04 14:32:41 GLh6l/ao0
>>276
ありえる。お前エスパーだろ?

278:名称未設定
09/02/04 16:48:00 pU891sJp0
NSTableDataSouceプロトコルの
-(id)tableView:(NSTableView*)tb objectValueForTableColumn:row:
メソッドの引数tbを使用して
テーブルのラインナップを行う行為は常識はずれですか?

ただこのメソッドは何度も呼び出されるので、
一度呼び出されたときだけこのメソッドないでテーブルのラインナップを
する関数を呼び出しています。
簡単に用法をしめすと
-(id)tableView:(NSTableView*)tb objectValueForTableColumn:row:
{
if(count == 1)
{
/*
tbを使用してテーブルのラインナップ
    カラムを追加したりセルをセットしたり。
*/
  }
// 以下はreturnでセルに値を代入していくプログラム・・・
}


279:名称未設定
09/02/04 17:00:13 /jro+NId0
普通はnibで既にカラムもセルもセットしておく。
どうしても動的に変えたいときはawakeFromNib:でやるかな。

280:名称未設定
09/02/04 17:06:55 pU891sJp0
確かにほとんどの参考プログラムはそうですよね。
ただテーブル数が多い&動的
ということもあって、別に動くには動くしで・・・・
でも皆さんから見てどうなんかな?って思ったんで質問させてもらったんですが・・

281:名称未設定
09/02/04 19:03:12 AZEIygKK0
動的に変更したいにしてもなんらかのトリガーはあるんだろうから
そこから別途カラムを設定するメソッドを呼んだ方がいいと思う
実際の動作から変数を作ってどうこう、とやり出すと
予想外なところでif文に該当してバグの元になる

282:名称未設定
09/02/04 21:24:41 Gh/9lkTr0
iPhoneアプリ作成を始めた初心者です。Hello World! から勉強してます。
TableViewは作れましたが、TabelViewからタッチして別の画面
(別のcontroller)に飛びたいときはどうすればいいですか?
小さな複数のアプリをTabelViewでまとめたいのですが。

283:名称未設定
09/02/04 21:38:37 kElp6NwL0
>>282
iPod touch/iPhone ネイティブアプリ製作 ver.8
スレリンク(mac板)

284:282
09/02/04 21:45:34 Gh/9lkTr0
わかりました。そちらのスレでもう一度聞いてみます。ありがとうございました。

285:名称未設定
09/02/04 22:10:20 nazm8P890
>>284
そしたらこっちでの質問を取り下げた方がいいよ。

286:270
09/02/05 00:02:28 vPXIdXg90
>>271
NSViewのサブクラスにそれらを実装してみましたが、呼ばれませんでした。
少しググってみましたが、それらはNSTextViewで可能な方法ではないでしょうか。
何であれありがとうございました。

287:名称未設定
09/02/05 11:15:29 qtw79+lW0
テキストフィールドのあるモーダルダイアログを表示し、
テキストフィールドに日本語を入力し確定する前(下線が付いたまま)に
ダイアログを閉じるとクラッシュしてしまう…
これはなんなのでしょうか…

288:名称未設定
09/02/05 11:21:22 aBVo+1GJ0
>>287
ダイアログを破棄した後にUIを参照しようとしてない?
フォーカス関係の問題なら、フォーカス外してから閉じるとか。

289:名称未設定
09/02/05 11:22:28 ih/Ab1m90
>>287
クラッシュログはなんていってるの?
つかってるのはことえり?ATOK?

それとは別問題として、モーダルダイアログは多用しないほうが...
せめてモーダルシートにしましょう

290:287
09/02/05 12:19:00 qtw79+lW0
レスありがとうございます!

>>288
モーダルダイログを閉じる前にモーダルダイアログContorllerクラス内のメンバ変数に
UIから取得した値を保持しretainしております…
その後にモーダルダイアログを閉じ
→モーダルContorllerクラスからget○○で呼び出し元ウィンドウでモーダルのUIの値を取得
→モーダルContorllerクラスを破棄
これマズイでしょうか。。。

フォーカスを手動で外してモーダルダイアログを閉じた場合はクラッシュしませんでした。
プログラム内からmakeFirstResponderで別のコントロールにフォーカスを移動してから閉じたらクラッシュしました…

>>289
つかってるのはことえりです。
ログは長いので最後の辺りを…
Thread 0 Crashed:
0 libobjc.A.dylib 0x90a59387 objc_msgSend + 23
1 com.apple.AppKit 0x93356003 -[NSApplication runModalForWindow:] + 227

ホントはシートを使いたいのですが、要望でダイアログになりました…

言い忘れたのですが、10.5では正常に動作致します。
10.4の場合のみ現象が起こってしまいます。。。

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

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

どうすれば解決できますでしょうか、お知恵をお貸しください。

292:名称未設定
09/02/05 12:55:09 ih/Ab1m90
>>290
それは retain/release がどっかでおかしくなってるんだとおもうけど。
ちゃんとやればもんだいないはず。NSZombie とかつかって
誰が二重 release してるかしらべてみては。

あと、僕の実経験では、Interface Builder でよく
Window のインスペクタで "release when closed" をチェックしてしまって
それのせいで release しすぎになりますが...

293:名称未設定
09/02/05 13:19:19 k3HvMYJw0
>291 です……自己解決しました。原因は drawRect:[contentPath bounds] と
やったせいで、パスの線幅分のオフセットをやっていなかった為のようです。
とほほ…

294:名称未設定
09/02/05 16:30:33 MZKKxZ3Z0
>>290
パネルがrelease when closedになってるとか?

295:290
09/02/05 17:03:08 qtw79+lW0
release when closedになってたので、チェックを外すと今度は10.5でおかしくなったw
日本語入力したテキストフィールドにmakeFirstResponderでフォーカス移動して
postEventでreturnキーを送ってテキストフィールドを完全に確定(?)させてから
モーダルを閉じたら10.4でいけた…
一応NSZombieだと、やっぱreleaseしたものにアクセスしてるって出た…(10.4のみ)
わけわかめだ…

296:名称未設定
09/02/05 20:39:25 p6wlshAm0
>>286
よく見たら、keyDown:をオーバーライドせずに、pageUp:とかだけをオーバーライドしてたんですね。
そうじゃなくて、
- (void)keyDown:(NSEvent *)theEvent
{
[self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
}

- (void)doCommandBySelector:(SEL)aSelector
{
if([self respondsToSelector:aSelector])
{
[self performSelector:aSelector withObject:self];
}
}
とやると、
page up → scrollPageUp:
page down → scrollPageDown:
home → scrollToBeginningOfDocument:
end → scrollToEndOfDocument:
となります。

297:名称未設定
09/02/05 23:28:22 ih/Ab1m90
>>295
それはあきらかにメモリ管理のバグなので、対処療法的に
こういう閉じ方ならクラッシュしない、という解決法ではなくて
どっかで retain/release のミスがあるのでそれをみつけてください。
まあ納入期限とかなければのはなしだけど。

clang static analyzer は
URLリンク(clang.llvm.org)
強力なのでいちどつかってみたら?

298:名称未設定
09/02/08 11:24:31 x/17hb0Z0
NSColorでも同じだと思うんですが、UIColorでalloc initでオブジェクト付くってラベルのtextColorに代入したときUIColorオブジェクトはどっかでreleaseしなくていいんでしょうか?

self.lbl_kekka.textColor = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];


299:名称未設定
09/02/08 12:17:18 cbLnK3Uq0
当然allocしたオブジェクトは、自分が責任を持ってreleaseする。
UILabelのtextColorプロパティは
@property(nonatomic,retain) UIColor *textColor;
となっていてretainされるので、代入した直後にreleaseしてかまわない。
self.lbl_kekka.textColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
とすればautoreleaseされているのでreleaseする必要はなく、おそらくそのメソッドが終われば
releaseされる。
allocで生成するオブジェクトは、主にインスタンス変数などに長く保持したい場合などに使う。

300:名称未設定
09/02/08 13:40:23 cbLnK3Uq0
後で気がついたが、releaseする場合は
self.lbl_kekka.textColor = [[UIColor alloc] initWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
[self.lbl_kekka.textColor release];
ではなく、
UIColor *color = [[UIColor alloc] initWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
self.lbl_kekka.textColor = color;
[color release];
な。
NSArrayやNSDictionaryにオブジェクトを追加したり
UIViewにaddSubview:したオブジェクトもretainされるので、直後にreleaseしてよい。

301:名称未設定
09/02/08 15:41:18 vQKSQI6y0
self.label.textColor = [UIColor colorWith~~]; でおk

302:名称未設定
09/02/08 17:29:03 x/17hb0Z0
なるほど!ありがとうございます。よくわかりました。
autoreleaseされるcolorWithメソッドもあったんですね。


303:名称未設定
09/02/09 16:27:22 xx/grS5S0
シンガポールの9歳少年がiphoneアプリの開発。
しかもこの少年2歳のときからコンピュータ使って
いまやすでに6言語をしようできるとか・・・・・。

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



304:名称未設定
09/02/09 16:34:36 9F+2O8Cp0
まあ、その子の父親がそっち系の人だからね。
しょうがないよ

305:名称未設定
09/02/09 16:36:53 r0qQWs5t0
実はオネェ系。

306:名称未設定
09/02/09 17:02:51 svdYosUm0
そっち系ってどっち系か気になる

307:名称未設定
09/02/09 17:03:51 SccJ/7Eo0
はぐれ刑事情熱系

308:名称未設定
09/02/09 17:11:06 9drXTDxV0
>>303
アジアには1ヶ月飲まず食わずの少年も居るよ。
鵜呑みにしない方がいい。

309:名称未設定
09/02/09 17:16:43 QiGMMDTS0
父親が作ってるだろ、実際は。
話題性があれば、無駄に売れる。

310:名称未設定
09/02/09 17:21:15 gsT/KdBz0
以前、10歳でアセンブラバリバリ使いこなす小学生に会ったことがある。
子供は物覚えが速いから、3Dとかの複雑な数学の必要なもの以外は余裕だよ。

311:名称未設定
09/02/09 17:23:48 0LhoQ2uS0
まあ、ポケモン数百匹のデータと対戦法すべて覚えてるガキなんかも多いしな。

312:名称未設定
09/02/09 17:33:17 mKmE+zE/0
>>310
それかつての俺だ
まだ覚えてるかな
21 がLD HL
EDがIXのプレフィクスだっけかな

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

>>311
そういうことだねw

313:名称未設定
09/02/09 17:35:49 EdHXtXj80
ちなみに、いまハンドアセンブル用のシート売ってるのかな?ニモニック書けるやつ

8080,Z80時代はばりばり書いてたなあ


314:名称未設定
09/02/09 18:13:19 bsNxoMZui
アセンブラ買う金が無かったから、ハンドアセンブルしてました。

315:名称未設定
09/02/09 18:15:52 yzs1V3zWi
逆アセンブラは面倒だったんで、自分で書きました。

316:270,286
09/02/09 19:11:05 /J57R7wN0
>>296 それでできました!

レスポンダーチェーンは知っていましたがキーバインドは単語だけ聞いた事ある、という感じでしたが勉強になりました。
ありがとうございました。

317:名称未設定
09/02/09 21:26:07 j607E4t30
Mac OS X だと gas 以外に nasm も付いてくるし、逆アセンブルもできる (otool か gdb)。
なんて恵まれた環境(w しかし Mach-O がマイナー(w

x86 の ObjC のメソッドでは、self が 8(%ebp)、SELが 12(%ebp)、第一引数が 16(%ebp)。
これ豆知識。
と無理矢理 Cocoa に結びつけてみる。

318:名称未設定
09/02/09 21:43:05 JA/hqyCL0
URLリンク(sourceforge.jp)
QtもCocoa対応になるのか
あれ、前ってCarbonだったけ?中までチェックしてなかったなぁ

319:名称未設定
09/02/09 22:23:43 9drXTDxV0
藤子不二雄で育った世代が集まってるな。

320:名称未設定
09/02/09 23:48:04 aEihI9Eo0
>>318
レパード発売直前に 64 bit Carbon GUI の廃止が発表されて
クロスプラットホームのひとはみんな慌てて Cocoa になってますよ。
Qt しかり、Open Office しかり。
Qt の開発者のブログはこのあたり
URLリンク(labs.trolltech.com)
URLリンク(labs.trolltech.com)
もっと最近のポストもあるけど、初期のほうがおもろい。

321:名称未設定
09/02/10 08:06:37 lUyxbS2f0
>>319
残念、テッカマンとサンダーバードで育ちますた。
あと日曜のliving tomorrow

あの番組によればとっくに核融合炉稼働、電車はすべてリニア、衛星軌道の太陽電池発電などが現実のものになってなければいけないのだが・・
21世紀にもなって相変わらず石油依存だったり雇用不安真っ盛りだったり
あげくの果てにハゲもダウンするしなんだかなもう。

322:名称未設定
09/02/10 08:18:35 HCu6PKfT0
テレ東と閣下で育った俺が来ましたよ。
>>320
MSのOfficeはどうなんだろうって思って2008でotoolしてみたけどいまいちどうなってるんだかよくわからん。
Carbon.frameworkあるから普通にCarbonだとは思うがPowerPlant.frameworkがあるのが気になる。
Xcode移行したんじゃなかったのか?

>>321
ひとまずAppleには雇用不安も不景気も無縁だと思う。
あとJobsの後継者探しも問題ないだろう。
ここにいる連中を見る限り。
URLリンク(www.apple.com)

323:名称未設定
09/02/10 09:25:02 A84c3i310
>>322
PowerPlant は XCode で使えるユニバーサル版が公開されてるよ。
MS がつかってるのは彼らなりの手の加わったバージョンだと思うが。
URLリンク(sourceforge.net)

まあ Office は 64 bit にする必要もないから Carbon GUI のままでいいのでは...
Adobe はがんばって Cocoa に書きなおしているらしい。

324:名称未設定
09/02/10 09:32:01 HCu6PKfT0
>>323
Freescaleがオープンソースで公開してたのか。知らなかった。

Win側のOfficeは次のバージョンの14はWeb志向らしいし64bit化はないかもな。
Adobeが書き直し中で、MSは64bit対応予定無しだとすると、後残った大手ベンダーはどこだ?


325:名称未設定
09/02/10 09:47:28 A84c3i310
>>324
Mozilla Firefox も Firefox 3 を期に Cocoa になったらしいよ。
URLリンク(boomswaggerboom.wordpress.com)
Java GUI も Swing は Apple 自身が Cocoa 化したはず。SWT はいまがんばって書き換え中。

326:名称未設定
09/02/10 11:32:28 a+EfxJDo0
int型の数字をNSDictionaryに格納するにあたって
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:5],
@"id",nil];
ってしたんだけど、取り出したときに
int student_id = [dict objectForKey:@"id"];
printf("student_id = %d",student_id);
するととんでもない値が出力されます。。
一応キャストしてみても駄目でした。
int student_id = (int)[dict objectForKey:@"id"];

正しく取り出せていないのでしょうか?

327:名称未設定
09/02/10 11:37:35 HXxSGtyR0
>>326
>int student_id = [dict objectForKey:@"id"];

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

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

でないの?

328:名称未設定
09/02/10 11:38:03 Ie9BcbwC0
objectForKey:で取り出せるのはint型ではなく、格納したときのNSNumberオブジェクト
int student_id = [[dict objectForKey: @"id"] intValue];

329:名称未設定
09/02/10 11:38:31 Ie9BcbwC0
かぶったすまん


330:名称未設定
09/02/10 11:39:44 a+EfxJDo0
>>328
即レス
ありがとう。
上手くいきました。!!!!!!!!!!!!!!!!!!1

331:名称未設定
09/02/10 11:42:33 a+EfxJDo0
>>327-328さんにです。本当にありがとうございました。

332:名称未設定
09/02/10 13:45:11 4mx4xlFL0
Finderで既に存在するファイルと同名ファイルをwriteTo系のメソッドで保存しようとした時に、上書きせずに自動で別名ファイルにする方法はありますか?
もしくは自動で変更された作られる予定の別名ファイルのパスを取得するようなメソッドはありませんか?
title → title 2 みたいな感じのです。
今はディレクトリの中をループで回して同名ファイルのチェックと保存先のファイルパスの変更をしているのですが、一発でパスを取得できる方法があるのかなと思いまして。

333:名称未設定
09/02/10 14:35:44 A84c3i310
[[NSFileManager defaultManager] fileExistsAtPath:@"..."] で出来るよ。
NSFileManager / NSWorkspace のメソッドを確認してみてください。

334:名称未設定
09/02/10 14:45:38 4mx4xlFL0
それはファイルがあるかどうかの確認だけですよね;
今それをforループの中で使ってファイルがあればファイルパスに文字列を足して新しいファイルパスを自分で生成しているのですが、それを一発で教えてくれるメソッドはないでしょうか?


335:名称未設定
09/02/10 14:58:25 vzscJY1q0
>>334
それはプログラム側で指定するべきなわけで。
メソッドが用意されていないのではなく、プログラマの裁量で決められると考えるべき。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch