Cocoaはさっぱり!!! version.8at MAC
Cocoaはさっぱり!!! version.8 - 暇つぶし2ch350:348
07/09/23 16:27:42 74QYrWGQ0
>>349
下記ページの一番下の図にある通りのやり方なのですが、
根本的に間違っているのはどの辺でしょうか。
URLリンク(journal.mycom.co.jp)

条件式以外には何が必要ですか?
お教え願います。

351:名称未設定
07/09/23 19:40:13 shGaGM9l0
>>350

== ではなくて、likeとかcontains[cd]を使いましょう



352:351
07/09/24 20:34:56 s/hLGoL70
>>350

Set Predicate ボタンはちゃんとクリックしているのでしょうね?



353:348
07/09/24 20:58:16 o5Y8mmRh0
>>352
クリックしています。わかりにくい書き方でしたが、>>348
「Set Predicate した」というのはボタンを押したという意味です。

>>351 で predicate の書式についてお教えいただきましたが、
== を使わない方が良い理由は何でしょうか?

== と書いた predicate を NSArrayController にバインディングで
設定した場合にはきちんと動作しており、書式は問題ないと思うのですが。

>>349 は別の方でしょうか?「根本的な間違い」というのが何なのか、
まったくわからないままなのですが‥。

354:351
07/09/24 22:12:01 s/hLGoL70
>>353
>== を使わない方が良い理由は何でしょうか?

こちらの勘違いでした。
Predicate Programming Guideの例で
>Simple comparisons, such as grade == 7 or firstName like 'Mark'
というのがあがっていて、文字列の比較には==が使えないと思い込んでいました。
昨日試したら==でもOKでした。

predicateの設定なんて、predicateを書いてボタンをクリックするだけで他にすることはないはずです。

例えば、NSTreeControllerで parent == nilと設定すれば、第一階層のアイテムだけが
表示されます。

お役に立てず、すいません。

355:名称未設定
07/09/24 22:45:14 s/hLGoL70
ここ数日のうちにCocoabuilderやCocoa Bindings Examples and Hintsで
NSIndexSetのメソッドcountOfIndexesInRange:
を使ったコードが出ていますが、Tigerにはこんなメソッドはありません。

Leopardで導入されるものでしょうか?
NSTableViewのdrag & dropのコードで、似たようなメソッドを作ったものですから、
Appleが正式にサポートするとうれしいです。

Leopardの発売が更に楽しみになりました。

356:名称未設定
07/09/25 20:42:20 DPSBhINH0
ついでに、WebObjects を、Objective-C にしてほしいよなーー

357:名称未設定
07/09/26 07:47:06 KqKT5P0s0
WOはもうディスコンまっしぐらじゃない?
あれ?オープンソースになったんだっけ?

358:名称未設定
07/09/26 14:05:35 cVuwNs9i0
Quartz 2D Extream もどうなったのやら。やっぱディスコンまっしぐらかなぁ。

359:名称未設定
07/09/26 18:52:49 //OJRjK+0
QuartzGLになりました。

360:名称未設定
07/09/26 22:58:38 KOSgLSOH0
質問です。

大量のボタンに対して、同時に同じメッセージを投げたいんですが、
1つのアウトレットは1つのオブジェクトしか指定できません。
大量のボタンの数だけアウトレットを用意するのもスマートではないと
思いますが、何か良い方法ありますか?
よろしくお願いします。




361:名称未設定
07/09/26 23:16:06 GjSqGsk10
>>360
必要なだけNSArrayに入れてmakeObjectsPerformSelectorとか、後はNSNotificationとかかな。

362:名称未設定
07/09/27 00:01:26 PDbAKstz0
NSViewでまとめてsubViewsで取り出す

363:名称未設定
07/09/27 00:43:29 8K+2oe1e0
過去に同じようにな質問なかったか

364:名称未設定
07/09/27 00:47:46 jyqt4+rC0
>>359
thx.

365:名称未設定
07/09/27 04:55:55 1zrfBisP0
空白またはタブで項目が区切られているレコードからトークン
を切り出すのに、 chSetを whitespaceAndNewlineCharacterSet として

aScanner = [NSScanner scannerWithString:parsedString];
while(![aScannerisAtEnd]){
if([aScanner scanUpToCharactersFromSet:chSet intoString:&token])
NSLog(token);
[scanner scanCharactersFromSet:chSet intoString:nil];   }

としていますが、
アスキー文字だと期待通りに動くのですが、レコード中のどれか一つの項目を
日本語にするとその部分がスキップされて(空白だと思われて)しまいます。

どうしたらいいでしょうか。OSは10.3.9です。

366:名称未設定
07/09/27 05:24:39 CM0/B6Sl0
>>365
NSLog(token); → NSLog(@"%@¥n", token);
でどうかな?

367:名称未設定
07/09/27 06:07:29 1zrfBisP0
NSLog(@"%@¥n", token);  にすると、
日本語フィールドも表示されるようになりました。
が、最後に余計な「A¥n」が出ます。(本当はAの上に変な記号のついた文字。これをいれると
Cocomonarが落ちるので書けない
)よくわからないのですが、エスケープされてる、
ということなのでしょうか。

NSLog(@"%@", token); にするといままで通りです。
が、
NSLog(@"%@ ", token); と、後ろに空白文字を置くとキチンと
表示されます。

文字コードが悪さをしているのは見当つくのですが、具体的にどこが
悪いのかはさっぱりです。ファイルを読み込むときも、NSDataに落としてから
エンコーディングを変えながらいろいろ試してみたのですが。


368:名称未設定
07/09/27 06:23:48 CM0/B6Sl0
>>367
ごめん、¥はバックスラッシュのつもりだった。
とにかくNSLogの日本語表示だけの問題だから気にしなくていいよ。

369:名称未設定
07/09/27 11:57:33 1zrfBisP0
本当だ、¥の代わりにバックスラッシュにしたら期待道通りの結果がでました。
ありがとうございました!!

370:名称未設定
07/09/27 14:30:21 8h5IL6rA0
巨大なテキストファイルから改行コードで区切って1行ずつ読み込んで処理したいのですが、
テキストファイルをすべて読み込んでから改行コードで区切って配列に入れるとメモリを膨大に消費してしまいます。

perlっぽくファイルハンドルを取得してwhile文でeofまで回すような
ストリーミングっぽく処理したいのですがどうすればよいのでしょうか?



371:名称未設定
07/09/27 15:02:54 DoK9wEPc0
一番簡単なのはCのfgets()を使う方法。改行がLFでないと使えないけどな。

後は先読みバッファを作って、特定のサイズ分ファイルを読み込んで、そこから
改行までを取り出して、残った部分をムーブして空いた分だけファイルから
読み込み、これを繰り返す。

372:名称未設定
07/09/27 16:12:29 8h5IL6rA0
>>371
ご教授ありがとうございます。
Cのfgets()関数を使ってうまくいきました。
objective-cで出来るか探してみましたがなさそうですね。



373:名称未設定
07/09/29 10:12:39 zZqJ0dcb0
NSWindow 上に NSTableView がいくつか置いてあるのですが、
その TableView 間でファーストレスポンダが変わったことを
検出するには、どういった方法があるでしょうか。


374:名称未設定
07/09/29 15:34:01 8IGuMuZ60
文字列を正規表現で置換したいのですが、標準機能ではないのでしょうか?

>>373
テーブルビューの選択が変わったなら通知するのがあったような。

375:名称未設定
07/09/29 15:40:36 x13OGOM+0
Cocoaで正規表現ならOgreKitが定番かな。

URLリンク(www8.ocn.ne.jp)

376:名称未設定
07/09/29 15:45:51 pwcm/+Ub0
>>373
acceptsFirstResponderとかその辺でどうかな。

377:名称未設定
07/09/29 15:57:41 E1JHDeBB0
regex.h

378:373
07/09/29 16:17:02 zZqJ0dcb0
>>374
どのような通知でしょうか。
調べてみてはいるのですが、見つかりません。

>>376
すみません、acceptsFirstResponder をどのように使うのでしょうか。


379:名称未設定
07/09/29 16:27:27 pwcm/+Ub0
>>378
ググってみて。HMDTさんのサイトがお勧め。

380:名称未設定
07/09/29 18:34:35 EN0/o6QM0
通知ってnotificationのことでしょ
NSTableViewのヘルプにあるよ

381:373
07/09/29 22:19:34 zZqJ0dcb0
>>380
具体的にどの notification のことをおっしゃられていますでしょうか。
検出したいのはTableView間の移行の話なので、TableView の notification
ではないのではないかと思うのですが。

ちなみに現在は暫定策として、NSWindowDidUpdateNotification を
使っていますが、これだと必要のないときにも notification が出るので、
パフォーマンス改善のためにもっと良い方法を探しています。

382:名称未設定
07/09/29 22:57:21 3B7qOXdqP
NSResponderで定義されてるbecome~などのファーストレスポンダ関連の適当なメソッドを上書きして適当な通知を送るようにすればいいんじゃない?

383:380
07/09/29 22:59:45 EP9ETOnN0
>>373
ごめんね、NSResponderのnotificationだったわ

384:名称未設定
07/09/30 08:23:16 1+3bPOa/0
>>361
遅レス申し訳ありません。

InterfaceBuilderで置いたボタンをNSArrayに入れる方法が分かりません。
すみませんが、よろしくお願いします。

385:名称未設定
07/09/30 11:59:03 f54IiRS90
>>384
そのボタン群用にNSButtonのサブクラスを用意して、
awakeFromNibで適当なNSArrayに格納するとかかな。
NSNotiricationを使う場合も同様に。

任意のタイミングで格納する場合は、subviewsを使うしかないと思います。

386:名称未設定
07/09/30 16:30:45 KRhNhdGX0
プログラム最後の
[pool release]; で実行エラーが発生します。

allocとreleaseの数は合わせてあるのですが、メモリ管理でほかに
注意すべき点はなんでしょか。

387:名称未設定
07/09/30 16:33:17 2MyNhREa0
その直前でretain count調べてみれば?

388:名称未設定
07/09/30 16:36:42 ZGxp/2ZH0
エスパーがいらっしゃるまでしばらくお待ちください

389:名称未設定
07/09/30 16:46:22 FHx4HOJm0
retain count なんて調べてるやつはバカです

390:名称未設定
07/09/30 18:25:25 9ybOP3SL0
alloc+copy==release+autorelease

391:名称未設定
07/09/30 18:37:41 1+3bPOa/0
>>385
やってみます。
ありがとうございました。

392:名称未設定
07/09/30 18:50:03 hHTRsSyH0
LeopardでRIUIを採用するのかしないのか
QuartzGLも採用するのかしないのか
雰囲気的にはTigerが出る前と全く変わらないな...

393:名称未設定
07/09/30 18:54:51 hHTRsSyH0
誤爆に見えないかもしれないけど誤爆したみたい...orz

394:名称未設定
07/09/30 20:53:05 KRhNhdGX0
>>390
copy は明示的には使っていないので、数は合っている筈なのですが、
もう少し勉強してみます。

395:名称未設定
07/09/30 20:59:28 RmZQ6wEv0
クラスメソッドの中で一時的に作成した配列や辞書は、
メソッドの最後でまめにリリースしたほうが良いのでしょうか?
それとも勝手にリリースしてくれるのでしょうか?

アプリケーションの使用メモリが増えてきてどうすれば良いのかご教授下さい。

396:名称未設定
07/09/30 21:19:06 J3lW9Bur0
どう作成したかによる。そのルールはクラスメソッドかどうかは関係ない

NSArray* array = [[NSArray alloc] initなんたら]
で作成したのならスコープを抜けるまでに
[array release] または [array auto] する義務がある

NSArray* array = [NSArray arrayWithなんたら]
で作成したのなら
[array release] または [array auto] してはいけない

NSArray* array = [NSArray arrayWithなんたら]
で作成した場合でも、その後
[array retain]
したのなら
[array release] または [array auto] する義務がある


397:名称未設定
07/09/30 21:24:04 J3lW9Bur0
auto の部分は autorelease の誤りです

398:名称未設定
07/09/30 21:38:11 KRhNhdGX0
copyを使ってなければ、allocの数とrelease 又はautoreleaseの
数を一致させればいいのですよね。
でもpool releaseでコケる。う~む。

399:名称未設定
07/09/30 21:44:01 J3lW9Bur0
暇なんで >>396-397 にさらに解説しておくと


alloc と initなんたら によるインスタンス作成は、インスタンスの所有が呼び出し側に発生する。
つまり(releaseまたはautoreleaseで)所有を放棄する義務があり、またそうしないといつまでもメモリ解放されない。

arrayWith なんたら によるインスタンス作成は、インスタンスの所有は呼び出し側にない。
よってreleaseまたはautoreleaseしてしまうと、他の所有を勝手に放棄してしまうことになり、過解放となる
(クラッシュなどを引き起こす)。

releaseとautoreleaseの違いは、
releaseは、呼ぶとすぐに自分の所有を破棄する。他も所有していなければメモリ解放される。
autoreleaseは、後で(ランタイムが適当なタイミングで)所有が破棄される。
大まかに言うと、メソッドがreturnしたらreleaseが呼ばれる(この場合がほとんど)。

つまり、arrayWith なんたら によるインスタンス作成は、
alloc と initなんたら によるインスタンス作成 に加え、autoreleaseが既に一度呼ばれた上で渡されている
というだけの違い。

所有のないインスタンスに自分の所有を加えるには、retainを呼ぶ。これにより所有が呼び出し側に発生し、
いずれ所有を放棄しなくてはいけない義務が発生する。

400:名称未設定
07/09/30 23:13:19 J3lW9Bur0
とりあえずretainCountの仕組みを

・そのpool releaseをコメントアウトするとコケなくなるのか?

401:名称未設定
07/09/30 23:14:22 /8gv9Izg0
>>399
GCが導入されると、違いは無くなるのですかね?。

402:名称未設定
07/09/30 23:14:34 J3lW9Bur0
>>400は無視して下さい

>>399で述べたような、autoreleaseによるreleaseの予約を管理しているのがNSAutoreleasePool。
以下の場合、arrayは[pool release]が呼ばれたタイミングでreleaseされる。

NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSArray* array = [[NSArray alloc] init];
[array autorelease];
[pool release];

通常、何らかのインスタンス(上の例だとarray)にautoreleaseを呼ぶと、
一番最後に作成されたNSAutoreleasePoolのインスタンス(上の例だとpool)に、
その何らかのインスタンス(上の例だとarray)が登録される。そのNSAutoreleasePoolのインスタンス(上の例だとpool)
が破棄された時に、登録された何らかのインスタンス(上の例だとarray)にreleaseが呼ばれる。

Cocoaアプリのメインスレッドでは、NSApplicationがNSAutoreleasePoolの作成と破棄を繰り返している。
なので通常、自分でNSAutoreleasePoolのインスタンスを作成しなくてもautoreleaseの呼び出しが可能。

サブスレッドでは、NSAutoreleasePoolのインスタンスを自分で作成する必要がある。
また、メインスレッドでも、forやwhile文などのループ内でautoreleaseを何度も呼び出す場合は、
release予約の(つまりメモリ解放されない)インスタンスが増えるので、ループ内で
NSAutoreleasePoolの作成と破棄を繰り返して使用メモリの増大を防ぐという方法がある。

403:名称未設定
07/09/30 23:17:41 J3lW9Bur0
>>401
さあ。GCの仕組みをどう実装してるかによるんでしょうね。

404:名称未設定
07/09/30 23:23:15 KRhNhdGX0
>>402
>また、メインスレッドでも、forやwhile文などのループ内でautoreleaseを何度も呼び出す場合は、
>release予約の(つまりメモリ解放されない)インスタンスが増えるので、ループ内で
>NSAutoreleasePoolの作成と破棄を繰り返して使用メモリの増大を防ぐという方法がある。
>

どうもこの辺が怪しい気がしてきました。

405:名称未設定
07/10/01 02:12:00 jb1YsKc80
Am I missing something? I have the need to be able to send a simple
email from my application and NSMailDelivery's
+deliverMessage:subject:to: looked perfect but I can't get it to work.
I assume this is because I have not configured an SMTP server but I
don't see any way under Panther to do so. I vaguely recall there being
System Preferences control panel for this in earlier versions of OS X
but don't have an old version that I can check. Does NSMailDelivery
still work under Panther? And if not, is there a simple way of sending
an email without having to go through a mail client using NSWorkspace?

に対し、

406:名称未設定
07/10/01 02:12:36 jb1YsKc80
You can use NSMailDelivery without using a mail CLIENT, but you do need
a mail server... probably the same one that your mail client is using.
If this is an application that will be used by different people at
different locations, you will probably need to have them set a
preference telling the location of their mail server. You can also pull
the address from their internet preferences, assuming the user has set
them up.

407:名称未設定
07/10/01 02:16:53 jb1YsKc80
という回答なんですが、ローカルでメールサーバーを立ち上げてないとダメ、
ということですよね。
で、postfix startしてみたのですが、[NSMailDelivery hasDeliveryClassBeenConfigured]
はNOのまま。

どの設定をいじればYESが帰ってくるのでしょうか。

408:名称未設定
07/10/01 03:20:31 4GJ4e1sj0
Mail.appの設定じゃないかな。
smtp serverがローカルで動いている必要はないはず。

409:名称未設定
07/10/01 11:50:57 oEXnpz/k0
オーナーシップデバッグ。
これ基本。
URLリンク(developer.apple.com)
NSZombieEnabled='YES'
環境変数なので、 「実行可能ファイル環境」で設定のこと。

410:名称未設定
07/10/01 13:18:53 jb1YsKc80
>>408
はじめはそう思ってMail.appの環境設定の項目を調べてみたのですが、
どうもそれらしいものが見当たりません。システム環境設定も同様でした。


411:名称未設定
07/10/01 13:20:27 jb1YsKc80
>>409
参考にさせていただきます。
ありがとうございます。

412:名称未設定
07/10/01 15:30:29 v2NRyQLs0
>>410
[NSMailDelivery hasDeliveryClassBeenConfigured] は、
「Mail.appでメールが出せる設定が出来ているかどうか」の意味っぽいけど?
できてる?
たぶんMail.appのアカウント設定の情報を参照してSMTPサーバにメールを
自前で投げるんだと思う。

413:名称未設定
07/10/01 23:44:37 jb1YsKc80
>>412
>「Mail.appでメールが出せる設定が出来ているかどうか」の意味っぽいけど?
>できてる?

Mail.appは毎日のように使っているので、そういう意味では問題筈です。
でも、「設定」の意味がよくわからないんですよね、海外のサイトを見ても。

414:名称未設定
07/10/02 07:18:33 4wWs2Gwh0
スクリーンショットを撮るアプリケーションを作っています。

スクリーンショットを撮るためにそのアプリを起動すると、
そのアプリがアクティブになってしまい、メニューバーにも
名前が表示されてしまうので、どうしても元のままの状態で
スクリーンショットを撮ることができません。

何か解決策があれば、教えていただけるとありがたいです。
よろしくお願いします。

415:名称未設定
07/10/02 07:43:14 HqqJ+v970
>>414
例えば純正である
/アプリケーション/ユーティリティ/グラブ.app
の場合はタイマー機能で任意のアプリのスクリーンショットを取ることを可能にしている。

416:HK
07/10/02 19:13:50 zksrfeR70
>>414
URLリンク(developer.apple.com)
のNSUIElementやLSBackgroundOnlyその他を参照。
日本語訳はポッチンルームにあります。
自作日本語入力メソッドを作りましたが、
サーバーアプリケーションはこのへんを設定して裏にまわります。
裏から変換候補ウインドウを他アプリが前面のまま表示できます。

417:名称未設定
07/10/02 19:51:17 t7c+rGGO0
>>415,416
的確に教えていただき感謝です。ありがとうございました。

418:名称未設定
07/10/05 19:46:57 gAtx49120
例えば引数のメッセージやアイコンからメッセージダイアログを出すクラスを作って
いろんなクラスからそれを利用したい場合、

・各クラスでインスタンスを作成するのか、
・I.B上でインスタンスをひとつ作成して他のインスタンスと繋げるのか、

どちらの方法が良いのでしょうか。

419:名称未設定
07/10/05 20:46:57 qqy/rlKl0
>>418
NSAlertをお勧めします。
自作する場合もそれに準じるのが良いと思います。

420:名称未設定
07/10/05 21:20:03 uw5Y856q0
>>419
最初は各クラスで必要な箇所でNSAlertをだしていたんですが、
かなり頻繁にいろんな箇所で使うのでまとめたいなあと。
メッセージ、表示ボタンもケースによってバラバラですし。

なので、共通で引数で処理するようまとめてみたんですが。

421:名称未設定
07/10/05 23:35:57 qqy/rlKl0
>>420
素直にNSAlertのカスタムクラスかカテゴリはどうですか?

422:名称未設定
07/10/07 22:01:11 3CacK9uM0
URLリンク(homepage.mac.com)

423:名称未設定
07/10/07 23:36:08 jl2bDT9K0
無料のときからずっと使っているとこの十月で更新になるからな

424:名称未設定
07/10/08 15:05:10 pbJo8Zn/0
>>421
アドバイスありがとうございます。
カテゴリなんてのもあるんですね。勉強してみます。

425:名称未設定
07/10/11 09:29:49 nscIn2lg0
CIImageのオブジェクトなんですけど、
ビットマップの上と下に余白部分を作りたいんですよね。
バックグラウンドになるビットマップを作って、
そこにCIFilterのCompositing Filtersで合成しようと思い立ったんですけれど、
CIFilterが最初から持ってるエフェクトで座標を指定して合成するのって見当たらないんです。
で、なにかいい方法があればお教え願いたいんですが。。

426:名称未設定
07/10/11 15:53:07 +RNbQCmY0
CIAffineTransform

427:425
07/10/11 16:12:36 nscIn2lg0
>>426さん
■■■■■余白
□□□□□もともとのビットマップ
□□□□□
■■■■■余白
こうしたいのですが、アフィン変換でそんなことできるんですか?


428:名称未設定
07/10/11 16:33:26 ToYfcU0y0
>>427
ググればすぐ分かる事を...
ヒント貰ったんだから、あとは自分で調べなよ。

429:425
07/10/11 17:17:47 nscIn2lg0
CIFIterのCIAffineTransformのところはドキュメントを読んでたんですけれど、
いまいちピンと来ないんですよね・・・。
Google検索してもこれと言って情報も無いし。
拡大してoutputImageしてからもう一回inputImageして縮小するってことかな。
もうちょっと調べてみます。

430:名称未設定
07/10/11 18:21:54 Q0Oj/uoh0
原点...

431:名称未設定
07/10/11 19:05:53 ToYfcU0y0
>>429
アップルのサイトに全てありますよ。
座標移動の NSAffineTransform は、
[[NSAffineTransform transform] translateXBy:0 yBy:10];
みたいな感じで作れるよ。
あとはこれを inputTransform に設定するだけじゃないですか。

432:429
07/10/11 19:11:36 ToYfcU0y0
あれ、これって変換した新しいCIImageを作るだけですね。
ごめんなさい。

433:432
07/10/11 19:59:57 ToYfcU0y0
名前欄間違えました。
ちょっと調べてみたけどCIFilterでは無理っぽい。
面倒だけど自前でやるしかないですね。

434:名称未設定
07/10/11 20:05:06 RqBWEm1l0
WindowかViewをフェードアウトして消えてくように
したいんですが、どのようにやるといいでしょうか。
自力で透明度いじるしかありませんか?
OSX10.4です。

435:名称未設定
07/10/11 20:21:29 ukinxETG0
黒で塗りつぶした上にCIImageの座標を適当にずらして描画すればんじゃないのか?

436:425
07/10/12 09:29:16 XnHNJR3q0
>>433
そうなんですよね。CIFilterが最初から持ってるエフェクトだと、
合成時に座標を指定する事が出来ないんですよね。
NSOpenGLView側で描画位置を変えるって言う手もあるんでしょうけれど、
それだと背景色を指定できないし。
>>435
NSGraphicsContextとNSBezierPathでビットマップを作って、そこに貼付けるってやり方でやってるんですが、
カスタムのCIFilterを作るしか無いのかなと思って来てます。

437:名称未設定
07/10/12 09:29:45 CM/NoWBY0
>>434
標準的なUIにはない挙動だから(多分)、自分で何かするしかないのでは。
10.4ならNSViewAnimationを使うのが一般的&楽かな。
より原始的(?)に、タイマーで透明度を徐々に変化させていってもできる。

438:425
07/10/12 09:30:20 XnHNJR3q0
あれ?ひょっとしてアフィン変換した元画像をビットマップに合成すればいいのかな?
ちょっとやってみます。

439:425
07/10/12 16:49:48 XnHNJR3q0
やってみたところうまくいってるみたいです。
ありがとうございました。

440:名称未設定
07/10/12 16:53:45 HFBiEdQm0
なんという回り道・・・

441:名称未設定
07/10/13 09:03:43 hg0jttDu0
各種ファイルをNSFileWrapperを使ってシリアライズ・比較・更新等するような
ソフトを作ろうと思って少し試しているんですが、

ファイルの内容の比較のため、とりあえずシリアライズされたデータを比較
してみたんですが、どうやら元ファイルの内容が同じでもシリアライズされた
データは異なるようです。NSFileWrapperのバグなのか、シリアライズ化
というもの自体の特性なのか、よくわかりませんが...

なお、ここでの同一性とは、元のファイルに diff をかけたのと同じ結果、を
期待しています。

こういう場合、データのシリアライズ化とファイル内容の同一性って、どうやって
両立したらいいでしょうか... もし同一性もチェックできるシリアライズ化
なんてものが存在するとうれしいのですが。

442:名称未設定
07/10/13 11:02:54 XvtdC7UH0
URLリンク(hmdt.jp)

こんなアプリが増えていますけど、みんな似たような事してるんですかね?。
最近の増え方を見ていると、もっと楽な方法がありそうな気がするのですが。

443:名称未設定
07/10/13 21:38:57 eZww9H1A0
Vistaが「遅い」と感じませんか?
URLリンク(itpro.nikkeibp.co.jp)

 2007年1月30日にWindows Vistaが店頭で発売されてから約8カ月が過ぎた。
この記者の眼でも,4月24日に「Vistaってどうよ?」というややポジティブな見解が掲載された。
これはこれで納得できる。「『売り上げは期待を下回るが私は強気』,
マイクロソフトWindows本部長」というコメントもほぼ同時に報じられた。

 その後もマイクロソフトは,「Windows XPのPCメーカーへの出荷,来年1月で終了へ」と突っ張っていた。
それが最近では「『Windows XPの販売を5カ月延長』,米マイクロソフトが方針転換」と来た。
低価格パソコン向けに新興国で販売している「Windows XP Starter Edition」については,
2010年6月30日まで販売を延長するという。Vistaはどうもハッピーな状況ではない。

 Vistaが好感を持たれない理由は,(1)価格が高い,(2)マイクロソフトの訴求するセールスポイントが
ユーザーの感覚とかけ離れている,(3)2001年にWindows XPが出て約6年が経過する間に
ハードウエア,ソフトウエア,使いこなしノウハウの資産が各所に大量に蓄積されて
移行コストが上がった,などが考えられる。ただ,最大の理由は,Vistaが「遅い」ことではないだろうか。
Vista搭載パソコンを新規に導入した人なら,おおむね性能に不満はないだろう。
でも,新しいパソコンをポンと買える人がどのくらいいるだろうか?


444:名称未設定
07/10/15 08:47:51 RJEHHK9w0
うーん、ApplicationDidFinishLaunchingノティフィケーションを実装しても
何故か呼び出してくれない。サンプルのsketchを見るとセンターに登録せずに
使えてるようなんだが・・・

445:名称未設定
07/10/15 08:57:43 w9VArlJf0
delegate にする

446:名称未設定
07/10/15 09:23:49 RJEHHK9w0
>>445
Notificationじゃなかったのか。ありがとう。
おかげで起動時にパレットを表示できるようになったよ。

447:名称未設定
07/10/16 01:50:24 RhpguY+z0
age

448:名称未設定
07/10/16 23:56:51 UHgbhQAb0
Leopardは26日発売か。早くADCのサイトでLeopardのドキュメントが読めるよ
うになってくれないかなぁ。Obj-C 2.0とCore Animationの詳細が知りたくてた
まらん。


449:名称未設定
07/10/17 13:10:54 vy+i57Fb0
$500で1年前から読めるけど。

450:名称未設定
07/10/17 15:12:35 9JlNZqhL0
趣味で読むには高過ぎる値段だ。


451:名称未設定
07/10/17 15:34:38 bw4gG9tu0
でもLeopard買わずに済むよ。MacProを買うんなら元取れるし。

452:名称未設定
07/10/17 20:37:50 1AjA4OVd0
俺の用途から言って趣味でMacProなんて宝の持ち腐れも良いとこだし。

まあ26日には読めるんだからそれまで辛抱だろうな。

453:名称未設定
07/10/17 21:22:18 UrqKimq/0
でもま、趣味で買うやつもいるんだろうなw

とりあえずはこれでガマンかー。早くこいこい
URLリンク(www.apple.com)
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)

454:名称未設定
07/10/18 01:06:04 mkmoS9NR0
XcodeのSCM機能は貧弱と聞いたのだけれども、3.0で改善されているのかな
URLリンク(doni-dog.blogspot.com)

455:名称未設定
07/10/18 01:17:10 slHsJ97C0
>>454
そのリンクの奴、ちゃんと使えてるとは思えんな。
SCMが特許対策というのも意味わからん。

456:名称未設定
07/10/18 02:23:44 Mr8A9HPs0
svnadminなんてXCodeに必要な機能じゃないし、TimeMachineなんてありえないわ。

457:名称未設定
07/10/18 06:35:32 tLRRr8tY0
きっと、単に変更履歴を追いかけることが出来るから、後で
特許関連で訴えられたときに証拠として採用するように訴える
ことが出来るだろ、てことじゃないのかな。

採用されるかどうかは分からないが。

458:名称未設定
07/10/18 09:02:33 fqG2TSy+0
オープンソース等で公開されているものなら証拠にはなるかもしれないけど
そうでないなら信頼性はまったくないな。

459:名称未設定
07/10/18 10:54:31 Y0mjkOTf0
まぁ俺は、リビジョン管理システムがないのはやはり欠点と思う。

開発ツールなんだしさ。定期的にスナップショットを保持出来る
ような仕組みがあるだけでも大分違うし。

460:名称未設定
07/10/18 20:27:18 6hta7bjM0
URLリンク(www.apple.com)

Xcode 3.0

# プロジェクトのスナップショット

失敗を恐れず、心ゆくまでテストしましょう。プロジェクトのすべてのファイルを、いつでも好きな時に記録しておけます。万一の時もこれで安心。プロジェクトをいつでも元の状態に戻せるので、自信を持ってテストできます。


461:名称未設定
07/10/18 22:15:13 lA7sYrRH0
Xcode3.0楽しみだね。早くこいこいGC。

462:名称未設定
07/10/19 12:34:51 VK3fEPzF0
>>460
それってsvnベース?
変更点を見比べることができるようなインターフェースが欲しい。

463:名称未設定
07/10/19 13:02:13 GQjRZD8/0
今でもあるけど。

464:名称未設定
07/10/19 13:06:34 z7q4y0U10
>>463
shift-jis 以外の日本語で落ちなければ、今のままでいい。
変換すればdiffは見れるけど、マージできないし。

465:名称未設定
07/10/19 13:51:02 uOW40gYR0
Core Data Document Based Applicationで
ファイルがloadされたときに勝手にNSArrayControllerに
objectが追加されるけど,その追加された直後に何かやりたいときは
どうしたらいいですかね。
notificationでも飛んでくるといいのだが。



466:名称未設定
07/10/19 14:51:45 XaYlxLt20
>>465
NSManagedObjectの
- (void) awakeFromInsert;


467:465
07/10/19 17:04:47 uOW40gYR0
>466
ありがとう
awakeFromFetchでできました

468:名称未設定
07/10/19 19:17:19 m+Row12Z0
>>462
普通に考えるとTime Machineじゃね?

469:名称未設定
07/10/19 20:09:43 k7hQT15w0
現在使用しているシステムの言語を取得するには
どうすればいいのでしょうか?


470:名称未設定
07/10/19 21:06:05 XaYlxLt20
echo $LANG
defaults read NSGlobalDomain AppleLanguages



471:469
07/10/19 22:49:11 k7hQT15w0
>>470
どうもです、以下の方法でいけました。

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];

URLリンク(potting.syuriken.jp)

472:名称未設定
07/10/20 00:26:47 nttpT0GF0
NSCalendarDate で、例えばNSLogなどで%@が指定されている場合、
descriptionWithLocale:が送信されるとドキュメントにはあります。

NSLog(@"The current date and time is %@", [NSCalendarDate date]);
だと、
this statement invokes descriptionWithLocale:
だとあります。

しかし、descriptionWithLocale:は引数として(NSDictionary *)localeをとるのに、
その引数はどこからやってくるのでしょうか。

というか、デフォルトのロケールを(いちいちlocaleを指定しないでも)日本語にしたい
のですが、できるんでしょうか(環境変数なんかで)。
デフォルトロケールをセットするメソッドが見当たらないので、
カテゴリとかで対応するしかないのならそうしますが、そんなことしなくても
済むのならと思いまして。

473:名称未設定
07/10/20 02:55:24 nttpT0GF0
環境変数LANGが日本語に設定されていれば、NSCalendarDateの出力も日本語
になると思っていたのですが、そうではないですよね?

ターミナルからdateコマンドを実行すると、LANGの設定の有無で表示が切り替わる
のが確認できるのですが、自前プログラムでNSCalendarDateを使って表示させると、
日本語がでてくれません。もちろん、localeディクショナリを自前で用意してやると
ちゃんと出るのですが、Cocoaにおいて(具体的にはNSCalendarDateなど)カレン
トロケールの設定はどうしたらいいのでしょうか。

/usr/share/localeのjpフォルダには、LC_TIMEがあって、月、火、水、とか
設定されているのですが、どうもこいつが利用されていないのですよね、NSCalendarDate
では。
OS は 10.3.9です。

474:名称未設定
07/10/20 03:17:55 nttpT0GF0
Appleのドキュメントや荻原本(p306)にあるように、

NSCalendarDate *calendarDate =
[[NSCalendarDate alloc] initWithTimeIntervalSinceReferenceDate:uploadedTime];
[calendarDate descriptionWithLocale:
[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];

こんな感じでもやってみましたが、ユーザデフォルトから作った辞書のなかに、
NSShortWeekDayNameArrayやNSWeekDayNameArrayといったキーがないので、
やはり日本語が出てくれません。

475:名称未設定
07/10/20 05:52:17 pIwCUrUa0
LANGじゃ機能不足だから。

476:名称未設定
07/10/20 09:31:19 chy8q2CK0
URLリンク(developer.apple.com)

Important: Although you can get the user's preferred settings from the defaults database,
it is recommended you use the CFBundle functions or NSBundle class instead.
The associated functions and methods of those objects return the preferred
language or locale that is also supported by your application. (Bear in mind that the
returned values may not correspond directly with the user's exact preferences.)

あまり参考にはならないかも・・・

477:名称未設定
07/10/20 10:08:04 A3g+yh3Z0
見るべきはこの辺じゃないの?
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)

CocoaはLANG なんて使ってないし。
プログラム内で自分でNSLocaleの初期化時に使えばいいんでないかな?

どうせ聞いてくるから先に。
getenv(3)

478:名称未設定
07/10/20 12:22:05 nttpT0GF0
みなさんありがとうございます。これから仕事なので、
あとでもっとしっかり読みますが、いま、ざっと読んだかぎりでは、

環境変数で挙動を変えるのではなく、コード内でユーザの設定を読み取る必要があるという
ことですね。
すると、やはり、その読み取ったロケールに従って、locale dictinary
を作り(あるいはこれも取得できるのかもしれませんが)、それを引数に指定して
withLocale系のメソッドを呼ぶ、ということになりそうです、いまの理解では。
少なくても10.3においては。


479:名称未設定
07/10/20 18:38:34 A3g+yh3Z0
これがおかしいのか。 >474
職場なので cf.sourceforge.jp で試したけどちゃんとできるよ。
10.4 だけど。

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

id d = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

NSLog(@"%@", d);

id s = [NSCalendarDate dateWithTimeIntervalSinceNow:0.0];
id ss = [s descriptionWithCalendarFormat:@"%c" locale:d];

NSLog(@"%@",ss);

[pool release];
}

で日本語で出た。
もちろんLANGなんて設定してないよ。

480:名称未設定
07/10/20 19:56:16 b1ZhonRi0
cocoaを勉強しはじめて2ヶ月の者です。
基本的なことですが、分からない事があるので質問させてください。
あるクラス全体で使いたい変数を宣言するには、

@implementation クラス名

のあと(メソッドを記述する前の部分)に static という宣言をして
変数を宣言すればよい、と知りました。

そこで、
static NSArray *myArray;
のように宣言し、そのクラスの中に

-(NSArray *)ReturnMyArray{
//NSLog( @"NSArray *myArray =%@",[myArray componentsJoinedByString:@" and "]);
return myArray;
}


という宣言した配列を返すメソッドを作りました。

これを実行すると、このメソッドが呼ばれた時点でフリーズして
しまいます。何が問題なのか分からないので、教えていただけると
ありがたいです。よろしくお願いします。


481:名称未設定
07/10/20 20:44:18 C5KB0rGs0
初期化してやらないといけないのでは

482:名称未設定
07/10/20 20:45:04 MXAR1ZE10
NSLogの行はコメントってことでいいの?
そうであれば、とりあえず呼ばれた時点でフリーズすることは無いんでは。

NSLogの行が有効で、myArrayが何も指していない状態で呼び出すと、クラッシュすると思うけど。

483:名称未設定
07/10/20 21:01:19 ephnEzFr0
多分、基本的な所でつまずいていますので、どなたか教えて下さい。

本体をプラグインにて拡張できるアプリケーションがあるとします。
このとき、本体とプラグインで、
別のバージョンの同じフレームワークを使用する事は出来ますか。

例えば、以下のような構成です。

本体(フレームワーク v1.0)
プラグインA(フレームワーク v2.0)
プラグインB(フレームワーク v3.0)

どうも、先に読み込まれた(本体の)フレームワークを後に読み込んだプラグインでも使用しているようなのです。
バンドルが違っても、同じクラス名はダメなんでしょうか?

よろしくお願いします。


484:名称未設定
07/10/20 23:55:06 i5VOuciv0
ウィンドウの外観をmail.appみたくスッキリした明るいツルペタにしたいのですが、
どこかリソースを配布しているところはありませんでしょうか?

それらしいアプリのリソースフォルダを漁ってもなかなか見つからなくて。

485:名称未設定
07/10/21 00:20:37 AuZVtDw10
NSUnifiedTitleAndToolbarWindowMask

486:名称未設定
07/10/21 12:37:24 2g9tmK/v0
LeopardのObjectiveCのランタイムってオープンソースだよね?
Tigerにも入れられないのかなぁ

ところで、/System/Library/Frameworksの中身って、
アプリケーションバンドルに入れて配布していいの?
配布できるのなら、Tigerでも動くGCアプリが組めるかもしれないね

487:名称未設定
07/10/21 23:54:28 uO+uiivY0
>>479
此方でも確認できました。

>>474で駄目だったのは、一言で云えば勘違いです。
デフォルトフォーマットだと曜日が出力されないため、漢字が表れなかっただけでした。
失礼しました。

皆さんのご教示にヒントを得て試した限りでは、
>>478の内容で間違いなさそうです。

つまり、コード内でロケールを取得し、それに従った辞書を使う、ということですね。
そして、辞書はユーザデフォルトが使えます。これはAppleのドキュメントや荻原本や
>>479のとおりです。

ここまでで当面の障害はクリアできました。しかし、いまだに>>472が謎です。
%@がdescriptionWithLocale:を呼ぶとあるのですが、その場合引数はどこからくるのかな、
と思うわけです。nilだとしたら単なるdescriptionを呼ぶのと差が出ないし。
プログラミングを進めていくうえでこの謎が障害ではないのですが、もし解決するとスッキリ
するので書いてみました。

レスいただいた皆さん、ありがとうございました。




488:名称未設定
07/10/22 15:12:29 Gv93rxrK0
>>487
>%@がdescriptionWithLocale:を呼ぶとあるのですが、その場合引数はどこからくるのかな、
>と思うわけです。nilだとしたら単なるdescriptionを呼ぶのと差が出ないし。

NSLog() では locale 部分は常に nil が指定されているっぽい(挙動より推定)。
何らかの方法で別の locale を指定できるかは不明。ただ NSCalendarDate 側で
setDateFormat: 等により日付の書式を変更することは可能。

NSString の format を扱うメソッドでは locale を指定できる。

489:名称未設定
07/10/23 11:09:44 xEB3AVEJ0
復活した
URLリンク(homepage.mac.com)

490:名称未設定
07/10/23 12:43:14 hf1e1yJr0
スレリンク(mac板:899番)
調べたらいろいろあるなぁ


491:名称未設定
07/10/24 19:31:02 7aPURO+G0
ややこしい質問ですみません。

メニューアイテムのサブクラスを作り、アイテムを動的に変化させるサブメニューを追加ました。

メニューアイテムを選択した時にサブメニューの内容を再表示させるために
・親メニューのデリゲートをメニューアイテムにセット。
・メニューアイテムのサブクラスでmenuNeedsUpdateを記述し、サブメニューを再作成する処理を記述。

この場合、親メニューに同じような動的に変化するメニューアイテムを複数追加すると、
どれかひとつだけしかサブメニューが展開されません。

原因は親メニューのデリゲートを個々のメニューアイテムのサブクラスで取り合ってるからだと思いますが、
うまく全てのサブメニューを動かす方法はありませんでしょうか。

492:名称未設定
07/10/24 20:03:08 sR3ireTF0
単にvalidateMenuItem:で変化させるのじゃダメなの?

493:名称未設定
07/10/24 23:05:29 stlIlKGC0
>>492
ご指摘ありがとうございます。なんとか自己解決しました。
サブクラスのインスタンス変数にNSMenu *aMenuを作って、最初に[aMenu setDelegate: self ]で
サブクラスに記述したmenuNeedsUpdateが効くようになりました。
あとは毎回aMenuのアイテムを作り替えれば出来ました。


494:名称未設定
07/10/27 10:17:12 3Nec+9va0
ウインドウにボタンとラベルだけを配置した画面を
Leopardのテクスチャウインドウにしたら......カッコ悪るすぎる!!

495:名称未設定
07/10/27 11:52:47 jEECVdr70
age

496:名称未設定
07/10/27 14:15:46 3Nec+9va0
Recessed Buttonのフォーカスリングがバグっぽいんだけど俺だけ?


497:名称未設定
07/10/27 17:07:06 iaL/K9DY0
メタル指定のnibウィンドウ、Leopardで起動すると
もっと暗いソリッドな灰色になっちゃう
激しく見づらいです・・・

498:名称未設定
07/10/27 18:36:18 C2JoQvU90
>>497
だよねー。テキストの色を白くするか黒くするか迷うくらいに微妙な色使いだよ

499:名称未設定
07/10/27 21:08:55 Og+Fksq40
まだタイガーなんですけどメタルウインドウは
Leopardではツルペタになるんですか?

500:名称未設定
07/10/27 22:08:37 Bh3IlNe10
メタルなウィンドウにテキストを書く場合は、
テキストに下方向に白色のドロップシャドウを落とす
(そうすると彫り込んであるように見える)のが筋だね。

Leopardのソフトはほとんどそうなってる。

501:名称未設定
07/10/27 22:08:41 C2JoQvU90
なるんですよorz
それがかっこわるいんですよorz

502:名称未設定
07/10/27 22:57:58 kLyG3aM00
タイガーで問題なかった俺のコード
レパドンでは動かねぇ‥ orz


503:名称未設定
07/10/27 23:10:42 ucyY83x00
俺のは全部動いたお \(^o^)/

504:名称未設定
07/10/28 00:31:30 74uJkHwy0
NSMenu のサブクラスを作り、
numberOfItems の中で [self setDelegate:hoge] を(問答無用に)実行してた
Tiger では問題なかったけど、Leopard では setDelegate が numberOfItems を呼ぶので
無限ループになってしまった。

505:名称未設定
07/10/28 07:29:38 TbbSGqL60
NSString lineRangeForRange:
について質問です。これは、改行コードを種別に関わらず含まない
NSRangeを返すと考えてよいのでしょうか?
例えば、CRLF、LF、CRのいずれも取り除いた(改行コードをふく
まない)1行の範囲を取り出してくれるということでしょうか?

ずっと自前で実装してたので・・・orz。

506:名称未設定
07/10/28 11:06:35 +sZmZGVM0
>>505
getLineStart:end:contentsEnd:forRange: の説明によると行とは以下のいずれかで
区切られたものであると書いてある:

U+000D (¥r or CR)
U+2028 (Unicode line separator)
U+000A (¥n or LF)
U+2029 (Unicode paragraph separator)
¥r¥n, in that order (also known as CRLF)

これは lineRangeForRange: でも同じはず。

507:名称未設定
07/10/28 16:51:41 r6e7RucM0
新InterfeceBuilder だけど、クオーツコンポザーみたいに
GUIだけでアニメーション付きGUIを設計できると期待してたんだけど、
やり方がよく分からん。
多少なりともコードは必要なんですかね。

508:名称未設定
07/10/28 17:56:23 VmKk9DlI0
ですね。
特に新IBは、自分のクラスをインスタンスする方法が解らなくてイライラしたw

509:名称未設定
07/10/28 20:18:21 XloRMi6L0
>>506
レスさんきゅです。

結局安直な手法で逃げました。
[NSString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];

これだとマルチラインには対応できないですけど、とりあえず
は使えそうなので・・・

510:名称未設定
07/10/29 00:56:39 24BH5rD00
>>509
安直と言うか、よくわからんがやりたいのはそれなのか。
ちなみにwhitespace(空白)もトリムされるがいいのかな。

511:名称未設定
07/10/29 22:30:49 ZYf1cvjU0
GCすげえ!!
俺のアプリのメモリ消費量が半分になったorz

512:名称未設定
07/10/29 22:40:21 WF5b1sUq0
それはGCが凄いと言うか・・・

513:名称未設定
07/10/29 22:58:14 3xNL/5J/0
……まあ、orz付けてるのに免じて
少なくともAppleは>>511に福音を齎したと言う事でひとつ。

514:名称未設定
07/10/29 23:33:13 UlbYCa240
Apple製アプリも>>511と大して変わらんよ。
leaks動かすと相当酷いってことが判る。
API自体leakしてるのもあるし。

515:名称未設定
07/10/30 01:46:40 UEjozDia0
それはGCが凄いというか>>511がダメだ

っていうんだったらGCの恩恵を最大限に受けてるってことで、
結果的にはオーライだったと言えるな。
俺のコードもメモリ消費量の低下が半端じゃないw

516:434
07/10/30 07:10:03 kfmeCiZ40
>>437
ずいぶん経ちましたが、NSViewAnimationでいけました。

517:名称未設定
07/10/30 10:38:54 IZLIO/QN0
1.0で書かれたコードでGC有効にするのって、特に何もしなくても良いの?

518:名称未設定
07/10/30 10:53:40 uwVxnpmO0
deallocの内容によるんでねえの。

519:名称未設定
07/10/31 02:16:17 SyaOS2Kn0
萩原本の検証と結論が済んだLeopard対応版を待ってしまう俺はヘタレ

520:名称未設定
07/10/31 19:24:36 AmyfOyxk0
URLリンク(mattgemmell.com)

521:名称未設定
07/10/31 23:15:48 73MMG/Dl0
今HMDTを見て知ったんだけどWooden shipsの人が亡くなったんだね。
昔自作のソフトを載っけてもらったことがあるんだよなあ
49歳なんてまだ若いのに残念

522:名称未設定
07/11/01 00:33:29 25EKZp+g0
OS X使いとしてはitojun氏が無くなったのもかなり残念。37歳、若過ぎる…。

523:名称未設定
07/11/01 04:38:51 m0Ek7Tcl0
[NSFont description]の結果
NSFont = "HiraKakuPro-W3 100.00 pt. P [] (0x00373d50) fobj=0x00372930, spc=33.30";

のspc=33.30が何なのか(たぶん下の余白だと思う)
変更可能ならどうやればいいのか
知ってる人教えて

524:名称未設定
07/11/01 11:29:01 XHMm/9gV0
Fontの属性を変更するのでは無くて、2行目の位置を自前で計算してだせば良いのでは?

525:名称未設定
07/11/01 15:07:06 m0Ek7Tcl0
>>524
Fontはほぼgetterしか無いからそうするしかないのかな
33がline spacingっぽからset 0とできればスマートなのだけど

526:名称未設定
07/11/01 19:21:45 XHMm/9gV0
Fontが編集出来たら原理的に駄目だろう。俺んちのosakaフォントとお前のうちのosakaフォントの
見た目が違ったら駄目じゃん。
うまい方法hじゃ

527:名称未設定
07/11/01 19:22:40 XHMm/9gV0
ごめん、さっき解決方法を思いついたけど忘れたonz


528:名称未設定
07/11/02 04:29:29 gwCUIALD0
NSAlertの

- (void)setShowsSuppressionButton:(BOOL)showButton

でチェックした場合、
また、アラートを表示したい場合はどうすれば良いのでしょうか。
設定の保存場所を教えていただけないでしょうか。

529:名称未設定
07/11/02 18:12:22 B5h15Yrn0
Leopard で動かない報告が多く出ているのを考えると、拡張性が高い Objective-C
が裏目に出ているのかな。つうか、発売が延期になったくせに対応できてない商用ソフト多数
ってところに、Mac の力の弱さを感じる。


530:名称未設定
07/11/02 20:41:01 0Xa0RRTf0
そもそも動かなくなるってのはなんで?
クラスやメソッド自体がなくなるとか?


531:名称未設定
07/11/02 20:52:31 tSiOpZEw0
Tigerの時に廃止を予告されたものは数多くあるが、互換性はまだあるだろ。
Carbonの古いAPIですらまだ動くぞ。

532:名称未設定
07/11/02 20:53:11 PjiJdx3J0
>>529
だって発売日まで最終版が手に入らなかったわけだから仕方ないでしょう
バグなのか仕様なのかはっきりしない部分も沢山あった

>>530
メソッドがなくなるのもあるし、10.5から非推奨関数になったものは正常に動かない場合もある

533:名称未設定
07/11/02 21:14:18 /uepB7fw0
>>532
非推奨の古いAPIの方が変にいじらない分ちゃんと動くよ。
出来たばかりのAPIとか内部構造を改良した(つもり)のAPIの方が
動作が変わったり、バグが出たり消えたりして動かないw

534:名称未設定
07/11/02 21:58:02 EINr1KLa0
ていうかObjCランタイム総入れ替えしてるわけだから
何があってもおかしくないでしょ。

535:名称未設定
07/11/03 16:19:10 fenLA4fy0
Xcode2.5が出ていますが、これはタイガー用ということでしょうか?
現在2.4.2なのですが2.5にあげるメリットはありますでしょうか?
(Leopardでも動くようになるとか)

536:名称未設定
07/11/03 16:50:48 x0ahP+Zd0
・Xcode 2.4.2って存在してたっけ?

せめてこのページくらいは読んでからにしてくれ。
URLリンク(developer.apple.com)

537:名称未設定
07/11/03 23:27:00 NGuLosbV0
ありがとうございます。
Xcodeは2.4.1でした、うろ覚えだったもんで。

英語にちょっと弱いんですが、2.5にするとLeopardでも動く
ということでしょうか。

538:480
07/11/04 00:25:35 RpfIewzZ0
亀レスで恐縮です。
>>480についてなんですが、

@implementation クラス名 のあとにstaticで静的変数を宣言しました。
そして、その変数に値を代入するメソッドを実行したのち、
そのクラスの別のメソッドから戻り値としてその変数の値を
返す、ということをやってみました。

ところが、NSLogでログ出力してみると、変数に値を代入する
メソッドにおいて、値を代入した直後に出力したログには、正しく
代入した値が表示されるのですが、別のメソッドでNSLogで
ログ出力してみると、nill がかえってきてしまいました。

デッバガで見ても、やはり静的変数の値が、値を代入したメソッドを
抜けると、保持されていないみたいです。

静的変数は、宣言したクラス内では値が保持され、どのメソッドから
でも値を入れたり、呼び出したり出来るものと認識しているのですが、
何からおかしい部分はあるでしょうか?
よろしくお願いします。

539:名称未設定
07/11/04 01:21:37 wjfj7/Ph0
その現象が再現する最低限のソースくらい出してくれ。

540:480
07/11/04 01:29:22 RpfIewzZ0
すみません。

@implementation myClass

static NSArray *arrayA;

+(void)ReplaceArrayA:(id)array{

arrayA = array;
NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"&"]);

}


+(NSArray *)getarrayA{

NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"-"]);
return arrayA;

}




まず、ReplaceArrayA に配列を引数として送り、次にgetarrayAからarrayAを戻り値として
ほかのクラスに値を渡します。

541:名称未設定
07/11/04 01:38:59 lq5eJ6su0
// 「値が保持され」るのはあくまでもアドレスだけということは理解してる?
// 指摘箇所2点

@implementation myClass

static NSArray *arrayA = nil; // (1)何も入っていない場合のためにnilを入れておくべし

+(void)ReplaceArrayA:(id)array{

arrayA = [array retain]; //(2)渡されたarrayが他でreleaseされてもいいようにretainしておくべし
NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"&"]);

}


+(NSArray *)getarrayA{

NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"-"]);
return arrayA;

}


542:名称未設定
07/11/04 02:04:34 wjfj7/Ph0
>>541

それじゃ leak するべ。

+(void)ReplaceArrayA:(id)array
{
[arrayA autorelease];
arrayA = [array retain];
NSLog(@...);
}


ついでにスタイルの問題を指摘しておくと、

* class 名は大文字で始める (myClass → MyClass)
* method 名は小文字で始める (ReplaceArrayA → replaceArrayA)
* getter method は変数名そのまま。get で始めない (getarrayA → arrayA)
* setter method は set で始める (ReplaceArrayA → setArrayA)

543:名称未設定
07/11/04 02:27:45 hRwgY5Fp0
setter と getter はスタイルだけの問題じゃなくて、
Cocoa binding につかえるかとかにかかわってくるので、
しきたりに従っておいたほうがいいですよ

544:名称未設定
07/11/04 02:43:43 lq5eJ6su0
>>542
>それじゃ leak するべ。
そうだ、スマン・・・

545:名称未設定
07/11/04 07:20:36 0qI6n8f/0
 [ NSThread detachNewThreadSelector: @selector( myThread ) toTarget: selfwithObject: nil ];
という感じで立てたスレッド内で、ファイルをダウンロードする為に
NSURLDownload *mydl = [ [ NSURLDownload alloc ] initWithRequest: req delegate: self ];
してみたのですが、delegateが呼出されなくなりました。
スレッドを立てずNSURLDownloadを使う分には、上手く行くのですが...スレッド内では使えないってクラスという事なのでしょうか?


546:名称未設定
07/11/04 07:53:48 EtU+Y3fk0
>>545
>Note that these delegate methods will be called on the thread that started
> the asynchronous load operation for the associated NSURLDownload
> object.

とリファレンスにある訳だけど、それは大丈夫なの?

547:名称未設定
07/11/04 08:02:48 IbdV1wlP0
IKImageBrowserって便利そうだな~と思ってたら
Bindingじゃ表示できないので、DataSoruceを作ってやらないと
いけないのね。昔のTableViewを使うみたいに。めんどい。

548:名称未設定
07/11/04 08:10:45 0qI6n8f/0
>>546
正直、なにを気をつけろと言っているのか、さっぱりw
まだ、Cocoaの勉強し始めであまり詳しくないんです。

やりたかったのは、
これ
URLリンク(www.big.or.jp)
とこれ
URLリンク(www013.upp.so-net.ne.jp)
を組み合わせて、ボタンをクリックしたら、一定周期で画像をダウンロードするアプリを手習いがてら作ってみようとしたんですけど、すっかり嵌ってしまいました。


549:名称未設定
07/11/04 08:33:21 TZN/ptPy0
>>544
あとで自分でreleaseすれば問題ないじゃんとか思ったのはオレだけでいい

550:名称未設定
07/11/04 09:00:12 EtU+Y3fk0
>>548
あなたが立てたスレッドAの中で mydl を生成したのなら、
そのスレッドAに対して delegate のメッセージが送られますよ、と。

だから、メインスレッドで delegate メソッドを受け取ろうとしてもダメ。

勉強し始めで NSThread と格闘する必要はあまりないような気がします。
やりたかったことは、NSThread で別スレッド立てなくても十分
出来ると思います。NSTimer で一定間隔で NSURLDownload を作って
やればいいと思う。

551:名称未設定
07/11/04 09:08:28 mdbrqZtH0
>>549
甘い。渡された array が arrayA とたまたま同じだった場合に
retain count が増えてしまって開放されなくなる。

まあ static object 一個ぐらいいい気もしますが。

552:540
07/11/04 09:09:37 hK/+lBWK0
>>541-543
ご指摘ありがとうございました。
release や retain に全く気を配ってなかったので、
そのへんを勉強し直したいと思います。

コーディングスタイルについても、アップルのドキュメントが
あったので、参考にしたいと思います。

また何かありましたらよろしくお願いします。

553:名称未設定
07/11/04 09:35:10 mdbrqZtH0
まあ Leopard で ガーベジコレクタがついたので、
retain/release はあんまり気にしなくてもいいんではないかと思うけど。

554:名称未設定
07/11/04 09:47:24 HL69eV8Y0
「あんまり気にしない」んじゃなくて、gc使うなら自分で参照カウントを「管理しない」のが正解じゃないの。gcとretain/releaseって共存できるの?

555:名称未設定
07/11/04 09:52:10 0qI6n8f/0
>>550
丁寧な説明ありがとうございます。
ご指摘の通り、スレッドはこっちへ置いておいて、NSTimerを調べてみます。


556:名称未設定
07/11/04 10:03:53 mdbrqZtH0
>>554
「あまり」気にしない、というのはたんに婉曲語法で使っただけでした、失礼

それとはべつに、retain/release と gc はある意味共存できるらしいですよ。
たとえば、retain/release つかって書いたライブラリを gc つかったプログラムから呼び出すとか。その場合は gc が retain/relase を乗っ取ってそっちが管理してしまうらしいですが。

557:名称未設定
07/11/04 10:38:34 0qI6n8f/0
NSTimerを使って、無事に思った事が出来ました。
ありがとうございました。


558:名称未設定
07/11/04 14:41:54 LrVqL1O30
>>554
ぱっとドキュメント流しただけでまだ勉強中なんだが、GCにするとRelease/Retain
で書いたコードは既出の通りRelease/Retainが無視されるようになる。ただし
-deallocも呼び出されなくなるようなので、dealloc内で解放以外の処理(ノー
ティフィケーションの登録削除とか)してると修正いるんじゃない?

559:名称未設定
07/11/04 15:22:32 AqAwLsu+0
Objective-C ランタイム内でガベージコレクタの書き込み禁止割り当てプリミティブを使用するようにコードをコンパイルします。
コードには、GC 対応であることを示すマークが付きます。GC 対応のマークが付いたアプリケーションは、ランタイムからガベージコレクションを有効にして起動されます。
このアプリケーションでリンクまたは読み込まれるすべての Objective-C コードも GC 対応でなければなりません。GC“必須”としてコンパイルされたコードは、
従来の Cocoa retain/release メソッドを使用しないものと見なされるため、ガベージコレクションを有効にして実行していないアプリケーションには読み込めません。
GC“サポートあり”としてコンパイルされたコードは、従来の retain/release メソッドのロジックも含まれていると見なされるので、どのアプリケーションにも読み込めます。
ガベージコレクションは、Mac OS X 10.5 以降でのみサポートされます。[GCC_ENABLE_OBJC_GC, -fobjc-gc | -fobjc-gc-only]

560:名称未設定
07/11/04 19:01:40 m+9mmSo10
>>528

どなたか、これ分かりませんか。

561:名称未設定
07/11/04 19:31:56 F4mUKxhG0
>>560
ググると参考になりそうなソースが見つかるよ。

562:名称未設定
07/11/04 21:27:53 m+9mmSo10
>>561
ググっても、ゲイツに聞いても見つけられませんでした。
教えていただけないでしょうか。

スポットライトで更新されたファイルをみてもそれらしいのは、見つけられませんでした。

563:名称未設定
07/11/04 21:56:20 eMpGE3Ul0
質問です。
IB で作った GUI のボタンのクリックによって呼び出される
メソッドは、IB でアクションとして登録したメソッドでなければ
いけないのでしょうか。

GUI のボタンクリックから直接クラスメソッドなどを呼び出せれば、
便利だと思うのですが...

よろしくお願いします。

564:名称未設定
07/11/04 21:57:36 g1odPZrS0
>>560
リファレンスのListing 2見る限りそのメソッドは、チェックボックスの表示と
チェック結果の取得ができるだけで、チェック結果は自分でuser defaultsなどに
保存する必要があるように読めます。
その保存結果を消せばよいのではないでしょうか。

565:名称未設定
07/11/04 22:11:04 7bDqXoXS0
なんでこんなところにVB厨が?

566:名称未設定
07/11/04 23:07:40 hkBkZacr0
>>563
便利感がわかりません。

567:名称未設定
07/11/04 23:16:31 +MPnTuBD0
>>563
Visual Studioでオナニーしてきてください。

568:名称未設定
07/11/04 23:21:01 m+9mmSo10
>>564
ありがとうございます。
小さいプロジェクトでやってみましたら、たしかに保存されません。

しかし、保存されている(と言うかチェック後アラートが出なくなった)プロジェクトもあります。
ユーザデフォルトは使っていますが、自分で保存はしてません...、何か別の要因ですかね。

569:名称未設定
07/11/05 00:03:37 cWmVqLLf0
>>563
引数はどうするんだい?

570:563
07/11/05 00:44:49 vL57EKa+0
自分はVisualStudio など使った事がないので、どうして
そのように言われるのか全く分からないのですが...

たとえば、ボタンをクリックすると引数のいらないシンプルな
メソッドhogeを実行させたい場合、ボタンから受け付ける
IBAction のメソッドは、単にhogeにメッセージを投げるという
メソッドを実装するということになります。そうであれば、ワンクッション
おかずに直接一般的なメソッドをボタンから呼べれば便利かと
思ったのですが。

>>566 の便利感が分からないというのは、このようなことで面倒
臭がってる感覚がおかしいということでしょうか?

>>567のレスは、このような考え方が Cocoa の考え方から逸脱
しているという意味ですか?

571:名称未設定
07/11/05 00:53:26 cxjLp4Oj0
>>570
>>>567のレスは、このような考え方が Cocoa の考え方から逸脱
>しているという意味ですか?
MVCの考え方からするとあまりよろしくないんじゃないかな

572:名称未設定
07/11/05 01:17:22 eRl6Ul/x0
>>570
それができたとしても、結局ボタンが押されたときに
どのクラスの
どのクラスメソッドを
動かすか指定しないといけないよね、
それと、アクションをctrl-クリックでつなぐのと
面倒くささは似たり寄ったりだとおもうんだけど?

573:名称未設定
07/11/05 02:46:33 Jwl3DmWu0
>>570
わざわざ引数無しのメソッドに投げる意味が分かりません。
引数を無視するほうがシンプルでしょうが。

574:名称未設定
07/11/05 03:23:50 eRl6Ul/x0
<チラシの裏>
ああ、573 のレスでやっと意味がわかった。
570 は
-(void) hoge
{
いろいろ
}
-(IBAction) action:(id)sender
{
[self hoge];
}
というのが面倒ということで、573 は単に
-(IBAction) action:(id)sender
{
いろいろ
}
と書いてしまえばいいといってるわけね。
</チラシの裏>

575:名称未設定
07/11/05 08:01:47 hf81cxz/0
○○ができた方が便利、なんて言い出したらキリないよ

だから、最低限アクションの発生もとがわかる様に
senderを引数とするメソッドを呼ぶ様にしているだけ



576:名称未設定
07/11/05 09:55:21 8hT6idG50

送り元を特定する処理を書かなくてすむので楽。

 senderがViewの場合、Viewに対して問い合わせが容易。
 senderがControllerの場合、Controllerに対して問い合わせが容易。

結局senderがある理由って、MVC/KVCを実装するのに便利っていう感じ?


577:名称未設定
07/11/05 17:00:38 IpQGnVb20
KVCは関係ないわな。
あと、.NETでもアクションに対してsender(とevent)は送られる。

578:名称未設定
07/11/05 23:20:43 bq62hcmK0
ネットからデータをダウンロードするたぐいのアプリを作ろうとしてるのですが、
マシンがネットにつながっているかどうかを調べるには、どうすれば良いでしょうか。

579:名称未設定
07/11/06 00:01:37 dDZ7LoMrO
人間の貴方ならどうやって確認しますか?

ブラウザで繋いでみる
ピンで応答を見る
ルーターにグローバルアドレスが振られているか確認する



580:570
07/11/06 00:43:54 EfkD9Hx20
>>574
まさに、そう考えていたわけです。

確かに、MVCの観点ではあまりよくないという事で、納得しました。
レスしてくださった皆さん、ありがとうございました。

581:名称未設定
07/11/06 01:03:46 yXSDPyUU0
64ビットでコンパイルしたらメモリ使用量が2倍になったorz

582:名称未設定
07/11/06 01:06:25 82XP8MSU0
>>578
まずは本当に「ネットにつながっているかどうか」を調べる必要があるのか考えるべき

583:名称未設定
07/11/06 01:27:07 0tRgvZRF0
>>581
そりゃポインタが 64bit になるんだから、id だらけの Cocoa プログラムなら目盛使用量が2倍になるベ

そんなにすごい仕事してるの?GUI で64bit って余程のプロでないと使わない気がする ...

584:581
07/11/06 19:07:34 EYJtqLlN0
>>583
特に64ビットは必要ないんだけどソースコードの品質を上げるために試してみた
現時点ではバイナリサイズもメモリ消費量もでかくなるのでメリットはないかも
でもねアクティビティモニタに唯一64ビットと出るので、優越感は味わえる...人も...

585:名称未設定
07/11/07 23:34:09 simMyFDM0
CoreAnimation に関する和訳資料が、木下さんの
URLリンク(journal.mycom.co.jp)

これぐらいしかないんだねー。
CocoaBreak! さんとかががんばってるのに、アップルジャパンは
仕事しないねー。

586:名称未設定
07/11/08 00:30:07 QRMuL5KH0
CoreAnimationってWindows(.NET)のWPFよりショボクない?
というより、CoreAnimationの活用場所が限られ過ぎorz

587:名称未設定
07/11/08 00:41:08 oaqtntGw0
確かに、簡単だからといって乱用は禁物ですよね。
でも、テーブルの並び替えや移動とか、アニメーションすることに
よってユーザビリティが上がる事もあるから、使い方次第ですかね。

588:名称未設定
07/11/08 00:50:21 rO6zyLL/0
とりあえず [[view animator] setFrame: ...] とかでアニメーションになるのはいいことだとおもう

589:名称未設定
07/11/08 09:08:40 7GRUAd0i0
setFrameとかを使う機会がないかも...
タブを切り替えるときにいちいちウインドウサイズなんて変更しないし

それよりもiPod touchのような感覚的に解りやすくなるUIを期待していたのにな
スクロール移動に慣性を持たせたりね

590:名称未設定
07/11/08 17:24:26 zEdsiKUW0
ていうかアニメーションのあるUIってなんかイヤだ

591:名称未設定
07/11/08 17:33:37 mw5+Wv5j0
IB3.0のライブラリパネルが軽くフェードインアウトするような
ちょっとした効果は、まあ多少心地いいんだけど

設定でアニメ切れるようにして欲しいとも思ふ

592:名称未設定
07/11/08 20:59:50 8YBf9K2+0
インターフェイスがぐにゃりと曲がって笑ったw
パフォーマンスを気にするソフトでは使えないなぁ

593:名称未設定
07/11/08 21:24:26 InO3sJ7M0
NSFileManagerで例えば大量のbmpを移動させると、
メモリ使用量が増えまくるけど何故?

594:名称未設定
07/11/10 11:24:03 yoCzO0Lu0
バグじゃない?
というかCocoaのメモリリークはGCに頼るしかないかもorz

595:名称未設定
07/11/10 15:52:41 x13Isy6l0
何でもライブラリのバグのせいにする奴がいるが、大抵は自分のコードが原因。

596:名称未設定
07/11/10 16:32:44 5JNbGREU0
Core Data で、関連の設定がうまくいかず困っています。
コード内で NSMutableSet を setValue: forKey: でエンティティの
関連に設定してるのですが、一度セーブして再びそのファイルを開くと、
設定したはずの関連が無くなってしまっています。

関連は「一時」ではありません。
アプリは、document based では無い方です。
どの段階で関連が切れてしまっているのか、さっぱりです。

597:名称未設定
07/11/10 22:21:46 ns71lhvZ0
CoreAnimation を使うためには、どのヘッダファイルを
インクルードすればいいんですか?
Apple の CoreAnimationプログラミングガイドにも、記述が
ありませんでした。
とりあえずQuartzCore.flamework はプロジェクトに取り込みましたが
ダメでした。

598:名称未設定
07/11/10 22:29:06 jaO8AJbf0
ヒレガスの本に書いてあるNSTableViewのサンプルが動かないんだが、仕様でしょうか。
要素を追加してもテーブルに反映されないです。
参考までにXCode、2.5 tiger。

599:名称未設定
07/11/10 22:32:02 uoStVjcs0
>>597
つ /Developer/Examples/Quartz/Core Animation

600:名称未設定
07/11/11 12:09:17 /h9pnLX90
Cocoaで開発しているとつい構造体の存在を忘れてしまうけど、
データ構造を解りやすく表現する手段として重要だよね。
(KVCやDictionaryだと規模が大きくなると大変)
そんな時にpropertyの登場。うれしいけど下位互換性を保てなかったものか....


601:名称未設定
07/11/11 23:54:16 3xiFJV1b0
構造体使ってると、PPC/Intelで整合性がとれなくなるよ...

602:名称未設定
07/11/12 00:02:37 6pJx53410
CPUに依存するコードを書くから。

603:名称未設定
07/11/12 00:16:22 6YN+nfcu0
エンディアンですか

604:名称未設定
07/11/12 00:18:23 jJlBa7Hw0
べつに構造体つかってもいいんじゃない?ちゃんとディスク/ネットワークに書くときに気をつければ。

605:名称未設定
07/11/12 00:41:11 bRgWt6KB0
>>601
そろそろ答えをお願いします。

606:名称未設定
07/11/12 01:52:24 6qKNkZiA0
オブジェクト指向はどこへ消えた




607:名称未設定
07/11/12 06:44:56 t+THQgiE0
質問します。たとえばQuickSilverみたいに、どんなアプリが動いていても
起動してくれるショートカットキーの設定って、どうやるのでしょうか?
システム全体のキーボードイベントをフックして実装するのかと想像してるのですが
そういうイベントを受け取る方法を見つけられませんでした。

キーボードとかマウスとかフォーカスとかのシステムイベントをフックする
方法ってあるんでしょうか?


608:名称未設定
07/11/12 06:55:13 inGQ9CFd0
QuickSilverってのは知らんけど、自分のアプリが手前になくても、特定のキーイベントを受け付ける方法としては
Carbon EventにHotKeyというのがある。
RegisterEventHotKey、kEventHotKeyPressed、kEventHotKeyReleased辺りを使う。

609:名称未設定
07/11/12 07:02:27 t+THQgiE0
>>608
ありがとう。さっそく試してみます。


610:名称未設定
07/11/12 09:06:28 1OnUOF+c0
エンディアン変換はAppleが用意してるのでそれ使えばいいだけだ。
注意しなければならないのは浮動小数点を中間コードに変換することくらいだな。
ディスクに書き込むのなら、構造体ではなくてXML使うようにしてるけどな。

611:名称未設定
07/11/14 11:18:15 n4OM99880
Cocoaにはデフォで複数行表示で左揃えなタブコントロールはないのか・・・

612:名称未設定
07/11/14 11:19:38 6xRVuEo90
そんな気持ちの悪いUIはいらん。

613:名称未設定
07/11/14 11:58:54 n4OM99880
まあ複数行表示なんてどうでもいいが
Safariのタブはなぜ標準提供されないのだろうか

614:名称未設定
07/11/14 21:09:56 +yEMUk1e0
AppleアプリのUIは継ぎはぎだらけなので真似するのが大変orz
だからRIUIを難しくしているような気がするけどな

615:名称未設定
07/11/14 22:16:14 KqpvVDcT0
3になってカバーフローとか簡単に出来るんかいな。

616:名称未設定
07/11/14 22:35:49 XnqPDGec0
Windows の Office の環境設定一度でも使った事ある人なら、
複数行タブの馬鹿らしさが分かる

617:名称未設定
07/11/14 22:46:16 iClwHio80
CGSGetOnScreenWindowListで取得したウィンドウに対して
CGSSetWindowLevelによりウィンドウレベルを設定しようとしています。
自アプリのウィンドウは変更されるのですが、
他アプリのウィンドウはエラーが返ります。
同じくTransitoinWindowでウィンドウを操作しようとしますが、
他アプリのウィンドウは操作出来ません。
どなたか他アプリのウィンドウを操作する方法をご存知ないでしょうか?

618:名称未設定
07/11/14 23:09:12 jAWzhafe0
他アプリのウィンドウの参照をどうやって取ったの?

619:名称未設定
07/11/14 23:12:58 jAWzhafe0
あああ、上のレスは忘れて

620:名称未設定
07/11/14 23:23:01 Xis7E2030
>>615
ソースが公開されているが読んでもよくわからん

621:名称未設定
07/11/15 00:45:47 GB5EBmPl0
>>609
QuickSilver オープンソースになったよ
blacktree-alchemy でぐぐれ

622:名称未設定
07/11/15 12:46:30 Mwb686F+0
時々Getterコードで
-(Foo*) foo
{
return [[foo retain] autolerease];
}
というコードを見るんだけど、何か意味があるの?

623:名称未設定
07/11/15 13:06:16 7a7zfmZx0
AutoReleasePoolが解放されるまでの間保持させるってことだろ。

624:名称未設定
07/11/15 13:08:13 woMNQIGU0
呼び出した後に元のクラスを解放することを想定してんじゃね?

625:名称未設定
07/11/15 13:29:39 9q45mP2D0
しかしCocoaのポリシーとしては、そういう場合はgetterを呼び出した側が(必要なら)retain-autoreleaseしなさいと言っているように見える。
URLリンク(developer.apple.com)

626:名称未設定
07/11/15 13:48:25 o0uKsE520
Leopardで刷新されたMac OS X対応開発言語「Objective-C 2.0」の真価を探る
URLリンク(journal.mycom.co.jp)

627:名称未設定
07/11/15 14:16:50 7a7zfmZx0
propertyのとこ、おかしくないか?
インスタンス変数がNSString * _name;だとエラーになるんじゃね?

628:名称未設定
07/11/15 18:06:34 yJVNynki0
プロパティとかブロック構文みたいのとか便利だと思うけどLeopard専用じゃあすぐには手を出しにくいなあ
記事にもあるけどせめて10.4くらいから動いてくれないと

629:名称未設定
07/11/15 19:42:11 7a7zfmZx0
Objective-C 2.0にするとTigerをサポート出来なくなるからな。後、2年くらいは
Tigerをサポートしたいし。

10.4.11でObjective-C 2.0のランタイムをサポートしてくれれば良かったのに。

630:名称未設定
07/11/15 22:27:57 OxRPElrt0
Xcode3ではなんと!!!!!!!!
@"あいうえお" が使える!!!!!!!
うれしい!!!!!!!

631:名称未設定
07/11/16 00:48:51 qefaGqef0
>>630
>@"あいうえお"

なにおきてもしらんど


632:名称未設定
07/11/16 08:32:57 oGZ+fjo20
>>625
>>622 と同じ例もあったりするけどね。

URLリンク(developer.apple.com)

どうなんだろうなあ。とりあえずコード的にはこっちの方がすっきりするが...
中がどうなってるか分からない getter から返ってきたオブジェクトはは常に retain
しなきゃいけないとすると、めんどくさいなあ。

633:名称未設定
07/11/16 11:47:44 N3h5kz0i0
>>632
信頼できないライブラリなら retain ではなく copy するべきかもね。
返された NSString が実は NSMutableString で、知らないうちに内容
が書き変わっていたりするかもしれんしw

634:名称未設定
07/11/16 12:09:30 cNV2hLUV0
>>632
GC 無し Cocoa では、init.... もしくは copy... 以外のメソッドから
返ってきた id を保持する場合は retain すべしという決まりになっていた
気がするんですが。

635:名称未設定
07/11/16 12:19:47 CbzyFQzY0
>>631
うそーん。なんで?

636:名称未設定
07/11/16 20:39:40 CUEn9uCm0
>>626>>622と似たようなコードの例が載ってて、それはマルチスレッドに対応するためらしい。
似てると言っても結構違うけど。

637:名称未設定
07/11/16 21:36:04 tvhXsAYJ0
>>632
getter/setterの組み合わせで、ひとつのautorelease poolの中でdeallocされないようにする
ということが目的なので、リンク先のListing3-6・3-7のどちらかを選べばよいということだと思います。
3-6のgetterと3-7のsetterの組み合わせで書いてしまったりすると、getした直後にsetされるとアウト。

retainする必要があるのはautorelease poolのサイクルの外で取得したオブジェクトを使いたいときですよね。
インスタンス変数に保持するとか、別スレッドから参照するとか。

>>636
マルチスレッドもautorelease poolに関してのことだから同じ話だと思いますよ。


638:名称未設定
07/11/16 23:23:35 hGnpQD7r0
>>626とかみて今まで不思議だったんだけど、nilのオブジェクトに
メッセージ送っても安全なんですかね?
retainやreleaseはnilチェック無しでもOKなんですか?

639:名称未設定
07/11/16 23:44:09 U4RUIbsl0
>>638
問題ない。

ついでにいえば ヒレガス本 p44にそのまんま書いてある。


640:名称未設定
07/11/16 23:47:58 WI/houEB0
>>638
先越されたが、メッセージ送信自体は安全らしい。
URLリンク(developer.apple.com)

ところで>>626のリンク先にnilにメッセージ送ってるコードある?

641:名称未設定
07/11/16 23:52:36 OhjYmzCB0
ぬるぽ!

642:638
07/11/17 03:22:18 kGkshqIg0
>>639-640
ありがと。いままでnilチェックしてたわ。他の言語なら
余裕で落ちると思ったけど。結構アバウトに動くのね。

>>626は_nameの初期値がnilだろうから・・・いいのかな?って感じに。

643:622
07/11/17 09:00:15 aQOoTe4X0
>>623
>>624
ありがとう!。でもそういう使い方を,,,,,,するかも(ゾッ)
プログラムを見直してみよ

644:名称未設定
07/11/18 12:38:23 YFIOeH3f0
>>637
>ということが目的なので、リンク先のListing3-6・3-7のどちらかを選べばよいということだと思います。

そういうことを疑問に思っているんじゃなくて。

>retainする必要があるのはautorelease poolのサイクルの外で取得したオブジェクトを使いたいときですよね。

上の文は、「サイクルの外で」で切れるんだろうなあ。最初「外で取得した」と読めた。

ともかく、getter の中で何をやっているのかわからないときがあって(ソースのないクラスとか)、
そうするとオブジェクトが autorelease pool に登録されてるかよくわからないだろ。

645:名称未設定
07/11/18 13:27:12 xb1Ii9wH0
「よくわからない」、じゃなくて、
getter から返ってきたのをインスタンス変数等に
保持したい場合はretain しないといけない、
保持しないで今の関数で使い捨てのときはなにもしなくていい、
というのが「きまり」じゃないの?

getter はそう使われて問題ないように組みなさいということのはずでしょ。
すくなくとも Cocoa の API は全部そうなっているんでは。

ネットに落ちてるフリーのライブラリもそれに準拠してると思ってたけども。

URLリンク(developer.apple.com)

646:名称未設定
07/11/18 14:17:29 6Cn1RaWD0
>「よくわからない」、じゃなくて、
>getter から返ってきたのをインスタンス変数等に
>保持したい場合はretain しないといけない、
>保持しないで今の関数で使い捨てのときはなにもしなくていい、
>というのが「きまり」じゃないの?

そんな基本的なレベルの話じゃなくて、「今の関数で使い捨て」しようとしたときでも、
getterの直後に別スレッドでsetterが呼ばれて、(getterによって返された)古いオブジェクトが解放された
とか、
getterの直後に別スレッドが(そのgetterメソッドを持っている)オブジェクトを解放した
とかいうケースの話をしてるんじゃないの?
こんな場合にも対応するには、getterによって返されるオブジェクトがたとえ「今の関数で使い捨て」であったとしても、
それをautorelease poolに入れるというのが一つの手なんだけど、それを誰がやるのか、ってことでしょ。

647:名称未設定
07/11/18 14:49:43 xb1Ii9wH0
なるほど、それは失礼しました。
Cocoa のマルチスレッドは全く判っていないので、勉強します ...

648:名称未設定
07/11/18 15:17:43 6Cn1RaWD0
>getterによって返されるオブジェクトがたとえ「今の関数で使い捨て」であったとしても、
>それをautorelease poolに入れるというのが一つの手なんだけど、それを誰がやるのか、ってことでしょ。

で、getterを呼び出した側でretainしようにも、その前に別スレッドで解放されたら終わりなので、結局getter自身でretain-autoreleaseするしかないと。
てことは、thread-safeを謳っているライブラリについては、getter側でretain-autoreleaseしていることを想定していいのかなぁ?

649:名称未設定
07/11/18 21:52:08 MNuVJVruO
Cocoaは難しい

650:名称未設定
07/11/18 22:23:41 DA9RCPIX0
確かに安定したソフトを作るのは難しいかも
まあ、リソースを確保したままで終わるような簡単なソフトは簡単だけどね

651:名称未設定
07/11/19 15:27:16 02ojrBP20
Cocoaってそんなに難しいのか? 比較対象がToolboxしか知らんからわかんね。

652:名称未設定
07/11/19 15:38:10 LV7+iq+v0
Toolboxに較べたら簡単だろう。Toolboxみたいに冗長で神秘の呪文を何度も
唱える必要がないだけでもありがたいくらいだ。部品も結構揃ってるので
本来やるべき仕事の部分に集中出来る。

653:名称未設定
07/11/19 16:40:12 LvFFLwZ10
フレームワークの充実度で圧勝。

654:名称未設定
07/11/19 17:00:29 PeaucL070
Toolboxに比べる事自体Cocoaに失礼

655:名称未設定
07/11/19 17:44:27 In4q82oq0
Interface builder にでてくる File's Owner, 1st Responder というのを理解するまではわけわからんかったが、その後は楽勝だった

656:名称未設定
07/11/19 17:52:00 9E3IVsAz0
このスレ住人のXcode 3.0への移行具合はどうよ

XcodeでClassを書く(Interface BuilderでClassが作れない)
Interface BuilderでのAnimationが設定できる
などなど変更点山盛りで覚えること多数で苦戦してんだけど

657:名称未設定
07/11/19 17:55:48 In4q82oq0
確かに instantiate class... というメニューが
IB になかったからどうしようかしばらく困った。
でもこれまでからなぜか Xcode でクラス作ってたのでそんなに変わってないです。

あと自分用の小さなソフトしか作ってないので、
GC on にして手抜きしまくりです。

Animation のつかいかたは判ってないです ...

658:名称未設定
07/11/19 18:13:08 LV7+iq+v0
IBからクラスを生成するとヘッダやソースのコメントが抜けてさみしいので
大抵の場合クラスを作ってからIBでactionやらoutletにつなげてた。
さすがにXcode3.0には戸惑ったが、まぁ何とかなりそうだ。

659:名称未設定
07/11/19 19:00:01 PeaucL070
>>658
> Bからクラスを生成するとヘッダやソースのコメントが抜けてさみしいので
> 大抵の場合クラスを作ってからIBでactionやらoutletにつなげてた。
俺も同じw

660:名称未設定
07/11/19 19:55:30 dZtoqNKV0
InterfaceBuilder3.0では、
Main.nibの中にFile'sOwnerとApplicationっていうインスタンスが入っているけど、
これって同じもん?っていうか前はFile'sOwnerがIB上からのApplication
インスタンスへの入り口ってつもりだったんだが。。。

661:名称未設定
07/11/19 21:10:34 uwOj8SG90
MainMenu.nibの場合は、同じ。

662:660
07/11/19 21:51:45 9Yj++wrA0
>>661
ありがと。ってことはMainMenu.nib以外では、違うってことだろうか。
ちょっくら試してみます。

 あと、IB3.0のライブラリには、いろいろ便利そうな新規クラスが
 入っているみたいだけど、これらの使い方をどこかのスーパー
 プログラマーがさっくりと分かりやすい日本語チュートリアル
 作って公開してくんないかなー。(他力本願)

663:名称未設定
07/11/19 21:56:31 PeaucL070
URLリンク(journal.mycom.co.jp)
に、
- (NSString*)name
{
@synchronized(self) {
return [[_name retain] autorelase];
}
}
ってコードがあるけど、ここの@synchronizedの対象って_nameじゃダメなの?

664:名称未設定
07/11/19 22:01:37 MSo6PDwW0
それにしても独特な開発環境だよね
洞察力の訓練には最適かもw

665:名称未設定
07/11/19 22:34:43 KUTYWe1G0
>>663
setName:をどう書くか悩むからだめ。

666:名称未設定
07/11/19 23:08:49 +8DQ+G5D0
そういえばnilへのsynchronizeの挙動って定義されてたっけ?

667:名称未設定
07/11/20 12:18:19 xK/rJZ3Z0
>>662
File's Owner はその NIB を開いた際にプログラム側から nib's owner として登録されたオブジェクトになる。
MainMenu.nib は自動的に NSApp が開いて、File's Owner は NSApp。
ドキュメント型ソフトのばあいは、NSDocument が nib を開くので、
File's Owner は自分でつくった NSDocument のサブクラスになる。

それ以外に nib をつくって、自分でプログラムからあからさまに開く際は
File's Owner を自分で設定する。

668:662
07/11/20 19:03:19 vX1nP8Nx0
>>667
なるほど!っていうか初めてFile's Ownerの
役割が分かりますた。
簡潔且つ的確なご説明ありがとうございます。

669:名称未設定
07/11/21 20:17:19 G817xlPC0
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
の中でmenuItemに対してsetState:とかtagを呼ぶと
'tag' not found in protocol(s)
とか言われてしまうんだけどなんでだろう?

670:名称未設定
07/11/21 22:56:41 sg+XtEJO0
知らんけど、NSMenuItemがプロトコルだからじゃね?
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;//引数menuItemはNSMenuItemプロトコル
- (BOOL)validateMenuItem:(NSMenuItem*)menuItem;//引数menuItemはNSMenuItemクラス
って事かなー。




671:名称未設定
07/11/21 23:17:07 hTxVVTev0
>>669
まずヘッダを確認してみてはいかがでしょう。
ウチのxCode2.4ではdeprecatedだけど一応使えるみたい。

672:名称未設定
07/11/22 00:53:05 NI+W3MNs0
ありゃ、プロトコル自体がdeprecatedだったのか
警告が「プロトコルの中にないよ」って書いてあるもんだから、
NSMenuItemプロトコルの中を見てちゃんとあるのに変だな~と混乱してた
失礼しました

結局>>670みたいに書き直しなさいということね

673:名称未設定
07/11/22 11:59:27 Krn36QQ60
質問です。

まずNSWindowのサブクラスMyWindowにNSViewのサブクラスMyViewが乗っています。
ここでMyWindowにinitWithContentRect:をオーバライドして、
中で[super initWithContentRect:...]と典型的な初期化をしているのですが
この引数に任意のrectを渡した場合にMyViewのサイズを合わせるにはどうすればいいのでしょうか。

IBでAutosizingを設定しても聞いてくれなくて。

674:名称未設定
07/11/22 17:12:56 kaRw/iTz0
行を選択するたびにそのイベンオをとらえて処理をしたいと考えてます。

- (IBAction)tableViewSelected:(id)sender
{
    row = [sender selectedRow];
    NSLog(@"the user just clicked on row %d", row);
}
そこで,上記では行を選択すると選択した行番号を得られるのですが,
行番号ではなくオブジェクトを得られる方法はありますか?

IBAction はCore Dataで作ったTableViewとAppDelegateでつないであります。
なので、クリックされた行のNSManagedObjectが得られるといいのですが,
直接的な方法はないものかと。


675:名称未設定
07/11/22 21:10:09 a/peNeZj0
NSArrayController 使って bind させればいいんじゃないの?

676:名称未設定
07/11/22 22:03:28 GA2XBdAS0
> まずNSWindowのサブクラスMyWindowにNSViewのサブクラスMyViewが乗っています。
> ここでMyWindowにinitWithContentRect:をオーバライドして、
> 中で[super initWithContentRect:...]と典型的な初期化をしているのですが
> この引数に任意のrectを渡した場合にMyViewのサイズを合わせるにはどうすればいいのでしょうか。

状況がいまいちよく分からないが、
MyWindowの上にMyViewが乗ってるっていうのは、IBで乗せてるの?
ならば、nibファイルからMyWindowが生成されるので、初期化にはinitWithCoder:が使われるはず。
initWithContentRect:でMyWindowを生成しているなら、手動でMyViewを乗せることになるはず、
IBでAutosizingを設定っていうのも、ちょっと変な気が。

677:名称未設定
07/11/22 22:22:26 Krn36QQ60
>>676
IBでMyWindowにMyViewを乗せています。
@implementation MyWindow
- (id) initWithContentRect: ...
{ NSWindow* w = [super initWithContentRect: ...]; return w; }
@end
のような記述をしていて、このときMyViewは手動で乗せなくても表示されています。

また、Autosizingでウィンドウに合うようにMyViewを―~~―な状態にしておけば、
ユーザがGUI上でリサイズをしてもMyViewのサイズが変わっています。

表示した後マウスでリサイズする分には問題が無いわけですが、
上記initWithContentRect:の中で任意のrectを指示した時に
初期のMyViewのサイズがIBで指示したサイズになってしまうのです。
これは手動でMyViewを生成するべきなのでしょうか?


678:名称未設定
07/11/22 23:50:05 T7a7mhhK0
>>677
awakeFromNibで設定するのが簡単だと思う。

679:名称未設定
07/11/23 00:34:54 1Oijf2vw0
>>677
IBでインスタンス化したオブジェクトはアーカイブされてnibファイルに格納されて
プログラムで読み込むときはアンアーカイブして取り出すので
初期化メソッドはプログラム中では呼ばれない

はず
nib上のオブジェクトを初期化するにはawakeFromNibを使いましょう

680:674
07/11/23 10:22:00 GeUHqHT60
>>675
どうも
NSArrayControllerを使ってBindするというのは、
具体的にはどうすればいいのですか?

NSArrayControllerのインスペクタのBindをみても
NSTableViewのクリック関する項目はないのですが。

681:名称未設定
07/11/23 10:49:36 hcJ8Hx2n0
NSTableView の binding のところで、中身を
NSArrayController の content とかに設定して、
NSArrayController のほうを CoreData につないでください。
ADC のどっかにチュートリアルがあったはず。

682:675
07/11/23 12:06:28 gHJ1tYgX0
>>680
行の選択が変化したかどうかは KVO で見る

NSArrayController の例えば selectionIndex とかを addObserver で登録して、
observeValueForKeyPath の中で、そのときに NSArrayController に
選択されている NSManagedObject を取り出す


683:674
07/11/23 12:37:53 GeUHqHT60
>>682
>>681
素早い応答ありがとうございました。

ADCのチュートリアルを教えてください。
Core Data Programming Guideをみたり
table view bind で検索しましたが,
それらしいものが見つからなくって。

まだまだ初心者なので,インスペクタの設定や
サンプルコードがないとピンとこなくて。
すいません。

もしサンプルプロジェクトをダウンロードできるサイトがあったら
教えてください。

684:名称未設定
07/11/23 12:51:39 hcJ8Hx2n0
英語だけど、apple のこれ
URLリンク(developer.apple.com)
はビデオ付き。まさに tableview につないでるから。
あと、Scott Stevenson の
URLリンク(cocoadevcentral.com)
もわかりやすい。
というかそこの記事はどれもこれもわかりやすいので、おすすめ。

あと、mkino さんのところにも解説ありそうだけど、どうでしょう?
すくなくとも本の第三版にはのってるらしいけど、持ってないのでわからん。


685:名称未設定
07/11/23 13:02:19 iA/8JIe10
binding ってバカを量産する仕組みなんだろうか

686:675
07/11/23 13:08:18 gHJ1tYgX0
>>683
table view の bind じゃないです

MVC のパターンにして
M: Core Data
V: NSTableView
C: NSArrayController
で、それらの間を binding で結んで、table の変化を見るのではなくて
NSArrayController の selection の変化を見る、ということ
で、NSArrayController の selection の変化は key value observing で見る

アプリケーション本体の方には NSTableView ではなく
NSArrayController の方をつないで、そこに選択されている
NSManagedObject を取り出せば、それが NSTableView で
選択されている NSManagedObject と同じものになります

サンプルコードはわからないけど、ドキュメントなら、
Core Data Programming Guide 以外なら
Cocoa Bindings
URLリンク(developer.apple.com)

Key Value Observing
URLリンク(developer.apple.com)

とか


687:名称未設定
07/11/23 15:23:08 NQ+7IO3Q0
>>685
自分の頭の中のCocoaはbindingが導入される前で止まってるw
未だに使った事が無い恐がりの俺

688:名称未設定
07/11/23 15:40:43 vBC4oFan0
bindingとpropertyは職業プログラマ用だろ。
garbage collectionは量産しそうだけど、いいんでない?

689:名称未設定
07/11/23 16:07:53 hcJ8Hx2n0
>>687
binding は Panther で追加された頃は IB での扱いがひどかったけど、
(設定しても反映されない等、)最近は随分安定している気がする。

690:名称未設定
07/11/23 16:08:47 40+P0Y410
>>688
いや、Bindingだけは素人でもきちんと使えるようにすべき
MVC、KVCできちんと書けるようになるからな


691:名称未設定
07/11/23 17:45:45 /aNuome90
メモリ管理をあまり理解しないまま、KVCを使っていると知らない間に
大量のメモリリークを生みだしそうな気がする
まあ、GC前提なら問題ないけどね

692:名称未設定
07/11/23 19:05:51 gj7dOudc0
>>689
俺未だにPanther使ってるけど、そんなことないぞ。


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