07/09/01 17:23:27 V20HLbnL0
>>292 >>294
回答ありがとうございます。
チャレンジしてみます。
301:名称未設定
07/09/02 16:01:51 1W/RX5JH0
NSTableView(NSArrayController)で最後にソートしたカラムとソート順をアプリの終了時に保持して、
次回起動時に前回の状態でソートするにはどうすればよいのでしょうか?
[[[NSArrayController sortDescriptors] objectAtIndex:0] description]
をNSStringに代入してプロパティリストに保存できたのですが、
なんか無理矢理なやり方かなと。
良い知恵がありましたらお願いします。
302:名称未設定
07/09/02 17:36:24 QfZEBWjg0
自分で変数もってそれをプロパティリストに保存して起動時にソートしなおすとかは?
とNSTableView使ったことないけど言ってみる
303:名称未設定
07/09/02 23:43:35 BsNs+MD5P
descriptionで保存するんじゃなくて、sortDescriptorsにNSArchiver使った方がいいんじゃない?
で次回起動時にはNSUnarchiverを使って復元したものをsetSortDescriptors:して再ソート
304:名称未設定
07/09/03 01:24:15 d9shAoB60
ass乞食がcocoaのhtmlレンダーマンを掘り当てたらしいね
305:名称未設定
07/09/03 01:34:14 J1vhJrBi0
中国人は赤ん坊も食べる
URLリンク(www21.tok2.com)
306:名称未設定
07/09/07 21:36:25 EENbuIBN0
ああ、さっぱりわからないよ兄さん。
307:名称未設定
07/09/11 23:43:45 8nKQQObl0
NSPredicateで" カラム=='値' "というのはできるのですが、
" 関数の返り値=='1' "みたいなことは出来るのでしょうか?
よろしくお願いします。
308:名称未設定
07/09/12 20:54:55 0PGJU/k/0
またHMDT恒例の、エントリ無関係ツッコミが始まりましたな。
309:名称未設定
07/09/12 21:50:19 f0yZ2CXF0
>>307
オブジェクトobj の関数(メソッド)func が数字を返すとき、
BOOL result = [[NSPredicate predicateWithFormat:@" func == 1"] evaluateWithObject:obj];
みたいなこと?そのまんまだけど
310:名称未設定
07/09/13 09:13:13 tYOZKWhg0
Core Dataを使って、非常に簡単なアプリを作ろうとしています。
単語帳みたいな感じのものなんですが、
Cardエンティティ:
- 属性word (String)
- 属性meaning (String)
というデータを持っています。
例えば、(word, meaning) = ("hello", "こんにちわ")みたいに格納します。
さて、wordの表示は左側にNSTableColumnでリスト表示させ、
その右側にNSScrolViewでselectされた単語の意味を表示させます。
このとき、NSScrolViewから意味を編集したいのですが、
この中身を日本語のプレインテキストにしたと思っています。
属性meaningのタイプはStringのままでいいのでしょうか。
Stringにすると、実行時に右側のNSScrolViewを編集することができなくなります。
そこでタイプをバイナリデータにしてみたんですが、
当然、作成されたXMLの中身がバイナリになって可読性が悪くなります。
タイプをStringのままで、NSScrolViewを編集できるようにするにはどうしたらいいでしょうか。
311:名称未設定
07/09/13 10:03:32 tYOZKWhg0
すいません。
ごにょごにょやってたら出来ました。
何をやったのかは分かりませんorz
312:名称未設定
07/09/14 03:22:19 vPRPlLH90
まず、NSScrollViewから編集したつもりになってるようだけど、
実際はNSScrollViewの内部にあるNSTableViewから操作している。
NSScrollViewはスクロールを可能にするだけの縁取り的なものに過ぎない。
だからもしリファレンス等で調べるなら、
NSScrollViewではなくNSTableViewを参照すること。
次に、保存方法と編集可能云々は別問題なハズ。
Interface BuilderでNSTableViewのインスペクタのEditableとか
いろいろいじったんじゃない?
313:名称未設定
07/09/14 11:37:14 gUdBg/zp0
今回発売されたLogic 8は1000p以上の翻訳済みマニュアル付いてるそうな
世界同時発売で
で、Cocoaリファレンスの翻訳はまだですか?
314:名称未設定
07/09/14 13:29:15 sFJVO0iJ0
>>313
Cocoa Break
315:名称未設定
07/09/14 18:33:16 ZI20taVc0
cocoa breakは神
316:310
07/09/14 20:03:38 5NLP9ylV0
>>312
NSScrollViewは勘違いでした。
どこを弄ったのか良く分からなかったので、
何度か新規でプロジェクトを作り直したりしたら動いています。
今は何と何をバインディングさせたか理解してるんで、
ちゃんと正しいことをやってるくせぃ。
317:名称未設定
07/09/14 23:10:21 +9nlJNpQ0
俺をAppleで働かせてくれるなら死ぬ程翻訳しまくってやってもいい
とほざく求職中の俺
318:名称未設定
07/09/17 21:49:27 5CFLrUlr0
日本語入力 �フ 英語入力 をアプリの中から切り替えるには、どうすれば
よいでしょうか。
URL を入力するテキストフィールドがあって、そこが入力状態になったときに
自動的に英語入力に切り替わるようにしたいと思っています。
319:名称未設定
07/09/17 22:47:37 vp+tEm1m0
たぶんそういうのはCarbonの中の古いAPIを使うんじゃないかな
320:名称未設定
07/09/19 12:44:09 QAAMlS8c0
Core Dataで名前と住所があるとして、NSTableViewで表示させるとします。
で、カラムは名前と住所を表示させるんだけども、
住所が未入力の人は名前を赤で表示させたい。
これってどうやればいいんでしょうか。
321:名称未設定
07/09/19 16:00:49 7OHnYPwj0
>>320
●NSTableView に delegate を設定して tableView:willDisplayCell:forTableColumn:row: の中で、
住所の中身を調べて名前のセルに setTextColor する。
●もしくは、下記の2つのファイルを作り、プログラムのどこか最初の方で(applicationDidFinishLaunching等の
メッセージを受けて)、以下のように
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];
独自の値変換を登録しておく。Interface Builder では、名前カラムのbindins -> textColor -> Value Transformer に設定しておく。
322:名称未設定
07/09/19 16:01:37 7OHnYPwj0
長過ぎて怒られたので分割。
//---------- MyValueTransformer.h ----------
#import <Cocoa/Cocoa.h>
@interface MyValueTransformer : NSValueTransformer {
}
+ (Class)transformedValueClass;
+ (BOOL)allowsReverseTransformation;
- (id)transformedValue:(id)value;
@end
323:名称未設定
07/09/19 16:02:40 7OHnYPwj0
//---------- MyValueTransformer.m ----------
#import "MyValueTransformer.h"
@implementation MyValueTransformer
+ (Class)transformedValueClass {
return [NSColor class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
- (id)transformedValue:(id)value {
if ( value != nil && [value respondsToSelector:@selector(length)] && [value length] > 0 )
return [NSColor blackColor];
else
return [NSColor redColor];
}
@end
324:名称未設定
07/09/19 16:09:53 7OHnYPwj0
念のため名前カラムの Bindings の中ね。
Bind to: NSArrayController
Controller Key: arrangedObjects
Model Key Path: (住所の入っているプロパティ名)
Value Transformer: MyValueTransformer
325:320
07/09/19 20:31:54 QAAMlS8c0
>>321
まんま使わせてもらいました。
ありがとうございます。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
をHoge_AppDelegate.hに足して、
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
WordColorTransformer* transformer = [[[WordColorTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"WordColorTransformer"];
}
をHoge_AppDelegate.mに足しました。
初めてD&D以外の作業をXcodeでやったわw
C/C++しか触ったことないんだけど、Cocoaの思想みたいなもんが見えてきた。
これは便利そうだ。
326:320
07/09/19 20:36:30 QAAMlS8c0
すいませんが、もう1つ。
名前カラムに新規登録する度に、
headerを押さないでも自動でソートさせるのは、
どうすればいいんでしょうか。
327:名称未設定
07/09/20 01:30:49 r/uaSxxr0
>タップ……指で軽く叩く操作。マウスのクリックに相当
>ダブルタップ……2回叩く操作。ダブルクリックに相当
>ドラッグ……写真を移動する時に指をずらす操作
>フリック……リストをスクロールする時に指で軽くはらう操作
>ピンチ……2本指でのつまむ操作の総称
>ピンチアウト/ピンチオープン……2本指の間を広げて拡大する時の操作
>ピンチイン/ピンチクローズ……2本指の間を縮めて縮小する時の操作
URLリンク(k-tai.impress.co.jp)
- (void)touchFlicked:(NSEvent *)theEvent;
とかになるのかな?
328:名称未設定
07/09/20 11:06:40 CMoMWviD0
>>326
とりあえず思いつくのは notification を使うことかな。
IB で Hoge_AppDelegate に Outlet を2つ追加して接続。ここでは仮に arrayController(NSArrayController に接続)と
tableView(NSTableView に接続)としておく。
Hoge_AppDelegate.h に追加。
IBOutlet NSTableView *tableView;
IBOutlet NSArrayController *arrayController;
Hoge_AppDelegate.m を修正。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objectChanged:) name:NSManagedObjectContextObjectsDidChangeNotification object:nil];
NSArray* sortDescriptors = [NSArray arrayWithObjects:
[[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] autorelease],
[[[NSSortDescriptor alloc] initWithKey:@"address" ascending:YES] autorelease],
nil
];
[tableView setSortDescriptors:sortDescriptors];
}
- (void)objectChanged:(NSNotification*)notification {
[arrayController rearrangeObjects];
}
329:名称未設定
07/09/20 11:12:40 CMoMWviD0
>>326
dealloc の中で後始末もしておいて。一応、マナーとして。
[[NSNotificationCenter defaultCenter] removeObserver:self];
330:名称未設定
07/09/20 22:29:15 A01fsnmG0
iPhone、iPod に OS X を内蔵したおかげで、Cocoaプログラマがすごい増えてるね
331:名称未設定
07/09/20 23:33:41 Xhf7l+HF0
>>330
?
332:名称未設定
07/09/21 00:21:45 Qi2gwohZ0
>>326
NSArrayControllerのsortDescriptorsを設定してあれば、自動的にソートされます。
あと、NSValueTransformerの登録はNib fileのロード前にする必要がありますから
Value Transformer Programming Guide Registering a Value Transformerでは
application’s delegateでinitialize: class messageで行うことが推奨されています。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
ではタイミングが遅いように思います。
問題なく動いているようなので、結果オーライかもしれませんが。
333:320
07/09/21 08:33:51 lSzwq6kK0
>>328
ははあ。なるほど。ありがとうございます。
>>332
IBからinspectorで、NSArrayControllerのsortDescriptorsを選ぶんですよね。
ここで、Model Key Pathにnameを設定して、
Validates Immediatelyにチェックを入れるんでいいのでしょうか。
そうすると、
[Session started at 2007-09-20 13:22:40 -1000.]
2007-09-20 13:22:42.993 Hoge[2611] An uncaught exception was raised
2007-09-20 13:22:43.002 Hoge[2611] [<Hoge_AppDelegate 0x38eda0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.
2007-09-20 13:22:43.009 Hoge[2611] *** Uncaught exception: <NSUnknownKeyException> [<Hoge_AppDelegate 0x38eda0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.
Hoge はシグナル 5(SIGTRAP)により終了しました。
となります。これって、"name"というkeyが存在しないって意味だと思うんですが、
どうやったら"name"を見つけてくれるんでしょうか。
334:320
07/09/21 08:38:01 bDIzEEDW0
また、Hoge_AppDelegate.mの中で、
+ (void)initialize {
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];
}
というのを実装すればいいってことですか?
initializeが1度しか呼ばれない関数なのか理解していないんですが、
static BOOL initialized = NO;
とか用意して、
if(initialized){
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];
initialized = YES;
}
とするべきですか?
長々とすみません。
335:名称未設定
07/09/21 12:09:17 T5koP5+L0
>>334
URLリンク(developer.apple.com)
の「クラスオブジェクトの初期化」のところを見ると、
クラスは自身が使用される前に、ランタイム環境を準備する機会を与えられます。
initialize は継承されるため、サブクラスのために何度も呼び出される可能性があります。
とのこと。
336:名称未設定
07/09/21 21:44:20 sPcrBli00
NSView(のサブクラス)にテキスト(日本語)を描画したいのですが、
どうすれば良いでしょうか?
(日本語のテキストを持ったNSStringインスタンスの内容を描画することを想定)
ネット上もあるドキュメント、サンプルコードなどご教示いただければありがたいです。
337:名称未設定
07/09/21 22:05:02 tcpbBsLq0
教えようと思ったけどメル欄がうざいからやめた
338:名称未設定
07/09/21 22:12:28 sPcrBli00
>>337
お騒がせしました。
自己解決しました。
↓
hmdtに置いてありました。
339:332
07/09/21 22:35:44 Qi2gwohZ0
>>333
>NSArrayControllerのsortDescriptorsを設定してあれば、自動的にソートされます。
と書きましたが、これではダメでした。
Core Recipes Appを参考にして作ったiTunesもどきのメモソフトで自動的にソート
ができていたので、そう書いたのですが、簡単な検証プロジェクトを作って実験したところ
ソートされませんでした。
自作のメモソフトでなぜうまくいっているのか検討してみます。
しかし違いといえば、contentSetにバインドしているくらいで、ほとんどコードを書いていない
部分なので、困惑しています。
>ここで、Model Key Pathにnameを設定して、
NSSortDescriptorを要素に持つNSArrayを指定します。
initializeについては、ヒレガス本P138で
+ (void)initialize
{
//自身はPersonクラスか?
if (self == [Person class]){
[self setVersion:2];
}
}
例が載っています。
2nd Editionでは索引や、他の章で引用されているのに、この項が載っていません。
340:名称未設定
07/09/22 01:50:16 x63UH/2b0
>>339
どこかで「自動的にソートされる」ってのを見てやってみてだめだったので、
いろいろ試した結果が >>328 なんですよ。
もし、バインドだけでいけるなら私も知りたいです。
341:320
07/09/22 08:53:57 Npi1C4cP0
>>328
書いて頂いたコードを写させて頂きました。ありがとうございます。
ただ、新規項目を追加するとそいつはカラムの最下部に表示されてしまいます。
IBから常にソートできそうな気もするんですが。
>>335
参考にさせて頂き、↓のように変更しました。
+ (void)initialize
{
static BOOL initialized = NO;
if(initialized){
return;
} // if
initialized = YES;
WordColorTransformer* transformer = [[[WordColorTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"WordColorTransformer"];
}
342:名称未設定
07/09/22 09:31:10 Jwo4xXMJ0
削除したのに残るplistは「板データを修復」で消えるんだけど。
343:名称未設定
07/09/22 09:32:02 Jwo4xXMJ0
ごめん誤爆
344:名称未設定
07/09/22 18:08:59 e0U06nBz0
アレイコントラーのインスペクタにそれらしいチェックがあったような。
つーかインサートするたびにソートしたらうざくね?
345:名称未設定
07/09/22 21:52:36 YtaGMbG00
HMDTでiPhone開発の話をしてるけど
touch用の開発環境って出てきてるのかな?
iPhone用のアプリはtouchでは動かないみたいだけど
346:名称未設定
07/09/22 22:04:54 V8IHJ6+c0
もうiPod touchがてにはいるようになったの?
347:名称未設定
07/09/22 22:59:32 YtaGMbG00
今日出荷案内が来たよ
348:名称未設定
07/09/23 11:15:15 74QYrWGQ0
Core Data アプリで、data を NSArrayController のバインディングで
テーブルビューに表示させているのですが、IB で NSArrayController に
設定した predicate が働いてくれません。
hoge という属性を持つ Core Data のエンティティがあり、
NSArrayController の IB の Inspector の Attributes で
hoge != "hogehoge" として Set Predicate したのですが、
テーブルビューの中に hoge == "hogehoge" のデータも含め
全データが表示されてしまいます。
ちなみに、hoge == "orz" などいい加減な predicate を設定しても
動作は変わらず、すべてのデータが表示されます。
バインディングの設定の方は、何度も確かめたので正しいと思います。
どこで使い方を間違えているでしょうか。
349:名称未設定
07/09/23 15:30:27 zABjWK1w0
たぶん根本的に間違ってるよ。
そこに条件式を書いただけでは動かない。
350: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だろうから・・・いいのかな?って感じに。