Cocoaはさっぱり!!! version.11at MAC
Cocoaはさっぱり!!! version.11 - 暇つぶし2ch1:名称未設定
08/10/26 03:42:50 Ato5tySs0
前スレ
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:名称未設定
08/10/26 03:43:22 Ato5tySs0
関連スレ
Macでプログラミング{9}
スレリンク(mac板)
MacOS XをUnixとして使ってる人の為のスレ その14
スレリンク(mac板)
Xcode part7
スレリンク(mac板)
MacでJava その4
スレリンク(mac板)
RubyCocoa 初心者質問【Leopardバンドル記念】
スレリンク(mac板)
AppleScript アップルスクリプト 質問、発表 3
スレリンク(mac板)
Cocoaリファレンス日本語化計画
スレリンク(mac板)

3:名称未設定
08/10/26 19:27:40 Ob0KlCLP0
>>1

あと、こんなの見つけた。
URLリンク(cocoawiki.aerial.st)

まだ情報少ないみたいだけど、メモ代わりに使わせてもらおっと


4:名称未設定
08/10/27 17:43:20 9uBJK4c00
いちもつ

5:名称未設定
08/10/28 00:59:41 YdtXB3i50
テンプレに英語系 Cocoa 役立ちサイトを追加:
本家ドキュメント
URLリンク(developer.apple.com)
わかりやすいチュートリアル
URLリンク(cocoadevcentral.com)
Cocoa に関する Wiki
URLリンク(cocoadev.com)
Cocoa blog 一覧
URLリンク(cocoablogs.com)

だれか日本語の Cocoa サイトをまとめて。

6:名称未設定
08/10/28 01:32:23 UXhSYK7I0
>>5

>>3のwikiにある中から、代表的なもので

Cocoaはやっぱり!
URLリンク(www.big.or.jp)

HMDT
URLリンク(homepage.mac.com)

OOMORI.com - Cocoaリファレンス
URLリンク(www.oomori.com)

こんなとこ?

あと、Cocoa Bindingの例探してて見つかった、

Cocoaで遊ぼう!!
URLリンク(homepage.mac.com)

ほかにもオヌヌメあったら、ヨロシコ

7:名称未設定
08/10/28 01:41:19 Fus9Bxnw0
Cocoa Break!
URLリンク(park15.wakwak.com)

Cocoa Bindings Examples and Hints
URLリンク(homepage.mac.com)

8:名称未設定
08/10/28 10:47:25 e40mOyml0
とりあえず良さげな知っている所を挙げてみる
Omni Developer
URLリンク(www.omnigroup.com)

Mac♪Mac♪Mac♪
URLリンク(www.macmacmac.mydns.jp)

Repeating Motif Wonderland
URLリンク(www15.plala.or.jp)

みるくCocoa
URLリンク(www.stripe-net.jp)

9:名称未設定
08/10/28 12:34:15 /p+sPRRh0
全然書き込みないけど

Carbonはさっぱり!!!
スレリンク(mac板)

10:名称未設定
08/10/28 18:29:50 e40mOyml0
あ、これ忘れてあげないで。
Objective-C [ObjC part:3];
スレリンク(tech板)

【マック】Macintoshプログラミング質問箱
スレリンク(tech板)

【Cocoa】Macプログラマのスレ【Objective-C】
スレリンク(prog板)

11:名称未設定
08/10/28 18:47:24 /p+sPRRh0
OmniGraffleやOffice 2004(たぶん2008も)のUtility Windowのように、
ドラッグにより、Window同士がある程度近づくと、ドラッグがある程度離れるまで、
ぴったりくっついた状態をキープする動きを実装したいのです。

Windowの位置が近くかどうかは、WindowサブクラスのmouseDragged:内で、位置を取得して割り出せました。
で、Windowがくっついた位置をキープしたいのですが、この方法が分かりませんでした。

mouseDragged:内で、[NSWindow setFrameOrigin:]などで位置を強制的に固定しようとしても、
mouseUp:になるまで効きませんでした。どうすればいいのでしょう?

12:名称未設定
08/10/28 21:40:46 iCg2NlHu0
>>11
URLリンク(www.literatureandlatte.com)
にある、KBPalettePanelExampleがそれっぽい挙動実装してるよ。

13:11
08/10/29 19:46:15 lZE7N+XQ0
>>12
まさにこれですね。じっくり見てみます。
とりあえずありがとうございます。

14:名称未設定
08/10/29 22:02:38 cQqhv9zc0
MallocDebugについて質問
MallocDebugで起動し、PopupButtonからLeaksを選択するとリークしているものが表示されると思っている。
次の手順で作ったアプリでリークが検出されるんだけど、本当にリークしているのか
MallocDebugが誤動作しているのかどっちなんでしょうか。

Xcode3.1 OS10.5.5 MallocDebug1.7.1(89.0)
Cocoa Applicationのテンプレートで新規作成
クラス作成
@interface MYObject : NSObject {
IBOutlet NSTextField *textField;
}
-(IBAction)button:(id)sender;
@end

@implementation MYObject
-(IBAction)button:(id)sender
{
[textField setStringValue:@"string"];
}
@end

WindowにNSTextFieldとNSButtonを配置し、アウトレットとアクションをセットし完成。

手順:
テキストフィールドに入力したり、消したり、ボタンを押したりしてから
MallocDebugでリークをチェックするとリークしているように見える。
(272 0x1>こんな感じになってます。272は操作を繰り返すと増えていきます。)
書いてて気にしないのが良いように思えてきた。

15:名称未設定
08/10/30 16:30:52 01X0n4GO0
オブジェクトのディープコピーをするにはどうしたらいいですか?

16:名称未設定
08/10/30 23:25:40 sjApbA2/0
自分でメソッドかけば仕舞いだと思いますが。
めんどくさければ、
NSKeyedArchiver で NSData にかためて、
NSKeyedUnArchiver で NSData にとかせばディープコピーになるんでは?

17:名称未設定
08/10/31 00:07:46 WY8mn5mD0
俺いつもそうやってるw

18:名称未設定
08/10/31 00:22:36 Ijy6iEQp0
>>15
ここ読むといいかもしれない。
URLリンク(journal.mycom.co.jp)

19:名称未設定
08/10/31 10:11:29 nFHujBCu0
>>14
まあ自分では対処しようがないんだから気にすることは無いんじゃない?
あと@"string"をインスタンス変数に入れて
初期化が一回だけになるようにしたらどうだろう?
たしか文字定数は初期化一回だけのはずではあるけど

20:名称未設定
08/10/31 22:16:59 9ab+JRCT0
Xcode 3.1/Mac OS 10.5.5 (intel)
MacBookとか、iMacとかのモデル名を取得する方法ってあるでしょうか。

21:名称未設定
08/10/31 22:30:21 3evJZ2XL0
>>20
ハードウエアの情報については、開発ツールのIORegistryExplorerで目的のものがあるか探してくれ

22:名称未設定
08/10/31 22:34:21 cB2Q2v1H0
ADCの日本語ドキュメントを見ながら初Cocoaに触れてますが、チュートリアルでいきなりつまずきました。
URLリンク(developer.apple.com)
ここで
> ConverterController.hファイルを選択して「開く」をクリックします。
とありますが、これをやっても何もおきません。図5-3のようにもならなければエラーも出ません。
何が原因でしょうか???

23:名称未設定
08/10/31 22:42:52 23e1rSMO0
なにもおきなくて正解です。単にその操作は、
.h に書かれている内容を IB に教えてあげるだけです。
図 5.3 のようにするには、ステップ 3 をしないといけないです。
ライブラリから青い立方体のをドラッグ&ドロップして、
クラス名を NSObject から ConverterController にしてやらないといけないです。

24:22
08/10/31 22:53:59 cB2Q2v1H0
>>23
おお!なるほど!できました!
それにしても紛らわしい書き方ですね…。

25:名称未設定
08/10/31 23:04:11 23e1rSMO0
Apple のかわりにあやまっておきます。ごめんなさい。
あと、普通は 2. のステップ (.h を開く もしくは IB にドロップ) は
IB が自動的に XCode に登録されてる .h を全部監視しているので
しなくてもいいんですが、ときどき IB が混乱して
新しい .h を読まなかったりするので、やり方は覚えておいたほうがいいでしょう。

まあ頑張ってね :) 仕組みがわかれば IB は快適です。

26:名称未設定
08/11/01 01:11:52 n4dRfqKu0
>>21
ありがとうございます。見つかりました。
Macにもレジストリってあったんですか…。


27:名称未設定
08/11/01 01:17:48 nRvsaBqW0
てめー、Mr. Registry.appさんにケンカうってんのか

28:名称未設定
08/11/01 03:04:31 ABXtPrBS0
RegistryはMicrosoftの登録商標ですか

29:名称未設定
08/11/01 04:53:05 lyFOviiP0
iPhoneで何か作るか~と昔買ったヒレガス本を引っ張り出してきて
まーとりあえず、cocoaでOSX用乱数発生アプリを手本通りに組んで
追々思い出しながら手慣らしを~・・・

インターフェースビルダにツールバーが無ぇ!(笑
”システムフォント”はどこだ?(笑
NSObjectのサブクラスを・・・ってClassメニューはどこ行った!?(今日はここまでw

Xcode3(というかインターフェースビルダーというか)が変わってて
昔の本の記述が役に立たねぇ orz

30:名称未設定
08/11/01 12:13:33 azplz7rR0
つうかCocoaの「たのココ」とかチュートリアルとか、
に何となく簡単そうに見える本から入っていく初心者って、
IBでGUI作ったりチュートリアルのコピペあたりで終わって
つまづいて進歩しないか、飽きていくのがほとんど。

ちゃんとC言語、オブジェクト指向、Objective-C、と基礎から
積み上げて行かないと、いくらやっても表面なでてるだけで、
まともに書けるようにならないよ。

31:名称未設定
08/11/01 12:39:28 IrrqNq8q0
確かに今活躍してるCocoa開発者はNeXTのときにみっちり身につけてる人らばっかりだもんな。

32:名称未設定
08/11/01 12:57:52 5Mi4Vs1D0
MacOSXがリリースされてから、すでに7年はたっている。
これだけ時間があれば、NeXTを知らなくても、Cocoaを身につけられる

33:名称未設定
08/11/01 13:00:28 suYAyqpA0
んなことはない。「たのココ」は知らんが、俺は「ヒレガス本」から入った。
後はサンプルをつまみ食いしつつ、AppleのサイトのApplicationKitと
Foundationのクラスのドキュメントを読めば何とでもなる。Cを知らないと
話にならんが、最初からObjective-Cをすべて網羅する必要はない。

それこそ、CとかObjective-Cの基礎からやってたんでは飽きてしまって
Cocoaに辿り着けなくなるのがオチだ。

NeXTからやってる奴なんてごく少数だ。

34:名称未設定
08/11/01 13:02:11 suYAyqpA0
>>33>>30>>31へのレスだよ。

35:名称未設定
08/11/01 13:13:39 9deuPHbB0
俺も>>33と同意見

俺はプログラミングド素人
Macも6月に買ったばかり
未だに「オブジェクト指向?」「クラス?」「メソッド?」なレベルなんだけど
「たのCoco」とサンプルを参考にして既にiPhoneアプリを一本リリースした
これがそこそこ売れてしまったのでモチベーションUP!!

最近ようやくCの入門書を買って読み始めた
最初にCの入門書を読んでいたら確実に挫折していたと確信している

36:名称未設定
08/11/01 17:13:04 fjrubA2a0
>>35
何作ったの?

37:名称未設定
08/11/01 17:58:25 n4dRfqKu0 BE:226400933-2BP(1235)
sssp://img.2ch.net/ico/si.gif
>>35
有料化できるアプリってどういうのなんだろ。
やっぱちゃんと作らないといけないイメージがある。
あと、レジストキー関係のプログラムが面倒くさそう。
適当でも良いんだけど、適当だと簡単に破られるしね。
そこらへん、iPhoneは有料アプリ組みやすいのかな?

俺の暇つぶし集↓今んとこ全部無料。
URLリンク(www.smilemac.com)

38:名称未設定
08/11/01 19:57:18 azplz7rR0
C言語からはじめる必要はないか。
ただIBで遊んだりチュートリアルのコピペをしばらく
楽しんだら、ある程度基礎的なことも理解していく必要は
あると思うけどね。

その点で、
> 最近ようやくCの入門書を買って読み始めた
という>>35はもう次のステップにうつっているから
良いんだけど、そういうステップに行く前に挫折する人が多いのも
事実。

39:名称未設定
08/11/01 20:06:00 ABXtPrBS0
Cすらも分からんのに何やるのさ

40:14
08/11/01 20:41:08 pd2MLZdJ0
>>19
元々はCocoaバインディングを使ってみて同じ現象になったんでバインディングの
使い方が悪いのかと思ってたんですが、使わなくてもなったんでデバッガの使い方が
悪いのかと思って質問しました。
気にしないことにします。

>>35の行動力は凄いな。

41:名称未設定
08/11/01 23:23:16 /+/D9BW40
>>37
>あと、レジストキー関係のプログラムが面倒くさそう
iPhone の場合はそのあたりは全部 AppStore が面倒見てくれるので
なにも書かなくていい。

42:名称未設定
08/11/01 23:32:13 sVr4qJRL0
>>37
誰かと思ったらMacNicoPlayerの作者さんじゃないかw
暇つぶしとかそんなまた謙遜を。

なんか35見て感動したのでたのCocoAmazonで買ってくるか。

43:名称未設定
08/11/02 00:12:33 lKREfCNZ0
>>35はかなりセンスあるんだな。
俺は趣味グラマ長いけど、未だにInterfaceBuilderには馴染めない。(泣

44:名称未設定
08/11/02 00:23:21 HoLoopJM0
>>43
習うより慣れろ。by パソコンサンデー おヅラも出てたな。

45:名称未設定
08/11/02 00:36:37 lKREfCNZ0
パソコンサンデー・・・
何もかもが懐かしい。
スレ違いスマン。

46:35
08/11/02 00:45:43 lImmlfsv0
iPhone Dev Centerのドキュメントとサンプルコードが充実していたので
なんとか一本書けた感じです
URLリンク(developer.apple.com)

細かいことはとりあえず気にせずに
とにかく一本AppStoreに出してみようじゃないか!
という勢いだけで突き進みました

課金については>>41の通り
料金をプルダウンメニューから選ぶだけです
もちろんFreeでもいいです

どんなに小さなアプリでも
とにかく一本完成させたことが大きな自信につながったので
小難しいことは軽くスルーしつつ一本作って公開してみるといいと思います
その点、iPhoneのAppStoreは小さいアプリをぽんぽん出せるのでおもしろいです

今後はOSXのアプリにも挑戦したいですねー

47:名称未設定
08/11/02 01:00:42 MKapFhX90
>>41
ほぉ、そうなのか。
ところで、$99払えば誰でもアプリ売れるの?
それとも審査とかがあるのかなぁ。
Developer Connectionは日本語文字化けするので、買い物用のApple IDとは別のIDにしてるんだが、もし審査あるのなら、メイン垢のほうが良さげ?
日本語名の垢でやるとフォーラムとかで自分の名前化けそうなんだよな。
そこらへん誰かkwsk。

>>46
iPhone開発って難しいイメージあったんだが、iPhone SDKのリファレンス見たら、そうでもないのか。
Cocoaアプリ作る要領で、リファレンス見ながらやればすぐいける感じかな?
ちょっくら作ってみるか、実機もって無いけどorz

48:名称未設定
08/11/02 01:11:24 lImmlfsv0
>>47
シミュレータで動かすだけなら無料
実機転送とAppStoreに公開したいのなら$99払う必要有り

アカウントの文字化け問題には俺を含めてかなり多くの日本人が悩まされているけど
「文字化けしてるから直してくれ!」って根気よくADCにメールすればそのうち直るw
これは人によっていろんなケースがあるから一概には言えない

iPhone開発に関しては
プログラミング経験のほとんどない俺が
Macを初めて買って一ヶ月ちょっとでリリースまでこぎつけられたことを考えると
ハードルは高くないはず

アプリは提出すると審査があって
脆弱性とかエログロとかがあると却下される
でもどこが悪いのか教えてくれるから直しやすい

詳しくはiPhone開発スレで
スレリンク(mac板)

49:名称未設定
08/11/02 02:08:28 lyXSXRrr0
バカお前ら騙されるな
>>35 = mkino (=たのcocoの著者) だ!!
>>35は宣伝なんだよ!!

50:名称未設定
08/11/02 02:09:20 j7DXTstY0
ΩΩΩ < 何だって~~!

51:名称未設定
08/11/02 02:20:49 fJQfdcGh0
やられた!
>>35 見て、今すぐ書店に急いじゃったぜ!

52:名称未設定
08/11/02 03:34:40 Y374j0B40
アメリカの会社なのに社会主義的でおかしいよね

53:名称未設定
08/11/02 04:03:29 sEZUqidf0
>>35は売り上げを晒すかアプリを晒して欲しい。


54:名称未設定
08/11/02 04:10:21 Y6GegVsr0
なんで49とか53はそう悪意というか疑いの目で35を見るかな....
嫉妬でもしてるのか?


55:名称未設定
08/11/02 04:29:03 9VM5jO2v0
iPhoneのアプリ作ってる人ってカタギじゃないですよね?

56:名称未設定
08/11/02 04:55:14 CejDTsgr0
>>54
パソコンサンデーとか言って通じる辺り、たぶんここの平均年齢層は高いのだと思うが、
そういう世代にとって、プログラミングというのは「模型を作る」のと同じレベルの趣味で、
さーて、なんかiPhoneだと世界相手にプログラム作って売れるらしいからなー
こりゃ面白い、あーでもMSXマガジンの頃はいくらでもアイデア出たのに、
長年離れてたら勘が鈍ったなー まーcocoaの作法覚えながら、また少しずつ鍛えるかー
ぐらいのもんなんだが、

「プログラミング」っていうのがひょいとパソコンを買ってきたら普通にできるホビー。

じゃなくて、プログラミングというのは専門学校かなにかで習って、
企業に就職したプロが、プロジェクトチームでカネを掛けてやるもの。
ってことに(その子の中では)なってる子が、
これ系の別スレにも迷い込んでて周りと話がかみ合ってなかった。

57:名称未設定
08/11/02 05:26:20 Y6GegVsr0
自分はパソコンサンデー?なにそれ?って感じの世代だがそのホビーとしてのプログラミングって言う発想は分かる。

まだ自分がMacユーザーではなかったときに一番最初にいじった言語はなでしこ(URLリンク(nadesi.com))だったなそういえば。
その後JavascriptをちょっといじってからMacに移動して、AutomatorとAppleScriptに興奮して、最近たのCoCo版Tigerを買ってXcode 2.x系列を落として色々やっていたらLeopard版が出てしまったというのが現状。

でもそういえば自分は文系だった気がする。おかしいかな?

58:35
08/11/02 07:17:52 lImmlfsv0
パソコンサンデー?
なんだか方向がズレてきてるけど
とりあえず自分が言いたかったことは

・C言語からはじめて挫折するよりも、細かいところには目をつぶってサンプルコードを参考にしてとにかく何か一本完成させて公開までもっていく
・これにはiPhoneアプリが最適なのではないか
(Appleの審査があるので無自覚に危険なアプリをばらまいてしまう恐れも無いし、メンテや課金も簡単)

こんな感じです

アプリは実名で出しているのでアプリ名晒しは勘弁してください
これまでの売り上げはMacBookが買える程度です
売り上げのほとんどが海外です(これもiPhoneアプリのおもしろいところ!)
ではみなさんもがんばって!

59:名称未設定
08/11/02 09:39:27 3POzmbdQ0
ObjC (Cocoa) + IB ってのが、簡易言語的な感じでとっつきやすいんだろうね。
で、実用的なGUIなアプリが割と楽に作れるし、達成感もあると。

素のC言語から初めて、何か人に使ってもらえるものを作るとなったら、
結構な道のりだからなあ。

iPhoneのアプリなんかは、単純なプログラミングの技術より、何かいい発想の
ある人の方が面白いものを作れる可能性が高いような気がする。

60:名称未設定
08/11/02 10:18:24 anI9QKlo0
35が宣伝でも構わんが、たのCocoは正直オススメできない。
内容も薄いし、理解させようと言う意識が感じられない。
入門ならヒレガス本をオススメする。

61:名称未設定
08/11/02 10:21:52 sje4Pdr1P
しかしIBのインターフェースが変わったのがヒレガス本としては痛いな
早く新版でないかなー


62:名称未設定
08/11/02 10:28:52 Y6GegVsr0
もう新版出てないか?>ヒレガス
URLリンク(www.amazon.co.jp)
Amazonには2001,2004,2008が全部売られているけどタイトルで分類しているせいか全てに同じ内容の商品説明とカスタマーレビューがついていて混乱する。

63:名称未設定
08/11/02 10:54:58 3Vx+y2lH0
>>62
たぶん>>61は和訳されたものが欲しいのだと思う。

俺も旧版の和訳しか持っていないので
新版出てくれるとありがたい。

64:名称未設定
08/11/02 19:07:02 /LuXh8CU0
>>29

好きに使え、って書いてあったから、XCode3用のチュートリアル書いてみた。
URLリンク(cocoawiki.aerial.st)

でも画像あげれないから超分かりにくいね、これ。

65:名称未設定
08/11/02 19:14:03 MKapFhX90
URLリンク(developer.apple.com)

66:名称未設定
08/11/02 21:02:55 mqh/+RaW0
すみません、質問です。
アプリを起動した直後に特定のテキストフィールドなどにフォーカスを
当てたいのですが、どうすればよいのでしょうか?

67:名称未設定
08/11/02 21:06:32 sje4Pdr1P
>>64
コメントありがとね
画像アップはちょっとまってて、
2、3日でリアルが片付くから、それからやります
不便をさせて申し訳ない

68:名称未設定
08/11/02 21:54:10 lKREfCNZ0
ここ数日ADCのレスポンスが異常に悪いんですが、皆さんいかがですか?
Software Updateもタイムアウトで完了できない有様で・・・。

69:名称未設定
08/11/02 22:03:51 Y6GegVsr0
>>68
Snow Leopardの新seedのせいとか?

70:名称未設定
08/11/02 22:03:55 rI4hnwUX0
>>64
Cocoa Bndingになってる

71:名称未設定
08/11/02 22:11:09 MKapFhX90
>>68
-(void)awakeFromNib{
[myField becomeFirstResponder];
}

72:名称未設定
08/11/02 22:11:42 MKapFhX90
ごめん、安価ミス
>>66宛。

73:名称未設定
08/11/02 23:48:27 mqh/+RaW0
>>71
ありがとうございます。
ちなみに調べていて

[myWindow makeFirstResponder:myField];

でも行けたのですが、どちらも同じですかね?



74:11
08/11/03 00:21:48 3VCrO+9U0
通りすがりだけど
becomeFirstResponder
には

Use the NSWindow makeFirstResponder: method, not this method, to make an object the first responder. Never invoke this method directly.

とあるね

75:名称未設定
08/11/03 00:58:24 Hr4zrpPq0
becomeFirstResponderってオーバーライド用じゃなかったっけ?

76:名称未設定
08/11/03 02:17:40 qCH2Sci10
OSX10.3辺りで一時期cocoaに触れて、
その時に作ったソフトが起動すらしなくなったので改めて一から作り直そうと
久々にcocoaに再挑戦する所なのですが、
レオパルドの開発環境では何か根本的に作り方が変わったりしてるんでしょうか?

77:名称未設定
08/11/03 02:44:14 1yy3U75q0
再ビルドすれば起動するんじゃないの

IBが変わりすぎて慣れるのに時間がかかる。

78:名称未設定
08/11/03 02:52:02 mTkV4jRn0
>>74-75
73ですけどご意見ありがとうございます。
makeFirstResponder を使った方が良いという事ですよね。


79:76
08/11/03 03:22:30 qCH2Sci10
以前改良しようと中途半端に手を加えた場所等、
もう全体構造が判らなくなってるので一から作った方が早いと思ったからです。

80:名称未設定
08/11/03 03:36:44 Foy84T9X0
いや、プログラムのサイズにもよるけど、
がんばって思い出してみたほうがいいんじゃないかな。
とりあえずは昔のプロジェクトを最新の xcode で開いて、
コンパイルしてみるのをおすすめします。
なにか 10.5 になってなくなった/挙動がかわった
API をつかってるのかもしれないし ...
デバッガでどこで落ちてるのかを調べるだけでもちがうでしょう。

別に本質的にはなにもかわってませんよ。
いろいろ Cocoa の API が増えてるのを除けば。
(CoreData, Binding とか... Binding は 10.3 にもあったっけ?)

>>77 さんもいうように
IB3 は IB2 からかなり変わりましたが、outlet / target の考え方はかわらないし。
クラスは IB 側で作らずに XCode で作ることが推奨されるようになったぐらい?

81:名称未設定
08/11/03 10:01:54 DCZONU6Z0
>>73
IBでwindowのinitialFirstResponderとテキストフィールドを繋げてもできた
後はnextKeyViewを繋げていけばタブキーの移動が制御できた

82:名称未設定
08/11/03 10:02:46 dKQvPNo00
>>78
becomeFirstResponderは「自分がFirstResponderになるか否か」を返すためのもの。
FirstResponderにしないビューを作りたい場合、
becomeFirstResponderをオーバーライドしてNOを返せば良い。

- (BOOL)becomeFirstResponder {
return NO;
}

83:名称未設定
08/11/03 18:19:30 jVQJ8W/E0
unsigned int hoge = 4264034304;
NSData *hogedata = [NSData dataWithBytes:&hoge length:4];
NSLog(@"hoge is %d, hogedata is %@" , hoge, hogedata);

とやってコンソールの出力を見ると
hoge is -30932992, hogedata is <000028fe>
となります。
32bitなので unsigned int なら4264034304(0xfe280000)はきちんと表示されると思ったのですが、
この-30932992や<000028fe>はどうして出力されるのでしょうか?


84:名称未設定
08/11/03 19:17:31 +8TFOxC70
>>83
こんな感じでどうでしょう
unsigned int hoge = 4264034304;
NSData *hogedata = [NSData dataWithBytes:&hoge length:4];
NSLog(@"hoge is %u, hogedata is %@" , hoge, hogedata);

union {
unsigned int ui;
unsigned char ch[4];
}test;

[hogedata getBytes:&test length:4];
NSLog(@"hoge2 is %u, %x, %x, %x, %x" , test.ui, test.ch[3], test.ch[2], test.ch[1], test.ch[0]);

URLリンク(developer.apple.com)

85:名称未設定
08/11/03 20:07:58 YM+SucNB0
要は符号付き/無しとエンディアンの話か。

86:名称未設定
08/11/04 18:54:34 eYzISOw90
ライブラリのパスの渡し方を教えてください

プロジェクトの設定でライブラリ検索にパスを渡しても
エラーが生じます。

ちなみにヘッダファイルのパスは上手く通ります。

87:名称未設定
08/11/04 23:33:36 G6xtfucg0
>>86
スタティックライブラリ(.a?)ならファイルが並んでるツリーのところで
右クリック->追加->既存のファイルでライブラリファイルを選択
同様にヘッダファイルを追加してビルドすればできたっぽい
プロジェクトの設定とかはいじってない

88:87
08/11/04 23:38:48 G6xtfucg0
>>87に追記
*.a、*.hの追加時にコピーは作っても作らなくてもできた

89:名称未設定
08/11/04 23:41:04 eYzISOw90
>>87
ありがとうございます。
明日確認してみます。


90:名称未設定
08/11/05 21:09:37 19atskXb0
NSTableView内のセルを編集可能にして
セルの内容をプログラム内で読めるようにしたいのですが、
どのようなメソッドを使えばいいのでしょうか?

変更した時点でデータを読みに行く必要は無くて、
適当なタイミングで(Save Buttonを押した時とか)読めればいいのですが。

元々用意してたデータをNSTableViewに表示までは出来るようになったのですが。。。

91:名称未設定
08/11/05 22:03:03 bThhRr9i0
>>90
tableView:setObjectValue:forTableColumn:row:

セルの内容が変更になった時に呼ばれるから、
該当するデータを差し替えれば良い。

92:76
08/11/06 08:26:12 8NSMQDOL0
遅れながら、言われた通りちょこっと頑張って直せました。
レオパになってメモリ管理の新機能が付いたとかチラ聞きして
その辺りも含めて立ち上がらなくなったのかとか色々考え過ぎて腰が引けてた様です。
有り難うございました。

93:90
08/11/06 11:23:58 FHeExVxB0
>>91さん
出来ました! 素早い解答ありがとうございます。

94:名称未設定
08/11/06 21:38:07 5DYNPx6+0
NSTextField内の挿入ポイントを行の最後に移動したいのですが
どうすればいいでしょうか?
moveToEndOfLine: はNSTextViewでしかできませんでした。

95:名称未設定
08/11/06 21:48:16 4wWZp45n0
currentEditor で NSText を取り出して moveToEndOfLine:

96:名称未設定
08/11/06 23:12:39 xQKaLsP4P
うちのCocoa Wikiにコメントをくれた人、いますかね?
ファイル添付機能を有効にしたので、再度編集していただけると嬉しいです。
ちなみにファイルサイズの上限は5MBです。

97:名称未設定
08/11/06 23:48:14 5DYNPx6+0
>>95
[[inputTextField currentEditor] moveToEndOfLine:self];
できました、ありがとうごさいます。

98:名称未設定
08/11/07 01:50:36 ww1WLO3q0
>>96
ありがと
マターリとやっていきます。

99:名称未設定
08/11/07 09:13:42 Xt4hlMq90
URLリンク(cdn1.ustream.tv)
めちゃくちゃ可愛い

100:名称未設定
08/11/07 11:15:30 DD7bYBXs0
いまいち何が問題なのかわからないので、質問させてください。
まずMyClass.hとMyClass.mで下のように実装して
@interface MyClass : NSObject {
NSMutableArray *myArray;
}
@end
@implementation MyClass
-(id)init
{
self = [super init];
if( self ){
[myArray initWithCapacity:10];
[myArray addObject:[NSNumber numberWithInteger:1]];
NSLog(@"myArray is %@", myArray);
}
return self;
}
@end
その上で、AppController.h とAppController.mで
@interface AppController : NSObject{
MyClass classObject;
}
@end
@implementation AppController
-(void)awakeFromNib
{
classObject = [[MyClass alloc] init];
}
@end
というふうに初期化してみても、コンソール出力に(NULL)しか出ません。これは何故なのでしょうか?
あとこのmyArrayをアプリケーションの起動から終了までずっと保持しておきたいのですが、ガーベジコレクションを使う場合、ルート集合から参照しておけばよいと本に書いてあります。具体的にはどうすればよいのでしょう?

101:名称未設定
08/11/07 11:18:38 I+wKqcuj0
↑フラッシュの穴を付いた攻撃なので注意

102:名称未設定
08/11/07 11:20:56 Xt4hlMq90
[myArray initWith...] じゃだめ。その時点では myArray は nil でしょ。
nil に initWith メッセージを送ってもどうしようもないです。
myArray=[NSMutableArray alloc];
として myArray に NSMutableArray のインスタンスをつくってから、
initWith... しないと。普通は組み合わせて
myArray=[[NSMutableArray alloc] initWith... ]
とするのが吉。

ルート集合って何のことなのか具体的なことが本に書いてあるはずだけど、
読みましたか?読めばどうすればよいのかこともわかるはずだけど...

103:名称未設定
08/11/07 11:22:48 Xt4hlMq90
え。このフラッシュって悪い奴なの?ごめんなさい。
単に犬の赤ちゃんの live webcam で可愛いなあと思ってみてたんですが...

104:名称未設定
08/11/07 12:55:31 xQSQPAmW0
それをなぜこのスレに貼る

105:100
08/11/07 13:08:19 DD7bYBXs0
>>102さん
確かに[myArray [[NSMutableArray alloc] init..]とすると動きました。
初めて1月たつのに、まだまだ基本的な所が理解できていないようです。
本は荻原さんの詳解Objective-C2.0を読んでるんですが、
外部変数や大域変数がなんなのか、そこから参照するというのがよくわかりません。

106:名称未設定
08/11/07 14:08:16 5c1UEXI40
1ヶ月で理解出来たら、世の中はObj-Cプログラマーで溢れかえってるんだぜ?

107:名称未設定
08/11/07 16:01:22 SM5nwPQ/0
最近プログラミングを初めようと思いCocoa本買いました。
Mac買った時に付属していたDVDからXcodeインストールしたんですが、新規プロジェクトの中のCommand Line Utilityという項目はあるんですが、その中にStanderd ToolやFoundation Toolなどが入ってません。
どうすればいいでしょうか?
素人的なことで申し訳ないです…。(-.-;)

108:名称未設定
08/11/07 16:47:19 xH5O/xya0
買った本は何か? Xcode のバージョンは? 何をしようとしているの?

109:名称未設定
08/11/07 18:55:42 VaKcdyjz0
>>108
バージョンは3.0です。
買った本は木下誠「たのしいCocoaプログラミング」です。
実験用のプロジェクトをつくりたいんですが。

110:名称未設定
08/11/07 19:25:52 zN7DmkVq0
NSString定数で漢字を使えない設計にした人

すぐに自殺してください。

111:名称未設定
08/11/07 19:35:18 Qu5mLm7y0
>>110
貴方の無知は痛々しいです。何が原因か推測さえ出来ないのですか。

112:名称未設定
08/11/07 20:00:31 zN7DmkVq0
原因はObjective-Cのアーキテクトが馬鹿だからです。

113:名称未設定
08/11/07 20:02:07 xH5O/xya0
たのココ(10.5)にはcommandLineAppなんて無かった気がするが…まぁ、無くても出来るよ。
新規プロジェクト>Application>Cocoa Application を選んで、適当にプロジェクト名を
つける。後はXCodeのウィンドーにある>グループとファイル>Other Sources>main.m
をいじれば良い。StanderdToolのmain.c(Cしか使わなければ、Xcode上でmain.mを選択、
右クリック>名称変更で、.c に)は、
#include <stdio.h>
int main (int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!¥n");
return 0;
}
FoundationToolのmain.mは、
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// insert code here...
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
なので、書き換えれば良い。

114:名称未設定
08/11/07 20:24:34 WHDeBs4d0
>>109
木下の本はやめた方が良いと思う。
ヒレガス本にしる。

>>112
じゃやめちまえ。
バカに付き合うほど暇なら別だが。

115:名称未設定
08/11/07 20:30:00 qG8ur2d10
うは、馬鹿降臨。

116:名称未設定
08/11/07 20:43:30 7lDacPZy0
>>110
@"漢字ひらがなアイウエオ"
で全然通りますが。

117:名称未設定
08/11/07 21:03:18 zN7DmkVq0
>>116
(´ι _` ) あっそ

118:名称未設定
08/11/07 22:33:21 jHitKJj60
てかさんざん既出だろ。

119:名称未設定
08/11/07 22:39:03 b9cUYWPw0
>>112
それが「objective-cの」言語仕様だと思っている時点でアホウだな。


120:名称未設定
08/11/07 22:41:40 wHlO12kf0
態度わりーw

121:名称未設定
08/11/07 23:08:52 4BK/dCS30
>>107
>Standerd ToolやFoundation Toolなどが入ってません

けど変だね。普通はそこに5つはいってるけどな

122:名称未設定
08/11/08 00:22:53 kXRjTak80
@"..." の定数って、 7 bit ascii 以外は未定義だよね ???
[NSString stringWithCString: "...."
encoding: ソースコードのエンコーディング]
を使うのが安全なんではないかと思いますが。

あと、お願いだからみなさん NSString <---> char* の変換で
encoding 指定のない deprecate されてるメソッドは使わないようにしましょう。
それらのメソッドは Cocoa のデフォルトエンコーディングをつかいますが、
Cocoa のデフォルトエンコーディングは環境設定で言語を何にしているかに
依存するので、日本語環境では動いているソフトが英語環境にすると
途端に動かなくなったりその逆とかいう意味不明なバグが多発します。

これのせいで英語の作者のつくったユーティリティーが
日本語ファイル名をちゃんと扱えなかったりするので泣けます。

123:名称未設定
08/11/08 02:14:53 HB66BG0k0
>>122
これ何に対するレス?

>[NSString stringWithCString: "...."
>encoding: ソースコードのエンコーディング]
>を使うのが安全なんではないかと思いますが。

とりあえず autorelease されてる点は注意だよね。
それに「ソースコードのエンコーディング」ってのも、ポータビリティを考えると
どうよ、って感じがする。

>これのせいで英語の作者のつくったユーティリティーが
>日本語ファイル名をちゃんと扱えなかったりするので泣けます。

この場合はエンコーディングを指定しても本当は駄目で、
filesystemRepresentaion を使わないといけないのだが。
現実的にはUTF-8にしておけば一応大丈夫だけど。

中途半端なアドバイスをするお前に泣けたw

124:名称未設定
08/11/08 02:46:09 D6mFIMvA0
>>113
ありがとうございました。
助かりました。(≧∇≦)

125:名称未設定
08/11/08 06:50:28 +B195WiV0
NSPopupButtonの項目をNSString(実質Title?)のArray以外とBindingできないでしょうか。
NSMenuItemのArrayとできちゃえばサイコーなんですが…。

126:名称未設定
08/11/08 08:06:27 HVynMMKD0
超ハイパーウルトラ初心者ッス

IBでコントロールを二つ用意しそれぞれアウトレットとアクションを一つずつ持ちます。

でWindowsにテキストフィールド二つとスタートボタンがあります。

テキストフィールドはそれぞれ上記で用意した各コントロールのアウトレットと一対一でコネクトさせています。

しかし、アクションであるスタートボタンを二つのコントロールにコネクトさせることができません!
どちらか一つとコネクトさせると一方のコネクトが(勝手に!)解除されます。

スタートボタンを押すと二つのコントロールを起動させたいのですが・・・・


127:名称未設定
08/11/08 08:48:36 SWmtZyAd0
InterfaceBuilder で何でもできると思ったら大間違いだ

128:名称未設定
08/11/08 09:04:59 NHu1yaCo0
>>126
Windowsってw

Actionは1つのオブジェクトにしか送信できないので、
複数のオブジェクトを動作させたい場合は中間にオブジェクトを置くのが手っ取り早い。

ボタン→中間オブジェクト┬→オブジェクト1
            └→オブジェクト2

というか、1つのアクションで完結するように設計を見直した方が良いと思うが。

129:名称未設定
08/11/08 11:20:51 Nk749XR60
>>125
できるよ。
ObjectがNSMenuItemのNSArrayController作ってみよう。

130:名称未設定
08/11/08 20:44:39 d4+4vCvN0
超ハイパーウルトラ初心者ッス

>>128さんの言うとおりに中間オブジェクト(Viewクラス)を作りました。
そのViewクラスにIBのテキストフィールドと結びつけるアウトレット変数を定義したのですが・・・・

そのアウトレット変数を>>128で定義されたオブジェクト1や2で使用するにはどうしたらいいのでしょうか?

参考詳細
View.hファイル
IBOutlet id textField1;
-(IBAction)startBu:(id)sender;

View.mファイル
-(IBAction)startBu{
OBJ1 obj1 =[[OBJ alloc] init];
[obj func];

OBJ.m
-(void) func{
[[textField1 setStringValue:"Hello World"]]; //ここでView.hで定義したtextField1を使用したい
}

131:名称未設定
08/11/08 20:51:09 d4+4vCvN0
超ハイパーウルトラ初心者ッス

今日僕はCocoaの奇跡を見ました。
すごい、すごすぎる!

テキストフィールドをプロパティとして簡単に宣言して
等号で結べばいいだけだなんて・・・・・・・・


まー無理だろなーと思いながら試しただけなのに・・・・・

132:名称未設定
08/11/08 21:00:30 C2KKDa3W0
超ハイパーウルトラ初心者ッス

今日はまだ一度もうんこ出てないのに
お腹がすきます

すごい、すごすぎる!

133:名称未設定
08/11/08 22:00:57 NHu1yaCo0
>>130
なんか錯乱しとるから、もうちょい勉強してください。

134:名称未設定
08/11/08 23:46:37 RNOdKyfY0
つーか、キャラ作んなくていいよ。

135:名称未設定
08/11/09 00:22:06 L1s+Atna0
Objective-C糞過ぎ

C++かJavascriptかRubyか、最悪でもJavaで書けるにしろ

つーか、Cocoaなんて廃止して、.NET Framework使えるようにしろよ

136:名称未設定
08/11/09 00:26:57 hlpGev2i0
おまえがやれ

137:名称未設定
08/11/09 00:33:30 L1s+Atna0
お断りだ

138:名称未設定
08/11/09 00:38:23 IHDltFNu0
2行目が何を言いたいのか分からんが
C++とかJavaでやりたいならやればいいじゃん

139:名称未設定
08/11/09 00:39:38 5aT87bHO0
質問です。
たぶんちょっとしたことで出来るんだと思いますが、、、

あるクラスAのメソッドのループから、ウィンドウ中のラベルなどを更新って出来ますか?
ビューコントローラは別にあり、ビューコントローラをインスタンス化してメソッドを直接呼出し
と、安易な考えをしていたのですが、やはり出来ませんでした。

具体的には、ループが進むごとにウィンドウ中のラベル(進行状況%表示)を更新したいのですが、
どうすればいいでしょうか?

140:名称未設定
08/11/09 00:42:14 dKIqpJ+F0
[labelTextField setStringValue:@"hoge"];
[labelTextField display];
これでどうか



141:名称未設定
08/11/09 00:42:53 dKIqpJ+F0
ループの処理を別スレッドにした方がいいけどな

142:名称未設定
08/11/09 00:48:20 L1s+Atna0
>>138
分からないならコメントするな。素人は黙ってろ

143:名称未設定
08/11/09 00:49:34 5aT87bHO0
>>ID:dKIqpJ+F0
ありがとうございます!
スレッドは扱ったことないので、ちょっと勉強してきます。
その場合、ラベルをコントローラにIBOutletとして定義すると思うのですが、
ループ中からそのラベルオブジェクトを扱う事はできるんですかね?
ループの存在するクラスに定義するのは避けたいので・・

144:名称未設定
08/11/09 00:53:03 dKIqpJ+F0
どこで定義しても特に支障無く扱うことができると思うが
ものは試しにやってみれ

145:名称未設定
08/11/09 01:09:57 B9u3WR7L0
メインスレッド以外からは GUI を直接いじってはいけないので、
[object performSelectorOnMainThread: ... waitUntilDone:....]
だったかなにかをつかいましょうね。

146:名称未設定
08/11/09 01:10:15 5aT87bHO0
なるほど、、どこからでも扱えるんですね。
ちょっと今は試せないですが、ありがとうございました!

近々自分のMacを買うつもりなので、転がりながらプログラミングしたいものです。

147:名称未設定
08/11/09 01:21:23 fqJDb0t30
>>145
ん、そうだっけ?
メインスレッドじゃなくてもOKでしょ?
何か制限あったと思うけど、忘れた。

148:名称未設定
08/11/09 01:25:37 IHDltFNu0
GUI系はメインじゃないと危険だったかと
プログレス表示に精密さを求めないならsetNeedDisplay:YESとかでもアリじゃないかな

149:名称未設定
08/11/09 01:28:00 NDkcMBd2P
>>135を読んで思い出したけど、
Objective-J(Cocoaを実装したJavascript?)はどうなったんだ?と思ったら、
URLリンク(objective-j.org)<) にリダイレクトされて、
なんかダウンロードできるようになってる。

150:名称未設定
08/11/09 01:34:57 IHDltFNu0
>>149を読んで意味が分かったけど、
>>135の2行目は日本語の意味が良く分からんかったってこと。まぁカリカリすんなよ。

151:名称未設定
08/11/09 01:53:05 ROIk3bo+0
>>135
出来ないのはお前が糞だから。俺は出来るもんね。


152:名称未設定
08/11/09 03:54:10 B9u3WR7L0
C 系の言語の文法をひとつでも既に知っていて、
Obj-C の文法が二日でわからないひとは何かがおかしい。
Cocoa API の全貌をつかむのは大変なのはわかるけど、
それは Obj-C の文法の問題ではないベ。

153:名称未設定
08/11/09 06:13:08 40c4vp+k0
.NET Frameworkのどこがいいんだがさっぱり謎だが一応。
URLリンク(www.mono-project.com)

154:名称未設定
08/11/09 08:05:26 ijj+bVEA0
110=135でOK?

155:名称未設定
08/11/09 08:10:56 40c4vp+k0
>>135はプログラム板のここにでも行った方がいいんじゃないか?
過疎りまくってるが。
Mac OS Xでの開発環境はどれがイイ?
スレリンク(tech板)

156:名称未設定
08/11/09 09:30:27 mFvSzNPX0
>>125
NSPopupButtonの項目をNSString(実質Title?)のArray以外とBindingできないでしょうか。
NSMenuItemのArrayとできちゃえばサイコーなんですが…。
>>129
できるよ。
ObjectがNSMenuItemのNSArrayController作ってみよう。

125です。
すいません、言葉が足りませんでした。
NSMenuItemをaddObjectしたNSArrayControllerとバインドした場合、
・"Controller Key"は"arrangedObjects"
・"Model Key Path"は"title"
とするのが普通になると思います。
でも、これだとNSPopUpButtonクラスのaddItemWithTitleをしているような感じになり、
結局はNSStringからポップアップの各項目を作ることになっています。
当方の希望は、
・"Controller Key"は"arrangedObjects"
・"Model Key Path"は"self"
みたいな感じ(実際にこれをやってもobjectの説明がポップアップに追加されるだけです)で
NSMunuItemからポップアップの各項目を作るのが希望です。
 



157:名称未設定
08/11/09 09:36:30 lxRIk4K/0
>>143
ループでGUI更新が動かないのは、NSRunloopが一回りしたタイミングで
更新処理がまとめて行われるからだよね。
コードの中でループしちゃうと、NSRunloopに処理が戻らない。

自分はスレッドが面倒なので、ループをばらし、ループの中身だけ別メソッドに
して、performSelector:withObject:afterDelay: で繰り返し呼び出しに
してる。普通はスレッドにするものなの?

158:名称未設定
08/11/09 10:31:27 L1s+Atna0
>>152
わかるわからないではなく、Obj-Cの文法は美しくない。

159:名称未設定
08/11/09 11:29:50 Cd0AMfEC0
後付け感ありまくりではあるね
シンプルに書けないのも今風ではないね
MacRubyに期待(^^;

160:名称未設定
08/11/09 12:48:29 xdgDUb6t0
>>158
じゃあ、好きな言語を使ったら良いんじゃない?
.NET使う環境から一生出てこなくて良いよ

161:名称未設定
08/11/09 13:00:26 la8cu0hU0
>>156
何をしたいのかわからないけど、
NSMenuのアイテムとNSPopupButtonのアイテムを同期させたい、
または同じ内容にしたいということ?


162:名称未設定
08/11/09 13:53:57 VAAVuJ8X0
>>158
美的感覚の問題だったのか。
じゃあまあ個人の好き嫌いだからそれでいいんじゃね?
僕は括弧の乱舞は好きだけど。

あと、メソッド名が長くてほとんど文章なので
コメントを書く必要がほとんどない、というか
プログラム自体がほとんどコメントになるのはいい点だと思う、って
これは Obj-C の文法の問題ではなくて Cocoa の API の問題か。失礼。

163:名称未設定
08/11/09 14:43:48 YNFGyvs40
文法的に美しく無いとされるフランス語にも素晴らしい文学は存在する。
Objective-Cに文句を言うのは勝手だが、
経験豊富なプログラマであれば言語に左右されない美しいアプリを作れるはず。

164:名称未設定
08/11/09 15:18:38 uAivnwgs0
そういうこと言うと、論点ずらしって言われるぞ。

165:名称未設定
08/11/09 15:20:17 YNFGyvs40
>>164
撒き餌を食うなよw

166:名称未設定
08/11/09 16:00:55 cf3ZhWey0
あれじゃないの?
iPhoneのアプリ開発とか注目されてきてるからObj-Cで組んでみようと思ったけど
VBしか経験がなくて文法の違いが吸収できず、HelloWorldすら出せずにイライラしたとか。

167:名称未設定
08/11/09 16:05:18 YNFGyvs40
>>166
それはあるよな。
iPhone出てから「初心者です」みたいなのが増えた。

168:名称未設定
08/11/09 16:23:25 mFvSzNPX0
>>161
はい、だいたいそういう内容です。
title以外の内容があるアイテムとか、セパレータとか、NSMenuItem自体には
いろいろな状態があるので、そういった状態を抱えたまま同期したいのが希望です。

169:名称未設定
08/11/09 16:42:55 HoxfCMO50
俺はObjective-Cの簡潔なオブジェクトシステムが好きだ。しばらくすると一風変わったメッセージ式にも愛着がわいてくる。

170:名称未設定
08/11/09 17:14:50 L1s+Atna0
お前らの言いたいことはわかった。「オラの方言が最高だべさ」ってことだろ。一生時代遅れの田舎言語使ってろ。

171:名称未設定
08/11/09 17:23:45 XOOSfoZw0
はいはい田舎田舎。
厨房発言に上げ荒し、おまけにドトネト最高か。
まじでVB厨のバカ丸出しだな。

172:名称未設定
08/11/09 17:25:12 40c4vp+k0
田舎の方が味があって和むんだよ。それが分からないとはまだまだだな。

173:名称未設定
08/11/09 17:34:46 BSsYOmbX0
言語とか処理系て、どうせ借り物でしょw
目的は何だ?金?w
だったら冷や汗たらして働けw
何か作りたいものがあるなら最適な手段を選べばいいだけ

174:名称未設定
08/11/09 18:06:51 YNFGyvs40
iPhoneで小遣い稼ぎしようと思ったけど
理解できなくて八つ当たりしてるだけだろ。

175:名称未設定
08/11/09 18:49:44 Cd0AMfEC0
まあ誰がなんと言おうとObjectiveC++ は最強だと思うけどね
C++/CLIよりも使い易いし、判り易い

でも、ちょっと古い感じはするね
MacRubyに(ry

176:名称未設定
08/11/09 19:17:05 oz3XxqjX0
Objective-C++は最強にカオスってことですねわかりまs

177:名称未設定
08/11/09 20:05:06 n+KcZ/pQ0
心の寂しい方がいらっしゃる様ですね
きっと心だけでなくプログラムも隙間だらけなのでしょう

178:名称未設定
08/11/09 21:06:35 Se6LpMt+0
>>158
Ruby でも Java でも C++ でも JavaScript でも出来ますが、何か?

179:名称未設定
08/11/10 01:51:16 5p8Fyhi10
Ruby → RubyCocoa か MacRuby 。 MacRuby は Apple が開発していて大本命ぽい?
Python → PyObjC。
Perl → CamelBones というオープンソースのがある。
Java → Cocoa-Java があったけど、捨てられました。Java の object システムが硬いのが問題?
Javascript → Objective-J (Cappuccino) という web app を Cocoa で書ける opensource のがある。
あと、WebKit つかえば、Javascript から Cocoa の object をいじるのは非常に簡単。
AppleScript → AppleScript Studio... でも使ってる人ぴよまるさん以外にいるの?

MonoObjC → Mono (.Net のオープンソース版) から ObjC を呼べる。
Cocoa# → 同上、こちらのほうが Mono の公式版?でもあんまりアップデートされてないぽい。

C++ で Cocoa をかけるのってあったっけ?Objective-C++ で
C++ と Obj-C を混ぜられるのはそうだけど、Cocoa API を C++ の
クラス階層として実装したのってないよね?
そもそも delegate とか performSelector とか
C++ で実装しようがあるんでしょうか?

180:名称未設定
08/11/10 10:38:38 ku2SFWuM0
C++とか、今のスレの流れは別に興味ないけど、
>>135が今までどんなアプリを作ったのかが
非常に気になるw

181:名称未設定
08/11/10 11:56:44 W6D0WGgG0
多分、hello, world.だろ。

182:名称未設定
08/11/10 12:10:30 /kpuffDm0
ついで、「こんにちわ、世界」と出力しようとしたが、
エンコードがあっていなかったので文字化け。
キレる。

ってのが王道です。

183:名称未設定
08/11/10 12:56:58 r8VH7KRc0
@ も序でに忘れてんじゃね?

184:名称未設定
08/11/10 13:13:37 +x+/8+Ia0
 学び始めて間もなく、色々とやってみたのですが解決できず悩んでいます。
場違いかも知れませんが質問させてください。

 テキストフィールドからNSMatrixをつくり、個々のセルにint型の数値を表示しています。
マウスクリックで選択したセルから数値を取り出しています。
ところが、
個々のセルに対して、NSCellやNSTextFieldCellのメソッド、例えばsetTextColor:等を
送るとその後、セルから数値を取り出せなくなってしまいます。どうしてそうなるのかが
判りません。どなたかご教授いただけませんか?宜しくお願いします。

185:名称未設定
08/11/10 14:01:43 jRir/5vF0
>>184
セルを参照しているインスタンス変数を上書きしておらんか?

186:184
08/11/10 14:25:50 +x+/8+Ia0
>>185 レス有り難うございます。
セルの指定は、以下のようにしています。

[[matrix cellWithTag:n] setTextColor:[NSColor blueColor]];

ご指摘いただいたようにポインタを使った形にしてみたのですが、
やはり上手く行きませんでした。


187:184
08/11/10 17:40:23 +x+/8+Ia0
一人でばたばたして、連続の書き込みになり申し訳ないのですが、
もう少し補足させてください。

マトリクスのセル(テキストフィールド)に数値を設定しているそのメソッドにおいて、
セルの文字の色を変えようとしたとき、
「元の色 -> さらに元の色と同じ色を設定」
の場合はその後でも別のメソッドから数値が取得できる。ところが、
「元の色 -> 別の色に設定」した場合、取得できなくなる。

これはひょっとして文字の色を変更したことによって、
セルが持つテキストフィールドセルが別もの(オブジェクト)に
置き換わったということなのか?と考えています。
ご助言頂ければありがたいです。


188:名称未設定
08/11/10 19:16:30 k7er6Elw0
取り出せないって具体的にはどうなるんですか?
エラーでアプリケーションが落ちるとか?
期待した値じゃなくて0しか返ってこないとか?

189:名称未設定
08/11/10 19:35:34 NIf0gNWD0
値をセットするところ、ゲットするところのコードを見せた方が早いよ。
言葉だけじゃさっぱり伝わらない。

190:名称未設定
08/11/10 20:12:33 atwbsV0eO
昨日、ループからGUIのラベルを更新したいと言っていた者です
ループの存在するメソッドをスレッド化し、ラベル更新部分をメインスレッドで実行するようにしました

しかし、ラベルは更新されませんでした

更新部分は
[対象ラベル setStringValue:newLabel];
[対象ラベル display];
となっています
newLabelはログで確認済みです

携帯からなんで間違っているかもしれませんが、よろしくお願いします

191:184
08/11/10 20:43:59 +x+/8+Ia0
>>188,189 レス有り難うございます。簡略化したものを見て頂くと、
//クリックしてセルの値を取り出す
- (IBAction)getNumber:(id)sender
{
NSLog(@"%d", [[myOutletMatrix selectedCell] intValue]);
}

//数字をセット
- (IBAction)setNumber:(id)sender
{
[myOutletMatrix setMode:NSHighlightModeMatrix];

[[myOutletMatrix cellWithTag:0] setIntValue:1];
[[myOutletMatrix cellWithTag:1] setIntValue:2];
[[myOutletMatrix cellWithTag:2] setIntValue:3];

int i;
for (i=0; i<=2; i++){
[[myOutletMatrix cellWithTag:i] setTextColor:[NSColor blackColor]];//悩んでいる箇所
}
}

となります。これで setTextColorの引数[NSColor blackColor]のblackColorを他の色に変えると、
クリックしても値が取得できなくなります。

192:名称未設定
08/11/10 22:01:15 k7er6Elw0
>>191
[NSColor blueColor]に変えても
ウチでは元気よく動いてますが・・・。

10.5.5、DevTools多分最新。

193:名称未設定
08/11/10 22:34:29 wRpzRNtU0
自分はwhiteColorにしましたが動いていますね
数字は見えなくなりましたが...

194:184
08/11/10 22:50:22 +x+/8+Ia0
>>192 レス有り難うございます。
なんと・・。実はこちらは未だOS10.4.11で、XCODE2.5なのですが、
リファレンスではNStextFildCellは10.0以降とあるのでバージョン
のことはまったく頭にありませんでした。>>191のコードのままで上記
のような結果になっています。プログラミング初心者がおこがましいですが、
これはXCODEやコンパイラのバグと考えるべきなのか、それともまだ他に
原因があるのか・・・?取りあえず今日は頭を休めます。

いずれにしてもレス頂いた方々、わざわざ実際に試してくださった192さん、
感謝いたします。有り難うございました。

195:名称未設定
08/11/10 22:53:24 jRir/5vF0
>>194
なんでもバグの所為にすると怒られるよ。
どこか間違ってるんだろ。

196:184
08/11/10 22:55:24 +x+/8+Ia0
>>193さん、わざわざ試して頂いて有り難うございました。
やはり、私の環境に問題がある可能性が明確になってきました。
感謝です。

197:190
08/11/10 22:56:24 hIykeUF50
質問してる身であれですが、、、

>>184さん
カラースペースの設定とか関係ないでしょうか?
見当違いの回答かもしれないですが、RGB色空間を扱っているとき、[NSColor blackColor]が使えなかったもので、、、
自分も始めたばかりなんでそのあたりが知りたいです


198:184
08/11/10 23:29:28 +x+/8+Ia0
>>195さん そうですね、軽率でした。ご容赦の程。

>>197さん カラースペースというのは環境設定ーディスプレイの設定か
もしくはキャリブレーション関係でしょうか。もしそれならば、1670万色に設定されている
状態です。ガンマ補正以外はデフォルトのままにしています。しかし、そういうことがあるの
ですね。私はまだまだそこまで到達していませんが、いずれグラフィック関連のプログラミング
もできればと思っていたので、とても参考になりました。

お二方とも有り難うございました。

199:名称未設定
08/11/11 00:04:08 I3pahUr70
>>194
>OS10.4.11で、XCODE2.5

同じ環境で試してもちゃんと動くぞ(ちなみに192、193とは別人)

200:名称未設定
08/11/11 01:05:54 PUKvd1/H0
>>194
>>190

コード全体を晒したほうがいいんじゃないかな。
きっと自分では予期せぬところがおかしくなっていると思われる。

基本的に、なんかプログラムをかいて、バグがあって、
自分ではここがおかしいんじゃないかなというところを
いくら考えて修正しても正しく動かないばあいは、
その自分がここがおかしいんじゃないかなと思うところだけ
抜き出して 2ch で聞いても改善する可能性は非常に低いです。
なぜなら、そういうときはえてしてそこと違う場所がおかしいからです。

201:名称未設定
08/11/11 01:14:55 K+WZjSUa0
勘だが
- (IBAction)setNumber:(id)sender
{
[myOutletMatrix setMode:NSHighlightModeMatrix];

int i;
for (i=0; i<=2; i++){
[[myOutletMatrix cellWithTag:i] setTextColor:[NSColor blackColor]];//悩んでいる箇所
}

[[myOutletMatrix cellWithTag:0] setIntValue:1];
[[myOutletMatrix cellWithTag:1] setIntValue:2];
[[myOutletMatrix cellWithTag:2] setIntValue:3];
}
こうしたらどうなる?

202:名称未設定
08/11/11 01:29:08 wEupgvlC0
>>190
- (IBAction)start:(id)sender
{
[NSThread detachNewThreadSelector:@selector(doWork) toTarget:self withObject:nil];
}
- (void)doWork
{
for (int i = 0; i <= 100; i++) {
double percentage = i /100.;

[button setEnabled:(BOOL)percentage];
[textField setDoubleValue:percentage];
[progressIndicator setDoubleValue:percentage];

usleep(20000);
}
}

こんなテキトーなコードでも動いてます。
NSWindow上に置いた、NSButton, NSTextField, NSProgressIndicator
すべてガンガン更新されてます。@10.5.5

203:名称未設定
08/11/11 02:15:56 +aCpyxf+0
>>200
なるほど。。
提示されている例と明らかに異なる部分はあるのですが、
それがダメなのかはわかりませんからね。。

>>202
ありがとうございます
手元にMacがないのが辛い;いろいろ試したいのに

ちょっと流れをさらして見ます
ループを含むメソッドをもつクラスRoopTestと、ビューコントローラMyViewCtrlがあります

///myViewCtrlのメソッド
- (IBAction)push { //ループ開始
RoopTest* rt = [[RoopTest allc] init];
[NSThread detachNewThreadSelector:@selector(roopMethod) toTarget:rt withObject:nil];
}

- (void)updateLabel:(NSString*)newLabel {
[myLabel setStringValue:newLabel];
[myLabel display];
}

204:名称未設定
08/11/11 02:18:49 +aCpyxf+0
///RoopTestのメソッド
- (void)roopMethod {
/*
AutoPoolの宣言など
*/
while(1) {
/*
ループ内の処理
*/
if(....) { //更新する条件にはまった場合
[self performSelectorOnMainThread:@selector(updateMethod) withObject:Label waitUntilDone:YES];
}
}
}

- (void)updateMethod:(NSString*)newLabel {
MyViewCtrl* vc = [[MyViewCtrl allc] init]; //ビューコントローラのインスタンスカは無理?
[vc updateLabel:newLabel];
}

こんな感じです
ボタンプッシュ→ループクラスのインスタンス作成→ループメソッド呼び出し
→更新時、メインスレッドで更新メソッド呼び出し
→ビューコントローラのインスタンス作成→ビューコントローラ内の更新メソッド呼び出し

見づらくて申し訳ないです
なんか変な事やっているのは感じていますが、これでは動かないのでしょうか?

205:名称未設定
08/11/11 03:13:01 K+WZjSUa0
MyViewCtrl* vc = [[MyViewCtrl allc] init]; //ビューコントローラのインスタンスカは無理?
ここが諸悪の根源だ。

あと
performSelectorOnMainThread:@selector(updateMethod)
でコロンを忘れてる。

206:名称未設定
08/11/11 03:38:59 K+WZjSUa0
RoopTest* rt = [[RoopTest allc] init];
ここもなんだか気持ち悪いな。

207:名称未設定
08/11/11 08:11:40 fkU0XAOh0
何で画面更新の度に MyViewCtrl を alloc してるんだ?
どう考えたら、こんなコードを書けるんだろう...
あと、allc じゃなくて、alloc だろ。

明らかに自分のコードに問題があるのに、

>これはXCODEやコンパイラのバグと考えるべきなのか
とか、

>やはり、私の環境に問題がある可能性が明確になってきました。
とかよく言えるな。
コンパイラのバグとか考えるのは最後だろ。


208:名称未設定
08/11/11 08:12:02 PUKvd1/H0
updateMethod: で newLabel をどう渡しているつもりなのか?
あと、
MyViewCtrl* vc = [[MyViewCtrl allc] init]; //ビューコントローラのインスタンスカは無理?
無理ではないけど、そうやってつくったものは
インターフェースビルダーで既につくったオブジェクトとは別のものです。

209:名称未設定
08/11/11 09:13:26 FpRggH2w0
あんまし速度を求めないのであれば
スレッド使うよりNSTimerにした方が無難だと思うけど。

210:184
08/11/11 09:57:42 zECfChq+0
皆さん、レスポンス頂いて有り難うございます。
>>207さん、203、204さんは私とは別の方です。軽卒な発言を書いたのは私の方です。
平にご容赦ください。

>>200さん >>191のコードのみで、やはり値が取り出せない状況になっております。
>>201さん 結果は変わりませんでした。
>>199さん、わざわざ試していただき有り難うございました。199さんが>>191のコードのみで
検証されたとしますと、私のInterface Builderでの作業が間違っているのかもしれないと考え始め
ました。

夜まで作業できませんが、なんらかの結論なり経過なりはまたご報告させて頂きます。
有り難うございました。

211:名称未設定
08/11/11 10:23:26 fkU0XAOh0
>>210
>>>207さん、203、204さんは私とは別の方です。
勘違いしてた。スマソ。


212:203
08/11/11 12:21:53 a+a3ujwr0
みなさん、いろいろ助言をありがとうございます
調べたところ、NSConnectionを用いてスレッド間通信をすればよいとあったのでやってみたところ、ついに出来ました!
やはり、ラベルの授受がうまく行ってなかったようですね
ということは、インスタンスオブジェクトのメソッドからの更新は無理ということですかな?
上にある、RoopTestにIBOutletを定義しても更新できなかったので。。

とりあえず、今後のGUI更新作業は、必ずコントローラ上で行うようにします

213:名称未設定
08/11/11 12:44:52 FpRggH2w0
>>212
結局やりたい事は名にだったんだろう?
NSTimerだとかなり簡単なんだが。

214:203
08/11/11 12:52:55 a+a3ujwr0
>>213
目的の処理はとても重いのですが、NSTimerも重いとのことだったので避けていました
ループメソッドがコントローラクラスのメソッドではなく、別クラスのものだったため、例があまりなかったので悩んでいました
正直わかりやすくするためで目的の結果には必要ないものなので、時間をとってしまったのは失敗でした^^;



215:名称未設定
08/11/11 12:58:33 K+WZjSUa0
>ということは、インスタンスオブジェクトのメソッドからの更新は無理ということですかな?

可能。やり方を知らないだけ。
NSConnection なんて馬鹿げたことするよりよほど簡単にできる。

216:名称未設定
08/11/11 13:16:49 PUKvd1/H0
どうも 203 さんは日本語力が足りない気がする。
自分が書いたことを、相手が読んでわかるためには
何をどこまで書いたらいいか、考えていますか?

あなたにとっては暗黙の了解でも、読んでる人にはわからないかも知れないし、
読んでる人にはそもそもまったく納得出来ない話かもしれません。

「NSTimer も重いとのことだったので」なんてどこから出て来たのか?
NSConnection なんかつかわなくても、
performSelectorOnMainThread で withObject: で渡せばいいんでないかと
おもいますが...

217:名称未設定
08/11/11 13:24:59 wEupgvlC0
>>203
///myViewCtrlのメソッド
- (IBAction)push { //ループ開始
RoopTest* rt = [[RoopTest allc] init];
[NSThread detachNewThreadSelector:@selector(roopMethod:) toTarget:rt withObject:self];
}


///RoopTestのメソッド
- (void)roopMethod:(MyViewCtrl*)myViewCtrl {
/*
AutoPoolの宣言など
*/
while(1) {
/*
ループ内の処理
*/
if(....) { //更新する条件にはまった場合
[myViewCtrl performSelectorOnMainThread:@selector(updateLabel:) withObject:Label waitUntilDone:YES];
}
}
}

どうでも良いんだけど、roopはloop。

218:203
08/11/11 13:49:08 a+a3ujwr0
>>216
>>209
>あんまし速度を求めないのであれば
>スレッド使うよりNSTimerにした方が無難だと思うけど。
から勝手に重いものと解釈していました、申し訳ないです

performSelectorOnMainThreadは初め使っていました
が、できなかったのですが。。
>>217をみてわかりました
いろいろと勘違いをしていたようです

みなさんありがとうございます

最後に、差し支えなければNSConnectionが劣っている?理由が知りたいです

219:名称未設定
08/11/11 13:54:33 4BivI9sj0
自分だったらthread側はstringに対するアクセッサ用意するだけで何もしない。
Thread側から他へ要求すると遅くなるし、結合度が強くなって簡単に修正できなくなる。
メイン側はtimerかevent loopのついでに進捗見て非同期にゆっくり表示すれば良い。
人間が視認できる速度は知れてるからそれで十分

220:名称未設定
08/11/11 14:21:48 LVzKoGmm0
> NSConnectionが劣っている?
というよりは、この場合は不必要である処理が間に挟まっちゃいます。
適材適所でご利用ください。

221:名称未設定
08/11/11 20:37:16 nt03fgQI0
超初心者です。
windowの立ち上がり時にcomboBoxに項目を自動的に加えたいのですが・・・

たぶんtableViewの時と同じようにdatasoceとして登録しておくのか、
window起動時の動作を定義できる関数とかがあるのだろうと思って調べたのですが
見つかりませんでした。

222:名称未設定
08/11/11 20:45:45 nt03fgQI0
一応IBのwindowのデリゲートをコントローラに接続して
windowWillMoveをオーバーライドすることによって
windowを動かしたときの定義はできたのですが・・・・・

windowを開いたときの動作を定義する関数もあるのでしょうか?

223:名称未設定
08/11/11 20:58:42 nt03fgQI0
データソースで登録できますね。
お騒がせして申し訳ございません。

224:名称未設定
08/11/11 22:21:22 nt03fgQI0
データソースで登録する仕方がわかんねー

225:名称未設定
08/11/11 22:52:41 mgiOCDFu0
URLリンク(www.oomori.com)

datasource使わなくてもできるっぽいけど。

226:名称未設定
08/11/11 23:07:33 nt03fgQI0
>>225
確かに出来るんですが、起動時にすでにcomboBoxの中に項目が追加されているように
したいんですよね。
で、最初はwindowDidBecomeKeyのオーバーライドでクリアさせたんですけど、
でもデータソースがあるって知って、今それをトライしているところです。

227:名称未設定
08/11/11 23:18:55 u7V+zvQV0
>>226
awakeFromNibで追加するのはダメなん?

228:名称未設定
08/11/12 00:23:06 7kG+RNj90
>>224
これじゃ駄目?
-(void)awakeFromNib{
int i;
_array = [[NSMutableArray alloc] initWithCapacity:0];
for(i=0;i<10;i++){
[_array addObject:[NSString stringWithFormat:@"String%d",i]];
}
[myComboBox setUsesDataSource:YES];
[myComboBox setDataSource:self];
}

windowBecomeKeyをどうしても使いたいなら、
-(void)windowDidBecomeKey:(NSNotification *)aNotofication{
if([myComboBox dataSource] != self){
上と同じなので略。
}
}

で、↓これ。

-(int)numberOfItemsInComboBox:(NSComboBox *)aComboBox{
return [_array count];
}
-(id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index{
return [_array objectAtIndex:index];
}
酔っ払ってカキコしてるから間違ってたらすまん

229:名称未設定
08/11/12 12:21:14 /WVpT08D0
NSTextFieldのSubClassを作って並んでいる状態でtabキーを押してもNextKeyViewに移動しないんですがなにか特殊な処理は必要ですか?

SubClassでは
- (id)initWithFrame:(NSRect)r
{
self = [super initWithFrame:r];
if(self){
[self setDelegate:self];
before = [[NSString string] retain];
}
return self;
}

- (BOOL)becomeFirstResponder
{
[before release];
before = [[self stringValue] retain];
return [super becomeFirstResponder];
}
- (void)textDidEndEditing:(NSNotification*)aNotification
{
if(![before isEqual:[self stringValue]]){
[[NSNotificationCenter defaultCenter] postNotificationName:@"TSTextDidChange" object:nil];
}
}
しか処理をしておらず、編集終了時に内容に変更があれば、別のControllerで
[window setDocumentEdited:YES];
を処理する、と言った感じです。
Controllerで通知を受け取らないのは、bindingを設定してあり通知がControllerに来なかったためです。

Xcode、OSともに最新のものを使用しています。
どなたかお知恵をお貸しください。

230:名称未設定
08/11/12 12:36:08 rhZoTYoC0
>>229
- (BOOL)resignFirstResponder {
return NO;
}

は書いてある?

231:名称未設定
08/11/12 12:39:39 rhZoTYoC0
>>230
逆だったorz

- (BOOL)resignFirstResponder {
return YES;
}

232:名称未設定
08/11/12 12:58:01 DjwU0p+F0
>>229
何でこんな無茶苦茶なコードを書く必要があるのか聞きたいw
サブクラス作る必要もないし、自分自身をdelegateにする必要もないし、Notificationをわざわざ転送する必要もない。

233:名称未設定
08/11/12 13:02:27 /WVpT08D0
>>230
ありがとうございます。
それは書いていませんが、オーバーライドしていないメソッドは
SuperClass(この場合NSTextFieldやNSControl)のものが勝手に使われる
という認識ですが間違っているのでしょうか。

ところで今回の件に関しましては自己解決しました。。。
- (void)textDidEndEditing:(NSNotification*)aNotification
{
if(![before isEqual:[self stringValue]]){
[[NSNotificationCenter defaultCenter] postNotificationName:@"TSTextDidChange" object:nil];
}

[super textDidEndEditing:aNotification]; ←これがポイント。
}

と、最後にSuperClassのメソッドを呼び出してやることで無事にNextKeyViewが選択されました。

この問題に取り組んでくれた皆様、ありがとうございました。

234:名称未設定
08/11/12 13:08:58 /WVpT08D0
>>232
私も正直こんな面倒なことはしたくなかったのですが。。。
Bindingを使いこなせていないせいかイマイチ「編集終了時に値が実際に変更されているかどうか」
を比較する手段が思い浮かばずこんなことになった次第です。

235:名称未設定
08/11/12 13:47:41 rhZoTYoC0
>>234
>編集終了時に値が実際に変更されているかどうか
それだけなら普通にデリゲート使えばいいんじゃね?

236:名称未設定
08/11/12 14:00:48 bpwWLlCO0
>>234
Core Dataを使ったり自分でUndoを実装すればsetDocumentEdited:YESは自動でなされるだろうし、
そこまでしない小規模なものならdelegateのcontrolTextDidChange:でいいし、
Bindingされているモデルが変更されたときやりたいならモデルに対してKVOすればいいと思う。

237:名称未設定
08/11/12 14:26:27 L0OFkZM60
どうぞ

キー値監視について(Key Value Observing)
URLリンク(developer.apple.com)


238:名称未設定
08/11/12 15:04:38 /WVpT08D0
>>235
Bindingが設定してあるNSTextFieldからはDelegateしても通知がポストされなかったんです。

>>236
>>237
CoreDataは一度かじって挫折してました。今度調べてみようと思います。
とりあえずはKVOの方向から解決策を模索してみます。



239:名称未設定
08/11/12 15:28:59 RkfhbVlK0
>>238
Bindingしてても普通にデリゲートメソッド呼ばれるよ?
念のため書いておくとtextDidEndEditing:はデリゲートメソッドじゃないからね。
controlTextDidEndEditing:かcontrolTextDidChange:を使えばいいと思う…が、
もちろんcontrolTextDidEndEditing:は変更の有無は関係ないし呼ばれたときにはBindingで変更された後だから、
その用途には向いていないのかもしれない。

240:名称未設定
08/11/12 15:59:05 /WVpT08D0
>>239
textDidEndEditing:はDelegateではないんですか。
大きな勘違いでした。どうりで。。。

そしてDelegateが呼ばれるということは
そのときの私の何か他の部分がよくなくて正しくない動作をしていたか
もしくはtextDidEndEditing:がController側で実装してあり呼び出されなかった、
という話だったのではないかという気もしてきますね。

じっくり調べてみます。


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

241:名称未設定
08/11/12 20:29:57 3TV0qhbR0
URLリンク(www.friday.com)
darwinsourceに最近、追加された(?)AutoZoneって何かと思ったら、objcのgcなんだ?

242:名称未設定
08/11/12 21:22:46 xTjUSaTU0
>>228
非常に参考になりました。
ありがとうございます。
あー僕も酔っ払いながらかけるようになりたいっす。

243:名称未設定
08/11/13 05:09:02 Zr8Iqv0x0
暫くcocoaから離れてたんですが、
ファイルをゴミ箱に入れる方法ってNSworkspace以外に実装されてませんかね?ゴミ入れ音付で

244:名称未設定
08/11/13 08:32:00 z+Jww09y0
NSAppleScriptでFinderにやらせれば音が出るよ。

245:名称未設定
08/11/13 09:22:35 XbONM5Ht0
Finder でゴミ箱にすてるのと同じ動作をする API が
Leopard で Carbon に追加されてます。
URLリンク(developer.apple.com)
の File Manager のところを参照。

246:名称未設定
08/11/13 20:54:10 Jm2bYpNn0
初心者です
ボタンを押したら新たにwindowを表示したいんですが
そういった関数をご存知の方いませんか?


247:名称未設定
08/11/13 21:02:24 qC4pYBiI0
>>246
まずオブジェクト指向の意味を理解してください。
そうすれば自ずと何をすれば良いか分かります。

248:名称未設定
08/11/13 21:15:19 hEQXH/4q0
複数のウインドウを表示したり制御するのって意外と難しくて面倒なんだよね。
メニューのアクションとかもキーウインドウに対してセンドしなきゃいけないし。

249:名称未設定
08/11/13 21:21:03 Jm2bYpNn0
>>247
そこまで戻る必要があるんですか・・・・・
ただ単にAPIの問題だと思っていたのですが・・・・
深いですね。

250:名称未設定
08/11/13 21:33:42 Eaz1tdC20
単にダイアログを表示するだけならAPIの問題だけどな。

251:名称未設定
08/11/13 21:39:35 uPguWfkE0
>>246
Interface builderだけで簡単に作れるよ

252:名称未設定
08/11/13 21:53:20 Jm2bYpNn0
>>251
customViewを使うことにしました。
教えていただいてありがとうございます

253:名称未設定
08/11/13 21:55:02 Eaz1tdC20
何をやりたかったんだ……

254:名称未設定
08/11/13 22:07:32 NIwWlo0Q0
>>252
えええ、アクションつなぐのじゃdameなの?

255:名称未設定
08/11/13 22:35:51 qC4pYBiI0
www

256:名称未設定
08/11/13 22:55:55 Jm2bYpNn0
>>253-254
何とかボタン一つでwindowを表示させることに成功しました
お騒がせしてすみません。

257:名称未設定
08/11/13 23:03:14 2FfKOU+J0
Finderウインドウの表示内容を更新する方法って
NSFileManagerでフォルダを作る意外には無いのかな

258:名称未設定
08/11/13 23:07:22 cv3LdfgN0
>>257
NSWorkspaceのnoteFileSystemChangedではだめ?

259:名称未設定
08/11/13 23:21:55 2FfKOU+J0
>>258
noteFileSystemChangedでは更新されるときとされないときがあるんだよね。
特に、smbでマウントしたwindows共有フォルダには効かなくて、無理矢理不可視フォルダを作って削除する方法で対処してる。


260:名称未設定
08/11/14 03:52:32 Z7zd+aLz0
>>246
まず手始めにwindow画面を起動時に見えなくして
NSWindowクラスのmakeナンタラ関数で前面に出してきたらいいんじゃないのか?
後IBでコネクトね。

オブジェクト指向を理解してても出来ませんよ。
APIの問題です。

261:名称未設定
08/11/14 20:14:55 9weqjvTi0
今はCarbonのGestaltを使っているんだけど、CocoaでOSのバージョンを
取得する方法はありますか?

262:名称未設定
08/11/14 22:32:15 9w5lRAlf0
>>261
[[NSProcessInfo processInfo] operatingSystemName]

263:名称未設定
08/11/14 22:45:01 xk6PzQrT0
いつも気になるんだが
NSWorkspaceとNSProcessinfoのメソッドの分け方がおかしい
と思うのは俺だけだろうか。

直感的じゃないんだよな

264:262
08/11/15 00:33:02 /jR4jH2p0
すまん、間違えた
[[NSProcessInfo processInfo] operatingSystemVersionString]

265:名称未設定
08/11/15 01:13:29 Fo6g+zIo0
どうせ NSProcessInfo も最終的に Gestalt を呼んでるんだろうから
Gestalt でいいんでは?

266:名称未設定
08/11/15 11:36:16 4imPoNXz0
ローカリゼーションとかで使う .strings ファイルの形式って、どっかに詳細なスペックは
あるかな?

自分でも同じフォーマットを利用しようと思って(ローカライズ目的ではないけど)、
foo = var; 式のエントリの文字列を -[NSString propertyListFromStringsFileFormat]
でパースさせているんだけど、エラーになる条件がよくわからない。
 class = hogehoge;
みたいに、1単語の時はクォートしなくていいように一見見えるんだけど、少し違うタイプ
 name[0] = hogehoge;
だとエラーになる。

267:名称未設定
08/11/15 11:56:07 7DuJOrGV0
URLリンク(developer.apple.com)

268:261
08/11/15 13:03:33 8pxLxWly0
>>262,264
ありがとう。NSProcessInfoとは・・・なかなか見つからないわけだ。
>>265
今はGestaltで間に合うけど、Carbonもいつまでサポートされるか
わからないからね。

269:266
08/11/15 14:34:07 9X9dz6u50
>>267
あ、どうもありがとうございます。

でもよく考えたら自分の最終目的は なんたら = かんから; のようなエントリが複数ある
ファイルから、この なんたら/かんたら のペアを取り出すことでしたw
で、.strings用のAPIが使えないかと思った、という流れです。でも厳しそうですね。

ここで なんたら や かんたら は、
name[0]のような式の場合もあれば、文字列の場合もある。複数の語からなる文字列の
場合はダブルクォートで囲まれる。文字列自身にダブルクォートが含まれる場合は
バックスラッシュでエスケープする。みたいな感じです。

ちゃんとやろうとするとパーサーみたいのを書かないといけないと思うんですが、
もし出来合いのものがあるならそれを利用しようかと.... プログラムの設定ファイルとかで
ありがちな処理だと思うので、何かいいものがあれば....
CocoaなのでObjCから利用できるものが望ましいです。よろしくお願いします。

270:名称未設定
08/11/15 14:38:35 7DuJOrGV0
>>269
そゆばあいはNSUserDefaults使います。

どうしても .stringsでなきゃならないなら、
-[NSBundle localizedStringForKey:value:table:]
で無理やり。

271:名称未設定
08/11/15 14:51:20 Fo6g+zIo0
>>269
.strings ファイルは "..." = "..." しか公式にはサポートされてないんではとおもいます。

それは OS X 以外のソフトとデータをやりとりする必要がある?
OS X だけですむなら、単に内部では NSDictionary でもっておいて、
保存するときには plist 形式で書き出すだけで済むと思います。
OS X 以外とデータをやりとりする必要がある場合でも、
2008年暮れにもなってパーサを自前で書くのは馬鹿らしいとおもいます。
単に XML で書き出して、(plistもXMLなのでそれでいいですが、)
ほかのプラットホームで読むときはXMLライブラリつかって
読み込むのが簡便だとおもいます。


272:名称未設定
08/11/15 14:54:03 7DuJOrGV0
ごめん。全然読まずにレスしてた。

たぶん、そういう特殊用途なら自力でパースした方が早いです。
NSScannerならObjCで使うことが可能です。:-)

273:266
08/11/15 14:58:56 9X9dz6u50
>>270
>そゆばあいはNSUserDefaults使います。

えーと、状況は なんたら = かんたら; みたいのが沢山入ったファイルがまずありきで、
この なんたら/かんたら のようなペアをロードしたいのです。

ただ、ここで なんたら と かんたら はダブルクォートで囲まれた文字列とは限らず、
そういう場合に.strings用のAPIだと失敗するようなのでどうしましょう、という流れです。

わかりにくくてすみません。もしかしてCocoaと関係ないかもしれないですね。

274:名称未設定
08/11/15 15:05:03 7HtqMIxl0
プロパティリストでいいじゃん。
NSDictionaryをそのまま保存すればいいよ。

275:266
08/11/15 15:29:05 9X9dz6u50
>>271
OS Xではあるんですが、自分の直接の管理下にない別のソフトが なんたら = かんたら;
みたいなフォーマットでデータを吐き出してくるのです。で、それを処理します。
長期的にはそのソフトが最初からplist(XML)を吐き出すべきなんでしょうが、差し当たってw

>>272
一応、そこそこ汎用な解析をしないといけなそうな感じなんですが、
NSScanner がおすすめですか。使ったことがないので調べてみます。

276:名称未設定
08/11/15 19:31:31 74MSLTm4P
汎用性を持たせるならJASONって手もあるよ

277:名称未設定
08/11/15 19:34:08 74MSLTm4P
間違えた、JSONか

278:名称未設定
08/11/16 02:31:44 5nyRUfyn0
>>275
>自分の直接の管理下にない別のソフトが なんたら = かんたら;
>みたいなフォーマットでデータを吐き出してくるのです。
なるほどそれはしかたないですね。

NeXT 形式 plist で読み込ませればなんとかなるかもしれないです :
URLリンク(developer.apple.com)
あなたのファイルを読み込んで、さらに { ... } で囲んだら、
NSPropertyListSerialization をつかって NSDictionary に出来ると思いますが、
Unicode が通るかどうかわかりません。

僕なら perl か ruby かなにかでそのフォーマットのデータを
plist に書き換える短いスクリプトを書いて、
Cocoa からそのスクリプトを呼びますが。

279:266
08/11/16 04:41:34 NL8p9MOk0
>>277
>JSON
おーなんか面白そうですが今回はとりあえず。

>>278
>NeXT 形式 plist で読み込ませればなんとかなるかもしれないです :
結局CFPropertyListほげに処理が行くようで、エラーになる感じは>>266と同様のようです。

>僕なら perl か ruby かなにかで
確かに、正規表現で切り出したりすればいいですかね。
左辺or右辺が文字列リテラルのときとそうでないときがあるのがちょっと面倒ですが...

280:名称未設定
08/11/16 05:06:34 IF7lggCK0
NSScannerでパースするのが一番楽だと思うな。
たいして複雑な書式じゃないようだし。

281:266
08/11/16 06:29:16 NL8p9MOk0
>>280
まだNSScannerを理解しきれてないですが、割と単純に文字をスキャンするだけじゃない
ですかねえ?
書式には文字リテラルが含まれるので、そんなに単純じゃなかったりします。例えばリテラル内に
¥"が現れる可能性もあったり... 結局、それなりの状態遷移を書く必要があるような。

とりあえずperlで正規表現を考えてみました... 文字リテラル用の表現が、なんとかできたかなあ
という感じです。文字リテラルじゃないときの場合分けはむしろ簡単かな。

282:名称未設定
08/11/16 11:57:37 IF7lggCK0
>>281
NSScannerはその名の通りスキャンするだけだから、この場合は「"なんたら" = かんたら\";」から「"なんたら"」と「かんたら\"」を
取り出すだけしか出来ないね。エスケープされてるのがダブルクォーテーションだけならその後置き換えればいいだけだけど。
正規表現使うならPerlじゃなくてもCocoaから使えるライブラリもあるよ。
URLリンク(www8.ocn.ne.jp)

283:266
08/11/16 21:53:32 NL8p9MOk0
>>282
>この場合は「"なんたら" = かんたら¥";」から「"なんたら"」と「かんたら¥"」を
>取り出すだけしか出来ないね。

こういう風に、値のデリミタが異なる場合を毎回試さないといけないので、なんかすでに面倒感
が出てくるというか...

>エスケープされてるのがダブルクォーテーションだけならその後置き換えればいいだけだけど。

勿論¥自体もエスケープされていることがあります。ので、上の場合のでも¥のさらに手前が¥かどうか
調べないといけなくて、下手するとさらにその前、みたいなバックトラックモードに...
で、そういうのを普通のプログラムで書いていると、
「これって正規表現を展開したのを書いてるんじゃないか?」、という気分になってくるという....

>Cocoaから使えるライブラリもあるよ。

ちらっと眺めてみました。よさげですね。
なんか正規表現のセットが複数種類あるみたいですが... ONIG_SYNTAX_PERL というのを
有効にしたい場合はどうしたらいいんですかね? (ソースを調べろって?)

284:名称未設定
08/11/17 07:34:57 WMJOqaGa0
ステートマシンを書くといいよ

285:名称未設定
08/11/17 21:43:05 VleoNMSp0
前スレでCGImageRefの輪郭抽出でお世話になったもんです。
御礼が遅くなりましたが、とりあえず無事解決?したのでご報告まで。

結局、シェーダー書いてCoreImageで処理に落ち着きました。クリック判定の時だけ
CGColorAtX: Y:で判定というかなりテキトウな処理です。

いまのところ問題なく動くようです。アドバイスしてくれた方、ありがとうございました。
しかし、CoreImage面白いですね。

286:前スレ947
08/11/17 21:43:56 VleoNMSp0
間違えた… 285です。メール欄に名前入れちまったい…

287:名称未設定
08/11/17 22:50:50 AI8JnSZ50
NSOpenPanelでオープンダイアログ出すと
スレッドの数が異常に増殖するんだけど
これって普通ですか?

5-6スレッドも何に使ってんだろ・・・。

288:266
08/11/17 23:25:37 VM9cdE+20
>>284
正規表現はそれと同等な有限オートマトンで表現できる... いえ、もうそこはいいですw
巷に優秀な正規表現コンパイラが溢れる今日日、固定パターンの受理マシンを最初から作るのは...
今回。文字リテラルを含む入力の正規表現を確定するのに少し試行錯誤しましたが、
同じことを毎回プログラムの変更でやるのと、どっちが楽かと..

しかし、Cocoaでネイティブに正規表現をサポートしてくれたりしないのかな。おしまい。

289:名称未設定
08/11/18 00:48:50 d2ANkhTZ0
>>287
modalってだけて、ランループを3つぐらい塞いでる気がするし、
あとディレクトリに変化あったら自動で更新されるのもスレッド立ててる気がするし
まぁ5-6スレッドぐらいすぐ使うんじゃない?

290:名称未設定
08/11/18 20:18:09 wWLAMWH+0
>>288
時代遅れな技ですが。

#define Pattern NSClassFromString(@"java.util.regex.Pattern")

NSJavaSetupVirtualMachine();
id matcher = [[Pattern compile:@"ab(.+)cd"] matcher:@"ab123cd"];
BOOL result = [matcher find];
if(result) NSLog(@"%@", [matcher group:1]);



291:名称未設定
08/11/19 01:24:15 awxWx5gM0
>>290
なるほどー。試してみると、最初の一回は時間がかかるけど2回目以降は悪くないですね。

Java -> Cocoa は確か新規のCocoa APIが今後サポートされないとかいう話がありましたが、
Cocoa -> Java の方も同じことになるんですかね?
Cocoa というより ObjC と書くべきなのかもしれないけど。

292:名称未設定
08/11/19 15:26:17 BWlnzWKG0
Dictionaryに格納すると
順番がめちゃくちゃになるんですけど・・・・・
なにかいい方法ないですか?

293:名称未設定
08/11/19 15:36:59 7EA3pAHdP
NSArrayにも格納したら?
NSDictionaryやNSArrayはオブジェクトのコピーじゃなくてそのポインタを格納するだけだから,
両方使ってもメモリが一気に増えるってことはないと思う.

294:名称未設定
08/11/19 16:11:23 LDJCxdq70
ソートも使えるしな

295:名称未設定
08/11/19 16:13:18 BWlnzWKG0
>>293-294
そうします。
ありがとうございます。

296:名称未設定
08/11/19 21:02:02 gPj/kG9F0
>>291
java -> ObjCもObjC -> javaもサポート停止です。というか保守停止かな?バグが発見されても放置みたいな。
下位互換のために、それ自体は、OSの中に残るようですけども。

297:名称未設定
08/11/19 23:16:35 TXTxCrRP0
>>292
めちゃくちゃってか、アルファベット順とかそんなんだろ?

298:名称未設定
08/11/19 23:44:27 tDuS/dfz0
っていうかディクショナリに順番を期待するのが間違いだよね。

299:名称未設定
08/11/19 23:50:44 NbUmXR8v0
>>298
普通本屋で売ってる辞書って順番にデータが格納されてるよね...
いや、僕らは NSDictionary はハッシュテーブルだって知ってるから
順番を期待しないけど、プログラムはじめたばかりのひとが
混乱してもしかたないんじゃないかな。

それで気になるのは、~/Library って素人は中をいじっちゃだめだけど、
日常用語としては図書館には行ってもいいはずだから、
すくなくとも英語圏の素人さんなら中に pdf を大量にためちゃったりとか
ある気がするんだが問題ないんだろうか。

300:名称未設定
08/11/19 23:54:18 ie6rHw0y0
ディクショナリに順番を期待するってREALbasicからの移行組?
コイツはハッシュ型でありながら追加した順番も保持されてるんだよな。

301:名称未設定
08/11/20 00:36:58 3uwYS9mh0
>>299
>Library
中をあけたらすでにごちゃごちゃとフォルダが入っているのは
わかるはずだから、自分で自由に使っていいフォルダとは違う
ということぐらいはわかるんじゃないのか。
もっともアメリカに限っていえば、ぬれた猫を電子レンジに
かける人がいるお国柄だからどうだかわからんが…

302:名称未設定
08/11/20 00:41:31 /EKcz7fk0
そもそもアメリカ人は馬鹿だから Library と聞くと怯えて近寄らないとか?

303:名称未設定
08/11/20 11:32:25 bdDdnpxd0
図書館に自分の本を勝手に置いて来たり
中身を書き換えたりするようなことは普通しないと思う

304:名称未設定
08/11/20 22:48:47 USnih3EQ0
>>302
でもおれたちはその馬鹿なアメリカ人が作ったソフトでひいひい言ってるんだぜ?

305:名称未設定
08/11/21 00:37:17 Mt+yfcCZ0
cocoaって標準で正規表現使えないの?
どんだけ屑なの?

306:名称未設定
08/11/21 00:40:11 ulllyDug0
OgreKit

307:名称未設定
08/11/21 02:58:00 KDDxp3BY0
雪ヒョウではOgreKitを標準で搭載すべきだ

308:名称未設定
08/11/21 02:59:39 603c8RI50
毎回フレームワークを追加して<OgreKit/OgreKit.h>を書くのがめんどくさい

309:名称未設定
08/11/21 04:02:45 Iagf3QtT0
OgreKit 自体はすごいんだろうけど、Cocoa に取り込むとした場合、既存の Unicode 処理との
整合性が気になるけど大丈夫なんだろうか。Unicode の正規化の規則とか、case insensitive で
マッチした場合の振る舞いとか... そこら辺、何か気づいた人はいますか?

一方、Cocoa は内部で ICU をいろいろ参照しているみたいなんで、もし正規表現を実装することに
なるならやはり ICU を経由するのかなあと思うが...

310:名称未設定
08/11/21 04:09:28 M0Acd2jx0
>>309
おお、我が母校はCocoa内部からも参照されていたか。

311:名称未設定
08/11/21 04:17:30 ulllyDug0
>>310
笑ったww
自分は卒業生でも関係者でもないが、そのネタ分かる人どれだけいるんだ?

312:名称未設定
08/11/21 04:41:23 Iagf3QtT0
あそこ広々して、雰囲気もいいよね。やはりCならではとでも言いましょうか...
ほとんど関係者じゃないんだけど、知り合いの先生が教員用住宅に住んでてそこが結構広くて、
飲み会(一応アカデミックな)とかよく開いてもらったなあ。
そういえばかつて天文台にも用があったので、何かの拍子にNAOって綴りをみると思い出すw

しかしICUは一般的にはいろんな管を繋がれてピッ、ピッ、とか鳴ってるイメージかとw

313:名称未設定
08/11/21 09:31:03 cugDLjhM0
あれ?聞いた話では構内での飲み会は禁止だったが…今度あったら確認してみよう。
って、Cocoaはどうした?

314:名称未設定
08/11/21 09:34:44 pKv4qdEc0
Cocoaどこ?わたしは誰?

315:名称未設定
08/11/21 10:17:50 AatvtfKP0
俺はUnicodeのみの制約を嫌ってオリジナルの鬼車の方を使ってる。

316:名称未設定
08/11/21 13:25:04 6z3WSjYr0
>>305はどんな言語を使ってるの?

317:名称未設定
08/11/21 13:43:56 M0Acd2jx0
パァるじゃね?パァる。

318:名称未設定
08/11/21 14:23:01 jqALT49u0
ぱぁる厨の城東区だからね

319:名称未設定
08/11/21 14:35:54 KDDxp3BY0
Rubyでも正規表現は使えたはず。
REALbasicも3.5あたりから内蔵されてバリバリ使えるしね。
だが俺はCocoaが屑とは思わん。むしろマンセーしてる。
AppleがPascalかBASICでCocoaアプリ作れるようにしてくれれば
もっとマンセーするんだけどねぇ

320:名称未設定
08/11/21 18:13:59 JwOtb6rU0
>>319
つ 旧OS

321:名称未設定
08/11/21 18:25:23 FH+sWgoq0
Cocoa-Perlが出たらパァる厨も大喜び

322:名称未設定
08/11/21 18:45:13 tTr4sDtj0
regex(3)じゃだめなの?俺仕事のコードでバンバン使っちゃってるけど。

323:名称未設定
08/11/21 20:00:45 7NEuk8Da0
regex(3)の機能で充分ならばそれでいいんでないの

324:名称未設定
08/11/22 00:01:23 Fh4kVmb/0
>>321
CamelBones が既にあるよ。

>>319
Pascal、BASIC と Obj-C のどこに違いがあるのかわからん。
見た目はちがうが、ほとんど文法一対一に対応するのに。

325:名称未設定
08/11/22 10:33:51 Ua3yloZ/0
>>324
CamelBones、中の人がやる気がなさすぎでしょう。
10.5になるまでは「標準でのるかも?」って勢いだったけど、その後失速し
て、いまじゃそのままでは動かない。他の人があてたパッチでかろうじて、、、




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