1 Name: 名称未設定 [Cocoa (・∀・)イイ!] Date: 03/09/12 00:47 ID: 8ue/kw6d Be:
Cocoaはやっぱり!を見て真似してソフトを作ったは良いが、
オリジナルを作ろうと思ったら、全然その先に進めない人集まれ!

親切なプログラマーさんが暇なときだけ教えてくれてる(よね?)

前スレ
Cocoaはさっぱり! http://pc.2ch.net/mac/kako/1007/10076/1007632025.html
Cocoaはさっぱり!version:2 http://pc.2ch.net/test/read.cgi/mac/1036923528/l50

関連スレは >>2
2 Name: 名称未設定 [Cocoa (・∀・)イイ!] Date: 03/09/12 00:51 ID: 8ue/kw6d Be:
プログラム関連スレ
Macでプログラミング{3} http://pc.2ch.net/test/read.cgi/mac/1049070432/
MacでC言語 http://pc.2ch.net/test/read.cgi/mac/1048587374/
MacOSX Java総合スレッド http://pc.2ch.net/test/read.cgi/mac/1047361032/
「AppleScript,Perl,Shell」OS Xでスクリプトスレ http://pc.2ch.net/test/read.cgi/mac/1055091471/
Mac OS XをUnixとして使ってる人の為のスレ その5 http://pc.2ch.net/test/read.cgi/mac/1055874672/
XCode http://pc.2ch.net/test/read.cgi/mac/1061702196/

参考リンク
HAPPY Macintosh Developing TIME!
ttp://homepage.mac.com/mkino2/

Cocoa Developer Documentation
http://developer.apple.com/documentation/Cocoa/Cocoa.html
file:///Developer/Documentation/Cocoa/CocoaTopics.html

Cocoaはやっぱり!
ttp://www.big.or.jp/%7Ecrane/cocoa/
3 Name: 名称未設定 [sage] Date: 03/09/12 00:54 ID: xFtJ+SdA Be:
>>1
乙カレー
4 Name: 名称未設定 [sage] Date: 03/09/12 01:01 ID: VMDyLOXV Be:

[ >>1 sendMessage: "乙" ];
5 Name: 名称未設定 [sage] Date: 03/09/12 01:19 ID: QACoJ0KQ Be:
>>4
コンパイルエラー
6 Name: 名称未設定 [sage] Date: 03/09/12 01:27 ID: BOCgM/4R Be:
■必須ツール
Cocoa Browser(Cocoa API のリファレンス用ブラウザ )
http://homepage2.nifty.com/hoshi-takanori/cocoa-browser/index-j.html
Docoa Browser(上記のWebKit版)
http://www.iwascoding.com/DocoaBrowser/
■便利ツール
Completion Dictionary(ProjectBuilderの入力支援ツール)
http://www.obdev.at/products/completion-dictionary/index.html
7 Name: 名称未設定 [sage] Date: 03/09/12 08:11 ID: Rs5hdxNu Be:
入力支援ツールならこれも導入しておくと便利。
PBXtra
http://www.versiontracker.com/dyn/moreinfo/VT/16470
8 Name: 名称未設定 [sage] Date: 03/09/12 14:06 ID: KdDjq9P/ Be:
>7
option-M押しても、前単語選択にしかならへん。
9 Name: 7 [sage] Date: 03/09/12 21:40 ID: Rs5hdxNu Be:
>>8
ReadMeは読んだ?
PBKeyBinding.dictを~/Library/KeyBindings/に
コピーする必要があるよ。

あと、にわかXP厨としてこれも紹介しておこう。
ObjcUnit
http://oops.se/objcunit/
10 Name: 名称未設定 [] Date: 03/09/14 00:28 ID: 5a/4RCFa Be:
[[NSThread currentThread] age];
11 Name: 名称未設定 [sage] Date: 03/09/14 07:32 ID: WZrztSl9 Be:
NSWindowControllerを継承したクラス内で
[window setTitle:@"hogehoge"];
としたら、
そんなもんいきなり使うっていわれてもなー。
といわれましたがなぜなんでしょう?

同じメソッド内で
[self showWindow:self];
が通るのに、不思議。

どちらも継承元のNSWindowControllerで定義されているので
継承したオブジェクトからも使えそうなもんですが。
もしかしてprivateなOutletなのかな?
12 Name: 名称未設定 [sage] Date: 03/09/14 08:12 ID: 4t5YX5+h Be:
>>11
[[self window] setTitle:@"hogehoge"];
なら怒られずに通るような気も。
13 Name: 名称未設定 [sage] Date: 03/09/14 08:13 ID: 4t5YX5+h Be:
NSFileManager を使ってファイル操作をしようとしています。
この際、Finder で不可視のファイルについては操作を加えないようにしたいのですが、
可視/不可視を判定する良い方法は無いでしょうか。
14 Name: 名称未設定 [] Date: 03/09/14 09:36 ID: ucWzBMQu Be:
ヲレも今、FileManagerを読んでいるところなので質問。
ファイル一覧の習得
必要なファイルの確認
一覧をユーザーに掲示
選択されたファイル群を順に処理。
って結局、NSStringファイル名で各行程を受け渡していくしかないのでしょうか?
15 Name: 名称未設定 [] Date: 03/09/14 11:31 ID: 5a/4RCFa Be:
>>13
componentsToDisplayForPath:
は駄目だったの?

>>14
話が見えにくいんだが、どう困ってるんだ?
16 Name: 名称未設定 [sage] Date: 03/09/14 21:40 ID: WZrztSl9 Be:
>>12
ごめんよ、書いてからすぐにクラスブラウザ眺めてて気づいたよ…
でもInterface Builderだとアウトレットのところにwindowって書いてあるのはなんでだろう…
17 Name: 名称未設定 [sage] Date: 03/09/14 21:43 ID: WZrztSl9 Be:
ついでに質問しまっするが

- (id)initWithFile:(NSString *)aFile
{
self = [self init]; // ←ここでinitWindowNibNameなどを呼び出してる
[[self window] setTitle:aFile];
return self;
}

とやったとき、aFileをretainする必要はありますか?
つまりはsetTitleした時に、ポインタをコピーするのか、それとも
文字列自身の複製を行うのか、どっちなんでしょうかねということなんですが。
18 Name: 名称未設定 [] Date: 03/09/14 22:55 ID: 7iGV5H+O Be:
>>17
>とやったとき、aFileをretainする必要はありますか?

ないよ。というか、この場合はレシーバ(NSWindow)側が copy / retain
しなくてはならない。どっちをやってるかは分からないし、関係ない。

いやまあ、俺様も同じことで悩んだのだけれど。
19 Name: 名称未設定 [sage] Date: 03/09/16 17:30 ID: PfhTi4Pw Be:
>>16
NSWindowControllerのリファレンスをよく読もう。
-[NSWindowController window]メソッドを呼ぶまではnibがロードされないのです。
だから、いきなり[window setTitle:@"hogehoge"]とかやっても「そんなもんいきなり
使うっていわれてもなー」ということになるのだ。
20 Name: 名称未設定 [sage] Date: 03/09/18 20:08 ID: DyN3ww9w Be:
>19
いや、そうじゃなくてNSWindowControllerの宣言が

@private
NSWindow *_window;

になってるからなんだけど。

IBは_windowとか_delegateとかの_を削除するようなしないような不思議な実装になってたよ。
自分で作ったIBのPaletteに_delegate付けたら
delegateと_delegateが同時に現れて変なことになった記憶がある。
21 Name: 名称未設定 [sage] Date: 03/09/18 21:44 ID: i0AO7t69 Be:
Cocoa・・・Cocoa・・・・・・。

そういや昔、今のSqueakの原型みたいなのが
Cocoaって名前でAppleから出てなぁ・・・。

ふと思い出したのでCocoaスレでネタフリしてみるテスト
22 Name: 名称未設定 [sage] Date: 03/09/18 22:20 ID: E7zkIKcG Be:
>>20
おそらく
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Protocols/NSKeyValueCoding.html#//apple_ref/doc/uid/20000471/URLWithPath_ClassMethod_NSPathUtilities
このあたりが関係していると思われ。
23 Name: 20 [sage] Date: 03/09/18 23:37 ID: DyN3ww9w Be:
>22
ややこしすぎ。(w
でもこれっぽいね。


どうでもいいが>22のページのアンカーの名前おかしくねーか?
なんでURLWithPath_ClassMethod_NSPathUtilitiesなんだ?(w
一瞬リンクし間違えてるのかと思たよ。
ついでに-valueForKeyのほうはfileAttributes_ClassMethod_NSPathUtilitiesだ。

いやらしく思ったが調べてみた。
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Java/Classes/NSPathUtilities.html#//apple_ref/doc/uid/20000399/URLWithPath_ClassMethod_NSPathUtilities
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Java/Classes/NSPathUtilities.html#//apple_ref/doc/uid/20000399/fileAttributes_ClassMethod_NSPathUtilities
これをひな形にしたのかな?

なぜJAVAのリファレンスをひな形にしたのか?
なぜNSPathUtilitiesなのか?
謎は深まるばかりだが。
24 Name: 名称未設定 [sage] Date: 03/09/19 13:51 ID: c7PL/2LH Be:
>>21
CocoaとSK8とまだウチのHDDに残ってる(藁
が、あんま関係ないぞ(w
25 Name: 名称未設定 [sage] Date: 03/09/19 20:04 ID: 5eXeIJxQ Be:
なんだ、関係ないのか。(´・ω・`)
紛らわしい名前付けんなよ > Apple。

しかしながら、>>24のディスク内を
しばらく探険みたいなぁ・・・。ドキドキ
26 Name: 名称未設定 [] Date: 03/09/21 11:36 ID: L1OOQJIW Be:
[[NSThread currentThread] age];
27 Name: 名称未設定 [] Date: 03/09/23 01:42 ID: 4CYZpi1Z Be:
サーバー側がNSFileHandleConnectionAcceptedNotificaionを使って接続を
受け付ける場合、接続された時のクライアントのアドレスを知る方法って
なにかありますか?
28 Name: さっぱり [さっぱり] Date: 03/09/29 17:57 ID: 5dAeGj01 Be:
さっぱり
>>27
無さげ
29 Name: 名称未設定 [sage] Date: 03/09/29 21:51 ID: Q/6ho6ad Be:
>27
Unix的手法ですがgetpeername(2)を使えばいいと思う。

#include <sys/socket.h>
#include <netinet/in.h>

int socket = [filehandle fileDescriptor];
struct sockaddr_in addr;
int length = sizeof( addr );
if( (getpeername(socket, (struct sockaddr*)&addr, &len)) < 0 ) {
// error
} else {
NSLog(@"address->%s¥tport->%u", inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));
}

30 Name: 名称未設定 [] Date: 03/09/30 16:25 ID: QtzbCLLW Be:
プログラム側から自身のアプリを終了したい時はどうすればよいのでしょうか?
NSTerminate:Nowみたいなのがあるのでしょうか?見つけられません。

1アプリ終了を通知(ここが分かりません。誰に何を送れば良いの?)
2「ほんとに?」のダイアログ表示 (NSRunAlertPanelかな?)
3windowを全て閉じる(窓位置を保存)
4後始末処理(applicationWillTerminate ??)
5終了 (??)
みたいな流れになる予定。
31 Name: 名称未設定 [sage] Date: 03/09/30 16:57 ID: Our0Qs9+ Be:
[NSApp terminate:nil]でいいんでないの?
32 Name: 名称未設定 [sage] Date: 03/09/30 17:11 ID: xieOMbY1 Be:
>>30
>>31+applicationShouldTerminate:だな。
NSApplicationクラスを調べれ
33 Name: 30 [] Date: 03/09/30 18:12 ID: QtzbCLLW Be:
ありがとうございます。
NSAppというオブジェクトがあるわけですね
しらべてみます。

あと、
applicationWillTerminate:
applicationShouldTerminate:
の区別がつかないかも
34 Name: 名称未設定 [sage] Date: 03/09/30 18:20 ID: DbNBm54R Be:
>>33
リファレンス読め
35 Name: 名称未設定 [] Date: 03/10/01 02:07 ID: QlbhOD5f Be:
さぁ、盛り上がって参りました
36 Name: 名称未設定 [sage] Date: 03/10/06 21:43 ID: 9PyVqaRO Be:
厨な質問ですいません。
秋の夜長にCocoaでもと思い、全く知識が無いままCocoaのお勉強をしようと思う
んですが、今買うとすればCocoaはやっぱり!でしょうか、それともHMDTでしょ
うか?それとも、それ以外でしょうか?教えてください。
37 Name: 名称未設定 [sage] Date: 03/10/06 21:59 ID: qFbHEZim Be:
後発の強みとしては HMDT かなぁ。
あとは荻原本。
38 Name: 名称未設定 [sage] Date: 03/10/06 22:30 ID: Fvl4aF9p Be:
ヒレガス本もオススメ。

39 Name: 名称未設定 [sage] Date: 03/10/06 22:34 ID: qFbHEZim Be:
あとは Cocoa のヘッダファイル。
あれが読めないと自分の作りたいものは作れない。
40 Name: 名称未設定 [sage] Date: 03/10/06 23:02 ID: lZ74qdJw Be:
英語が読めるならO'reillyのLearning Cocoa with Objective-C 2nd Edition。
内容的にはヒレガス本より初心者向け。
ひとつひとつのチュートリアルが短くて勉強を進めやすい。
ステップアップの仕方もいい感じだし。
初版のイメージでこの本を見ないように。
一から書き直した全く別の本だから。
41 Name: 36 [sage] Date: 03/10/07 19:34 ID: lzpDd0V+ Be:
>>36-40
ありがとうございます。昨日、部屋を掃除してたら3500円分の図書券が発掘された
もので(w
早速書店で見てきたいと思います。もっとも、田舎なんで全部見れるか分かりませ
んが…お世話になりました。m(_ _)m
42 Name: 名称未設定 [age] Date: 03/10/12 15:09 ID: 3jXCimTH Be:
話題がなくDat落ちしそうなんで。
ソースが見れるから参考になると思う。
http://www.gnustep.org/
43 Name: 名称未設定 [sage] Date: 03/10/14 18:56 ID: 1AUSNjMU Be:
どうもコンパイルが遅いと思ったら、GCCコンパイラ設定の
コンパイラのバージョンでは切り替わってなくて、コマンドラインから
gcc_selectしたらちゃんとプリコンパイルが効くようになってゲキ速になった。
漏れんとこだけかな。
44 Name: 名称未設定 [] Date: 03/10/15 09:15 ID: EiOngqDO Be:
Cocoaで新しいフォルダを作るときは、
Carbonの助けを借りないといけないの?
あと、使用できるファイル名の最大長はいくつなのでしょうか?
日本語フォルダ名の処理もさっぱりでつ。
45 Name: 名称未設定 [] Date: 03/10/15 09:53 ID: aL5cN4ii Be:
>>44
フォルダを作るにはNSFileManagerのcreateDirectoryAtPath:attributes:を
使うといいと思うよ。ファイル名の最大長は256?
46 Name: 名称未設定 [sage] Date: 03/10/15 13:49 ID: EiOngqDO Be:
>45
助かりました。Cocoaのドキュメント探索に、まだ慣れなくて
//CocoaBrowserが、全検索に対応してくれれば、ありがたいのですが。

あと、ファイル名長さは、ファイルシステム依存なようなので、
さがしてみます。
47 Name: 名称未設定 [sage] Date: 03/10/15 21:55 ID: bHi6IZfN Be:
ここ面白かった。

ttp://kwatch.at.infoseek.co.jp/macosx/objc.html
48 Name: 名称未設定 [sage] Date: 03/10/16 09:35 ID: QvP+XpxJ Be:
>47

ちらっとみたけどどうだかなあって感じ。
id型をオブジェクト型みたいな書き方してるけどそうじゃないだろ。

なんかObj-Cを誤解されそう。

49 Name: 名称未設定 [] Date: 03/10/18 13:28 ID: IqG902TP Be:
logファイルリーダーでファイル一覧を出す部分で詰まってます。
ヘッダだけ読み込んで種類別に一覧をだすのですが、ファイル数が
数10になった時点で長時間虹色カーソルになってしまいます。
多数のファイル(の先頭数バイト)を読み込む時のコツってありますか?

セーブプログラム側は、1日に何度かログファイルを作成するプログラムです。
日付け+カウンタでファイル名を決定してセーブしています。

参考になりそうなプログラムソースを探たのですが、Carbonしかみあたらなくて。
似たような実装しているはずなのに。CarbonとCocoaで速度が違う?
50 Name: 名称未設定 [] Date: 03/10/18 15:37 ID: troFacQ3 Be:
>>49
こんなのだろ?

for (i = 0; i < [array count]; i++) {
NSFileHandle *h = [NSFileHandle
fileHandleForReadingAtPath:[array objectAtIndex:i]];
NSData *d = [h readDataOfLength:16];
[h closeFile];
NSLog(@"%@\n", d);
}

ファイル数1000でG4/400で5秒くらいだったぞ。
時間がかかるのは何か別のとこだろうな。
ファイル数を極端に増やして、Sharkで調べれば一発で分かるぞ。
apple chud sharkでぐぐってみ。
51 Name: 名称未設定 [sage] Date: 03/10/18 16:25 ID: AT68cfvn Be:
>49

-(void)readLogAtIndex:(NSNumber*)indexNum
{
unsigned index = [indexNum unsignedIntValue];
id log;

if( 0 > index || index >= [logsArray count] ) return;

log = [logsArray objectAtIndex:index];
...

[self performSelector:_cmd withObject:[NSNumber numberWithUnsignedInt:index + 1] afterDaley:0.0];
}

とか。
52 Name: 49 [] Date: 03/10/21 21:47 ID: B3t2pI4n Be:
>50,51
ありがとうございます。
どうやらファイルの処理だけにすると、短時間で済むようです。
表示更新関連の処理がまずいのかもしれません。
CHUDインストールしたのですが、まだ原因追跡中です。
53 Name: 名称未設定 [] Date: 03/10/25 22:46 ID: LjLKkzJ6 Be:
だれかNSSearchFieldの解説して~
54 Name: 名称未設定 [sage] Date: 03/10/25 23:17 ID: LAgJLJNR Be:
>>53
メソッドはrecentSearches関係しかないじゃん。
あとはNSTextFieldと同じように使える。

カスタマイズしたいんだったらNSSearchFieldCellを使えばよさげ。
55 Name: 53 [] Date: 03/10/25 23:26 ID: LjLKkzJ6 Be:
カスタマイズしなきゃいけなさそうなんで、がんばって-setSearchMenuTemplate
あたりを読んでみますー。
56 Name: 名称未設定 [] Date: 03/10/26 14:20 ID: Z08cHU7n Be:
いくら試してもデバッグシンボルを作ってくれない・・・。
プロジェクトを選んで、インスペクタ→スタイル→デバッグシンボルを生成する
で、いいんだよね??
57 Name: 名称未設定 [sage] Date: 03/10/26 15:27 ID: Sc1yCy2Y Be:
>56
その逆でデバッグシンボル外せない。。
古いプロジェクトだからか?
58 Name: 名称未設定 [] Date: 03/10/26 21:56 ID: LKDRLUQM Be:
>>56
とりあえず、コンパイルフラグに-gを入れておけば?
>>57
この場合はあとでstripするしかないかも。
59 Name: 名称未設定 [] Date: 03/10/27 00:14 ID: VuyA3xy8 Be:
製作途中のプロジェクトファイルを
Xcodeに乗り換えるときの注意とかありますか?
60 Name: 名称未設定 [] Date: 03/10/27 01:50 ID: t0eHMPlt Be:
>>59
従来のProjectBuilderのターゲットとXcodeネイティブのターゲットがあって、ターゲットをアップグレードするといろいろ新機能が使えたりするらしい。

61 Name: 名称未設定 [sage] Date: 03/10/27 01:54 ID: gshUILbp Be:
Pantherの開発環境にはWebkit SDKはデフォで入ってるの?
62 Name: 名称未設定 [] Date: 03/10/27 06:45 ID: 6/w/szGf Be:
>>61
入ってる。

アップグレードしたら挙動が変わってしまった。直さなきゃ。
63 Name: 名称未設定 [sage] Date: 03/10/27 18:48 ID: wnDTzYZU Be:
ウケタ
神の言語らしい<Cocoa
ttp://www.geocities.co.jp/Milkyway-Lynx/4133/article/art_13.html
64 Name: 名称未設定 [sage] Date: 03/10/27 19:18 ID: dL5Q4fuk Be:
C++の場合、"戻値の型 クラス名称::メンバ"の形式で記述します。
この"::"が非常に美しくありません。
一体何なのでしょうか?
何故に"::"を選んだのか私には全く理解出来ません。
4個の"黒点"が均等に並んでいます。
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
殺戮凶器に昆虫の大群です。
不気味極まりないですね。
考えているうちに寒気がしてきました。

……精神病院行った方が良いと思う。
65 Name: 名称未設定 [sage] Date: 03/10/27 19:22 ID: gN9jSAWF Be:
>>63
狂ってるなw
だが着目点はなかなかおもしろい
66 Name: 名称未設定 [sage] Date: 03/10/27 20:53 ID: euR+kMdl Be:
このWebページには理不尽な表現及び不可解な内容が含まれています。
あなたの健全な精神と平穏な社会生活に悪影響を及ぼす場合があります。

このWebページはリンクフリーですが、
過去に大量投稿による荒らしを受けた経緯がありますので
2ch BBS関連の掲示板にはリンクを張らないでください
67 Name: 名称未設定 [sage] Date: 03/10/27 21:28 ID: QvyjIU96 Be:
前スレの終わりのほうで馬鹿にされてた日記があったな
68 Name: 名称未設定 [sage] Date: 03/10/27 21:39 ID: gVY3dPF1 Be:
>>63 太陽神のOS

OpenWindowsセッションを開始するとまず、蒼く晴れ渡った画面に

将来のバージョンでは OpenWindows 環境は
サポートされなくなります。
CDE(共通デスクトップ環境)に移行することをお勧めします。

なんとも悲しげな悲壮感漂うメッセージが表示されます(fig5)
OpenWindowsの開発者は手塩に掛けて育て上げたOpenWindowsの打ち切りが決まり
このメッセージを表示するコードを書いた時、どんな気持ちだったのでしょうか。
ほの暗い深夜のオフィスでエディタに向かって最期のメッセージを打ち込む
最期のプログラマの寂しげな後ろ姿が目に浮かび、私は目頭が熱くなりました。


もらい泣きしちゃったYO!


脱線スマソ
69 Name: 名称未設定 [sage] Date: 03/10/27 22:36 ID: RMUURkD0 Be:
正直萎えた。。
70 Name: 名称未設定 [sage] Date: 03/10/27 23:02 ID: vJrRsZnR Be:
イカ
71 Name: 名称未設定 [sage] Date: 03/10/28 19:49 ID: +PIFsiv5 Be:
ネタを書くためにこれだけ勉強するという行為がネタだな。w
72 Name: 名称未設定 [sage] Date: 03/10/28 20:40 ID: oqJwi6pV Be:
粉末はなぁ(藁

まぁ、M橋みたいな一見あれな物で毒電波垂れ流してる奴よりはいいけどな。
最初っから毒電波って謳ってるわけだし(藁

でも、Objective-Cに関して着眼点は面白いかもしれないってのだけは同意しとく(w

てか、こいつも歴史認識がいい加減なんだよなぁ(w
73 Name: 名称未設定 [] Date: 03/10/28 22:36 ID: S7AYvpIG Be:
すげぇ
74 Name: 名称未設定 [sage] Date: 03/10/29 00:10 ID: eyc+9Iff Be:
>そもそも私の頭は十代から叩き込まれたCOBOLとアセンブラでガチガチになっていますので
日本で一番モチベーションの高いCOBOLerだなw
別ページでObjective-C使ってMotif使ってたが、アレもある意味すごいw
75 Name: 名称未設定 [sage] Date: 03/10/29 01:26 ID: IBofPNMx Be:
プログラマー板以外でCOBOLerの文字列をみかけるとは……
76 Name: 53 [] Date: 03/10/29 01:48 ID: 2Bd9N9OH Be:
NSSearchFieldで苦戦中。
プレースホルダーを変えようとして - setPlaceholderString: を呼ぶとselector not recognized
になる。NSTextfieldでも同じ。ちゃんとヘッダファイルからコピペしたからスペル違いじゃない
はず。なんでだろ。

あと、IBでサーチ範囲のメニューと最近の検索を組み合わせたNSMenuをsearchMenuTemplate
としてくっつけてみると、resentsが追加されるたびにmenuItemのstateがリセットされるから、
ユーザの選んだサーチ範囲の保存に役立たない・・。しかも後でsearchFieldにくっいている
メニューを取得する方法もないっぽい。

サーチ範囲のメニューを選ぶと、選ばれたメニューアイテムのみにチェックをつけ、後の
サーチの時にチェックのついてるメニューアイテムはどれかを調べてその範囲でサーチする、
という実装を目指しているのだけどうまくいきません。
何かヒントがあれば教えてくださいー。
77 Name: 名称未設定 [sage] Date: 03/10/29 19:13 ID: bCcw8BSC Be:
オリジナルのフォントを/Library/Fontsや~/Library/Fonts以外の
任意の場所(Application.app/Contents/Resourcesとか)に置いて使う
にはどうすればいいんでしょうか?
78 Name: 名称未設定 [sage] Date: 03/10/30 07:43 ID: i+2L5WC/ Be:
>77
エイリアスを置くくらいしか思い付かん。
79 Name: 53 [] Date: 03/10/30 14:46 ID: Xnho0X1L Be:
あいかわらず、プレースホルダーが変えられません。

setPlaceholderStringを使うには何か前準備が必要なんでしょうか・・・
みんな使えてるの?
80 Name: 名称未設定 [sage] Date: 03/10/30 15:26 ID: IEd9v5t8 Be:
>53
しゃぁねぇなぁ。

そのメソッドを宣言してるクラス名を目をかっぽじってよく見ろ。
継承関係もよく確認しろ。
81 Name: 53 [] Date: 03/10/30 21:19 ID: Xnho0X1L Be:
>>80
ありがとう、ありがとうございます!
[ [textField cell] setPlaceholderString:@"anString" ]でいけました。感激です。
思い込みって怖いな・・。

あと、メニューから検索範囲を選ぶというのも解決しました。
IBでsearchFieldにMenuTemplateとしてくっつけたメニューにACTIONを設定し、そのアク
ションメソッドの中でMenuTempleteの中のsenderに対応するMenuItem自体にチェックを
つけて、実際に検索する段階ではMenuTemplateの中をどのMenuItemにチェックがついてる
かを確認してその範囲で検索します。

ただ、MenuTempateにチェックをつけるだけでは、現に表示されているメニューには
チェックがついていないので、[sender setState:NSOnState]で、そこにもチェックを
つけておきます。

次からそのメニューにRecentsが加わって更新される際には、MenuTemplateにつけた
チェックがつかわれるので適切に表示されるはず。

・・これでいちおう動いたけど、間違ってたらごめんなさい。
82 Name: 名称未設定 [sage] Date: 03/10/30 21:23 ID: NoFrTNj3 Be:
XCode でプレフィックスヘッダファイルの名称を変更するには
どうしたら良いのでしょうか。

単にファイルの名称を変更しただけでは、
ビルド時に「Missing file or directory: Hoge_Prefix.h」というエラーが出るので、
何処かで設定を変更しなければならないのだと思いますが、
何処で設定したら良いものか分からないのです。
83 Name: 名称未設定 [sage] Date: 03/10/30 22:35 ID: PzWqXuSo Be:
>>82
プロジェクト->情報を見る->ビルド->プレフィックスヘッダ
では?
84 Name: 名称未設定 [sage] Date: 03/10/31 08:06 ID: RCFiV/y6 Be:
XCodeって書くやつ大杉。
85 Name: 名称未設定 [sage] Date: 03/10/31 15:55 ID: RF5UB+yc Be:
すいません、質問させてください。
NSSoundを使ってサウンドをループさせて鳴らし続けるアプリを作ろうと思うんで
すが…どうすればサウンドをループさせられるかさっぱり分かりません。
バンドルされたサウンドを、playで再生し、stopを押すまでループさせ続けるとい
う感じのアプリです。
一応コードを書いてみたものの動かしたら止まってしまいました…
聴かぬは一生の恥なんで、右も左も分からないまま書いたコードを貼ります。

#import "application.h"

@implementation application

int stopsound;

- (IBAction)play:(id)sender
{
NSSound *mySound = [NSSound soundNamed : @"sound.aiff"];
stopsound = 0;
while(stopsound = 1)
{[mySound play];
}
}

- (IBAction)stop:(id)sender
{
stopsound = 1;
}

@end
86 Name: 名称未設定 [sage] Date: 03/10/31 18:27 ID: 3z9Nfggr Be:
>>85
こんな感じで。
aSound と repeat はインスタンス変数。

-(IBAction)play:(id)sender{

[aSound release];
aSound=[[NSSound alloc] initWithContentsOfFile:@"/System/Library/Sounds/Glass.aiff" byReference:YES];
[aSound setDelegate:self];

repeat=YES;
[aSound play];
}

-(IBAction)stop:(id)sender{
repeat=NO;
}

-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat) [aSound play];
}
87 Name: 名称未設定 [sage] Date: 03/10/31 18:32 ID: 3z9Nfggr Be:
>>83
プロジェクト->情報を見る->ビルドまでは見つかるのですが、
ビルドの中にプレフィックスヘッダを設定する項目が見つからないのです。

プロジェクトファイルの
情報を見る->スタイル->共通設定の中にプレフィックスヘッダを設定する項目があるので、
こちらで新しいファイルの名称を設定してみましたが、
やはり同じエラーが出てしまいます。
88 Name: 83 [sage] Date: 03/10/31 20:05 ID: OvxxCFRM Be:
>>87
あ、これはxCodeで0から生成したプロジェクトの場合ね。

PBで作ったプロジェクトだと
プロジェクト->情報を見る->ビルド->共通設定->プレフィックスヘッダをプリコンパイル
っていうチェックが無い?
こいつにチェックを入れてプレフィックスヘッダの名前を入れると
現在の設定の方にも出てくるみたい。
それだとどう?
89 Name: 名称未設定 [sage] Date: 03/10/31 20:22 ID: 3z9Nfggr Be:
>>88
プロジェクト->情報を見る->ビルド
という項目が見つからないのですが……
プロジェクト->情報を見る->スタイル
とは違うのでしょうか?

プロジェクト->情報を見る->スタイル->共通設定の
「プレフィックスヘッダ」にファイル名を入力し、
「プレフィックスヘッダをコンパイル」にチェックを入れてビルドしてみましたが、
やはり同様のエラーが出ます。
90 Name: 89 [sage] Date: 03/10/31 20:37 ID: 3z9Nfggr Be:
プロジェクトファイルのパッケージの内容を表示させて
project.pbxproj ファイルをテキストエディタで開いて
古いプレフィックスヘッダファイルの名称の書かれている部分を
新しい名称に書き換えることにより解決しました。
91 Name: 名称未設定 [] Date: 03/10/31 21:36 ID: qZVFWWW0 Be:
このスレをご覧の、ドライバ開発関係のプログラマの方

【安心】Macで携帯をバックアップ【快適】
http://pc.2ch.net/test/read.cgi/mac/1040172748

上記のスレで、AU用のUSB←→携帯接続ケーブルの
ドライバを有志で書いてくださる方を探しています。

OS Xでの携帯バックアップ環境の充実のためにも
ぜひともよろしくおねがいします。
92 Name: 88 [sage] Date: 03/10/31 21:57 ID: OvxxCFRM Be:
>>89
>プロジェクト->情報を見る->ビルド
>という項目が見つからないのですが……
失礼、
ターゲット->情報を見る->ビルド
でした
93 Name: 85 [sage] Date: 03/10/31 22:20 ID: RF5UB+yc Be:
>>86
ありがとうございます。早速実装してみたんですが、なぜか2回以上ループしませ
ん…どこか私の設定や記述に問題があったんでしょうか…
94 Name: 名称未設定 [sage] Date: 03/10/31 22:31 ID: 3z9Nfggr Be:
>>93
aSound=[NSSound soundNamed : @"sound.aiff"];
こんな具合にしているのであれば、
aSound=[[NSSound soundNamed : @"sound.aiff"] retain];
こうするとか。
95 Name: 85 [sage] Date: 03/11/01 01:04 ID: 5K4drtJX Be:
>>94
ありがとうございます。色々試行錯誤した結果
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat) [aSound play];
}

-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
aSound=[NSSound soundNamed : @"sound.aiff"] ;
[aSound setDelegate:self];
if (repeat) [aSound play];
}
に変えたら、ループ再生できました。
しかし、結構な勢いでメモリリークするみたいです…なんかだんだん混乱してきま
した。メモリリークの回避方法を教えてください、お願いしますm(_ _)m
96 Name: 名称未設定 [sage] Date: 03/11/01 01:33 ID: Qop2/8To Be:
>>95
これでどう?

-(IBAction)play:(id)sender{
NSSound *aSound=[NSSound soundNamed:@"sound.aiff"];

[aSound setDelegate:self];

repeat=YES;
[aSound play];
}

-(IBAction)stop:(id)sender{
repeat=NO;
}

-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat) [sound play];
}
97 Name: 85 [sage] Date: 03/11/01 08:22 ID: 5K4drtJX Be:
>>96
それだとやはり2回以上ループしないみたいです。
うーん…どうしたものでしょうか…
98 Name: 名称未設定 [sage] Date: 03/11/01 17:14 ID: wDxNRsBf Be:
ここらへん詳しくないので適当だけど
delegateの外に出すとまわるっぽい。

-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool
{
if (loop) {
[self playSound];
}
}

- (void) playSound
{
[snd play];
}

- (IBAction) play:(id)sender
{
if (![snd isPlaying]) {
loop = YES;
[self playSound];
}
}

- (IBAction) stop:(id)sender
{
if ([snd isPlaying]) {
loop = NO;
[snd stop];
}
}
sndの生成はinitとかawake辺りで適当に
99 Name: 85 [] Date: 03/11/05 00:20 ID: QcMUfVn5 Be:
>>98
ひとまずこんなふうにしてみましたが、やはり2回以上回りません…申し訳ありませ
んが添削していただけませんか?改行制限の関係上読みにくくてすいません

#import "DigitalOutEnabler.h"
@implementation DigitalOutEnabler
- (id)init{
[super init];
aSound =[[NSSound soundNamed : @"Sosumi.aiff"]retain];
[aSound setDelegate:self];
return self;
}

-(void)dealloc{
[aSound release];
[super dealloc];
}

-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat)
[self playSound];
}

- (void) playSound{
[aSound play];
}
100 Name: 85 [] Date: 03/11/05 00:22 ID: QcMUfVn5 Be:
続き
-(IBAction)play:(id)sender{
if (![aSound isPlaying]) {
repeat = YES;
[self playSound];
}
}

-(IBAction)stop:(id)sender{
if ([aSound isPlaying]) {
repeat = NO;
[aSound stop];
}
}

@end
以上です、お願いします。
101 Name: 名称未設定 [sage] Date: 03/11/05 00:26 ID: Aj0t1X6v Be:
うげ、XcodeいじりながらCocoa Recipes読んでるけど、
PBと操作性が違いすぎて訳分かんなくなってきた……。
102 Name: 名称未設定 [sage] Date: 03/11/05 01:22 ID: RhqfG/Oh Be:
なんか別スレッドで鳴らしたらうまく行ったけどなんでだろ、こんなん
@implementation SoundTest
- (IBAction)soundPlay:(id)sender
{
isLoop = YES;
[NSThread detachNewThreadSelector:@selector(playLoop) toTarget:self withObject:nil];
}

- (IBAction)soundStop:(id)sender
{
isLoop = NO;
[aSound stop];
}

- (void)playLoop
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[aSound play];
[pool release];
}

- (void)applicationDidFinishLaunching: (NSNotification *)notification
{
aSound = [[NSSound soundNamed:@"sound.aiff"] retain];
[aSound setDelegate:self];
}

- (void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool
{
if(isLoop) [NSThread detachNewThreadSelector:@selector(playLoop) toTarget:self withObject:nil];
}
@end
103 Name: 名称未設定 [sage] Date: 03/11/05 08:17 ID: OD0ZMocD Be:
>102
それで動くんだったら、
>99-100 の- (void) playSoundを

- (void) playSound
{
 [aSound performSelector:@(play) withObject:nil afterDelay:0.0];
}

にしても動きそうだね。
104 Name: 名称未設定 [] Date: 03/11/05 14:04 ID: HY8nUb6E Be:
すいません
純正アプリのMainMenu.nibとかってインターフェースビルダーで開けないんですか? 昔開けた気がするんですけど?
105 Name: 名称未設定 [sage] Date: 03/11/05 16:28 ID: 53MCEOcb Be:
>104
英語リソースのnibファイルのみ開けるはずだよ
どういう仕組みになっているのかは知らんけど
106 Name: 名称未設定 [] Date: 03/11/05 16:56 ID: HY8nUb6E Be:
あぅう ショートカット変えれないのかなぁ。。。
107 Name: 名称未設定 [sage] Date: 03/11/05 20:43 ID: VZ4PVviP Be:
>>104
nibパッケージの中身を覗いてファイルが3個あればIBで開ける。
英語版から残りの2個をコピーしてくれば開ける可能性はあるが、
正常に編集できるかは保証できない。
108 Name: 名称未設定 [sage] Date: 03/11/07 08:25 ID: z7sRWAKQ Be:
Xcodeを使ってる人に質問。
プロジェクトウインドウとマニュアルウインドウとクラスブラウザと検索とコンソールを
同一ウインドウで表示するにはどうしたらいいんでしょうか。
つまり、ProjectBuilderの「全て一つのウインドウで…」のような操作感にしたいっていうか
そんな一杯ウインドウ開いてられないんだよう!
15”のXGAなんだよう!

すいません。眠いんで取り乱しました。もうねます。
109 Name: 名称未設定 [sage] Date: 03/11/07 14:01 ID: Px1gRNBS Be:
>>108
そのためのExposeじゃないのか?
110 Name: 名称未設定 [] Date: 03/11/07 14:16 ID: rmI1DUS4 Be:
でも、残念ながらエクスポゼでは使いづらいね。
だってウインドウのタイトルを見ないと中身がわかんないから。

フォトショとかはエクスポゼ、快適だろうなあ。
111 Name: 名称未設定 [sage] Date: 03/11/07 14:36 ID: RiB0sUZY Be:
>>110
写真だからな
112 Name: 名称未設定 [sage] Date: 03/11/08 05:08 ID: yIFANJ4k Be:
例外処理ルーチンを書いているんだけど、
アクションメソッドで例外が発生して
そのメソッドそのものを中断したいんだけど、

NS_HANDLER
NS_VALUERETURN(,IBAction);
NS_ENDHANDLER

このNS_VALUERETURNの第1引数は何を入れればいい?
だいたいIBActionの型の実態は何?
113 Name: 名称未設定 [sage] Date: 03/11/08 06:42 ID: ECR16esb Be:
>>112
そういうのはXCodeで調べたい文字列をコマンドを押しながら
ダブルクリックすればすぐ理解るよ。

で、IBActionはNibDeclarations.hで定義されているとおり、
コンパイル時にvoidで置き換えられます。
114 Name: 名称未設定 [sage] Date: 03/11/09 21:41 ID: GjYszI1O Be:
Cocoa Document Application(Obj-C)で作ったアプリで
ウィンドウメニューの全てを手前に移動がBring All to Frontになってしまいます。
MainMenu.nibのメニューはちゃんと日本語化しているんですけど。

どこを直せばいいかわかる人いたら教えて下さい。

Mac OS X 10.2.8
Developer Tools Dec.2002

よろしくお願いします。
115 Name: 名称未設定 [] Date: 03/11/12 02:58 ID: 0mzE3THN Be:
>>114
リソースのディレクトリ名もEnglish.lprojじゃなくてJapanese.lprojにしてる?
116 Name: 名称未設定 [sage] Date: 03/11/13 04:50 ID: A1KPKcQK Be:
NSFileHandleでファイルをある程度の長さのBufferに読み出して
MSMutableDataに追加していくとすると、ファイルの終了時の判定
ってどうすればいいんだい?以下のようにしたらアプリが落ちるん
だが。

NSData *buff;
NSData *endOfFile = [NSData data];
NSMutableData *fileData = [NSMutableData data];
NSFileHandle *file
(中略)
buff = [file readDataOfLength:1]
if (![buff isEqualToData:endOfFile])
{
[fileData appendData:buff];
[buff release];
buff = [file readDataOfLength:1];
}
[buf release];
117 Name: 名称未設定 [sage] Date: 03/11/13 04:58 ID: C5nzntGp Be:
>>116
[buff release];
は不要なような気もする。
118 Name: 116 [sage] Date: 03/11/13 05:43 ID: A1KPKcQK Be:
>>117
最後の一行だよね。
readDataOfLength:は読み込むファイルの内容がなくなると
空のNSDataオブジェクトを返すからこれをreleaseしたつもりだが。

それとbuildは難なく通るアプリなんだが実行時に
”シグナル 10(SIGBUS)により終了”
とでて落ちるんだけど、どう対処していいんかよく分からないので
どなたか素敵なアドバイスよろしく。
119 Name: 名称未設定 [sage] Date: 03/11/13 06:41 ID: nO7i7XtL Be:
くわしくはプログラムってよく知らないのですが
いわゆるifって条件が合ってれば中の処理をするんですよね?

つていうか、ファイルの終端をバッファサイドでチェックしてるのが分らない
けど単にグルグル回してファイルの終端で判定すればいいんじゃないのでしょうか?

よくわからないけどforでファイルサイズ分だけ回せばいいのではないでしょうか?
120 Name: 名称未設定 [sage] Date: 03/11/13 07:52 ID: lWEIcs7h Be:
[buff release];
は両方ともいらんだろ。
allocもしくはretainしてないオブジェクトをrelease/autoreleaseしちゃダメ。
buffをすぐに捨てたいんなら
ループの最初でNSAutoreleasePoolを作って
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc] init];
最後に
[pool release];
解放すれば?
121 Name: 116 [sage] Date: 03/11/13 13:02 ID: A1KPKcQK Be:
>>120の言う通り[buff release];はなくすと上手く行きました。
ということは、readDataOfLength:はいわゆる一時的なNSData
を返すということですか?
122 Name: 名称未設定 [sage] Date: 03/11/13 13:23 ID: JZKejQYF Be:
>121

返されたオブジェクトのオーナーシップが呼び出し側にあるものは、

[[OneClass alloc...] init...]
[aObject copy...]
[aObject mutableCopy...]

だけです。(alloc... は常にinit... とペアで使わなければなりません。[MUST])

これは自作クラスでも統一するべきです。[SHOULD]???  // MUST かもしれない。
123 Name: 120 [sage] Date: 03/11/13 13:28 ID: +v4jty8F Be:
>>121
readDataOfLength:に限らずalloc以外で作ったオブジェクトは全てautoreleaseされます。
オーナーシップポリシーについてはあちこちで説明されてるので調べてみよう。
あ、fileDataもほっとくと消えちゃうよ。
後で使いたいときはretainしておくこと。
124 Name: 名称未設定 [sage] Date: 03/11/13 14:31 ID: qGd4PYhK Be:
>>115
>リソースのディレクトリ名もEnglish.lprojじゃなくてJapanese.lprojにしてる?

回答いただきありがとうございます。
nibファイルは全部グローバル化しています。~.lprojに入れておかないと
だめなんでしょうか?
125 Name: 名称未設定 [sage] Date: 03/11/13 14:38 ID: zRkHvWS6 Be:
English.lprojしかなかったら英語モードでしか起動できないじゃろ。
一部のメニューが英語で表示されるのは当たり前。
126 Name: 名称未設定 [sage] Date: 03/11/13 15:48 ID: qGd4PYhK Be:
いえ、English.lprojもないんです。全部グローバル化しています。
グローバル化している場合には英語モードで起動しているんでしょうか?
127 Name: 名称未設定 [sage] Date: 03/11/13 17:02 ID: JJ+Hg+ed Be:
"global"と"localized"の意味をを辞書で調べてから出直してこい。
128 Name: 名称未設定 [sage] Date: 03/11/13 17:14 ID: zRkHvWS6 Be:
( `3´)めんどクセェー

>>126
これに限らずメリケンのいうグローバルってのはアメリカであり英語ってことだ。
日本語モードで起動させたきゃ大人しくJapanese.lproj作りなさい。
129 Name: 116 [sage] Date: 03/11/13 18:19 ID: A1KPKcQK Be:
>>122,123
"自分で生成したオブジェクトは、自分で解放する "
というのが鉄則のようですね。
それゆねにalloc...,init...,copy....,mutableCopy...
といった自前で生成したオブジェクトは自分で解放
するということですね。
では、readDAtaOfLength:によって返されるオブジェクトは
NSFileHandleのオブジェクトがオーナーと言うことになりますが、
返されたオブジェクトはどのタイミングでreleaseされてるので
しょうか?やはり返す前にautoreleaseしてるんでしょうか?
どこまで保持されるのかよく分からないので。返した後に参照後
即releaseされるのか、返されたルーチンが終了時に消えるのか?

関連することだと思いますが、オブジェクトを返すメソッドは

return [[[object alloc...] init....] autorelease];

とすべきなのでしょうか?
130 Name: 名称未設定 [sage] Date: 03/11/13 18:45 ID: dpwjWcrA Be:
返す前にautoreleaseしてる
もしくは
NSFileHandleにオーナシップが移らないメソッドでNSDataのインスタンスを生成した

後者の場合はNSDataクラスの中で既にautoreleaseされてる。
131 Name: 名称未設定 [sage] Date: 03/11/13 18:58 ID: JZKejQYF Be:
>129
>どこまで保持されるのかよく分からないので。返した後に参照後
>即releaseされるのか、返されたルーチンが終了時に消えるのか?

普通は考えなくて良いです。
メソッド抜けてからも使うのであれば保持、使わないのであればそのまま放っておく。
別にオーナーが複数あっても問題はありません。すべてのオーナーがいなくなった時点でdeallocされます。
返されたオブジェクトが他のオブジェクトに所有されている可能性がありますので勝手にreleaseしてはいけません。

>return [[[object alloc...] init....] autorelease];

使わないのであれば
return [aObject autorelease];
で良いです。
保持している必要があり、かつ他のオブジェクトによって変更されてもいいのなら
return aObject;
でもいいです。
変更されるのがいやなら
return [[aObject copy] autorelease];
とか、専用のクラスメソッドがあるなら、
return [NSArray arrayWithArray:aArray];
みたいな。

132 Name: 77 [] Date: 03/11/13 19:14 ID: 4mAwkCMc Be:
オリジナルのフォントを任意の場所に置いて使う方法やっとわかった。
起動時に(Carbonの)ATSFontActivateFromFileSpecificationを一発呼んでやればよい。
後はNSFontManagerで目的のNSFontが得られるようになる。
133 Name: 名称未設定 [sage] Date: 03/11/13 20:33 ID: Ljq0HNp4 Be:
>>132=すばらしい
134 Name: 名称未設定 [sage] Date: 03/11/13 23:12 ID: A1KPKcQK Be:
例外処理の部分でトラブってるんだけど、
*** Exception handlers were not properly removed.
Some code has jumped or returned out of an NS_DURING...NS_HANDLER region without using the NS_VOIDRETURN or NS_VALUERETURN macros.

とでてとまってしまう。これはNS_DURING...NS_HANDLER間は
return;で返すんじゃなくて必ずNS_VOIDRETURN;または
NS_VALUERETURN;で返す必要があるってことでしょうか?
135 Name: 名称未設定 [sage] Date: 03/11/14 08:03 ID: G3lITbj5 Be:
>134
うん。
136 Name: 名称未設定 [] Date: 03/11/14 16:32 ID: qbD9Wbbl Be:
ClassAはClassB.hをインポートしていて
- (id)method{
return [[[ClassB alloc] initWithClassA: aClass] autorelease];
}
というメソッドがあって、
ClassBはClassA.hをインポートしていて
- (id)initWithClassA: (ClassA*)aClass{
[super init];
item = [aClass retain];
return self;
}
と初期化する場合にfatal error: method definition not in class context
というエラーがでるのですが、どのように修正すればよいものでしょうか?
137 Name: 名称未設定 [] Date: 03/11/14 17:56 ID: BSbaZ2nB Be:
+ (id)method
138 Name: 136 [] Date: 03/11/14 21:16 ID: 4vixb8te Be:
>>137
簡略して書きましたが、実際にはmethodでClassBを生成する際
自分自身のインスタンス変数を引数としています。
なので出来ればクラスメソッドではなくインスタンスメソッドにしたいのです。
139 Name: 137 [] Date: 03/11/14 21:54 ID: BSbaZ2nB Be:
んじゃClassAの方でClassBを生成させるんじゃなくて、
ClassBの方に

+ (id)classBWithClassA:(ClassA *)aClass {
  return [[[ClassB alloc] initWithClassA: aClass] autorelease];
}

かな。
140 Name: 136 [] Date: 03/11/14 22:41 ID: 3LYklnlQ Be:
>>139
ありがとうございます、そうしてみます。
しかし、Smalltalkでは問題なく動作するのに
なんでObjective-Cだとエラーになっちゃうんでしょうね。
141 Name: 名称未設定 [sage] Date: 03/11/14 23:29 ID: O30ky1lX Be:
>>136
普通にできますけど?

> fatal error: method definition not in class context
これって、括弧の閉じ忘れじゃないの?

>しかし、Smalltalkでは問題なく動作するのに
>なんでObjective-Cだとエラーになっちゃうんでしょうね。
比較する意味なし。
142 Name: 136 [] Date: 03/11/15 00:19 ID: 7sbcU5M4 Be:
>>141
試しに
- (id)initWithClassA: (ClassA*)aClass
の部分を
- (id)initWithClassA: (id)aClass
にしたらエラーにならなかったので閉じ忘れではないと思います
143 Name: 141 [sage] Date: 03/11/15 00:42 ID: ptvAMNJd Be:
// ClassA.h
#import <Foundation/Foundation.h>

@interface ClassA : NSObject
- (id) method;
@end

// ClassA.m
#import "ClassA.h"
#import "ClassB.h"

@implementation ClassA
- (id) method
{
  return [[[ClassB alloc] initWithClassA : self] autorelease];
}
@end
144 Name: 141 (2) [sage] Date: 03/11/15 00:43 ID: ptvAMNJd Be:
// ClassB.h
#import <Foundation/Foundation.h>
@class ClassA;

@interface ClassB : NSObject
{
  ClassA *_item;
}
- (id) initWithClassA : (ClassA *) aClass;
@end

// ClassB.m
#import "ClassB.h"
#import "ClassA.h"

@implementation ClassB : NSObject
- (id) initWithClassA : (ClassA *) aClass
{
  [super init];
  _item = [aClass retain];
  return self;
}
@end
145 Name: 141 (3) [sage] Date: 03/11/15 00:45 ID: ptvAMNJd Be:
// main.m
#import <Foundation/Foundation.h>
#import "ClassA.h"
#import "ClassB.h"

int main(int argc, char **argv)
{
  NSAutoreleasePool*ap = [[NSAutoreleasePool alloc] init];
  ClassA*a;
  ClassB*b;
  
  a = [[ClassA alloc] init];
  b = [a method];
  
  NSLog([b description]);
  
  [ap release];
  return 0;
}

/*
こういうのじゃないの?
インデントは全角空白になってる。
Mac OS X 10.3.1

% cc -o test.o -framework Foundation -I . ClassA.m ClassB.m main.m
% ./test.o
2003-11-15 00:36:48.108 test.o[1112] <ClassB: 0x500d70>

*/
146 Name: 136 [] Date: 03/11/15 01:48 ID: 7sbcU5M4 Be:
@classを使わずに#importを使っていたのが悪かったみたいです。
どうもありがとうございました。
147 Name: 85 [] Date: 03/11/15 16:32 ID: 8+pVYpYN Be:
すいません、しばらく手を付けられなかったもので…
>>102さんの方法でうまくいきました。相談にのってくださいました皆さまに御礼
申し上げますm(_ _)m
148 Name: 名称未設定 [sage] Date: 03/11/17 13:16 ID: kjJ8OvNv Be:
メタルなウィンドウにNVViewのサブクラスを置き(NSViewWidthSizable)、
- (void)drawRect:(NSRect)rect {
NSDrawWindowBackground(rect);
}
とだけしたのですが、ウィンドウをマウスでリサイズすると、
テクスチャがウィンドウにうまく連動せず、リサイズ前の状態のテクスチャが
タイリングされてしまいます。
これをきちんと連動させるにはどうすればよいのでしょうか?
149 Name: 名称未設定 [sage] Date: 03/11/18 05:14 ID: 0TUxXa9F Be:
どこかにFileBrowserの良いサンプルコードありますかね?
HMDTのサンプルコードを参考にいろいろいじってるんだけど
なかなか思うようにいかなくてね。
150 Name: 名称未設定 [sage] Date: 03/11/20 04:45 ID: Dd755Y53 Be:
>>148
- (void)viewDidEndLiveResize{
[super viewDidEndLiveResize];
[self display];
}
これでとりあえずリサイズ終わったら描画し直される。
151 Name: 148 [sage] Date: 03/11/20 07:15 ID: Hy7aMb9u Be:
>>150
ありがとうございます。
色々試して、とりあえず現状はそんな感じ(setNeedDisplay)で
しのいでるのですが、Safariはどうやってるのかなーと思ってるところです。
class-dumpでSafariを見ると、NSWindowのカテゴリに
-(id)scaledBackgroundというメソッドが追加されてて、
Viewはそれを見てるっぽい感じなんですが、
NSWindowでどういう操作をしているのかわからず・・・
152 Name: 名称未設定 [] Date: 03/11/20 16:31 ID: srH13EMO Be:
Cocoaでファイルのラベルを取得したいのですが、どうやってやるんでしょうか?
もしかしてFSRef使うんですか?

あとラベルの名前を取得する方法ってありますか?
com.apple.Labels.plistに入っているみたいですが、
(ただし自分で設定した名前のみ)
正規の取り出し方法はあるんでしょうか?
153 Name: 名称未設定 [] Date: 03/11/22 16:17 ID: 7q0FmrTN Be:
質問です。プロジェクトに追加してある画像リソース(tiff)をNSImageとして取り出したいんですが
http://homepage.mac.com/mkino2/cocoaProg/Foundation/NSBundle/NSBundle.html
ここに書いてある方法より簡単な取り出し方っていうのは無いんでしょうか?
プロジェクトに内蔵してる画像を取り出すわりにはずいぶん複雑に思えたもので...
154 Name: 名称未設定 [sage] Date: 03/11/22 16:34 ID: InF8ZWqC Be:
>>153
[NSImage imageNamed:@"Name"];
155 Name: 名称未設定 [sage] Date: 03/11/22 16:38 ID: 7q0FmrTN Be:
即レスありがとうございます。
ですよね。ですよね。
156 Name: 名称未設定 [] Date: 03/11/24 21:22 ID: n2XZHi2X Be:
SIGSEGVが起きるかもしれないことがわかっている場合、
signal, setjmp, longjumpを使えば補足して異常終了させない
ようにすることはできたんですが、
「アプリケーションは予期しない理由で終了しました」
ダイアログを抑止することができません。
これを出さないようにする方法ってあるんでしょうか?
NS_DURING, NS_HANDLER, NS_ENDHANDLERを使ってもだめでした。
157 Name: 名称未設定 [sage] Date: 03/11/25 01:03 ID: fx2Bc8j/ Be:
signalでキャッチしても、ダイアログだけ出ちゃうっとこと?
158 Name: 156 [sage] Date: 03/11/25 01:10 ID: A/7XeI0m Be:
>>157
そうなんです。
ダイアログさえ出なければ、何事もなかったように走り続けられるのですが。
159 Name: 名称未設定 [sage] Date: 03/11/26 02:52 ID: k8O9i62a Be:
どうしてそういうことをしたいのか気になる・・・
160 Name: 156 [sage] Date: 03/11/26 11:13 ID: SkDocYo4 Be:
QuickTimeに壊れたファイルを描画させると落ちることがあるんで。
161 Name: 名称未設定 [sage] Date: 03/11/28 21:47 ID: 1dGWYsWG Be:
ttp://www.big.or.jp/~crane/cocoa/0100_imageView/interpole/を参考に
ラジオボタンでNSImageInterpolationを変更するプログラムを作ってみたのですが
変更後の画像を見ても補間方法が変わっているようには見えないのです。
ラジオボタンをクリックした時にメソッドが呼ばれて
NSGraphicsContext *gc = [NSGraphicsContext currentContext];
[gc setImageInterpolation: NSImageInterpolationHigh];
とかやってるだけなんですが...NSGraphicsContextの扱い方が間違ってるのでしょうか。
162 Name: 名称未設定 [sage] Date: 03/11/28 21:52 ID: EVvuGUN0 Be:
再描画しないと反映されないのでは?
163 Name: 名称未設定 [sage] Date: 03/11/29 15:05 ID: zcHa7A5e Be:
某スレからの流れで質問なのですが、
画像ビューアでよくある、フルスクリーン表示ってどうやって実装したら良いものでしょうか。
164 Name: 名称未設定 [sage] Date: 03/11/29 15:48 ID: 1piDgw0B Be:
>163

やることは至って簡単で画面いっぱいのNSWindowに切り替えればいいだけです。

しかし普通のWidnowをでかくしただけじゃうまくいきませんのでそれ用のNSWindowを作ります。
やるべきことは、
1,(メインの)画面と同じ大きさで
2,タイトルバーを含む境界線がすべて無いNSWindowを
3,メニューバーよりもDockよりも前に表示する
です。

1,は簡単
NSRect fullscreenRect = [[NSScreen mainScreen] frame];
これをWindowのFrameにすればいいだけ。
2,NSWindowを作るときのstyleMaskにNSBorderlessWindowMaskを渡してあげる。
3,NSWindowのレベルをNSStatusWindowLevelにしてやると出来ます。

あとは出来たNSWidnowにNSViewを貼り付けるだけです。
165 Name: 名称未設定 [sage] Date: 03/11/29 15:52 ID: 1piDgw0B Be:
例えば (動作を確認してません。また、解像度の変更に対応してません。)
-(NSWindow*)fullscreenWidnow {
static NSWidnow* result;
NSRect fullscreenRect = [[NSScreen mainScreen] frame];
if( ! result ) {
result = [[NSWindow alloc] initWithContentRect:fullscreenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[result setLevel:NSStatusWindowLevel];
// たいていは黒バックですよね。
    [result setBackgroundColor:[NSColor blackColor]];
}
return result;
}
-(void)fullscreenMode {
....
window = [self fullscreenWidnow];
// このviewはNibで作っておくのが楽だと思います。
// contentViewのsubViewにせず直接contentViewに設定してもかまいません。
[[window contentView] addSubview:view];
....
[widnow makeKeyAndOrderFront:self];
....
}
-(void)normalMode {
....
window = [self fullscreenWindow];
[widow orderOut];
[view removeFromSuperview]; // お片づけ
....
}
166 Name: 名称未設定 [sage] Date: 03/11/29 17:12 ID: zcHa7A5e Be:
>>164-165
解説付きでありがとうございます!早速やってみます。
167 Name: 名称未設定 [] Date: 03/11/29 20:57 ID: qfxDpF9Q Be:
現在のデフォルトブラウザを知るにはどうすればいいですか?
訳あって、ダブルクリック(-openFile:)ではブラウザで開かれてくれない
ファイルをブラウザに投げる必要があるのです。
よろしくお願いします。
168 Name: 名称未設定 [sage] Date: 03/11/29 21:14 ID: m0k62x1P Be:
>>167
Launch ServiceのLSGetApplicationForInfo()で拾えたような気がします。
どっかで見た気がするんですが、どこで見たか忘れてしまいました。
169 Name: 名称未設定 [sage] Date: 03/11/29 21:19 ID: PdB83R+B Be:
-(BOOL)openURL:(NSURL *)url
でデフォルトのブラウザで開けないだろうか?
170 Name: 名称未設定 [sage] Date: 03/11/29 21:24 ID: VUZ7oStO Be:
URLがfile://の時はopenFileと同じ動きになるよ。
171 Name: 167 [] Date: 03/11/29 21:28 ID: qfxDpF9Q Be:
>>168
ありがとうございます。調べてみます。

>>169
やってみたのですけどだめでした。openFile:と同じ結果になってしまって。
172 Name: 167 [sage] Date: 03/11/29 21:54 ID: qfxDpF9Q Be:
うー・・Carbonですか・・つらいっす。でもがんばります。
173 Name: 名称未設定 [sage] Date: 03/11/29 22:00 ID: PdB83R+B Be:
NSUserDefaults *defaults=[[[NSUserDefaults alloc] init] autorelease];
NSDictionary *dictionary1=[[defaults persistentDomainForName:@"com.apple.LaunchServices"] objectForKey:@"LSPrefsBindings"];
NSDictionary *dictionary2=[[dictionary1 objectForKey:@"U:http"] objectAtIndex:0];
NSString *identifier=[dictionary2 objectForKey:@"LSBundleIdentifier"];
NSString *filename=[[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:identifier];

Cocoa なら、これでデフォルトブラウザのパスが取得できる。
plist の仕様が変わったら使えんけど。
174 Name: 167 [sage] Date: 03/11/29 22:33 ID: qfxDpF9Q Be:
>>173
いけました。ありがとうございます!
それにしても何をしているのか、中身がいまいちわからんのですけど・・。
LaunchServiceともども、追々学習していきます。
175 Name: 名称未設定 [sage] Date: 03/11/30 00:18 ID: eYPeuw5k Be:
168ですが、元ネタわかりました。
http://cocoa.mamasam.com/COCOADEV/2002/09/2/45230.php
ここです。

173はおおざっぱに言うと~/Library/Preferences/com.apple.LaunchServicesを
読み込んで、httpに関連づけられているアプリケーションのidentiferを得て、
それをNSWorkspaceで処理してるってことですかね。
って、173さん、勝手に書いてすいません。あげくにもし間違ってたら重ねてすいません。
とりあえず~/Library/Preferences/com.apple.LaunchServicesを実際に開いてみたら
理解が進むんでないでしょうか。
176 Name: 名称未設定 [sage] Date: 03/11/30 00:19 ID: eYPeuw5k Be:
あ、すいません。
com.apple.LaunchServicesじゃなくてcom.apple.LaunchServices.plistっすね。
177 Name: 164-165 [sage] Date: 03/11/30 22:49 ID: z4orrtUx Be:
ちょっと訂正させてください。

誤;3,NSWindowのレベルをNSStatusWindowLevelにしてやると出来ます。
正;3,NSWindowのレベルをNSScreenSaverWindowLevelにしてやると出来ます。
こちらの方がよいようです。

また、2点ほど問題がありました。
1点めはcmd+[TAB]、exposeによるアプリの変更に問題を生じる。
これはNSApplicationのdelegateで
- (void)applicationWillResignActive:(NSNotification *)notification
{
if( フルスクリーンモード ) {
ノーマルモードに変更
}
}
で回避可能です。
これをしないとほかのアプリが見えないにも関わらずアクティブになるというきわめて危険な状態になります。
おそらくユーザーはパニック状態になるでしょう。
フルスクリーンを解除しようにもアプリ自体をcmd+Qで終了させようにもイベントはすべて見えないアクティブアプリに送られてしまいますから。
(ただし、Appleはこれに気づいてないようでiPhotoではこの状態になります。)

2点目はexposeです。iTuneのフルスクリーンモードではexposeは無効化されているようです。
少し調べてみたのですが、exposeのイベントはかなり低レベルで処理されているらしくCocoaAPIでは無効かの方法を見つけられませんでした。
動作から考えるとWindowServerがこれをやってるのは確実なんですがドキュメントが見つからない。。。
178 Name: 名称未設定 [sage] Date: 03/12/01 23:09 ID: IEdWMmcQ Be:
CocoaでシーケンサーのCoreに使えるぐらいの
正確なクロックを得るにはどうしたらいいのでしょうか。
NSTimerをちょっとためしてみたけど、どうも他の
アプリと切り替えたりすると揺れたりします。
アイディア等あれば教えてください。
179 Name: 名称未設定 [sage] Date: 03/12/01 23:44 ID: 9Qd3JaM8 Be:
>>178
Omniのサイトに精度の高いタイマーのソースが
公開されてた気がする。

……と、これかな。
OmniTimer framework for performing low overhead and high accuracy timing.
ttp://www.omnigroup.com/developer/gamedevelopment/
180 Name: 名称未設定 [sage] Date: 03/12/02 00:07 ID: ZdWXLmSW Be:
>>179
ありがとうございます!試してみます。
181 Name: 名称未設定 [sage] Date: 03/12/02 01:24 ID: JyvOsmcY Be:
>>177
今までNSWindowの勉強をさぼっていたせいでかなり難儀しましたが、
なんとか実装できました。本当にありがとうございました。
182 Name: 名称未設定 [sage] Date: 03/12/03 18:44 ID: x/rv4abE Be:
すいません、初心者なのですが
異なるnibファイル間でメッセージのやり取りはどうやって実現するのでしょうか?
凄い基本的な事かも知れませんがどなたか教えて下さい。
183 Name: 名称未設定 [sage] Date: 03/12/03 18:51 ID: EG4i3Fjx Be:
NSNotificationCenter でも使えば?
184 Name: 名称未設定 [sage] Date: 03/12/04 01:01 ID: FO6ZXYAX Be:
>>182
もしかすると、FirstResponderに送ればいいかもよ。
このことは簡単すぎて、見過ごしているか書いてないことが多い。
185 Name: 名称未設定 [sage] Date: 03/12/04 05:33 ID: 29QF9aRO Be:
>>161 あたりでも少し触れられてるんですが、
NSGraphicContextってそもそも何なんでしょうか?
公式の文書もあるにはあるんですが...
http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/index.html

どこかわかりやすい説明があるとこってないでしょうか?
186 Name: 名称未設定 [sage] Date: 03/12/05 01:43 ID: glPDxH1c Be:
htmlからtextだけを抜き出したくて
NSAttributedString *aString;
NSURL *url = [NSURL URLWithString:@"http://www.apple.com/"];
NSData *dat;
NSDictionary *dic;

dat = [NSData dataWithContentsOfURL: url];

aString = [[NSAttributedString alloc] initWithHTML:dat documentAttributes:&dic];

[[textOut textStorage] appendAttributedString:aString];

textOutはOutletです

という感じのコードを書いてみたんだけど
htmlのテーブル部分だけがtext読み込みできない・・・
Viewには表示されてるのに、NSLogで見ると抜けてるのです。
(俺があほ? バグ?)

他に何かいい方法ないでしょうか。
187 Name: 182 [sage] Date: 03/12/06 02:06 ID: nBaoYn0/ Be:
>>183-184
すいません。プロバイダ規制等で返事が遅れました。
ノーティフケーションもレスポンダチェーンも幾らか勉強不足なので
今すぐは使えませんが参考になりました。御助言有り難うございました。
ドキュメント側オブジェクトはメインウインドウのデリゲートとしてるので[[NSApp mainWindow]delegate]で取得出来ましたが、
逆からは結局出来ませんでした。
188 Name: 名称未設定 [sage] Date: 03/12/06 09:53 ID: 8nFfpFga Be:
>> 186
俺もHTMLタグをとりだしたいのだが、結局方法がわからなかった。
しかたないので、NSScanner をつかって、地味にきりだしている。
189 Name: 名称未設定 [sage] Date: 03/12/06 12:05 ID: B/SmR9Ef Be:
>186
ドキュメント読んでないけど、テーブルとかは
NSAttributedString の 属性側に入ってるのでは?
190 Name: 186 [sage] Date: 03/12/06 20:18 ID: aRxxDJ4o Be:
>>188
NSScannerか。使ったことないのでやってみます。
俺はrangeOfStringを使ってテーブルタグを検索削除するメソッド書いて
とりあえず成功した。
が、なんか読み込めないSITEとかあるのでwebkitの資料漁ってます。

http://cocoa.karelia.com/Foundation_Categories/NSString/_Flatten__a_string_.m
こんなのも見つけた。

>>189
NSAttributedString の 属性側に入ってるのでは?

リンク先とかはそうなってると思ったけどどうなのかな。
ヒントさんきゅう。
191 Name: 名称未設定 [sage] Date: 03/12/07 03:25 ID: bewOrZb5 Be:
ファイルを捨てる動作をさせたいのですが、
ゴミ箱のpathってどこにあるんでしょうか?
あと10.2と10.3では違ったりしますか?
192 Name: 名称未設定 [sage] Date: 03/12/07 06:35 ID: tYeiZdxQ Be:
~/.Trash <ゴミ箱
193 Name: 名称未設定 [sage] Date: 03/12/07 20:25 ID: F6hElsBJ Be:
>>191

前にdentomさんとこの板に書かれていたrm安全版という記事にも書かれていたのだけど、
単にmvで、~/.Trashに移動するだけだと同名ファイルが既にあった場合消されちゃうので、
名前も変えてってスクリプトを作ってましたね。

194 Name: 193 [sage] Date: 03/12/07 20:26 ID: F6hElsBJ Be:
で、そのスクリプトが以下の通り。

#!/bin/csh -f
if ($#argv > 0) then
set WORKFILE = /tmp/jp_dentom_tra_work
echo 'tell application "Finder"' > $WORKFILE
foreach ARGFILE ($*)
echo -n 'delete POSIX file "' >> $WORKFILE
echo -n $ARGFILE >> $WORKFILE
echo '" as alias' >> $WORKFILE
end
echo 'end tell' >> $WORKFILE
osascript $WORKFILE > /dev/null &
endif

というやつ。適当な名前で、たとえばtraとでもして
tra *.txt
とターミナルで入力すれば、*.txtを全部、ゴミ箱にうつします。
osascriptは実行時間が遅いのでバックグランドで動かすようにしてます。


195 Name: 193 [sage] Date: 03/12/07 20:27 ID: F6hElsBJ Be:
↑掲示板のコピペ仕様としたら改行大杉といわれてしまった(w

tell application "Finder"
delete POSIX file "file-name" as alias
end tell

この3行がキモ。
196 Name: 名称未設定 [sage] Date: 03/12/07 20:40 ID: kgMaYyp5 Be:
~/.Trash って別パーティションのファイルでも大丈夫なの?
197 Name: 名称未設定 [sage] Date: 03/12/07 20:43 ID: AFpiyr9v Be:
NSWorkspaceRecycleOperation
198 Name: 名称未設定 [] Date: 03/12/08 00:51 ID: Dx3gW6// Be:
~/.Trashの決めうちはまずいよ。
複数パーティションに分けている場合とか。
CarbonだったらFindFolderあたりで探したはず。
199 Name: 名称未設定 [sage] Date: 03/12/08 00:52 ID: Dx3gW6// Be:
Cocoaだったら195のスクリプトをNSAppleScriptと組み合わせるといいかも。
200 Name: 191 [sage] Date: 03/12/08 02:06 ID: Oh8enjz+ Be:
>>192
有り難うございます。
以前どこかで知った筈でしたがど忘れしていました。
>>193
ええと、Cocoa専門のプログラム初心者なので
スクリプトもターミナルもCocoaでスクリプトを使う方法もあまり判らないですが、
確かに同名ファイルの場合等、>>196-198さんの事態を考えるとスクリプトでFinderに依頼した方が確実かとも思いますので
>>199さんの方針で書店や図書館等で調べてこようかと思います。
有難うございました。

ちなみに単純にファイル移動のメソッドでゴミ箱に送ろうとしたら出来ませんでした。
単に何か間違えてるのか、そういう仕様なのでしょうか。
201 Name: 名称未設定 [sage] Date: 03/12/08 06:04 ID: FUILWRJg Be:
>>200
>>197を無視しているのはなんでだ?
202 Name: 名称未設定 [sage] Date: 03/12/08 11:09 ID: tcTg/2hO Be:
197の説明不足じゃないかな。無視したのは。
以下、NSWorkspaceを使ってゴミ箱に捨てるサンプル
// /Users/Shared/_removeにあるtemp.c、temp.txtをゴミ箱に捨てる例
NSWorkspace *aWS = [NSWorkspace sharedWorkspace];
NSString *aDir = @"/Users/Shared/_remove";
NSArray *aFile = [NSArray arrayWithObjects:@"temp.c",@"temp.txt",nil];
int aTag;
if([aWS performFileOperation:NSWorkspaceRecycleOperation source:aDir destination:aDir files:aFile tag:&aTag]){
NSLog(@"OK aTag=%d",aTag);
}else{
NSLog(@"NG aTag=%d",aTag);
}
203 Name: 202 [age] Date: 03/12/08 11:11 ID: tcTg/2hO Be:
おっと、このサンプルはどっかのMLか掲示板で親切に教えてもらったもので
わっちの発案ではない。教えてくれた人、ありがとう。
204 Name: 200 [sage] Date: 03/12/09 05:34 ID: HKEiSKNK Be:
>>202-203
おかげで何とか実装出来ました。
移動の際、ドック上のゴミ箱アイコンのアクション
(空アイコンからの更新、入った音の発生)が起こらないのが寂しいですが、これで良しとします。
助かりました、有り難うございます。
>>201無視した訳では無かったのですが、
>>197 NSWork~がどの様なものか判らないのですが、ゴミ箱処理に関係したものでしたら出来ればもう少し説明をお願いします」
という様な事を書いたのですが編集中に一度消したまま送信してしまいました。>>197さん、すみませんでした。
205 Name: 名称未設定 [] Date: 03/12/10 09:33 ID: e1rQVPmm Be:
ObjectAllocのバーで青色と黄色の違いは何でしょうか?

もう1つ、ObjectAllocで Call Stacksがシンボルで表示されるときと
アドレスのときの違いはわかりますか?
206 Name: 名称未設定 [sage] Date: 03/12/10 11:00 ID: ei6buMrQ Be:
>>
メニュー
「ObjectAlloc」>「About ObjectAlloc」

Performance 関連の文書にも詳細が載ってたはず。
file:///Developer/Documentation/Performance/Performance.html
207 Name: 名称未設定 [sage] Date: 03/12/10 11:04 ID: ei6buMrQ Be:
>>204
AppleEvent(Carbon) で Finder におねがいするのが一番確実。
もっとも、いまは Cocoa だけで手一杯だろうけど。
208 Name: 名称未設定 [sage] Date: 03/12/10 11:16 ID: VJzX7IdA Be:
自分でファイル移動するとコメント消えちゃうしねぇ。
209 Name: 名称未設定 [sage] Date: 03/12/10 12:20 ID: e1rQVPmm Be:
>>206
どうも。ここは気付かなかったなあ
>About
に色はありました。

ドキュメントファイルがなかった。
こっちはOSX10.2.8だから?
シンボルの有無はなんなんだろうか。。
210 Name: 204 [sage] Date: 03/12/11 13:05 ID: t6gYoeA2 Be:
>>207
確かに手一杯ですし、判りませんが頭に入れて置きます。
助言どうもです。
211 Name: 名称未設定 [sage] Date: 03/12/13 10:59 ID: ohyp+QwZ Be:
あの、自作ウインドウにマトリクスを貼付けたスクロールビューを張るだけの話なのですが、
どなたかやり方を教授して貰えませんか?
途中、実装出来たのですが、
表示タイミング等の都合からコードの場所をずらしたり等していたら
スクロールビューの内容が表示されなくなり、夜中から苦戦しています。
勿論、マトリクス等は先に生成してますし、
マトリクスの内容も直接ウインドウに張ると表示されるので出来てますし、
構文エラーもないのですが、
幾ら見直してもおかしい所が見つからず、混乱しています。
下の様な感じなのですが、厳密に張る順番の様な物が有りましたっけ?
PBが破損したのでしょうか?

//マトリクス、ウィンドウ生成後(スクロールも含め全てインスタンス宣言済み)
myScroll = [[[NSScrollView alloc]init]autorelease];
[myScroll setHasVerticalScroller:YES];
[myScroll setDrawsBackground:YES];
[myScroll setDocumentView:myMatrix];
[myWindow setContentView:myScroll];
//[scrollV setVerticalScroller:YES];
212 Name: 名称未設定 [sage] Date: 03/12/13 11:11 ID: 7m8Ekn7F Be:
>>211
NSViewのサブクラスの指定イニシャライザはinitじゃなくて
initWithFrame:だったような気が。

213 Name: 名称未設定 [sage] Date: 03/12/13 11:45 ID: WCSb4l7s Be:
>211
IBでスクロールビュー付けちゃダメなの?
214 Name: 名称未設定 [sage] Date: 03/12/13 12:23 ID: 6z4JXjnn Be:
WebView を使って簡単なブラウザを作ろうとしてるのだけど、

-[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)

ってエラーがどうしてもでてしまってコンパイルできない。テキストフィールドを1つだけバインディングしてるだけだけれど。
何が原因なんだろ?
当方 Xcode 1.0.1、Interface Builder 2.4(v349) です。
215 Name: 214 [sage] Date: 03/12/13 12:28 ID: 6z4JXjnn Be:
間違えた。コンパイルはできるけれど、実行するとエラーがでるんだ。
216 Name: 211 [sage] Date: 03/12/13 16:19 ID: ohyp+QwZ Be:
>>212
使ってみましたが駄目でした。
そもそも途中、initで実装出来、順番は変えてもコード自体は殆ど弄ってないので余計原因が判りません。
>>213
メインウインドウのサブウインドウなので自作にしたのですが、
何かIBの使い方を誤解してるでしょうか?
217 Name: 名称未設定 [sage] Date: 03/12/14 14:24 ID: 0dqJPMXU Be:
フォルダ内一覧を配列に取得した場合、
配列から「Icon(ニューライン文字付き?)」や
「*.txt]等の一部一致した文字列を消す方法を教えて下さい。
後者の*はワイルドカードのつもりですがcocoaでは使えない様ですし
配列の一つ一つをhasSuffixで参照しても出来ませんでした。
もしくはフォルダ名だけを取得する方法が有れば教えてください。宜しくお願いします。
218 Name: 217 [sage] Date: 03/12/14 15:16 ID: 0dqJPMXU Be:
すいません!他の関連処理部分の更新用メソッドの未実装に気付き直したら出来ました!
お騒がせしました。本当にすみませんでした。
219 Name: 名称未設定 [] Date: 03/12/14 23:43 ID: qSRZfyyj Be:
初めまして。

XCodeはどこにあるのでしょうか?
買ったままの状態ではインストールされてないのでしょうか?
220 Name: 211 [sage] Date: 03/12/15 00:17 ID: vGu8XMuq Be:
出来ました。
マトリクスをスクロールビューに貼付ける前に
中身のセル等に自動リサイズする様セットしたのが原因だった様です。
と、一応同じ所でつまずく人の為に書いておきます。
同じくお騒がせしました。
221 Name: 名称未設定 [sage] Date: 03/12/15 02:15 ID: ULTu93WZ Be:
>>219
Pantherプリインストールマシンなら、/Applicationsフォルダの中にディスクイメージがあるらしい。

あるいはADCオンライン会員になってDownloadする。

222 Name: 222 [sage] Date: 03/12/16 03:01 ID: N+ZEq57g Be:
        ∧∧
       (゚Д゚ )  <おいこそが222ゲトー
     /◎ ̄旦/ヽ;;;⌒`)
   /___/ ※/)≡=-;;;⌒`)⌒`)
  / ※ ※ ※ ※ // ≡≡≡≡= -;;;⌒`)⌒`)
  (ー―――――_,ノ ≡=⌒`);;;⌒`)≡=-⌒`)
   ̄ ̄ ̄ ̄ ̄ ̄   ズザー―――
223 Name: 名称未設定 [sage] Date: 03/12/16 18:25 ID: qjoNzs9l Be:
よくある、テーブルビュー等の項目をダブルクリックするとウインドウが開き、
開いたまま更にダブルクリックするとウインドウが手前に来るというのを実現させたいのですが、
ウインドウが複数に及ぶ場合、ノーティフィケーションやデリゲート等で実現可能なのでしょうか?
メニューのウインドウ項目を取得する様な方法が有れば教えてください。
お願いします。
224 Name: 名称未設定 [sage] Date: 03/12/16 18:30 ID: 2J/0UMBt Be:
>メニューのウインドウ項目
って、ウインドウメニューの事が言いたいのか?

NSTableVIewのdoubleActionから
NSWindowのmakeKeyAndOrderFrontを
呼び出せばいいんでないの。
225 Name: 名称未設定 [sage] Date: 03/12/16 19:12 ID: CbjzrSfO Be:
>>223
document-based application
226 Name: 名称未設定 [sage] Date: 03/12/16 19:12 ID: qjoNzs9l Be:
ええと何と言ったらいいか。とりあえず今作ってるものの構造を書くと、
ダブルクリックでウインドウをコントロールするインスタンスを作成して、それがウインドウを生成し、
同時に配列にウインドウ名を追加する事で
そのウインドウ名が配列内に無い場合のみウインドウが開く様にして、
同じウインドウを開かない様にしてるのですが(ウインドウを閉じた時に配列からウインドウ名を削除する)
ウインドウが多種類あるのでmakeKeyAndOrderFrontを送る名を特定出来ない、という事です。
227 Name: 名称未設定 [sage] Date: 03/12/16 19:19 ID: 2J/0UMBt Be:
配列にウインドウ名を書き込んで管理している?
そりゃ管理のしかたが悪い。
単純にウインドウなりコントローラなりへの参照そのものを
配列に突っ込んどきゃいいのでは。
228 Name: 名称未設定 [sage] Date: 03/12/16 20:08 ID: qjoNzs9l Be:
確かにそうでした、
すいません、色々勘違いしていました。

(というか結構疲れてるみたいです…)
229 Name: 名称未設定 [sage] Date: 03/12/17 21:52 ID: 93n9J9Vc Be:
NSAttributedStringをhtmlに変換する方法って何か無いですか?
htmlからNSAttributedStringを作れるんだから反対もできるだろう、というのは安易でしょうか?
230 Name: 名称未設定 [sage] Date: 03/12/19 12:23 ID: 6OR0d2tY Be:
例えば Software Update のアップデート画面などでは
NSTableView の Cell の中に Progress Indicator が
組み込まれていたりするのですが、
そのような NSTableView を作るにはどうすれば良いのでしょうか。

NSCell のサブクラスの中には Progress Indicator は無いようですので、
普通の方法では実現できそうにないような気もしますが。
231 Name: 名称未設定 [sage] Date: 03/12/19 17:05 ID: Jx7XA9qI Be:
>>230
Software Updateの
>Cell の中に Progress Indicator
UI Element Inspectorで見たところ、イメージCELLっぽいから
自分で書いているようだ。
232 Name: 名称未設定 [sage] Date: 03/12/19 19:54 ID: /Exb3moW Be:
appleのUIに似せようとしてもCocoaには相当する機能がなくって
それぞれのアプリで頑張らなきゃならんってのはどうにかなんないもんかね。
233 Name: 名称未設定 [sage] Date: 03/12/19 23:26 ID: IungXsyx Be:
>232
Appleがユーザーインターフェースガイドラインを無視して暴走している方が問題だと思うが。
自前でがんばってもOSのバージョンアップでおかしくなる可能性を考えると、
あんまりがんばる気になれないなあ、俺は。
234 Name: 名称未設定 [sage] Date: 03/12/20 19:15 ID: vzt6/8RJ Be:
ファイル(orフォルダ)にアイコンをセットする方法を教えて下さい。
235 Name: 164-165 [sage] Date: 03/12/20 20:33 ID: S83SfMJY Be:
>234
AppKit/NSFileWrapper.h
236 Name: 名称未設定 [sage] Date: 03/12/20 20:34 ID: N7A8X479 Be:
>>234
ttp://homepage.mac.com/troy_stephens/software/objects/IconFamily/
237 Name: 234 [sage] Date: 03/12/21 02:18 ID: Ic9uz2II Be:
有り難うございます。

(しかしNSFileWrapperが何なのか調べてる所です)
238 Name: 名称未設定 [] Date: 03/12/21 14:51 ID: kI0w7HxJ Be:
ご存知の方がいらっしゃったら教えてください

Expose中とそうでない時を判定するにはどうしたらいいでしょうか。
ここで、Expose中とはF9~F11でウインドウが縮小したり、外に移動したりしている時
のことです。
239 Name: 名称未設定 [sage] Date: 03/12/23 00:01 ID: EAfSqS4h Be:
プチ疑問。
NSLogを全部とっぱらったら0.1秒位処理が早くなったりするん?
240 Name: 名称未設定 [sage] Date: 03/12/23 01:43 ID: 21I6xOVC Be:
>>239
NSLogの数による
241 Name: 名称未設定 [sage] Date: 03/12/23 01:56 ID: moAHNmD+ Be:
膨大な数を格納した配列にdescriptionさせたりとか。
242 Name: 名称未設定 [sage] Date: 03/12/24 01:11 ID: M0n2et9R Be:
Cocoaプログラムに初挑戦しております。
重たい処理(処理A)を行うとカーソルが虹色のくるくる回るやつになり、
処理が終わるまでウインドウのボタンが一切きかなくなります。
(処理A中にはキャンセルフラグが1になると中断する仕掛けが組み込まれてますが、キャンセルフラグを1にするボタンを押せないので結局キャンセルできません。)
WindowsでいうところのApplication->ProcessMessage()のような関数、
すなわち、一旦処理をOS側に戻す関数などcocoa上にありましたら、教えていただきたくお願いします。


243 Name: 名称未設定 [sage] Date: 03/12/24 04:08 ID: AeJVNocu Be:
RunLoopかな、これだと遅くなるから、
キャンセルフラグくらいならThreadにしたほうが良いぞ
244 Name: 242 [sage] Date: 03/12/24 21:50 ID: M0n2et9R Be:
>>243
情報ありがとうございます。

スレッドのサンプルを見ながら、処理Aを32分割してみました。
しかし、結局32個のスレッドが終わるのを待つループで
虹色カーソルが出て、なにも受け付けくれず、事態は全く改善しません
でした。よく考えてみると当然ですね。

スレッドが終わるのを待つループの中でrunloopを使えばよさそうだ!
というのは解ったのですが、いまいちrunloopの使い方がよくわかりません。

runloopのサンプルプログラムの情報などありました、
教えていただきたくおねがいします。
245 Name: 名称未設定 [sage] Date: 03/12/24 23:37 ID: +Z6Oft3F Be:
便乗でoneway修飾子の使い方を教えて下さい。
単にvoidにくっ付けても効果がない様ですが。
246 Name: 230 [sage] Date: 03/12/25 01:37 ID: k0UO5xPu Be:
>>231
アク禁食らってて遅くなりましたが、ありがとうございました。
自分で描くのは面倒なので断念したいと思います。

>>244
フラグを参照して適宜終了するようなスレッドを
1つだけ走らせれば十分なような気もしますが。
32個のスレッドというのは何か設計に問題が無いですか?

ついでに質問というか疑問なのですが、新たにスレッドを走らせる場合に
NSThread の detachNewThreadSelector:toTarget:withObject:
を使わずに
NSApplication の detachDrawingThread:toTarget:withObject:
を使ったとしたら何か問題があるでしょうか。
後者は自動的に NSAutoreleasePool を用意してくれるので便利なのですが、
どうも名前からすると何かを描画する時に使うことを予定しているようです。
247 Name: 名称未設定 [sage] Date: 03/12/25 01:49 ID: /ix/M4nG Be:
+ (void)detachDrawingThread:(SEL)selector toTarget:(id)target withObject:(id)argument

Creates and executes a new thread, automatically creating an NSAutoreleasePool for the thread.
This method is a convenience wrapper for NSThread’s detachNewThreadSelector:toTarget:withObject:.
248 Name: 名称未設定 [sage] Date: 03/12/25 08:36 ID: a31gkzmZ Be:
>244
> スレッドが終わるのを待つループ
これが無ければうまくいくでしょうね。

さらに>246さんの
> フラグを参照して適宜終了するようなスレッドを
> 1つだけ走らせれば十分なような気もしますが。
を適用。

あと、NSLockも調べる。
249 Name: 名称未設定 [sage] Date: 03/12/25 09:06 ID: a31gkzmZ Be:
>245
oneway, in, out, inout, byref, bycopy は
プロクシを使った分散オブジェクトのオブジェクト間通信時のみにしか適応されないようです。

http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_4_section_5.html
英語の文献しかないみたいです。。。
250 Name: 名称未設定 [] Date: 03/12/25 10:14 ID: KHRTr3L/ Be:
AppleのThreadサンプルは起動までの単純な実装だから、実用には
かなり試行錯誤しないと理解できないと思う。
あれで分かりづらいのは、DistantObjectとThreadをいっしょに
書いているところだよ。サンプルも何度か書き直されているから
その人も理解していないはず。


通常のアプリでは、2つのThreadの同期で充分だけど、
少し複雑なThread間でメッセージ通信を行いたい時は、DO(Distributed Objects)
にして、互いにRunLoopが必要なんだ。
そのとき、onewayは意味がある。
Win32でいう所のSendMessageとPostMessageだな。
251 Name: 名称未設定 [] Date: 03/12/25 18:36 ID: pGtjfmI2 Be:
MAC OSⅩ(v10.2)
の音量をいじくるプログラム作りたいんですけど
ボリュームコントロールがよくわかりません
教えてください

言語Objective-Cです


252 Name: 名称未設定 [sage] Date: 03/12/25 22:26 ID: rNeUl6yv Be:
VBでいうところのdoevents関数みたいなのってcocoaにはないのかな?
それがあれば>>242さんの問題も解決すると思うんだけど
あとNSThreadは広分社のobjective-Cって本に詳しい解説がのってた気がします。
253 Name: 名称未設定 [sage] Date: 03/12/26 00:10 ID: 37nTHt5/ Be:
>>250
>通常のアプリでは、2つのThreadの同期で充分だけど、

NSThreadでこういうごくふつうのマルチスレッディングってできるんだっけ?
254 Name: 名称未設定 [sage] Date: 03/12/26 01:04 ID: DgOIrw5h Be:
オレはスレッド間の通信はNSLock系のクラスで排他制御をかけたNSMutableArrayを
使ったけど。DOは高度すぎて、よくわからんかった。
255 Name: 名称未設定 [sage] Date: 03/12/26 16:12 ID: 8hH1M9px Be:

手抜きするなら、同期処理がややこい Thread を使わず、NSTimer 使っ
て1秒なり0.1秒なりの単位で繰り返し特定のメソッドを呼び出させる。

もちろん、特定のメソッドではループするのじゃなく適当な単位で処理
できたら即座に return すると。

全て終わったら Timerそのものを invalidate する。

Thread を立てないから Timer で呼び出しているメソッドの実行中は
マウスやキー操作には反応しないけど、「適当な単位」を適宜短くして
おけば気がつかないよ。

256 Name: 名称未設定 [sage] Date: 03/12/26 21:28 ID: pssX5oDW Be:
>>253
>NSThreadでこういうごくふつうのマルチスレッディングってできるんだっけ?

こんな質問が出るとは>250さんの言う通りみたいね。
別にNSConnection を使わなくてもいいいんです。
NSRunLoopも必要なし。
+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;
で普通のメソッド渡してやればそのメソッドは別スレッドで動きます。
NSAutoreleasePoolのインスタンスがいないのでメソッドのはじめで作って最後で捨ててやればいいだけです。
NSRunLoopが走ってないので適宜NSAutoreleasePool を解放してやらないと、
メソッドが終わるまでゴミがたまったままになりますが。
自分でループを回してるんだったら、ループのはじめでNSAutoreleasePoolを確保して、
ループの最後で解放するのが常套手段ですね。
257 Name: 名称未設定 [sage] Date: 03/12/26 22:33 ID: No9jXZE7 Be:
だれかNSThread使ったサンプル書いてやれよ

と人に押し付けてみるテスト
258 Name: 名称未設定 [sage] Date: 03/12/27 00:05 ID: IOYYYpX5 Be:
>>256
そのへんどうだったかなぁ?
スレッドをdetachするのはいいとして、detachしたスレッドを示すIDが
得られないから、スレッド間通信ができないじゃん、と思った記憶が
あるが。
259 Name: 名称未設定 [sage] Date: 03/12/27 00:26 ID: /F8lmja3 Be:
ttp://www.geocities.co.jp/SiliconValley-Bay/5171/nsthreadsample.zip
難しく考えなくても、こんな感じでOKなのでは。
260 Name: 名称未設定 [] Date: 03/12/27 13:41 ID: Bct3uqZr Be:
>>256
NSApplicationの
+ (void)detachDrawingThread:(SEL)selector toTarget:(id)target withObject:(id)argument
を使うとNSAutoreleasePoolの確保と解放をこいつが勝手にやってくれるから便利よ。
261 Name: 名称未設定 [sage] Date: 03/12/29 21:38 ID: KtDW1yC9 Be:
>>258
どういう種類のスレッド間通信ですか?
262 Name: 名称未設定 [sage] Date: 03/12/30 06:17 ID: xOUqLKGj Be:
.DS_Storeを生成&設定する手段って用意されてるんでしょうか?
263 Name: 名称未設定 [sage] Date: 03/12/30 10:04 ID: IkUddHqz Be:
>>262
何やりたいのかよくわからんが、FinderにAppleEvent送るしかないんじゃない?
264 Name: 名称未設定 [sage] Date: 03/12/30 11:01 ID: iFT7eD7e Be:
テーブルから文字列をドラッグ&ドロップでテキストエディタなどに
移すことができるようにしようと思っています。

そこで、試しに NSTableView の delegate に
-(BOOL)tableView:(NSTableView *)tv writeRows:(NSArray*)rows toPasteboard:(NSPasteboard*)pboard{
[pboard declareTypes:[NSArray arrayWithObjects:NSStringPboardType,nil] owner:nil];
[pboard setString:@"test" forType:NSStringPboardType];
return YES;
}
というメソッドを書いたのですが、これでは上手くドラッグ&ドロップできません。

NSLog で調べたところ、pboard への文字列の格納は成功しているようですが、
どのようにしたらテキストエディタなどに文字列を受け取らせることができるのでしょうか。
265 Name: 名称未設定 [sage] Date: 03/12/30 11:31 ID: PQhRaXf/ Be:
http://developer.apple.com/documentation/Cocoa/Conceptual/DragandDrop/Tasks/faq.html#//apple_ref/doc/uid/20002248/BBCGAEBJ

NSTableViewのサブクラスを作って
draggingSourceOperationMaskForLocalをオーバーライドして
適当な値を返すようにする必要があるらしい。
266 Name: 名称未設定 [sage] Date: 03/12/30 11:58 ID: iFT7eD7e Be:
>>265
ありがとうございます。
直ちに実装して解決しました。

他の方のためにも "draggingSourceOperationMaskForLocal" で検索して
参考にしたサイトを貼っておきます。
ttp://wwwa.dcns.ne.jp/~nito/OSPT/DragAndDrop.html
267 Name: 名称未設定 [] Date: 03/12/30 12:05 ID: nJzu3GMo Be:
NSTextView等で日本語文字列をダブルクリックしたときにかなり良い精度で文節を選択できてるんですが、
これってどこかにそういうAPIがあるんでしょうか?

今10.3しか環境が無いのですが、こいつにはLAServerにLAJapaneseFastTokenizerってLA環境があるんです。
しかしどこを探してもそれに関する記述がありません。

もしかしてこれが目的の物でかつ隠しAPIでアクセスするようなものなんでしょうか?
268 Name: 名称未設定 [sage] Date: 03/12/30 19:13 ID: 40H+m5OX Be:
>>267
ドキュメントちょっとみた感じだと、NSAttributedStringのdoubleClickAtIndex:→
nextWordFromIndex:forward:がその機能っぽいね。
269 Name: 名称未設定 [sage] Date: 03/12/30 21:16 ID: Rtbwy226 Be:
>>267
UnicodeUtilitiesのUCFindTextBreak()です。
Cocoaの中身は大部分Carbonであることをお忘れなく。
270 Name: 名称未設定 [] Date: 03/12/30 22:34 ID: FfmwHk4q Be:
モニタの輝度のコントロールはどのAPIから行うのでしょうか?
271 Name: 267 [sage] Date: 03/12/30 23:18 ID: VmS5H350 Be:
>268-269
ありがとうございます。
双方とも期待通りの動作をいたしました。

Wordにだまされたって感じですね。文節なのに。。。
ダブルクリック時の云々と書いてるので確かにこれらのAPIで取得できるのが正しいとは思うのですが。

> Cocoaの中身は大部分Carbonであることをお忘れなく。
全然忘れてません。
とにかくLAServiceしか目に入ってませんでした。。。


もう年かな。。。
272 Name: 名称未設定 [] Date: 04/01/02 07:13 ID: QE5QktKM Be:
質問です。NSTableViewのrowがダブルクリックされたらある処理を
させたいのですが、そのためのdelegate methodは存在するのでしょうか。
リファレンスを見たのですがどうもそれらしいメソッドはみあたりません。
delegate method以外の方法があれば教えていただけないでしょうか。
273 Name: 名称未設定 [sage] Date: 04/01/02 07:16 ID: QE5QktKM Be:
…ってすいません、ちょっと前で思いっきりガイシュツでした。
お騒がせしました。
274 Name: 名称未設定 [sage] Date: 04/01/02 14:27 ID: ut4Acejw Be:
>>272
setDoubleAction:@selector
275 Name: 名称未設定 [age] Date: 04/01/04 22:11 ID: I0aZ/ruZ Be:
ProjectBuilderのソースの索引で Cocoaのクラス(NS*が全部)が、突然に作成
されなくなるときがあるんだけど、どうすればいい?
クリーンしてもダメなんだよ。
OSX 10.2.8, PB v2.1
276 Name: 名称未設定 [sage] Date: 04/01/06 19:54 ID: 7fNtQJAR Be:
プロジェクト名にスペースがあると(例:Currency Converter)
ビルドできないみたいなんですが
これって普通ですか?
277 Name: 名称未設定 [sage] Date: 04/01/06 23:01 ID: 2BoEXHe2 Be:
>>276
ProjectBuilder ではできなかったような気もする。
XCode ならできた。
278 Name: 名称未設定 [] Date: 04/01/10 13:05 ID: TfU85+hh Be:
複数のサウンドファイルを同時に再生する方法はあるでしょうか。
NSSoundだと独立したスレッドで走らせても他のサウンドが再生中のときは
何もしてくれないようなので……
279 Name: 名称未設定 [] Date: 04/01/12 16:17 ID: hPy0VHMn Be:
プログラミングを始めようと思っていて、C言語かJavaらへんから学びたいのですが。
あまりMacの書籍がないので、for Windowsの書籍でも構わないのでしょうか?
280 Name: 名称未設定 [sage] Date: 04/01/12 16:32 ID: eAp8/okT Be:
すべての言語に対して普遍的なことではないですが、Cでは書籍がWin向けのものでも学べます。
コンパイラの扱い方などは参考になりませんが。

そして基本的な言語仕様を学んだ上で、Macでの考え方を身につけてくださいね。

がんがれ!
281 Name: 名称未設定 [sage] Date: 04/01/12 16:34 ID: lfHLwp7U Be:
>>279
 Windows用でもなんでもかまわないと思うけど、要注意なのはGUIを操作する事にばかり注目する
タイプの本だと大半がゴミになると思う。
 gccの本とかがいいかもね、OSXでTerminal使ってとかなら。
 GUI風味考えるとJavaってのもいいんかね?Java使ってないんでわからん(w
282 Name: 名称未設定 [] Date: 04/01/12 16:50 ID: hPy0VHMn Be:
>>280,281
本当にありがとうございました。頑張ってみます。
ついでに教えてください。
Windows用Mac用関係なくおすすめの書籍の名前を教えていただけませんか?
できればMac用が良いのですが・・・。
283 Name: 名称未設定 [sage] Date: 04/01/12 22:37 ID: FJaqB447 Be:
漏れも最近始めますた。
Cocoa+Objective-CでOO勉強しつつ自己満足なシューティング作りたいなとか
思って、この連休にいろいろサイト漁りしてました。

「Cocoaはやっぱり」にあるCocoaXevi弄ってるんですけどさっぱりですね。
自機追加してキー入力受けて動かすところまでやりたかったんだけど
挫折しちまったい。

FlyObjectコピって(継承は混乱するのでとりあえずまんまコピ)
MyObjectクラスっての作って
XeviViewの初期化メソッドの部分でMyObject初期化して、
drawRectメソッドに自機表示の処理書いて、

……keyDownメソッドからどうやって自機の座標にアクセスしたらいいんでしょう。
別メソッドでallocしたオブジェクトだし……。ここでallocしたら初期化されてなんのこっちゃわからんし。頭が豆腐状態です。
あっという間にNSLogの嵐ですがな。ええん助けて。

ベーマガ世代の趣味グラマなんで見当違いの事言ってる気がしますが
なんか教えてください。具体的な説明頂けなくても抽象的な表現でも構いません。
284 Name: 名称未設定 [sage] Date: 04/01/12 22:43 ID: FJaqB447 Be:
>>282
MacOS Xプログラミング入門 Objective-C 萩原剛志氏著 広文社刊

が、BASIC育ちな漏れにもなかなか解りやすいです。
つっても半年で283で投稿した程度の理解度ですが、俺の頭の悪さ差し引けば
結構良書かも。すんなり入れます。
285 Name: 名称未設定 [sage] Date: 04/01/12 23:05 ID: /Fw8tt5/ Be:
質問です。
1) A4の紙の指定の場所(例えば、左から3cm, 上から 4cm)に
文字を印刷するには、どうしたら良いのですか?
ViewのRectの単位が分からないんです。

2) 何百ページにもわたる文章を印刷する場合、やっぱり
それだけ分の巨大なViewを作成しないといけない?

3) 例えば、カード型データベースを印刷するとして、一人分の
データが1ページに収まるか、2ページ以上になるかは、描いて
みないと分からない場合の処理は?

4) 上の話にも関係するのですが、ドラフト印刷というか、
(何ページ目とか考えずに)1ページずつ、どんどん印刷
するような処理をしたいのですが、可能?
286 Name: 283 [sage] Date: 04/01/12 23:15 ID: FJaqB447 Be:
あー、すみません自己解決でした。
単にMyObjectをXeviViewに持たせればええやん何電波書いてんだ俺
interfaceにMyObject入れて初期化して動きました。
お騒がせスマソ
287 Name: 282 [] Date: 04/01/13 00:21 ID: uVP7oe7C Be:
>>283
本当にありがとうございます。参考にさせていただきます。
288 Name: 名称未設定 [sage] Date: 04/01/13 13:54 ID: quI9hz9H Be:
>>282
 Objective CとCocoaフレームワークということだとやはりヒレガス本とかって事になるんだろう
けど、この辺の本の場合前提としてCの知識を要求される事があるので、普通にC言語入門とか
書いてある本をとりあえず1冊買ってきてじっくり読みながら試すというのをやって置くといいん
じゃ無いかな?

 IDEの説明とかそういうのが書いてあるやつじゃなくて、できるだけコマンドラインの操作で
済むような(パッと見つまらない感じ?)の本を選べば環境に関わり無く読めると思うのだけど、
途中で日本語の文字列を使うような本は処理系依存の罠があるので、教科書通りに書いたんですが
動きません!とかって質問を2chのスレだのMLだのにポストして過去ログ読め!って怒られる(w

 とりあえず素のCの文法を解説してるのを立ち読みして、最後までついてけそうって思える本を
1冊。頑張って最後まで読む(もちろん練習問題とかにでてくる問題を自力でくめるようになるま
で頑張ってみるって意味ね。ただだらだら読むだけじゃだめだろな)。
 で、文法のあらましが判ったところでオープンソースのソースをいくつか落としてきてそいつの
ソースをじっくりどういう事をやってんのか理解できるまで読む。で、同じような機能を別の書き方
で実現できるか挑戦してみたり、いろいろ理解を深める方法はあるので、試す。

 で、その位行くとObjectiveCの追加部分をちらっと見て、Cocoaのクラスに順に馴染んで行く
感じでやっつけるだけでもだいぶ簡単じゃんか!って思えるようになるとおもう。

 とりあえず頑張れ。
289 Name: 名称未設定 [sage] Date: 04/01/13 15:57 ID: Ul28f8eI Be:
Cocoa+Objective Cでゲーム作ろうにも参考になる資料が少ないですなあ。
キー入力判定が巧く逝かない感じでつ。引っかかるというか。

サンプルの豊富さからC+SDLに逃げかけてたり
290 Name: 名称未設定 [sage] Date: 04/01/13 17:06 ID: Xvj0H55P Be:
>289
NSInputServer,NSInputManagerあたりが使えないかな?
291 Name: 名称未設定 [sage] Date: 04/01/13 17:44 ID: Ul28f8eI Be:
を、使えそうですね。
帰ったら早速試してみます。thx
292 Name: 285 [sage] Date: 04/01/13 18:04 ID: orSQqLy9 Be:
うう。放置されてる。
printInfo見たら、size in pointと書いてあった。
でも、72point=1in.か、72.27point=1in.か?
そこまでは書いてないなぁ。
293 Name: 名称未設定 [] Date: 04/01/13 21:17 ID: OZWgBMkD Be:
ProjectBuilder v2.1 (10.2.8)でブレイクポイントで止まった後に
GUI上でプログラムカウンター移動できないんだけど、なんかいい方法ない?

赤いバーをドラッグしても、表示は移動されても実際には移動されない。
(gdb) set $pc=XXXでアドレス設定できるけど、行との関連がわからない。
294 Name: 283 [sage] Date: 04/01/13 23:19 ID: VgqRrakK Be:
あうー、頭こんがらがっちゃ。
283で「Cocoaはやっぱり」にあるCocoaXevi弄くってた野郎ですが、
なんか何がわかんないのかもわかんなくなってきたのでうpって見ました。
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest.zip
環境はPanther(アップデート最新)+XCode1.1です。
カーソルキーの入力受けて自機を移動しようとして座標をNSLogってるんですが
予期しない動作に。。誰か助けてください。
もし良かったら封書で六花亭のバターサンド送りつけますんで。

参考元のファイルは以下の下の方の奴です。
ttp://www.big.or.jp/~crane/cocoa/
295 Name: 名称未設定 [sage] Date: 04/01/14 00:35 ID: aDXn2U8+ Be:
>>294

変数myがnil(空)になってますよ。

というか、せっかくXcodeにはデバッガが付いてるのですから活用しましょう。
そうすればこのバグも簡単に見つかっていたはずですよ。
296 Name: 名称未設定 [sage] Date: 04/01/14 01:28 ID: CWTWds0y Be:
レスどうもです。明日早いので仕事明けたら挑戦します。
デバッガ使っても見方が良く解らなかったですが、myが一覧に
ないなあとか思ってた所でした。ドキュメント読んでおくます

うーむ。なんで空なんだろう。
297 Name: 名称未設定 [sage] Date: 04/01/14 13:40 ID: AqBIIh4g Be:
昼休み中に会社のマシンにXcode Toolsこっそりインスコ。。
デバッガ便利ですねぇ。活用せんと間抜けですなこれは。

でもやっぱり俺、オブジェクトの挙動を判ってないみたい。
以前Java齧ってたので、
ttp://kwatch.at.infoseek.co.jp/macosx/objc.html
に助けられつつ基礎から仕切り直してます。

ああ、難しい。けどなんか 楽 し い
298 Name: 名称未設定 [sage] Date: 04/01/14 16:04 ID: zSwmLdUH Be:
>>294 
チャレンジ3分デバッキング
1. 暫定で myに代入してみるテスト
my = [ [ MyObject alloc ] init ];//自機初期化。
中央に自機と背景スクロールは表示されるようになった。

2.背景表示をコメントアウトしてみると、
- (void) drawRect : (NSRect) rect {
// [ imgGround dissolveToPoint : NSMakePoint( 0, groundOffset ) fraction : 1.0 ];
自機が2機表示されているようだ

3.っていうかLogに「initialized.」が2回表示されているので、
初期処理からして2重起動されてる様子なんですが。

3分終了。
299 Name: 名称未設定 [sage] Date: 04/01/14 16:25 ID: Y0h86p7V Be:
>> 298

nibファイルをIBでリストで見るか、作り直すとわかるかも(GameViewが二つある)
300 Name: 294(283) [sage] Date: 04/01/14 16:56 ID: AqBIIh4g Be:
直ったぁぁぁぁぁっ!<会社で試すな

my = [ [ MyObject alloc ] init ];
でいいのか……。
MyObject *my=[ [ MyObject alloc ] init ];
とかやって混乱してました。
さらにIB慣れてないせいでGameViewが二つあるお馬鹿な状態を
放置してたみたいです。
二日悩み通した部分を3分でデバがれるとは。。みんなありがとう。

追伸:300げと
301 Name: 289 [sage] Date: 04/01/14 21:44 ID: CWTWds0y Be:
>>290
違うみたい。インプットメソッド関連の模様。

どうしたもんかな。
カーソルキーのコードがマスクで取れなきゃ斜め入力もできない。
NSEventMaskFromTypeで調べてみるとカーソル
NS[Left,Right,Up,Down]ArrowFunctionKeyが
1,2,4,8返してるから、これらの入力を判定できればいいんだけど。
keyEventWithType周り調査中……。
302 Name: 名称未設定 [sage] Date: 04/01/14 22:27 ID: CWTWds0y Be:
おお、カーソル同時押し+滑らか移動の力技での処理方法発見。
ttp://www.stripe-net.jp/cocoa-jserv/servlet/main.bbs?page=6

とりあえず解決。タイマー使って切り刻んでるのね。先人達に感謝。
でも、もっとスマートな方法用意ないのかなぁと調査続行してみたり。
303 Name: 名称未設定 [] Date: 04/01/14 23:48 ID: xemtRx3r Be:
>>302
CarbonだけどGetKeys()で全部まとめて取得する方法もある。
304 Name: 名称未設定 [sage] Date: 04/01/15 00:04 ID: jZQr91IM Be:
いろいろソース公開されてるプログラム漁ってたんですが、、
丁度carbonでgetKeys()ってのばっかりヒットしてました。
carbonのAPIってcocoaベースのプログラムから引っ張れるのかとか
さっぱりわかってないんですが、そんな方面を調べてます。

……もう日付変わっちゃったのか。
続きは明日にします。おやすみなさいー。
305 Name: 名称未設定 [sage] Date: 04/01/15 00:36 ID: ierzULNA Be:
>>304
NSResponderのkeyUp:を使えるのでは。

keyDown:が発生したらそのキーを押されたものとして登録する。
keyUp:が発生したらそのキーが離されたとして登録から削除。
ゲームループではこのキーが登録されているかどうかで入力の判定を行う。

こんな感じていけると思った。

ちなみにOSX版のQuakeもイベントハンドリングにCocoa使ってたと記憶している。
http://www.fruitz-of-dojo.de/php/download.php4?dlnr=2
306 Name: 名称未設定 [sage] Date: 04/01/15 01:05 ID: jZQr91IM Be:
なんか寝ようと思った矢先にそれなりに動くようになりました。>>305さんthx!
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040114.zip

まだちょっと引っかかりますね。まぁ初cocoaって事で勘弁してあげます。
あとは弾とか出るようにしてキャラ絵差し替えてオブジェクトの抽象化みたいな事
やろうとして挫折しながらcocoaはやっぱりの管理人にお礼述べつつゲームに
なるように作りこんでみたいと思います。

ほんとcocoaベースのゲームのソースって無いですね。
誰かの参考になるように今後もうp続けて行きたいと思うます。
おやますなさい。
307 Name: 名称未設定 [sage] Date: 04/01/15 01:06 ID: jZQr91IM Be:
指定するファイル名間違ったのでうpしたファイル名慌てて直したなんて
そんな事違うですよ?
308 Name: 名称未設定 [sage] Date: 04/01/15 13:21 ID: 1mfjuYMn Be:
モテモテ王国みたいな日本語だな
309 Name: 名称未設定 [sage] Date: 04/01/15 23:35 ID: jZQr91IM Be:
デリゲートって難しい……。
BGMをループさせたいんですが、そういうAPIが見つからなかったんで
「sound:didFinishPlaying:をサウンドオブジェクトからデリゲートされている
 クラスに書」きたいのですが(引用:ttp://www.oomori.com/cocoafw/ApplicationKit/NSSound/sound.html
慌てて萩原本の該当項目読んでもさっぱりわからんです。

定期的に
if([soundBGM isPlaying]==NO)
{
  [soundBGM play];
}
やったら案の定、終わってから再生までが微妙に開くし……。
(一応サウンドファイル自体はしっかりループするように設定してます。
 以前アプレットで綺麗にループできてた素材なので。)

BGMループさせるのってどうしたらいいでしょうか。。
デリゲート使うのが正解な気がするので勉強中ですが、見当違いな事
やってるんじゃないかという恐れもあるので。
310 Name: 名称未設定 [sage] Date: 04/01/16 00:06 ID: 19CmJ0Kq Be:
あ、あれ?Xcode1.1ってObjective C++じゃないの?

for(int i=0;i<100;i++){}
がエラーになるんですよ。
{
int i;
for(i=0;i<100;i++){}
}
は通るのに。

C++だけど変数宣言はC同様ブロックの先頭のみしかダメなのかな。
311 Name: 名称未設定 [sage] Date: 04/01/16 00:33 ID: Rs0aPOyO Be:
Objective-CであってObjective-C++ではないと思う。
312 Name: 名称未設定 [sage] Date: 04/01/16 00:34 ID: maNoGEkL Be:
>>309
このスレか前スレに全く同じ話が出ている。
313 Name: 名称未設定 [sage] Date: 04/01/16 00:49 ID: 19CmJ0Kq Be:
>>312
すんませんっ、過去ログ以前に斜め読みしただけですっかり抜けてました。
>>85-86ですね。失礼しました。
でもデリゲートは必要な訳ですね。理解しとかんと……。明日チャレンジしてみます。

たいした変わってない今日の分(てかcocoaはやっぱりのサンプル参照しながら
元通り敵出すようにしただけ+BGMの似非ループ..;)
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040115.zip
314 Name: 名称未設定 [sage] Date: 04/01/16 00:52 ID: 19CmJ0Kq Be:
>>311
ぐぐると拡張子が.Mまたは.mmの場合にObjective-C++になるみたいですね。
明日拡張子変えて試してみようと思います。

やべ、寝ないと明日も会社遅刻しちまう<ダメ人間
おやすまなさい。
315 Name: 名称未設定 [sage] Date: 04/01/16 10:41 ID: 4PskyYod Be:
>>311
OSX 10.0.xまでのProject BuilderにはObjective-C++無かったけど、サポート済み。
>>314
えっと、Xcodeの設定だと
プロジェクト > 情報を見る > GNU C/C++ Compiler > Language > Compile Sources As
が According to File Suffix (ソースファイルの拡張子を見て判断する)
になっているはずなので、固定したいのなら変更することも可能。
316 Name: 名称未設定 [sage] Date: 04/01/16 11:06 ID: 9vxspmze Be:
モアII自体には対応してるんだから大丈夫じゃないかな。
リン糞がモアII24M→40Mにアップした事に気づいてないんでしょw

NTT接続をISP経由する場合、申込みとかブリッジしてるだけのはず。
317 Name: 316 [sage] Date: 04/01/16 11:08 ID: 9vxspmze Be:
誤爆ですスマソ
318 Name: 名称未設定 [sage] Date: 04/01/16 11:28 ID: 9vxspmze Be:
誤爆ついでに>>313をビルドしてみたよ。意外と快適に動ててビックリ。G4-450Dual。
以前どっかで見かけたアメさんのCocoaなシューティングは何だったのかな・・・・。
なんかマウスで動かして操作性悪い上に糞重い奴。
あれ見て、Cocoaでゲームに挑戦するのは難しいという先入観に繋がってた。
俺も何か作ろうかな。Cしか知らんけど。
319 Name: 名称未設定 [sage] Date: 04/01/16 13:37 ID: B5r9s7QE Be:
>>310,314
コンパイラに-std=c99与えたら多分通ると思うけど。
C99からそういうやつもサポートされてるから。HMDTでも似たような話を見た気がする。
間違ってたらごめん。
320 Name: 名称未設定 [sage] Date: 04/01/17 04:07 ID: MjTSupXq Be:
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040115.zip
今日やったこと:
・IBでカスタムクラスにアウトレット作る方法探すのに手間取ってみた
・怒られる前に画像リソースを書き起こした。急にヘボくなっちった……。
 PNG32そのまま使えるってのはいいですねぇ。
・拡張子を.mmにしてObjective-C++にしてみた
 >>311,319 拡張子変えると>>310の前者で通りました。
 なんか警告でてるけど……。
・ゲームの状態遷移の管理方法を仮実装。
 無茶苦茶頭悪い事してる気がする。
・デザインパターンの本買ってきた。
 買ってきただけ。

明日やりたい事:
・デリゲート使ったサウンドループ処理をがんばる
・弾と当たり判定まで行けたらいいなぁ
・設計見直さないとまずいのが良く解るこのぐちゃぐちゃなソースを
 どうにかするのは一旦ゲームとして仕上がってからにしようと思ってたり

>>318
以前Windows+HSPでゲーム作ってたんですが、
それよりは処理速い感じがしますけど、けっこう一杯一杯です。
ゲーム用途で高速化しようと思ったらOpenGLしか無いのかな……?

ふわぁ。道は長い。
お休みなさい。
321 Name: 名称未設定 [sage] Date: 04/01/17 04:10 ID: MjTSupXq Be:
リンク間違えました。
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040116.zip

まぁ、大した進んでないし自戒のためのupに過ぎませんが。
322 Name: 名称未設定 [sage] Date: 04/01/17 05:36 ID: 7H6Zg2az Be:
>>321
最近Cocoa&ObjectiveC勉強し始めたんですが、自分はプログラム覚えるには、まず本を読むより、
他人が書いたソース読むほうが早いと思っているので、大変参考になります。
323 Name: 名称未設定 [sage] Date: 04/01/17 09:33 ID: Wz126HXH Be:
>320
ガンガレー!
324 Name: 名称未設定 [sage] Date: 04/01/17 10:06 ID: KJYu20Ae Be:
>>321

ループするBGMはNSMovieViewをウインドウに貼りつけて、
NSQTMovieLoopingPlaybackモードで再生してやる方が良いかと。
これなら音量調整なんかも簡単ですし。
325 Name: 319 [sage] Date: 04/01/17 11:28 ID: kHZIIsqO Be:
>>320
Xcode1.1でそのままコンパイルしてみました。
多分.mmにしたせいで、C++関係の警告が出てると思います。いまいちC++のことは
分かってないけど……"initialization to 'int' from 'float'"とか出てるので型のキャスト関係の
警告が出てると。C++ってその辺きついんだったけ?

IBMからコンパイラが出たねぇ。Objective-Cにも対応してるらしいからこれから出てくる
Cocoaアプリが楽しみ。多分高いんだろうなぁ。
326 Name: 名称未設定 [sage] Date: 04/01/17 14:41 ID: c2MU4Kj8 Be:
>320
とりあえず1点だけ。
初期化時以外に initWithArea: を呼んでますがこれはよくないです。
setArea: を作ってやるのが良いでしょう。
initWithArea: の時もself に対して setArea: を呼べばいいだけです。

やっぱりもう一点(w
共通部分は可能な限りスーパークラスに持たせましょう。
-(void)setArea:(NSRect)area {} // 何もしない 必要ならサブクラスがオーバーライド
-(id)initWithArea:(NSRect)area
{
if( (self=[self init]) ) { // super じゃなく self
[self setArea:area];
}
return self;
}
をスーパークラスが実装していたとすると...
って言うのもありです。

>325さんのキャストの警告回避はC++的には
static_cast<int>(val)
ですね。(int)val より安全になりますしね。

ガンガッテ!
327 Name: 名称未設定 [sage] Date: 04/01/17 14:41 ID: 1T0oGNMe Be:
Cocoa+Javaはどうなの?
328 Name: 名称未設定 [sage] Date: 04/01/17 17:43 ID: MjTSupXq Be:
>>325
参考になります。とりあえず警告取れました。
C/C++も合わせて勉強中なので実のところ良く解ってないですが。

>>326
参考になります。設計手直ししてみてます。
共通部分統合してソースがまとまっていくのは楽しいですねえ。
実装は泥沼化してますがw、勉強しつつ頑張ります。

>>327
要はcocoaへのアクセス方法が提供されてるJavaです。
XcodeではJavaのインストラクションは自動補完が効かないです。
利点は手馴れたJavaのAPIも一緒に使える点ですかね。
Cocoaでやるより多少遅い、起動に時間がかかるというデメリットが
あるみたいなのですよ。
たまにJavaのブリッジ部分にバグあると言う方を見かけるのが気になったり。

pure JavaのインターフェイスがInterfaceBuilderで作れたら
面白いのになあ。Java1.5の正式版が出てきたら再挑戦してみようかな。
329 Name: 名称未設定 [sage] Date: 04/01/17 19:26 ID: MjTSupXq Be:
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040117.zip

やったこと
・オブジェクトの設計ちょっと見直し
・敵と自分の弾を出す処理
・当たり判定用の空実装
・訳もわからずながらとりあえずビルド警告対処

今晩以降時間取れれば
・当たり判定を処理してみたい
・動く奴らの処理をオブジェクト指向で纏めたいなあ
・ループ処理に>>324さんの手法を試してみたい
・敵の弾を自機に向かわせたい

>>322
ゲームの参考になるソースが少ないですよね。
他の方の参考になると嬉しいです。まだまだソース汚いですが、
OOならではの設計勉強しつつやるつもりなので気長に見守ってやってくださいw
アルゴリズムの多くが「cocoaはやっぱり」のwebにあったサンプルそのままなんで、
そちらを参考に書き起こしてみるのもありかも。

さて敵の弾を自分に向かわせるには、と。
設計以前に三角関数ってなんだっけという数学レベルにて脳みそ沸騰中です。
330 Name: 名称未設定 [sage] Date: 04/01/17 20:52 ID: meJW1K+H Be:
309のリンク先のコードをちょっとだけ変更
@interface Loop : NSObject {
int doLoop;
}
@end

@implementation Loop
-(void)setLoop: (BOOL) flag {
doLoop = flag;
}

-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool
{
NSLog(@"didFinishPlaying");
if (aBool && doLoop) {
[sound play];
}
}
@end

これでループはするよ。mp3の20秒ぐらいのファイルではできなかったけど、aiffならできた。(MacOS X 10.3.2+xcode 1.1)
mp3でちょっとだけ次のループ時に途切れる。音量コントロールもできないし。
331 Name: 名称未設定 [sage] Date: 04/01/18 01:36 ID: 720HBp/P Be:
stray "\201"ってなんだ……。
日本語で書いたコメントがパースエラー起こしたりして偉い面倒なことに……。
332 Name: 名称未設定 [sage] Date: 04/01/18 04:51 ID: 720HBp/P Be:
だんだんゲームらしくなってきたので実行バイナリ単体も晒してみるテスト。
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040117-2-app.zip

ソース(というかこれまで通りプロジェクト丸ごと)
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040117-2.zip

やった事:
・音増やした。
・当たり判定実装(なんかちょっとズれを感じたり)
・敵倒せるように。また、自分に弾や敵が当たったら音が出るように(死にません)。

BASIC言語でやってる感覚で処理増設しまくったので、
コードが相当汚くなってます。しかも随分重くなってきた悪寒。

今後やりたい事:
スコア表示、レベルアップ、ゲームオーバー、ボスの実装とかいろいろありますが、
その前に、既にいろいろタコなコーディングが積み重なり過ぎてる気もするので
整理+効率化+オブジェクト指向的な設計見直し、に時間使おうかと思います。
あとうまく実装できてない「きれいなサウンドループ」も処理せんと……。
いいかげん萩原本読破してきます。

その他懸案:
・当たり判定がちょっとヘンな気がする。
・そういやキー入力周りもカクついてるまま放置してるなぁ。
・動く奴らの処理を動的結合とやらで纏めたい。。

>>330
スマソ、そもそもデリゲートされてるクラス云々が良く解ってないので
実装できずでした。
333 Name: 名称未設定 [sage] Date: 04/01/18 08:27 ID: 7DKBKJiE Be:
アプされてるプロジェクトで
NSSound を使う方法と NSMovieView を使う方法の両方について
BGM をループさせる実験をしてみたけど、
どちらも微妙に切れ目ができる。
サウンドファイルを QuickTime Player でループ再生する時は切れ目はできないので、
実装上の問題という気はするが。
334 Name: 319 [sage] Date: 04/01/18 14:06 ID: mr4QBO2Z Be:
>>328,329,331,332
ガンガレ~。C++はちょこっとかじっただけで自分も勉強中の身でございます。
C++に限らず中途半端もんだけど……Cocoaも最近さわってないし。
日本語のドキュメントがもっと増えてくれるとありがたいけど。
335 Name: 名称未設定 [sage] Date: 04/01/18 22:54 ID: 720HBp/P Be:
ぬう……。
NSObjectのサブクラスにはNSImageやNSSoundは入れられないのでしょうか。
スプライトクラスっぽいの実装しようとして、charactorオブジェクトにNSImageを
含めたいのですが、Application Kitの持つクラスは無理なのかな。
エラー
"error:statically allocated instance of Objective-C class 'NSImage'"
に従って
static NSImage charactorImage ;とかやったんですがパースエラー。

タスケテー
336 Name: 名称未設定 [sage] Date: 04/01/18 22:59 ID: 720HBp/P Be:
あ、ポインタ渡せばいいんだっけか。
失礼、もうちょい調査続行しまつ
337 Name: 名称未設定 [sage] Date: 04/01/18 23:26 ID: 720HBp/P Be:
なんとかなりました。
あー、ポインタこんがらがる……。
338 Name: 名称未設定 [sage] Date: 04/01/19 02:10 ID: wjqdB2oH Be:
ビルドしても見た目は何も変わってません。多分。
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040118_2.zip
やった事:リファクタリングみたいなこと(詳細はソース)

コード量減らねぇなぁ。微妙に減ったけどその分コメント増えてもうた。。
339 Name: 名称未設定 [sage] Date: 04/01/19 02:25 ID: bQc/FKYh Be:
質問なのですが
10.2から10.3にアプグレし、
10.2上で作成したプロジェクトを10.3上でXcodeで開いて見るだけして(保存は無し)、
PBで再びビルドした所
warning: Precomp'/System/Library/Cocoa.framework/Headers/Cocoa.P'version number is 15 instead of 25,ignoring precomp
の様な他類似のエラーが出、ビルド出来なくなったのですが
これは10.3になってフレームワークの位置や仕様が変わったという事なのでしょうか?
プロジェクトを開くと同じウインドウが2枚開いたりと動作自体もおかしいのですが。
対処法が全く判らず、大凡でも原因を推察出来る方が居ればアドバイスをお願い出来ないでしょうか?
340 Name: 名称未設定 [sage] Date: 04/01/19 11:41 ID: paq8ix2A Be:
>>338
そろそろ「Cocoaでシューティングゲーム作るよ!」
みたいな別スレにした方がいいかと。
341 Name: 338 [sage] Date: 04/01/19 13:02 ID: wjqdB2oH Be:
>>339
わからんですが、Xcodeは1.1にうpってますか?
開いて見るだけでもビルド関連のファイルを書き換えられると思うので、
buildフォルダを一旦消してからPBで開きなおしてみては。

>>340
そうですね。まぁ新スレ立てて盛り上げる自信も無いので、
製作記録をweb化しといてマ板かム板あたりの様子をみて移動しようと思ってます。
始めはゲ製作技術の「macでゲームを作るスレ」に移動しようかと思ったのですが、
最近はHSPforMacの話題が中心みたいでちょっと様子見中。
どの道オブジェクト設計の勉強し直しに入ってくるのでしばらくupに至らないかも。
342 Name: 名称未設定 [sage] Date: 04/01/19 13:51 ID: 0UfvR443 Be:
>338
どうしても気になるので。

初期化メソッドで
-(id)init....
{
[super init];
...
return self;
}
てな感じでやってますが、危険極まりないので面倒でも
-(id)init
{
if((self=[super init])){
...
}
return self;
}
とやってください。

[super init] が nil を返した場合が考慮された無い。
この場合関係ないが、[super init] が self 以外のインスタンスを返した場合が考慮されてない。
(initメソッドが self 以外を返す場合、 self が release or autorelease されている可能性があります)
というのが問題があります。


ややこしい話になりますが、インスタンスメソッド内で使える self というものはあくまで
メッセージ送信の送信対象のインスタンスであって [super init] によって上書きされることはありません。
単なる引数と同列のものです。
343 Name: 名称未設定 [sage] Date: 04/01/19 15:15 ID: wjqdB2oH Be:
おお、なるほど。if文の中で初期化とエラー評価を一緒にやっちゃう訳ですね。
参考になります。thx!
344 Name: 名称未設定 [sage] Date: 04/01/19 15:50 ID: 0UfvR443 Be:
>343
問題点はそこじゃないです。。。
345 Name: 名称未設定 [sage] Date: 04/01/19 16:23 ID: wjqdB2oH Be:
>>344
ぎゃあ。

return selfが問題なのかな。。すみません、混乱してます。
NSObjectがinitでself以外 / nilを返す場面というのが
ちょっと解ってないですが、とりあえず鵜呑みでコード直しておきます。
346 Name: 339 [sage] Date: 04/01/19 17:07 ID: bQc/FKYh Be:
>>341
1.1にはうpってます。クリーニングも試し済みですが出来ませんでした。
PBとXcodeって互換性が無いものなのでしょうか?
347 Name: 名称未設定 [sage] Date: 04/01/19 18:14 ID: /d21CZzb Be:
サブクラスでオーバーライドされてない限り、NSObjectがinitでself以外を返すことはないよ。
348 Name: 名称未設定 [sage] Date: 04/01/19 19:01 ID: psjde0ej Be:
>>346
Foo.pbprojをxcodeで開こうとすると
>警告
“Foo.pbproj”は、古いバージョンの Xcode で保存されています。
このバージョンで開くと、プロジェクトは更新され、
古いバージョンの Xcode では読み込めなくなる場合があります。
このプロジェクトを開きますか?
開かない/開く

のダイアログがでるのだが?
ちなみに、xcodeで新規プロジェクトを作ると、プロジェクトファイルは
Foo.xcodeになる。
349 Name: 名称未設定 [sage] Date: 04/01/19 21:18 ID: wjqdB2oH Be:
はう……今日挑戦した大掛かりな設計変更、全部うまく行かずボツテイク。
スプライトクラスのメソッド自体に画像書かせるのも、
キャラクタ配列一つに集約してEnumeratorで一発処理させるのも、
配列オブジェクトの要素削除・生成でキャラクタの存在を管理するのも、
ことごとく失敗。ザコですか俺。

なんでクラスメソッド作れないんだよう。
エラー294個ってなんだよう。

無理に進めるとBASICでやってた時より効率悪くなりそうなんで、
萩原本のサンプルソース全部手打ちしてObjCの理解度上げてきます。
その間ソースのうpしばらく休止ます。。
350 Name: 名称未設定 [sage] Date: 04/01/19 21:54 ID: EJ8LOhqN Be:
オイラCをかじったことある程度なんですが
ちょっと大きめのモノを設計するのにも
やはりフローチャート使うんでつか?
それとも今は違う設計図?手法みたいのあるもんなんでそか
オブジェクト指向とかだとクラスとかあって
最初にちゃんとしとかないと大変そう
351 Name: 名称未設定 [sage] Date: 04/01/19 22:16 ID: 82Lm3Mro Be:
>350
UMLを調べると幸せになれる可能性あり。

#ObjCでCASEツール作ろうとして挫折したのは気のせいだと思う。
352 Name: 名称未設定 [sage] Date: 04/01/20 17:38 ID: whftl9Pn Be:
>>349
頑張れ、負けるな。
概念の理解っつーオブジェクト指向の最初の壁は突破しとるんだ。
デザインパターン勉強しながら、いったんゲーム離れてツールでも
作ると良いんじゃないかな。
逃げなければ、いつか閃くように書けるようになるさ。
353 Name: 名称未設定 [sage] Date: 04/01/20 23:34 ID: B8Ie+ifw Be:
>>349
>エラー294個
括弧の閉じ忘れとか、余ってるとか、#import <Foundation/Foundation.h>してねーからかも
354 Name: 353 [sage] Date: 04/01/21 14:35 ID: F8agScia Be:
訂正
AppKit.h内でFoundation.hもimportされてる。スマソ。
355 Name: 名称未設定 [sage] Date: 04/01/21 14:58 ID: CQqeGqyI Be:
>>338をビルドしてみた。
Cocoaの描画って重たいねえ。NSImageじゃなくて、
もっと軽い描画用APIは無いのかな?
NSBitmapImageRepクラスの使い方調べてみるか。
ていうかRepってなんだ?
356 Name: 名称未設定 [sage] Date: 04/01/21 15:15 ID: PKUhasqN Be:
>355
常に全画面描画し続けてるからでつ。
キャラクター移動時に元の領域の再描画、移動後のキャラクターの描画だけにすれば相当早くなるとおもいまつ。
初心者の人且つ作り始めなので最適化までは相当時間がかかると重いまつ。

こういう風に情報小出しにしつつマターリと見守ってあげましょう。


> ていうかRepってなんだ?
たぶんレプレゼントのことだと思う。
357 Name: 名称未設定 [sage] Date: 04/01/21 18:09 ID: AKDnGqt7 Be:
まぁ、いきなりOpenGLってわけにもいかんだろうし。
358 Name: 名称未設定 [sage] Date: 04/01/21 21:28 ID: /tRK54sC Be:
そんな貴方にGLUT。
Cocoaとは無関係になっちゃうのが諸刃の刃。
だが素人にもお勧め。(以下ry
359 Name: 名称未設定 [sage] Date: 04/01/21 21:52 ID: stWy2358 Be:
OpenGL使って2次元描画するサンプルがめっからなかった訳ですが。
3次元やるにしても、最低限どんだけの数学知識が必要なんだろうと
思うと腰引けまくり。
やっぱDirectX相当の事するにはOpenGL叩くしかないんですよねぇ。うーむ。
……とりあえずのらくらとgoogleでサンプル漁ろw
360 Name: 名称未設定 [sage] Date: 04/01/22 00:20 ID: jTSmm8y8 Be:
ベクトルと行列演算、三角関数は最低限押さえる必要があるかな。
あんまり書きすぎるとスレ違いなのでこの辺で。
361 Name: 名称未設定 [sage] Date: 04/01/22 00:21 ID: txoRB2gG Be:
ビルドできる状態に戻せたのでうp。対処できない警告が残ってますが。。
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040121.zip

大して変わってないけど、まぁのらくら勉強しつつやってます。
むしろこのままボス実装しちゃって完成した事にして
初めから仕切り直そうかと思ってたりして。
初心者なりに設計が滅茶苦茶になっちまってるように思える物で。。
362 Name: 名称未設定 [sage] Date: 04/01/22 00:31 ID: txoRB2gG Be:
>>360
レスthxです。今のうちに三角関数慣れとけば頑張れそうかも。
ム板で参考になりそうなスレ見つけたのでROMっときます。

>>356その他皆様
ヲチthxです(w。今後とも宜しくでつ。
今のとこ描画性能の最適化より設計手法の勉強中心に考えてたりしますが、
実装が安定したり行き詰まった時とかにいろいろ試してみます。
363 Name: 名称未設定 [sage] Date: 04/01/22 09:33 ID: iANi0DJK Be:
>>361
メソッドの名前が違うよ~。
-makeObjectsPerformじゃなくて-makeObjectsPerformSelector。

メソッド名調べるときはCocoaBrowserかDocoaBrowserを使うと楽。
364 Name: 名称未設定 [sage] Date: 04/01/22 14:28 ID: lqxefQR1 Be:
>>361
弾幕がいい感じ。
でもやっぱり軽くして欲しい。
365 Name: 名称未設定 [sage] Date: 04/01/22 17:54 ID: lqxefQR1 Be:
ageていいスレだと思うんだが、sage進行なのは何か理由が?
366 Name: 名称未設定 [sage] Date: 04/01/22 18:10 ID: TZVMHa5o Be:
良スレはsage進行。これ常識。
367 Name: 名称未設定 [sage] Date: 04/01/22 18:41 ID: lqxefQR1 Be:
そんなもんか。了解。
368 Name: 名称未設定 [sage] Date: 04/01/23 01:15 ID: bCjcoKh4 Be:
質問です。
Interface Builder でボタンの key equivalent を Return に設定したんですが、
ビルドして、リターンキーを押してみてもうまく機能しません。(クリックすると
ちゃんと機能する)ウィンドウ上でちゃんとデフォルトボタンとして点滅している
ので、key equivalent 自体はちゃんと設定されていると思うのですが、どうして
アクションが呼び出されないのでしょうか? 何か他に設定する必要があるの
でしょうか?

こちらの開発環境は Mac OS X 10.2.8 に Developer Tools 2002 December
です。
369 Name: 名称未設定 [] Date: 04/01/23 03:30 ID: bCjcoKh4 Be:
質問age
370 Name: 名称未設定 [sage] Date: 04/01/23 03:57 ID: OmsfogHg Be:
ボタンを貼付けてある Window が Key Window になっていないとか。
371 Name: 368 [sage] Date: 04/01/23 05:44 ID: 6zACGKIO Be:
ウィンドウ1つしかないアプリなんで勝手に key window になっている
はずなんですが… それに、問題のボタンの隣には command + delete を
key equivalent として割り当ててあるボタンがあるんですけど、こっちは
うまくいってるんです。あ~、何が問題なのやら…
372 Name: 名称未設定 [sage] Date: 04/01/23 08:20 ID: 0wAErvEB Be:
firstResponder関係? とか思いつくままカキコ
373 Name: 名称未設定 [sage] Date: 04/01/23 10:58 ID: IKcg+XTU Be:
>>371
隣のボタンとキー設定を入れ替えたらどうなる?
374 Name: 368 [sage] Date: 04/01/23 16:15 ID: 8t1l2e8x Be:
>>371
問題のボタンは割り当てた key equivalent に反応しましたが、
今度は Return を割りあてた隣がダメになりました。
どうやら Return だけ、どのボタンに割り当ててもうまくいかないみたいです。
プログラム以外のところに問題があるのでしょうか? キーボード回りとか…
375 Name: 368 [sage] Date: 04/01/23 16:16 ID: 8t1l2e8x Be:
>>373 です。スマソ
376 Name: 368 [sage] Date: 04/01/23 16:40 ID: 8t1l2e8x Be:
テスト用にもう一つプロジェクト作ってやってみたらデフォルト
ボタンがちゃんと機能した。Interface Builder 上でのテストでも
Return に反応してちょっとボタンが点滅しているのがわかる。
もしかして、nib ファイルのバージョンかなんかが問題なのか。
ちょっと古いプロジェクトから nib ファイルだけもってきたのが
いけなかったのか?
377 Name: 368 [sage] Date: 04/01/23 17:34 ID: jGHWzLEs Be:
自レス続きスマソ
372 のいうことがずばり正解とですた。
同じウィンドウに TextView があるんですが、こいつのせいでした。
結果を表示させるだけの editable じゃないやつなので、とりあえず
ウィンドウの initialFirstResponder を問題のボタンに設定したら
うまくいきました。
378 Name: 名称未設定 [sage] Date: 04/01/23 18:59 ID: whqfOPtm Be:
なるほど。
クイズみたいでおもろい。
379 Name: 372 [sage] Date: 04/01/23 20:14 ID: pRjSSbjn Be:
ヤター。
なんかくれ。そうだなぁ、CocoaのAPI完全和訳キボンヌ
380 Name: 368 [sage] Date: 04/01/23 20:55 ID: jGHWzLEs Be:
でも、ボタンを first responder にするとアクティブなテキストフィールドを
囲む青い枠でボタンが囲まれちゃってなんか変です。点滅はしとるは青い枠で
囲まれとるわで、注意を引きまくりの存在感ありまくりです。

どっかで keyDown: を横取りしてそっからボタンに performKeyEquivalent:
でも送るように手を加えようと思います。
381 Name: 名称未設定 [sage] Date: 04/01/23 21:07 ID: eIHUALhM Be:
>CocoaのAPI完全和訳
俺にもくれ!!
382 Name: 名称未設定 [sage] Date: 04/01/23 23:40 ID: 0wAErvEB Be:
NSTextFieldにアウトレット繋いだビューからsetIntValueしても値が変わらないぃぃ
警告も出ないー 検討つかねぇぇぇ なんでやー うがー
なんかInterfaceBuilderの習得に一番時間掛かってる悪寒
383 Name: 名称未設定 [sage] Date: 04/01/24 00:31 ID: zppD3UjF Be:
>NSTextFieldにアウトレット繋いだビュー
て具体的に何ですか? カスタムビュー?
アウトレットって普通コントローラと接続しませんか?
384 Name: 名称未設定 [sage] Date: 04/01/24 00:39 ID: G4EobbF7 Be:
あれ、そうなんですか?
えーと。

MVCっての調べなおしてきます。ども。
385 Name: 名称未設定 [sage] Date: 04/01/24 01:45 ID: G4EobbF7 Be:
あ、でけた。アウトレット名間違えてただけか……。

ゲームのスコアを表示する部品配置して、ゲームのメインループ担当してる
カスタムビューから内容書き換えたかっただけですた。お騒がせしてスミマセン
386 Name: 名称未設定 [sage] Date: 04/01/24 02:56 ID: G4EobbF7 Be:
結構ゲームになってきた感じでする。
重いのでとりあえず画面サイズ半分にしました。

アプリケーション
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040124-app.zip
プロジェクト+ソース
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040124.zip

ゲームの状態遷移の基本的な部分ができました。
時間レベルアップ方式のヒットポイント制です。
操作性の悪さが改善されてないのでレベル10以上いける人は稀だと思います。
だいぶスパゲッティ化してきてます。。
土日はボスキャラ描きつつゆっくり設計見直します。
387 Name: 名称未設定 [sage] Date: 04/01/24 02:57 ID: G4EobbF7 Be:
あ、忘れてた。pキーでポーズできます。
388 Name: 368 [sage] Date: 04/01/24 05:34 ID: Thvaxg1i Be:
結局、NSTextView にカテゴリをあてて対応しました。
ボタンに key equivalent として Return を設定しても機能しないのは
多分、TextView が keyDown: を受け取った際、単に Return だけが
押されていた場合は、テキストの編集に関するものと受け取ってその
イベントをそこでトラップしてしまうため。そこで、下のカテゴリで
keyDown; を単に次のレスポンダへパスするようにしたところ、問題の
ボタンも正常に key equivalent に反応するようになりました。

@interface NSTextView (PassKeyDown)

- (void)keyDown:(NSEvent *)theEvent;

@end

@implementation NSTextView (PassKeyDown)

- (void)keyDown:(NSEvent *)theEvent
{
// 次のレスポンダへイベントをパス
[[self nextResponder] keyDown:theEvent];
}

@end

こういう場合、サブクラスにするべきなんでしょうけど、
そこはめんどくさかったということでひとつ……
389 Name: 名称未設定 [sage] Date: 04/01/24 13:32 ID: G4EobbF7 Be:
ほっとくと実メモリが増えて行くぅぅ……。

ObjectAllocツールの見方を調査中
390 Name: 名称未設定 [sage] Date: 04/01/24 20:48 ID: DwJWs0ij Be:
>>389
それはひょっとして自前のループの中でがんがん一時オブジェクト(生成時に
autorelease されてるやつ)を生成してるんじゃ……

アプリのメインイベントループの終端までいかないと AppKit が用意している
autorelease pool が解放されないんで、一時オブジェクトがそのままメモリ上に
残ってしまっているのでは?

そういう場合は自前で autorelease pool を用意して、ループのブロックを

{
 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 // ループ内の処理
 [pool release];
}

とかすると幸せになれるかも。
その辺のことがわかってる人だったらゴメソ
391 Name: 名称未設定 [sage] Date: 04/01/24 22:12 ID: G4EobbF7 Be:
>>390
ども。萩原本持ってるんで概念は一読してるんですが、
理解が及んでない感じで試しては落ち試しては落ちを繰り返してます。
けどこの辺は手前で格闘しとかんと身に付かない気もするし、
頑張ってみます。
392 Name: 390 [sage] Date: 04/01/25 15:26 ID: 3JLXGqzD Be:
落ちるということはおそらく解放後のオブジェクトを参照しているという
ことですよね。一時オブジェクトとして使い捨てるものと、それでは
都合が悪いものとの峻別ができていないのではないでしょうか?

どの言語でやるんでもメモリ管理はひとつの山場ですんで頑張って下さい。
393 Name: 名称未設定 [sage] Date: 04/01/25 17:47 ID: 3gQ2irti Be:
誰か俺に frame と bounds の違いをわかりやすく説明してくれ!
毎回混乱する。
394 Name: 名称未設定 [sage] Date: 04/01/25 17:57 ID: JMB3ghPg Be:
>>393
俺もまだ混乱している
395 Name: 名称未設定 [sage] Date: 04/01/25 21:14 ID: cjqmI/zc Be:
両方試して動いたほう採用
396 Name: 名称未設定 [sage] Date: 04/01/25 23:30 ID: 3gQ2irti Be:
>>395
その場はそれでしのげるかも知れんが、そういう不確実な部分を抱えている
というのは何だか不安じゃない? 絶対に自分以外は使わない、というなら
別だけど……
397 Name: 名称未設定 [sage] Date: 04/01/25 23:57 ID: ZL2sE12m Be:
>>393
>frame と bounds
ぐぐったら、はじめに出てきた(w
398 Name: 名称未設定 [sage] Date: 04/01/26 08:15 ID: DCijJ5i+ Be:
>>397
嘘こけ。俺がぐぐったらこいつがはじめに出てきたぞ。
ぱっと見ただけだけどビンゴじゃないこれ?

ttp://www013.upp.so-net.ne.jp/tanken/Expedition/expedition.html
399 Name: 名称未設定 [sage] Date: 04/01/26 19:26 ID: xrTB7N1c Be:
シューティングおもろい。レベル12以上無理。
けどマジでメモリ使用量増えていくな。
これ、やったら再起動すれば大丈夫?
すげー怖いぞゴルァ
400 Name: 名称未設定 [sage] Date: 04/01/26 22:24 ID: XL8K9yo4 Be:
>>399
OSまでメモリリークする事はないよ。見たけどそんなヤバいコードは無い。
単にdeallocの設定が「一切」行われていないのが原因。
配布レベルじゃないとは思うけど、勉強中って言ってるんだし多めに見てやれよ。
401 Name: 名称未設定 [sage] Date: 04/01/26 23:41 ID: jSr/RMM/ Be:

敵の出現、敵と自機の弾の生成で全部allocのみ。
dealloc release全然無いのね。毎ループ増殖しまくり。
これで動作するんだからOSXが偉いのか良くわからん(w
402 Name: 名称未設定 [sage] Date: 04/01/27 00:01 ID: 6h87jayV Be:
メモリ管理が全然なのにそこ迄動作を作れるてのも凄いな
403 Name: 名称未設定 [sage] Date: 04/01/27 08:40 ID: zs8LQa4l Be:
メモリ管理とかはアプリのデザインとは関係ない部分だからね
そんな部分に時間をかけずに済めば、それに越したことはない
404 Name: 名称未設定 [sage] Date: 04/01/27 09:06 ID: h3jQcBbM Be:
メモリリークしまくりはまずいっしょ。
405 Name: 名称未設定 [sage] Date: 04/01/27 10:29 ID: Bep3Wmx/ Be:
>404
メモリリークを潰すサンプルと考えればよい。
ゲームで遊ぶスレじゃないんでそこんとこ、よろ。

# サンプルとしては、設計があれだが。。。
# どうしても気になる場合はリファクタリングのサンプルとして。。。
406 Name: 名称未設定 [sage] Date: 04/01/27 10:52 ID: VJ3JBTTz Be:
OOP初心者の書き方だな。でも最初がC++でなくて良かったかもな。
変な設計のまま突き進んでる訳じゃないようだし、何度も設計変更
しまくれば経験値上がるだろうな。
ここからソースの整理、メモリリーク潰しの過程を晒してもらえると
価値が出てくるかもな。サンデーグラマーのようだし、まあ煽り気にせず
マターリ頑張ってな。
407 Name: 名称未設定 [sage] Date: 04/01/27 17:05 ID: MGa1+e7L Be:
>386のプロジェクトファイルを Xcode1.1で開くと
プロジェクトスタイルのGenerate Debug Symbols Onに変更しても
デバッグシンボルをONに出来ないんだけど。
PBからXcodeへの変換が不完全?

buildしても最初のタイトル画の表示部分でEXC_BAD_ACCESSで実行できないし。
408 Name: 名称未設定 [sage] Date: 04/01/27 22:37 ID: +4anYT/T Be:

NSProgressIndicatorとviewDidEndLiveResizeメソッドについて質問させてください。
下記のようにviewDidEndLiveResizeメソッド内でプログレスインジケータを回転(アニメーション)させるtestを呼んだところプログレスインジケータは回転しないのですが、回転しない理由と回転させる方法をご存知の方、教えていただきたくよろしくお願いします。

今のところ、viewDidEndLiveResize以外から呼ばれたtestはきちんと回転します。謎です。

-(void)viewDidEndLiveResize
{
[ self test];
}

-(void)test
{
[progressIndicator startAnimation: self]; //NSProgressIndicator
重く長い処理;
 [progressIndicator stopAnimation: self];
}
409 Name: 名称未設定 [sage] Date: 04/01/28 04:42 ID: S6/cfRFR Be:
とりあえず viewDidEndLiveResize が呼ばれているかどうか調べてみたら。
410 Name: 名称未設定 [sage] Date: 04/01/28 15:36 ID: cs72qT+8 Be:
質問です。
一部のアプリケーションは、バンドル名自体は TextEdit.app のように英語ですが、
Finder で表示される時には「テキストエディット」のように日本語で表示されます。
自作のアプリであれをやるにはプロジェクトにどういう設定が必要なんでしょうか?
411 Name: 名称未設定 [sage] Date: 04/01/28 16:25 ID: c9hS1mqZ Be:
Japanese.lproj/InfoPlist.strings

CFBundleName = "テキストエディット";/* This is for the localized "short" name in the app menu bar */
CFBundleDisplayName = "テキストエディット";/* This is for the localized "long" name in Finder, etc */

とか?
412 Name: 410 [sage] Date: 04/01/28 16:40 ID: cs72qT+8 Be:
>>411
nib ファイルのローカライズと同じ要領で InfoPlist.strings の日本語 variant を
作成して、CFBundleName と CFBundleDisplayName に日本語名を設定しておけば
いいっつーことですね。サンクス
413 Name: 408 [] Date: 04/01/28 20:34 ID: rZceWFIy Be:
>>409
さすがにそういうドチョンボはないです。
isDisplayedWhenStopped=NOなので、非動作時はそもそも画面に
表示されないので。

バックグランドではくるくる回転してるけど、
それがフォアグランドで表示されていないような感じなんだけど...
414 Name: 名称未設定 [sage] Date: 04/01/28 20:42 ID: S6/cfRFR Be:
重く長い処理の合間合間に
[progressIndicator display];
を噛ませてみたらどうだろうか。
415 Name: 名称未設定 [sage] Date: 04/01/28 20:55 ID: Vat3OCJF Be:
イベントループが回っていないんじゃ。
ビーチボールカーソルは出ていないのか?
416 Name: 名称未設定 [sage] Date: 04/01/28 21:29 ID: PsZYBmnr Be:
>>413

オーバーライドした viewDidEndLiveResize では必ず
[super viewDidEndLiveResize]
を呼べ。
ってドキュメントに書いてあるけど、これは関係ない?
417 Name: 408 [] Date: 04/01/28 23:31 ID: rZceWFIy Be:
>>414
いけそうな気がしたのですがダメでした。
助言していただき、ありがとうございます。

>>415
ビーチボールカーソルって虹色のやつですよね?
虹色カーソルは回っています。
ViewDidEndLiveResize以外のルーチンからtestが呼ばれたときも回っているので,
ViewDidEndLiveResize固有の事象ではないと思って放置していました。
関係あるのですかね?
ご指摘感謝します。

>>416
本件は全くのノーケアでした。
testを呼ぶ前に[super viewDidEndLiveResize];を挿入してみましたが、
状況は変わらず、プログレッシブインジケータは表示されるものの、
回ってはくれません。
この辺のドキュメントを読んでみます。

皆さんありがとうございました。
418 Name: 408 [sage] Date: 04/01/29 00:26 ID: jcEBM6FH Be:
追伸

inLiveResize == YESの時
progressIndicatorが回らないような気がしてきました。
NSProgressIndicatorソースコードって
Developerフォルダに入ってたりしますか?
419 Name: 名称未設定 [sage] Date: 04/01/29 06:45 ID: 3SBH02tM Be:
プロセスビュアーって無くなってしまったんでしょうか?
代わりになるのがアクティビティモニタって事なんでしょうか
420 Name: 名称未設定 [sage] Date: 04/01/29 15:02 ID: 0A15AA8W Be:
そうだよ
421 Name: 名称未設定 [sage] Date: 04/01/29 15:05 ID: xNGqNVqT Be:
質問です!
id型のオブジェクトにcompare:とかlengthとかのメッセージを送ると
multiple declarations for method 'compare'
という風に警告を受けてしまうのですが、これを回避する方法って無いでしょうか?
実質的に害はないのですが、なんだか気持ち悪いもので。
ちなみにオブジェクトの中身は動的に決まるのでキャストはできません。
422 Name: 名称未設定 [sage] Date: 04/01/29 16:22 ID: aRi9JbcT Be:
>>421
キャストしない限り警告される。
どうしても嫌ならisKindOfClass:で振り分けてキャストシル
423 Name: 名称未設定 [sage] Date: 04/01/29 22:56 ID: nu9ErRYD Be:
>>408
重たい処理を別スレッドで走らせる方法ですこれをやると虹色カーソルが出なくなると思います
これで解決するかどうかはわかりませんが前にNSThreadの話題が出てた事だし参考までに
-(void) viewDidEndLiveResize
{
[self indicatorStart];
}
- (void)threadTest:(id)obj
{
id pool = [[NSAutoreleasePool alloc] init];
重たい処理;
[obj indicatorStop];
[pool release];
}
- (void)indicatorStart
{
[thinkIndicator startAnimation:nil];
//aTargetはレシーバとなるオブジェクトanArgumentはメソッドへの引数
//よく分からん場合は両方ともselfで動かしてみて駄目な場合はNSThread関係のサンプルを色々参考にして下さいな
[NSThread detachNewThreadSelector:@selector(threadTest:)
toTarget:(id)aTarget withObject:(id)anArgument];
}
- (void)indicatorStop
{
[thinkIndicator stopAnimation:nil];
}
ちなみに私はこの重たい処理が下手すると一時間くらいになっちゃうプログラム書いてます。。。
424 Name: 名称未設定 [sage] Date: 04/01/30 10:02 ID: Qp26S7Bb Be:
あの、Xcode 使ってる人に聞きたいんですが、Xcode の補完機能ってクラス名や
メソッド名の補完だけですよね。Project Builder のエディタのプラグインである
ODCompletionDictionary のようなマクロを展開してくれる機能なんかはあるん
でしょうか? もしくは、そういうプラグインをサードパーティが提供することは
可能なんでしょうか?

マクロの辞書鍛えまくったんで、Panther にして IDE を Xcode に移行した後も、
なんとかしてこの辞書を使いたいんですが……
425 Name: 名称未設定 [sage] Date: 04/01/30 10:53 ID: 6+oMaqrr Be:
>424
マクロもenumもインスタンス変数もローカル変数も引数もC関数も補完します。
展開するとマクロの意味がないので展開はしません。

メソッド、関数は引数並びも補完し ctrl+/ で次の引数に移動できます。
これと ctrl+E での行末への移動を使うとかなり快適ですね。

引数を取るマクロは今のところ使ってないので引数並びを補完するかどうか知りません。
426 Name: 名称未設定 [sage] Date: 04/01/30 11:00 ID: eUsK3OHh Be:
>>408
重たい処理をしているあいだは回らないのは当然。並列してふたつの処理
(きみのコードとプログレスバーの処理)はできないから。
たしか、プログレスバーの描画を別スレッドで行うオプションがあったように
思うが、それは試した?
427 Name: 424 [sage] Date: 04/01/30 13:02 ID: ePJFZd3B Be:
>>425
マクロを展開するというのはプリプロセッサのことをいってるんではなくて、
例えば、init を

- (id)init
{
self = [super init];
if ( self ) {
_initialization_code_
}
return self;
}

に展開する。とかいうようなことです。
自分の場合、クラスやプロトコルの名前をまるごと一般的な実装例に展開するように
辞書に登録しているので、この辞書によるマクロ展開機能が使えないのは痛いなあ
と思っているわけでして……
428 Name: 424 [sage] Date: 04/01/30 13:08 ID: ePJFZd3B Be:
補足して言っておきますと、マクロの展開(といういい方がまずいのか)というのは
補完というよりはかな漢字変換みたいな機能のことです。ODCompletionDictionary
の場合、上の例なら init とタイプして escape キーを押すと、下のコードに置換
されます。念のため。
429 Name: 421 [sage] Date: 04/01/30 13:26 ID: 1WsMd5qb Be:
>>422
ありがとうございます。
そうなんですか。
せっかくの動的結合なのになんだかもったいないですね。


>>418
ウィンドウリサイズのイベントループの中ではインジケータは動かないってことなのかな?
viewDidEndLiveResizeもDidEndとはいってもイベントの中のはずなんで。
viewDidEndLiveResizeの中で直接呼ばないでNSTimerでもかませたらどうでしょう?
ウィンドウリサイズのイベントは終わらせて、別ループでインジケータを走らせるって感じで。

>>426
インジケータのアニメは何もしなくても別スレッドで動いてるもんだと思ってましたが違います?
>>408ではviewDidEndLiveResize以外ではちゃんと回るっていってるし。
430 Name: 名称未設定 [] Date: 04/01/30 14:40 ID: fwGz9LSp Be:
>> 424
そういうのは「略称展開」とか abbreviation expand とか言うんんじゃないの?
xcodeの標準の機能にはないようだけど、AppleScript書いて代用してみるとか、
ことえりに登録するとかかなぁ。

コード書きに専念するならxcodeは使いにくいので、emacs使ってるよ。
で略称展開の必要感じたら abbrev に登録する。
あんましxcode一本だけにこだわらないほうが幸せになれるんじゃないかな。
431 Name: 424 [sage] Date: 04/01/30 15:18 ID: ePJFZd3B Be:
emacs か…… よく聞くけど使ってみたことないなあ。
前から気になってはいたんで、ちょっと触ってみようかなあ。
でも、Terminal から起動できるものやら X11 上で動くもの、今ちょっと調べて知ったん
だけど、Carbon 版なんてのもあるね。430 さんはどれ使ってんですか?

でも emacs って CUI ベースのエディタですよね。俺、マウスないとなんか不安(笑)
使いこなせればそっちの方が速いとは聞きますけどね。
432 Name: 430 [sage] Date: 04/01/30 15:34 ID: fwGz9LSp Be:
情報が多いのでCarbon版を愛用してるよ。
マウスも*ある程度*は使えるけど、直に使わなくなるでしょう。
一ヶ月辛抱して使ってみそ。

433 Name: 424 [sage] Date: 04/01/30 16:00 ID: ePJFZd3B Be:
ダブルクリックで起動できて Aqua なウィンドウの Carbon 版 emacs なら
比較的すんなり入っていけそう。とはいえ、各種設定やカスタマイズやら、
手になじむような環境を実現するには emacs lisp が必須…… ってわけで、
Web で情報を収集してきまつ。430 さんありがとう。
434 Name: 名称未設定 [sage] Date: 04/01/31 02:23 ID: rd8JfP4A Be:
コレクションクラスについて教えてくダサい
NSArrayとNSDictionaryは分かるんですけど、NSSetとCFBug(NSBagってのはないな)
っていうのはどんな構成で値を保持するもんなんでしょうか?
435 Name: 名称未設定 [sage] Date: 04/01/31 02:25 ID: rd8JfP4A Be:
あ、CFBug -> CFBag ですね
436 Name: 名称未設定 [] Date: 04/01/31 09:39 ID: uABf0LSX Be:
しばらくwindows環境でVBを使ってプログラミングしました。
macに乗り換えたのですが、isightを使ったアプリケーションを
趣味で開発してみたいと思い始めました。

そこで質問なのですが、isightの制御するのにはQuickTimeAPIなど
を扱うようですが、RealBasicとCodeWarrirorそれに10.3に付属して
いたDeveloper用の開発環境ではどれがベストなのでしょうか?
437 Name: 名称未設定 [sage] Date: 04/01/31 10:01 ID: t6WpTtOX Be:
>>434
NSArray……順序の概念あり
NSSet ……順序の概念なし
CFBag ……シラネ

>>436
開発言語は何? やっぱ Basic でないとダメなの?
438 Name: 名称未設定 [sage] Date: 04/01/31 12:16 ID: Z+jwoGby Be:
AppleScriptあたりから制御できないかな。
Objective-Cでやるとやっぱり最初はオブジェクトの考え方に翻弄されるかも。
まぁ、まずは無料なんだからXcode試してみては。

BasicからCやJava始める時のよく引っかかるポイント

・if文とかでif(a=b){}としても等しさを比較してくれない。if(a==b){}とする。
・行の最後は「;」。
・ポインタで泣かない。
 基礎知識得た後でこのページ一読しとくとよさげ
 ttp://member.nifty.ne.jp/maebashi/programmer/pointer.html
・クラスで泣かない。

Appleで引っかかるポイント

・MSみたいに日本語資料豊富に用意してないけど泣かない。
439 Name: 名称未設定 [sage] Date: 04/02/01 18:33 ID: D3SYSlDn Be:
438は親切そうだけど実は初心者なので適当に読みながすよろし。

440 Name: 410 [] Date: 04/02/02 15:59 ID: BBL616D3 Be:
ちょっと前に質問した 410 です。
Project Builder にて InfoPlist.strings の日本語 variant を作り、
CFBundleName, CFBundleDisplayName などにアプリケーションの
日本語名を設定したのですが、ビルドしても、Finder が日本語名で
表示してくれません。他に何か設定が必要なのでしょうか?
どなたか、自作アプリに日本語名を付けた方はいませんか?
441 Name: 439 [sage] Date: 04/02/02 16:15 ID: 5ZhDcVAF Be:
CFBundleDisplayNameは日本語ではダメではにゃいですか?
ttp://msyk.net/macos/jaguar-localize/
442 Name: 410 [sage] Date: 04/02/02 16:56 ID: BBL616D3 Be:
ああ、わかったわかった!
まず Info.plist のエントリに CFBundleDisplayName を登録する必要が
あったみたい。日本語 variant をいくら設定しても、肝心のキーが Info.plist に
設定されていないとダメなんだね。Info.plist と InfoPist.strings の関係が
ようやくわかったっぽい。

というわけで、無事に日本語名で表示させること成功しました。
439 は的外れなことを言っているが、その情報は役に立ったので一応感謝しておく。
443 Name: 439 [sage] Date: 04/02/02 17:24 ID: 5ZhDcVAF Be:
スマンスマン 文頭に「Info.plistの」が抜けてた。
ということでどういたしました。 >>410
444 Name: 名称未設定 [sage] Date: 04/02/04 20:20 ID: bv36sI6a Be:
質問す。
10.3からターミナルで日本語を入力するとバックスラッシュでエスケープされた文字になるけど、
あれをもとの日本語に戻すにはどうすれば良いの?
NSTaskでtarとかzipを実行したときのログを表示したいんだけど、
日本語は全部エスケープされた状態で出てくるもんで。
詳しい人おながい。
445 Name: 名称未設定 [sage] Date: 04/02/05 11:13 ID: j+8HxZZP Be:
10.2で設定していたことを、10.3で忘れているだけだとおもうのだが?
“ウィンドウ設定”の“エミュレーション”で“非アスキーをエスケープする”のチェックをはずす。
あとはこの辺の設定
cat .inputrc
set convert-meta off
set meta-flag on
set output-meta on

それとも、bashなのにtcshの設定ファイルをいじっているとかか?
446 Name: 444 [sage] Date: 04/02/05 20:15 ID: 4cP99Eha Be:
>>445
ありゃ、違うんよ。
ターミナルの話じゃなくて、自作のプログラムでエスケープされた文字を読込みたい、ということ。
分かりにくい書き方でゴメソネ。

NSTaskを使ってtarでファイルを圧縮するとき、
NSPipeをつなぐと圧縮中のパス名がPipeから出てくるんだけど、
10.3からは日本語はバックスラッシュでエスケープされた文字が出てきちゃうんで、
それをそのまま表示しても、どのファイルを扱っているのかわけ分からないよね。
なんでエスケープされた文字を日本語に戻したいんだけど、どうすれば良いんでしょうか?
という質問です。
エンコード一発でOKってものじゃなさそうだけど、何か一般的な方法ってある?
あ、UNIX初心者なんで変なこと言ってたらごめん。
447 Name: 名称未設定 [sage] Date: 04/02/05 20:52 ID: 9/XWI4t8 Be:
これの下のほうの「Problem Number Two」ってとこのコードで
NSASCIIStringEncodingのとこを適切なエンコーディングにすればいいと思う。
ttp://cocoadevcentral.com/articles/000031.php
448 Name: 名称未設定 [sage] Date: 04/02/05 20:54 ID: 9/XWI4t8 Be:
追記。マルチバイト文字のときは途中で分かれちゃうかもしれないから
dataを全部つないでからNSStringにしたほうがいいかもしんない。
449 Name: 名称未設定 [sage] Date: 04/02/05 22:16 ID: jO0prN0f Be:
>>446
自作のプログラムもなにも、既存のtarをつかうのであれは適切なエンコードを知るには
実行するときの優先言語環境が問題であることに変わり無いとおもうな。
450 Name: 446 [sage] Date: 04/02/05 23:22 ID: 4cP99Eha Be:
>>447
NSString *string=[[NSString alloc] initWithData:
[handle readDataToEndOfFile] encoding:NSASCIIStringEncoding];
のことをいっているんだと思うけど、
10.2まではNSUTF8StringEncodingを指定することで日本語が読めた。
10.3だとUTF8ではバックスラッシュでエスケープされた文字が出て来る。
もしかしてエスケープを元に戻してくれるエンコーディングがある?

>>449
なるほど。それは全然考えてなかった。
10.2まではUTFだったんであまり気にしてなかったんだけど、
今回はエスケープ前のエンコーディングも問題になるのかも。
(ただエスケープされた日本語は3byteっぽいのでやっぱりUTF8+エスケープのような気もする)

ちなみにさ、優先言語環境ってtarに影響する?
多言語機能はOSX固有の機能かと思ってたけど。

要はどうやってエスケープをしているのかが分かれば、
それを逆にするだけだと思うんだけど・・・
誰か助けてー
451 Name: 名称未設定 [sage] Date: 04/02/05 23:28 ID: H1HXvPkO Be:
Document-Based Application に関する質問です。
NSDocument のドキュメントに以下のようなサンプルがあったんですけど、

- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType {
NSAssert([aType isEqualToString: MyDocumentType], @"Unknown type");
fileContents = [data copyWithZone:[self zone]];
return YES;
}

これって、なんで渡されてきた data を copy してるんでしょうか?
単純に retain するだけじゃ何か問題あるんでしょうか? copy にかかる手間が
無駄だと思うんですが。
452 Name: 名称未設定 [sage] Date: 04/02/06 00:07 ID: z4da/H/h Be:
多言語機能の何がOSX固有?

LANG= ; tar --help?
LANG=ja_JP.UTF-8 ; tar --help?
LANG=ja_JP.eucJP ; tar --help?
453 Name: 447 [sage] Date: 04/02/06 00:43 ID: QAOJWovT Be:
>>450
いや、そんなエンコーディングはない。問題点をよくわかってなかったみたいだ。ごめん。

ちなみにpipeからとってきたファイル名ってどうやって表示してる?
標準出力/NSTextViewとか。
454 Name: 名称未設定 [sage] Date: 04/02/06 12:52 ID: qKVCxIjL Be:
>>451
まあ、Apple のサンプルにはけっこう変なのがあるんだけど、
たぶん、以下のどれか。

(1) NSData は immutable だから、copy してもどうせ retain される
だけだべ、と思っている。
(2) data がほんとは NSMutableData のインスタンスかもしれない。
げっ、もしそうだったら、どっかから変更されちゃうかも。
(3) メモリの局所性を高めるために、自身と同じ Zone にメモリを置いておきたい。

まあ、おれは普通に retain するけど。問題が起こるようなら copy
すればいいんじゃね?
てか、まあ、どうせ他のオブジェクトに変換するだろうけど。
455 Name: 454 [sage] Date: 04/02/06 12:55 ID: qKVCxIjL Be:
あ、もちろん全部仮定の話だから。
ほんとに - [NSData copy] が retain するだけかどうか、とか調べてないよ。
456 Name: 名称未設定 [sage] Date: 04/02/06 13:40 ID: ST0QQh+I Be:
>>446 NSNonLossyASCIIStringEncoding かな?

ttp://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2800/2871.html

457 Name: 451 [sage] Date: 04/02/06 15:06 ID: psDRf9VN Be:
>>454
勉強になります。(1), (2), (3) のすべてが考慮されている
という可能性もありますね。もしそうならなかなか奥深い。
こういうのさらっと書かないでコメントとか付けといて欲しいなあ。
458 Name: 名称未設定 [] Date: 04/02/06 16:45 ID: OHXISCUL Be:
>>451, 454
(4) retatinしてdataをいじると、dataを参照していた別の誰かが
(いた場合に)困ることがあるから。

ってのが妥当じゃない? 誰がどういう data を
- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
に渡して呼びだすかは少なくとも建前上は知らないんだし。

なので、retain ではなく copy をするのがパターンとして正解と思うな。
自前で決してdataをいじらないなら、retainでもいいんじゃない?

どうでしょう?



459 Name: 458 [] Date: 04/02/06 16:54 ID: OHXISCUL Be:
あ、NSDataだから自前で変更はできないのか。
ということで(4)は有りえないな。失礼。。。
460 Name: 458 [] Date: 04/02/06 16:56 ID: OHXISCUL Be:
と思ったが、(NSData *)なので参照先を変えることは可能か。。。
なんか恥ずかしい。
461 Name: 446 [sage] Date: 04/02/06 17:31 ID: Fc/bbRIG Be:
>>452
そっか、優先言語=NSBundleによる多言語対応、しか頭に無かったもんで
もうちょっと勉強するよ

>>453
とりあえずNSTextViewに表示してる。
最終的には変わるかもしれないけど、まあ最悪はNSTextに展開してコピーということで。

>>456
おおお、これっぽい。
あとで試してみます!
ベリーさんくす

462 Name: 名称未設定 [sage] Date: 04/02/06 17:38 ID: Fc/bbRIG Be:
>>454
(3)に一票。
Sketchのコード見てると大体NSDocumentと同じzoneにオブジェクトを確保しようとしてるからね。
(2)だったら・・・鬱

ちなみに(3)に投票しといてこんなこというのはあれだけど、
copyWithZone:は意味無いかも。

NSZone *zone=NSCreateZone(NSPageSize(), NSPageSize(), YES);
NSSetZoneName(zone, @"test_zone");
NSData*data=[[NSData allocWithZone:aZone] initWithContentsOfFile:@"/hoge.html"];
NSLog(NSZoneName([data zone]));//(1)
data=[data copyWithZone:aZone];
NSLog(NSZoneName([data zone]));//(2)

(1)(2)ともDefaultMallocZoneが出力される。
463 Name: 名称未設定 [sage] Date: 04/02/06 18:19 ID: xtawD1qc Be:
>462
aZoneはいつ確保されるんだろう。。。ドキドキ
464 Name: 名称未設定 [sage] Date: 04/02/06 19:10 ID: bi/3RXBJ Be:
>>463
>aZoneは
nil
465 Name: 名称未設定 [sage] Date: 04/02/06 19:33 ID: bi/3RXBJ Be:
これならOKみたいだけど、そうするとcopyWithZoneって???
-------
NSZone* zoneA = NSCreateZone(NSPageSize(), NSPageSize(), YES);
NSSetZoneName(zoneA, @"zoneA");

NSZone* zoneB = NSCreateZone(NSPageSize(), NSPageSize(), YES);
NSSetZoneName(zoneB, @"zoneB");

NSData* dataA = [[NSData allocWithZone: zoneA] initWithBytes: 0 length: 0];
NSData* dataB = [[NSData allocWithZone: zoneB] copy];
//^^^^^^ [dataA copyWithZone: zoneB]なら(1)==(2)

NSLog(NSZoneName([dataA zone])); //(1) = zoneA
NSLog(NSZoneName([dataB zone])); //(2) = zoneB
466 Name: 462 [sage] Date: 04/02/06 19:52 ID: lVzefGZf Be:
>>463
なるほど、DefaultMallocZoneで見事に正解だなw
ま、
NSData*data=[[NSData allocWithZone:zone] initWithContentsOfFile:@"/hoge.html"];
NSLog(NSZoneName([data zone]));//(1)
data=[data copyWithZone:zone];
NSLog(NSZoneName([data zone]));//(2)
でもダメだけどね

>これならOKみたいだけど、そうするとcopyWithZoneって???
つうかNSDataだとダメみたい。
NSObjectだとちゃんとzoneをセットできるよ。
467 Name: 名称未設定 [sage] Date: 04/02/06 20:17 ID: bi/3RXBJ Be:
>462
>>454
(2)だな。

copyWithZoneの挙動は
NSData* dataA のときは retainして、
NSMutableData* dataA のときは copyしてた
468 Name: 名称未設定 [sage] Date: 04/02/06 20:30 ID: bi/3RXBJ Be:
467補足
NSMutableData*をNSData*で受けたときね。

469 Name: 名称未設定 [sage] Date: 04/02/06 21:27 ID: wuqIcqRO Be:
気になって調べてみました。

- (IBAction)test:(id)sender
{
NSString *classNamesFilePath;
NSArray *classNames;
NSEnumerator *classNamesEnum;
NSString *className;
NSZone *zone = NSCreateZone( NSPageSize(), NSPageSize(), YES );

NSSetZoneName( zone, @"zone" );
classNamesFilePath = [[NSBundle mainBundle] pathForResource:@"ClassNames" ofType:@"plist"];
classNames = [NSArray arrayWithContentsOfFile:classNamesFilePath];
classNamesEnum = [classNames objectEnumerator];
470 Name: 名称未設定 [sage] Date: 04/02/06 21:28 ID: wuqIcqRO Be:

while( (className = [classNamesEnum nextObject]) ) {
NSString *firstObjZoneName, *secondObjZoneName;
Class targetClass = NSClassFromString( className );
id object;

NS_DURING
object = [[targetClass alloc] init];
NS_HANDLER
object = nil; NSLog( @"Can not allocate %@ class!", NSStringFromClass( targetClass ) );
NS_ENDHANDLER

if( ! [object respondsToSelector:@selector(copyWithZone:)] )
continue;

firstObjZoneName = NSZoneName( [object zone] );
object = [object copyWithZone:zone];
secondObjZoneName = NSZoneName( [object zone] );

if( ! [firstObjZoneName isEqualTo:secondObjZoneName] )
NSLog( @"%@ class is poor!", NSStringFromClass( targetClass ) );
}
}
471 Name: 名称未設定 [sage] Date: 04/02/06 21:29 ID: wuqIcqRO Be:
ClassNames.plist は
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html
http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/index.html

のクラスリストからNSScriptClassDescription、NSDistantObject の2つを排除したものを
ASCII形式のプロパティーリストに仕立てた。
 排除したのはallocかinitでこけるため。

releaseしてないのはinitで初期化したためかreleaseから帰ってこないものがあったため。

また、NSDataを含むクラスクラスタはテンポラリインスタンスを返してるので参考にはしないでください。

以下結果。
472 Name: 名称未設定 [sage] Date: 04/02/06 21:30 ID: wuqIcqRO Be:
2004-02-06 21:24:35.174 testCopyWithZone[1135] NSAppleEventDescriptor class is poor!
2004-02-06 21:24:35.397 testCopyWithZone[1135] Can not allocate NSNotification class!
2004-02-06 21:24:35.398 testCopyWithZone[1135] NSAttributedString class is poor!
2004-02-06 21:24:35.400 testCopyWithZone[1135] NSNumberFormatter class is poor!
2004-02-06 21:24:35.400 testCopyWithZone[1135] NSCalendarDate class is poor!
2004-02-06 21:24:35.401 testCopyWithZone[1135] NSCharacterSet class is poor!
2004-02-06 21:24:35.402 testCopyWithZone[1135] Can not allocate NSPropertyListSerialization class!
2004-02-06 21:24:35.403 testCopyWithZone[1135] Can not allocate NSProtocolChecker class!
2004-02-06 21:24:35.403 testCopyWithZone[1135] Can not allocate NSProxy class!
2004-02-06 21:24:35.404 testCopyWithZone[1135] NSDateFormatter class is poor!
2004-02-06 21:24:35.404 testCopyWithZone[1135] NSScanner: nil string argument
2004-02-06 21:24:35.405 testCopyWithZone[1135] Can not allocate NSDistributedLock class!
2004-02-06 21:24:35.458 testCopyWithZone[1135] NSError class is poor!
2004-02-06 21:24:35.460 testCopyWithZone[1135] Can not allocate NSKeyedArchiver class!
2004-02-06 21:24:35.460 testCopyWithZone[1135] Can not allocate NSKeyedUnarchiver class!
2004-02-06 21:24:35.462 testCopyWithZone[1135] NSMutableAttributedString class is poor!
2004-02-06 21:24:35.462 testCopyWithZone[1135] NSMutableCharacterSet class is poor!
2004-02-06 21:24:35.462 testCopyWithZone[1135] NSMutableData class is poor!
2004-02-06 21:24:35.464 testCopyWithZone[1135] NSMutableIndexSet class is poor!
473 Name: 名称未設定 [sage] Date: 04/02/06 21:32 ID: wuqIcqRO Be:
2004-02-06 21:24:35.464 testCopyWithZone[1135] NSActionCell class is poor!
2004-02-06 21:24:35.464 testCopyWithZone[1135] NSAffineTransform class is poor!
2004-02-06 21:24:36.043 testCopyWithZone[1135] *** Assertion failure in -[NSApplication init], AppKit.subproj/NSApplication.m:932
2004-02-06 21:24:36.061 testCopyWithZone[1135] Can not allocate NSApplication class!
2004-02-06 21:24:36.080 testCopyWithZone[1135] *** +[NSPasteboard alloc]: selector not recognized
2004-02-06 21:24:36.097 testCopyWithZone[1135] Can not allocate NSPasteboard class!
2004-02-06 21:24:36.114 testCopyWithZone[1135] *** -[NSPDFImageRep init]: selector not recognized
2004-02-06 21:24:36.131 testCopyWithZone[1135] Can not allocate NSPDFImageRep class!
2004-02-06 21:24:36.162 testCopyWithZone[1135] *** -[NSBitmapImageRep init]: selector not recognized
2004-02-06 21:24:36.163 testCopyWithZone[1135] Can not allocate NSBitmapImageRep class!
2004-02-06 21:24:36.163 testCopyWithZone[1135] *** -[NSPICTImageRep init]: selector not recognized
2004-02-06 21:24:36.163 testCopyWithZone[1135] Can not allocate NSPICTImageRep class!
2004-02-06 21:24:36.166 testCopyWithZone[1135] NSBrowserCell class is poor!
2004-02-06 21:24:36.166 testCopyWithZone[1135] NSPrinter class is poor!
2004-02-06 21:24:36.325 testCopyWithZone[1135] NSPrintInfo class is poor!
2004-02-06 21:24:36.342 testCopyWithZone[1135] NSButtonCell class is poor!
2004-02-06 21:24:36.358 testCopyWithZone[1135] *** -[NSCachedImageRep init]: selector not recognized
2004-02-06 21:24:36.375 testCopyWithZone[1135] Can not allocate NSCachedImageRep class!
2004-02-06 21:24:36.398 testCopyWithZone[1135] NSCell class is poor!
2004-02-06 21:24:36.399 testCopyWithZone[1135] NSRulerMarker class is poor!
474 Name: 名称未設定 [sage] Date: 04/02/06 21:32 ID: wuqIcqRO Be:
2004-02-06 21:24:36.626 testCopyWithZone[1135] Can not allocate NSScreen class!
2004-02-06 21:24:36.665 testCopyWithZone[1135] NSComboBoxCell class is poor!
2004-02-06 21:24:36.686 testCopyWithZone[1135] NSSearchFieldCell class is poor!
2004-02-06 21:24:36.713 testCopyWithZone[1135] NSSecureTextFieldCell class is poor!
2004-02-06 21:24:36.726 testCopyWithZone[1135] NSSegmentedCell class is poor!
2004-02-06 21:24:36.726 testCopyWithZone[1135] Can not allocate NSCustomImageRep class!
2004-02-06 21:24:36.727 testCopyWithZone[1135] NSShadow class is poor!
2004-02-06 21:24:36.728 testCopyWithZone[1135] Can not allocate NSEPSImageRep class!
2004-02-06 21:24:36.728 testCopyWithZone[1135] NSSliderCell class is poor!
2004-02-06 21:24:36.728 testCopyWithZone[1135] NSEvent class is poor!
2004-02-06 21:24:38.881 testCopyWithZone[1135] NSFontDescriptor class is poor!
2004-02-06 21:24:39.067 testCopyWithZone[1135] NSFormCell class is poor!
2004-02-06 21:24:39.084 testCopyWithZone[1135] NSStepperCell class is poor!
2004-02-06 21:24:39.110 testCopyWithZone[1135] NSTableHeaderCell class is poor!
2004-02-06 21:24:39.131 testCopyWithZone[1135] NSImage class is poor!
2004-02-06 21:24:39.146 testCopyWithZone[1135] NSImageCell class is poor!
2004-02-06 21:24:39.163 testCopyWithZone[1135] NSImageRep class is poor!
2004-02-06 21:24:39.180 testCopyWithZone[1135] NSTextAttachmentCell class is poor!
2004-02-06 21:24:39.196 testCopyWithZone[1135] NSMenu class is poor!
2004-02-06 21:24:39.211 testCopyWithZone[1135] NSMenuItem class is poor!
2004-02-06 21:24:39.227 testCopyWithZone[1135] NSTextFieldCell class is poor!
2004-02-06 21:24:39.248 testCopyWithZone[1135] NSMenuItemCell class is poor!
2004-02-06 21:24:39.286 testCopyWithZone[1135] NSTextStorage class is poor!
475 Name: 名称未設定 [sage] Date: 04/02/06 21:33 ID: wuqIcqRO Be:
まあ参考程度に。
476 Name: 名称未設定 [sage] Date: 04/02/07 02:11 ID: pkEqiQpm Be:

NSString などは「クラスクラスタ」とよばれていて、alloc で
帰ってくるのはたんなる PlaceHolder(場所取り)オブジェクトで、
その次の init... の...部分や引数の内容で実際のオブジェクト
を確保、init の戻り値として返してくるというものだ。

こういったクラスの場合、 +alloc と -init... は同時に呼び、
init...の戻り値を確保してそれを使わないといけない。

+ alloc の戻り値を信じていると馬鹿を見る。


以上、参考まで。

477 Name: 名称未設定 [sage] Date: 04/02/09 00:03 ID: aWA9DtdQ Be:
質問です。
無謀にもテキストエディタを作りたいと思い立ち、色々調べているうち、
/Developer/Documentation/Cocoa/TasksAndConcepts/ProgrammingTopics/
BasicEventHandling/Tasks/TextDefaultsAndBindings.html
に行き着きました。Cocoa のテキストシステムの振る舞いを色々設定できるらしい
んですが、ここで紹介されている Text System Defaults って具体的にはどこでどう
設定するんでしょうか。最初は関数かと思ったんですけど、よく見ると辞書のキーの
ようでもあって、なんだかよくわかりません。
478 Name: 名称未設定 [sage] Date: 04/02/09 00:43 ID: kncz+ezd Be:
NSUserDefaultです。
NSUserDefaultで設定すれば設定したアプリでのみ有効になります。

Terminalで
% defaults write NSGlobalDomain NSMnemonicsWorkInText -bool YES
てな感じでドメインにNSGlobalDomainを指定すると全アプリが参照するようになります。

確認してませんが、CoreFoundationのCFPreferenceを使うとプログラマブルに設定できるみたいです。
479 Name: 477 [sage] Date: 04/02/09 01:31 ID: aWA9DtdQ Be:
>>478
なるほど。UserDefaults に設定を set して sychronize しとけば、その時点から
変更が反映されるということですね。UserDefaults というのはプログラマが自分の
アプリの設定を保存するために使うものだとばかり思っていましたが、フレーム
ワークの振る舞いを規定しているようなその他の情報も色々と管理しているという
ことですね。
480 Name: 名称未設定 [sage] Date: 04/02/09 01:46 ID: 4mv0NIVS Be:
ファイルヤフォルダのサムネイルの取得とセットってどうするんでしょうか?
481 Name: 名称未設定 [sage] Date: 04/02/09 02:10 ID: kncz+ezd Be:
>480
Finderのカラムビュー、info Panel のそれをいってるのであれば、
取得 -> 根性
セット -> 無理
482 Name: 名称未設定 [sage] Date: 04/02/09 07:46 ID: UR0FkDxN Be:
>>480
フォルダのサムネイルって何?
アイコンのこと?
483 Name: 480 [sage] Date: 04/02/09 23:00 ID: xroJyZPI Be:
すいませんちょっと勘違いしてました。アイコンの事です。
取得は判ったのですが、FileWrapperによるセットがいまいち判らないのですが、出来ればご教授をお願い出来ないでしょうか?
484 Name: 名称未設定 [sage] Date: 04/02/11 11:53 ID: 0pvAeHUj Be:
>483
こんなの?
http://www.oomori.com/page/cocoa/0000157.html

ちなみにAppleEventでのセットもできると思う。
http://developer.apple.com/samplecode/Sample_Code/Overview/MoreIsBetter/MoreFinderEvents.c.htm
のMoreFEAddCustomIconToItem
あ、IconSuiteなんで128×128アイコンはダメなんだっけ?
485 Name: 483 [sage] Date: 04/02/12 03:23 ID: EWfhguwc Be:
>>484
色々悪戦苦闘してみたのですが、どうしても上手くいきません…
http://www.oomori.com/page/cocoa/0000157.htmlのサンプルコードの場合、
セットする画像がバンドル内のimage.tiff、セットする先がtestWriteImage.tiffになっているのに
setIcon:でセットする画像がNSAplicationIconになっている辺りや、
アイコンをセットするラッパーがimage.tiffを読み込んでいたり、
書き込んだ後にセットしてる辺り等がそもそも理解出来ないのですが、
サンプルコードに間違いがあるという事はないでしょうか?
486 Name: 名称未設定 [sage] Date: 04/02/12 08:58 ID: RzYJAHqJ Be:
>>485
ほんとだ
なんか変だね。

setIcon:は使えないかも、っていうのがあった。
http://www.omnigroup.com/mailman/archive/macosx-dev/2002-September/029490.html
で、そこからリンクされている
http://homepage.mac.com/troy_stephens/software/objects/IconFamily/
はどう?
Carbonみたいだけど。
487 Name: 名称未設定 [sage] Date: 04/02/12 14:00 ID: gVC+SCyI Be:
みんな Cocoa binding つかってる?

488 Name: 461=446 [sage] Date: 04/02/12 15:48 ID: oAWQEv4t Be:
>>456
のNSNonLossyASCIIStringEncodingで試しているんだけど、なんかうまくいかない。
エスケープはきちんと処理できてるみたいだけど、日本語は結局文字化けします。
NSNonLossyASCIIStringEncodingの前提がそもそも違うのか、
他に何か問題があるのか、さっぱり分からない・・・
ググってもNSASCIIStringEncodingでエンコードしてる例ばっかりだし。
誰かヘルプ!
489 Name: 483 [sage] Date: 04/02/12 21:17 ID: xQnC2oEm Be:
>>486
情報ありがとうございます。
setIcon:は壊れているんですか・・・
とりあえずこれだけでもFileWrapperで無駄な努力をせずに済んだ様なので助かりました。
iconFamilyの方もDLしてある程度眺めて見ましたが
iconSet:を代行する処理を自作するとなるとRepやBitMap関係の知識が結構要る様ですね。
carbonの知識も皆無に等しいのでもう少し勉強してから再挑戦する事にします。
484さん(=486さん?)、486さんありがとうございました。

ところでiconFamilyはアイコンを付加するソフト位しか概要が判らないですが、
試しに一つ画像ファイルにアイコンを付加してみたらアイコンをセットしても殆ど同じサイズで、
画質が少なくとも目視レベルでは全く劣化していませんでしたがjpegの圧縮処理を画質優先で最適化する様なソフトなのでしょうか?
490 Name: 名称未設定 [sage] Date: 04/02/12 22:14 ID: LXoz88w+ Be:
Cocoaに限った話じゃないような気もするけど質問。

OSXのウインドウについているような、グラデーションのかかった影って
一般的にはどういう風に描画するの?
四角いウインドウに影を書くくらいなら、色と透明度を変えつつ直線を引い
たらいいんだろうけど、OSXでは適当な形に作ったウインドウでもきれいな影
がついてるじゃない?

あれを自前のViewの中で再現したいんだけどやり方がわからないのです。
リアルタイムで計算しながら描画したいので、最初から半透明のマスクを
作っておく、という以外の方法があれば教えてください。
491 Name: 名称未設定 [sage] Date: 04/02/13 03:37 ID: 7PhoPrjn Be:
>>490
NSShadow?
492 Name: 名称未設定 [sage] Date: 04/02/13 04:22 ID: XCz31gIA Be:
cocoaってflashのactionscriptと似てるんですかね?
取っ付きやすいなら挑戦してみようかな
493 Name: 名称未設定 [] Date: 04/02/13 11:34 ID: sj7vZ0k1 Be:
systemlog がすっかりfix_prebindingで埋まっちゃってるんですが、どうにかならないのでしょうか。
>prebinding for iTerm done.
>prebinding for firefox-bin done.
>prebinding for IPMessenger done.
せめてソース公開されている物を、このログがでないように再ビルドしたいのですが
何をkeywordに探していけばいいのでしょうか?
dynamically loaded library云々なのはなんとなく行き当たったけどさっぱりわかりません。
494 Name: 名称未設定 [sage] Date: 04/02/13 11:38 ID: 5oafApH2 Be:
>>490
影を付けたいオブジェクトを白黒2値にする。
何回もぼかす。
それをαチャンネルとしてオフスクリーンにαブレンディングで描画する。
その上にオブジェクトを描画する。

実際には、処理速度の関係でエッジ抽出してそれを拡散したりする。
495 Name: 名称未設定 [sage] Date: 04/02/13 11:40 ID: AsREYMRp Be:
質問です。
どなたか Cocoa の Text System で key bindings をプログラム内で
動的に変更する方法をご存じの方いませんか?
input manager が key bindings を定義した辞書を保持しているらしいことは
わかったのですが、辞書へのアクセッサがないので、どうしたもんかと悩んで
います。NSInputManager のヘッダを見れば、それらしいインスタンス変数が
あることはあるのですが @private となっていて触るに触れません。
Project Builder の環境設定パネルで key bindings の設定ができるんですから、
同じ Cocoa を使ってできないはずはない、と思うのですが……
496 Name: 名称未設定 [sage] Date: 04/02/13 13:34 ID: wRP/gNzB Be:
>>493 環境変数 LD_PREBIND を定義(内容は何でもいい)してビルドする。

あるいは、ld に -prebind フラグを渡してビルドする。統合環境から
ならこっちの方がいいカモな。

ただ、PBX や XCode は deployment でビルドすると -prebind をつけて
くれるはずなのだが、ちゃんと Deployment にしてる? development は
それ以外にも開発向けに色々やっててコードの最適化もよろしくないので、
ビルドするだけなら避ける方がよい。

あと、消極的方法だが、環境変数 DYLD_NO_FIX_PREBINDING を定義する
と fix_prebinding は働かなくなる。ただ Prebinding 抜きになるので
これはお勧めしない。

詳細は /Developer/Documentation/ReleaseNotes/Prebinding.html や
man 1 ld の -prebind あたりを見るヨロシ。

497 Name: 名称未設定 [sage] Date: 04/02/13 15:29 ID: ymeh9uAj Be:
>>495
StandardKeyBinding.dict
でググる
498 Name: 495 [sage] Date: 04/02/13 21:14 ID: 45Cu5Te3 Be:
>>497
StandardKeyBinding.dict や DefaultKeyBinding.dict を置き換えれば変更できる
ことはわかっているんですが、これらがロードされるタイミングってアプリケーションの
起動時ですよね。問題はメモリ上に NSDictionary とかの形で存在しているこれらの
辞書にアクセスすることなんすよ。

あ、でも例えアクセスできても mutable じゃなかったらどうにもならないんじゃ……
もしかして、これは自力でカスタムクラスを作るしかないのか……
499 Name: 495 [sage] Date: 04/02/13 21:17 ID: 45Cu5Te3 Be:
って mutable じゃなかったら、ごっそりそのまま置き換えたらいいだけか。
アホだな、オレ。でもアクセッサがないんだよう!
500 Name: 490 [sage] Date: 04/02/13 22:36 ID: m0oLQLsS Be:
ありがとう。なんとなく道筋が見えた。
やっぱり直接ピクセルをいじらないと行けないのですね。
ぼかしやエッジ抽出というのが具体的にどうやればいいのかもう少し検討いたします。
501 Name: 486 [sage] Date: 04/02/14 10:30 ID: XAfl+lSX Be:
>>489
I think setIcon: is broken.
なんで断定はしていないが。

>ところでiconFamilyはアイコンを付加するソフト位しか概要が判らないですが、
ソフトじゃなくてアイコンを付加するためのクラスのはず。
(MakeThumnailはiconFamilyクラスを使ってアイコンを付けるサンプルソフト)
ヘッダから想像するにアイコンにしたいイメージを元に
iconFamilyWithThumbnailsOfImage:
でiconFamilyオブジェクトを作成して、
setAsCustomIconForFile:
で目的のファイルにアイコンをセットできるんだと思う。
こいつを使えばわざわざsetIcon:を自作する必要は無いはず。
ただ、使用条件が良くわからないのでHPをよく読んでくれ。

ところで>>488に誰か返事くれ
502 Name: 名称未設定 [sage] Date: 04/02/14 13:33 ID: ZtgqMZyV Be:
何日もずっとプログラムに打ち込んでたら
流石にリファレンス見るだけでも吐き気がする様になってきた…
503 Name: 名称未設定 [sage] Date: 04/02/14 15:54 ID: h8I/+kcC Be:
>>498
KeyBindingを調べてみても、動的に変更できるようなものはないようだね。
だからアプリ側で実装するんじゃないかな。
たぶん、CocoaのTextSystemもキーテーブルを入れ替えるようには作られていないと思う。
所詮KeyCodeとSelectorの対データだし、PBなどもそうだけど、そのアプリ独自の拡張
しているショートカット機能もあるわけで。
504 Name: 495 [sage] Date: 04/02/14 20:21 ID: Uzhax4pT Be:
>>503
俺も散々調べてたんだけど、現状ではそういうインターフェースはないみたい。
だから自力で実装することにしたよ。その算段は以下の通り。

とりあえず、DefaultKeyBinding.dict と同じ形式の辞書をロードして自前の
ビューに保持させ、keyDown: で Control やなんかが押されていた場合には
その辞書を参照して selector を割り出し doCommandBySelecter: を呼ぶ。
対応する key binding がない場合はその key event を interpretKeyEvents:
へまわす。(そうしないと日本語入力できないし)

ま、こんなもんでなんとかなりそうかな。
505 Name: 495 [sage] Date: 04/02/14 20:36 ID: Uzhax4pT Be:
なんで Text System の key bindings mechanism にこだわっていたかというと、
key event からの対応する編集コマンドの割り出し、実行を interpretKeyEvent: が
一切面倒みてくれるから。調べたところ、Control-X Control-F みたいな連続した
キーストロークにも対応してるんで、こちらは辞書を用意するだけで Emacs みたい
なキーバインド体系を容易に実現できる。
(対応する編集コマンドを作れるかはまた別の話ね……)

と思ったのだが、その肝心の interpretKeyEvent: が参照する key bindings の
辞書に触れず、interpretKeyEvents: へ渡す前に自力で振り分けることに(泣)
連続したキーストロークとか扱おうと思ったら途端に話がややこしくなりそう
なんだよなあ。ま、趣味のプログラミングですんで、地道にやろうと思います。

長レススマソ
506 Name: 名称未設定 [sage] Date: 04/02/14 21:41 ID: 0wCTyOPU Be:
>>505
やりたいことはなんとなく想像ついてたけど、なんで簡単にできねんだよと思うよね。
ガンガレ
507 Name: 名称未設定 [sage] Date: 04/02/16 21:32 ID: hMjrII/X Be:
Finderのアイコン表示やPixelCatの様な
画像のサムネイル表示で画像をセットする処理をしてる時の様な
非同期で処理を行う方法を教えて下さい。
スレッドを作らなくても実現出来るらしいですが、
NSTimerとかで実現してるのでしょうか?
具体的な方法が判らないのでご教授お願いします。
508 Name: 名称未設定 [sage] Date: 04/02/16 22:00 ID: knx0vXVD Be:
>507
、、、えっと、日本語で質問してください。おながいします。
509 Name: 名称未設定 [sage] Date: 04/02/16 22:30 ID: hMjrII/X Be:
えっと、
サムネイル用に並べたボタン群にそれぞれサム画像を入れる処理の際、
画像のサイズや量がある程度以上だと、ビーチボールが出ますよね。
それを非同期で処理してビーチボールが出ない様にしたい、という事なんですが。
ご教授お願いします。

あとスクロールビュー内にマトリクスを埋め込んだ際、
どうしてもマトリクスが一定以上のサイズにならず、
スクロールが途中迄しか表示出来ないのですがどういった手落ちが考えられますか?
以前自作でウインドウやマトリクス、スクロールビューをセットした時には問題なく出来たので
XCodeのバグを疑ってしまうのですが。
510 Name: 名称未設定 [sage] Date: 04/02/17 00:53 ID: wceMUdkO Be:
>>509
ま、NSTimerかNSThreadですね。
後半は分からんけど、それが10.3の仕様と割り切って、
10.3で正しく動くように書くしかないかと。
511 Name: 名称未設定 [sage] Date: 04/02/17 19:56 ID: /JOedpr5 Be:
>>509
NSTimerだと結局は断続的にレインボウが出ることになると思う。
素直にThreadを使うのが良いかと。

>スレッドを作らなくても実現出来るらしいですが、
の根拠を教えてもらえるとうれしい。
512 Name: 名称未設定 [sage] Date: 04/02/17 20:10 ID: 5WNjZa6s Be:
>511
fopen で開いてちょっとずつ読むとか。
513 Name: 名称未設定 [sage] Date: 04/02/17 22:00 ID: QWssc9ok Be:
>>511
>>スレッドを作らなくても実現出来るらしいですが、
>の根拠を教えてもらえるとうれしい。

イベントループ作ればいい。

for (;;) {
NSEvent* event = [NSApp nextEventMatchingMask: NSAnyEventMask....
//...
[NSApp sendEvent: event];
//...
}

>>509
場合によってはスレッドの方が簡単かも。
514 Name: 名称未設定 [sage] Date: 04/02/18 08:51 ID: 1YLvCeXv Be:
>513

2GBのデータを一気に読み込む等をすれば結局レインボーカーソルが回る罠。
515 Name: 名称未設定 [sage] Date: 04/02/18 14:28 ID: mvCwLI16 Be:
>>514
>2GBのデータを...
問題の本質が異なると思われ。
516 Name: 名称未設定 [sage] Date: 04/02/18 15:33 ID: 5WUzmMEx Be:
Xcode1.1でIBPaletteの新規プロジェクトを作ろうとすると
エラーが出て作成できないのですが、何か間違っていることをしているのでしょうか?
517 Name: 名称未設定 [sage] Date: 04/02/18 15:45 ID: HT97lAzS Be:
>>516
新規プロジェクトを生成する時、ソースのテンプレのクラス名をプロジェクト名に置き換えるところにバグがある。
と書いても意味分からないだろうがw、
生成されたソースとヘッダをXcodeで直接(プロジェクトファイルは開かない)開いてみると分かる。
518 Name: 516 [sage] Date: 04/02/18 16:08 ID: 5WUzmMEx Be:
>>517
どうもありがとうございます。
とりあえず.hファイル3つと.mファイル3つのおかしい所をそれっぽい名前に
書き換えたら問題なく(?)なりました。
他は特に変更しなくてはならない所ないですよね?
519 Name: 517 [sage] Date: 04/02/18 16:59 ID: HT97lAzS Be:
>>518
info.plistとInfoPlist.stringsも一応見とけ。
問題あったかどうかは覚えてないが。
520 Name: 516 [sage] Date: 04/02/18 18:57 ID: 5WUzmMEx Be:
Info.plist、InfoPlist.strings、palette.tableは問題ありませんでした。
521 Name: 名称未設定 [sage] Date: 04/02/18 19:05 ID: 1YLvCeXv Be:
>515
いや、別に2GBだろうがなんだろうが、でかいファイルを一気に読み込めばレインボーが回るよ。

レインボーが回る原因は、 WindowServer上のそのアプリ用のEventキューに変動がないためであって、

for (;;) {
NSEvent* event = [NSApp nextEventMatchingMask: NSAnyEventMask....

// (1)

[NSApp sendEvent: event];
// (2)
}

であっても1,2,の処理が終わらない限りWindowServerからのEventは受け取れないでしょ?
522 Name: 509 [sage] Date: 04/02/19 01:08 ID: bcmVA//7 Be:
とりあえずスレッドで回避してみました。
代わりにサムネイル画像貼付け処理の際、処理途中で一時的に使ったメモリがスクロール表示範囲内なら普通に順次解放されるのに
スクロール表示範囲外に隠れたサムネイルボタンの貼付ける処理になると解放されない(スクロールして表示させると解放される)現象や、
読み込み途中でウインドウを閉じても正常に動作する様にする処理に頭を悩ませてます。
この場合、メモリの解放処理に繋げるにはボタンが「画面に表示される」際に行っている処理に代わる何かのプロセスが必要なのでしょうか?

>>510
この辺りはなんだか解決しました。
普通にスクロール内ビューのサイズをsetFrameで変更したら出来たのですが
試行錯誤の最初にやった時は何故か出来なかったので原因が今いちハッキリせずスッキリしてませんが。

>> の根拠を教えてもらえるとうれしい。

すいません、何処かでチラっと見た記憶が有ったのですが覚えてません。
ただPixelCatなんかをアクティビティモニタで見る限りスレッドは使ってない様ですね。
523 Name: 名称未設定 [sage] Date: 04/02/19 13:36 ID: eCOlSI2w Be:
いくらアクティビティモニタでもスレッドまでは見えないぞ。
見えていると思っているのは子プロセスでないか?
524 Name: 名称未設定 [sage] Date: 04/02/19 14:03 ID: o0B1dbdZ Be:
>523
スレッド数が書いてあると思ったが...
一回見ただけなので覚えてないが。

top なら th# ってのがスレッド数。
525 Name: 名称未設定 [sage] Date: 04/02/21 14:32 ID: NKIuB9JS Be:
initとawakeFromNibとapplicationDidFinishLaunchingの使い分けの
慣習ってあるのでしょうか?
526 Name: 名称未設定 [sage] Date: 04/02/21 14:48 ID: MtpMvE0j Be:
>525
慣習とかじゃなくて、完全に別物だと思うが...
527 Name: 名称未設定 [sage] Date: 04/02/21 15:03 ID: NKIuB9JS Be:
526>>
呼ばれる時は違いますが、どこに書いてもかまわないコードってあったりしませんか?
528 Name: 517 [sage] Date: 04/02/21 16:21 ID: mmdWQTR1 Be:
少なくともinitは全然違うと思われ
529 Name: 528 [sage] Date: 04/02/21 16:24 ID: mmdWQTR1 Be:
あ、517は全然関係なし。
nibでインスタンス化したオブジェクトはinit呼ばれないはずだから注意。
530 Name: 名称未設定 [sage] Date: 04/02/21 16:38 ID: NKIuB9JS Be:
>>528
試しにnibにあるコントローラーのinitにNSLog(@"init")と書いたら表示されたのでinitも呼ばれているみたいです。
例えばNotificationの登録はApplicationDidFinishLaunchingに書くのが一般的なのでしょうか?
531 Name: 名称未設定 [sage] Date: 04/02/21 16:40 ID: NKIuB9JS Be:
それとUserDefaultsから読み込んでインスタンス変数に設定する場合
よくapplicationDidFinishLaunchingに書かれているのを見ますが、
もしawakeFromNibでNSTextFieldなんかにそのインスタンス変数を
setStringValue:などとしていたら正しい動作をしませんよね?
そういう場合はUserDefaultsからの読み込みはawakeFromNibに書くものなのでしょうか?
532 Name: 名称未設定 [sage] Date: 04/02/21 18:46 ID: b8k1eM0O Be:
>>331
は解決した?
stray のエラーはおかしな文字コードが紛れ込んでいるせい。
vi とかでファイルを確認するとエスケープシーケンスが付いている部分でエラーを
起こしてるのがわかると思うけど。
533 Name: 名称未設定 [sage] Date: 04/02/21 23:58 ID: ye0WnQAg Be:
331 じゃないんですけど、今日ちょうど stray エラーで悩まされた。見えない
文字が入力できるようになってるってものすごいなあ > XCode。補完きかない
けど、エディタは emacs とか使ったほうがいいかもしれない…。英語環境だと
このエラー出ないのかな?

この環境がタダなのはすごく嬉しいんだけど。
534 Name: 名称未設定 [sage] Date: 04/02/22 20:53 ID: bRHIw7kM Be:
違うスレにも書き込んでみたんですけど、レスがないのでこちらにも書き込ませてください。

Cocoaでキー判定を行いたいんですけど、どなたか方法をお教え願えませんでしょうか。
また、キーコードなどの調査方法もお教え願えれば幸いです。
535 Name: 名称未設定 [sage] Date: 04/02/22 21:33 ID: S6IkzAG/ Be:

init は「そのオブジェクトそのもの」の初期化につかうべし。

awakeFromNib は、Nibファイルからロードされ終わった後に
呼ばれる。注意点は、メインの Nib はアプリの起動時に1回
呼ばれるだけだが、Nibによっては必要時にロードされるもの
だってあるって事だ。

例えばちょっと込み入ったドキュメントの場合、ドキュメント
を処理するUIを別のNibにまとめておいて、ドキュメントを開
くごとに Nib をロードするという手がある。こういう時に、
awakeFromNib はロードされるごとにそのインスタンスへ送ら
れる。

applicationDidFinishLaunching はアプリケーションが起動
されたとき必ず1回実行される。漏れなら、UserDefaultsの
処理はここに書くな。もちろん、時と場合によりけりなので
一概にはいえんが。

単純なNib一個のアプリならどれを使っても一緒に見えるが、
複数Nibを活用した大きいアプリを書く時にこの三つの区別
は重要になる。

536 Name: 名称未設定 [sage] Date: 04/02/22 21:35 ID: S6IkzAG/ Be:

init は「そのオブジェクトそのもの」の初期化につかうべし。

awakeFromNib は、Nibファイルからロードされ終わった後に
呼ばれる。注意点は、メインの Nib はアプリの起動時に1回
呼ばれるだけだが、Nibによっては必要時にロードされるもの
だってあるって事だ。

例えばちょっと込み入ったドキュメントの場合、ドキュメント
を処理するUIを別のNibにまとめておいて、ドキュメントを開
くごとに Nib をロードするという手がある。こういう時に、
awakeFromNib はロードされるごとにそのインスタンスへ送ら
れる。

applicationDidFinishLaunching はアプリケーションが起動
されたとき必ず1回実行される。漏れなら、UserDefaultsの
処理はここに書くな。もちろん、時と場合によりけりなので
一概にはいえんが。

単純なNib一個のアプリならどれを使っても一緒に見えるが、
複数Nibを活用した大きいアプリを書く時にこの三つの区別
は重要になる。

537 Name: 名称未設定 [sage] Date: 04/02/22 21:36 ID: S6IkzAG/ Be:

長文なのにミスで二重書き込みしちまった。スマソ。
538 Name: 名称未設定 [sage] Date: 04/02/22 21:51 ID: S6IkzAG/ Be:
>>534

file:///Developer/Documentation/Cocoa/Conceptual/BasicEventHandling/Concepts/KeyboardInput.html#//apple_ref/doc/uid/20000902

を見るべし。

簡単に言うなら、View などの NSResponder のサブクラスには
keyDown: というメソッドがあり、これにイベントオブジェクト
が引数でひっついてくる。NSView のサブクラス作ったり、delegate
に実装することでこのメソッドを上書きするとキーボードや
マウスからのイベントを奪えるわけだ。

で、ひっついてきた NSEvent オブジェクトに characters を
おくれば(SHIFTなどの修飾キーの影響後の)文字がNSStringで
かえってくる。修飾キーの影響を受けていないのはcharacters
IgnoringModifiers で帰ってくる。

キーコードが欲しければ keyCode メソッドだ。

なお、テキスト入力の場合は IM にイベントを回してあげない
と正しくテキスト入力ができない。手っ取り早く IMに処理を
渡したいなら interpretKeyEvents: メソッドを叩けばいい。

なお、interpretKeyEvents: の引数は NSArray だ。つまり、
一つのイベントごと渡すのではなく、いくつかのイベントを
溜めておいて、NSArray で一気に渡すことができる。まぁ、
あんまり溜めると応答性が悪くなるのでお奨めせんがな(笑)

まぁ、詳しくは NSEvent や NSResponder のリファレンスを
みてくれ。そして、じっくり悩んでくれ。

539 Name: 名称未設定 [sage] Date: 04/02/22 23:04 ID: bRHIw7kM Be:
>>538
thx.
なんせOSXでの初プログラミングですので^^;、、、頑張ってみます。
540 Name: 名称未設定 [sage] Date: 04/02/22 23:35 ID: CLYYJ46w Be:
>>535
>awakeFromNib
質問主じゃないし、
結構ある程度のソフト作れるけど
初心者の頃覚えた少しずれた概念をそのまま深く考えずに修正しないままずーと引きずってた事に気付いたよ
Thx
541 Name: 名称未設定 [sage] Date: 04/02/23 00:03 ID: yyaEl5gr Be:
>>531
UserDefaultsからの読み込みを一カ所にまとめる必要はねえ。
つーか、必要ならどこで書こうが読もうがかまわねーよ。
スレッド分けてる場合は排他制御する必要があるがな。

だいたい、NSWindowなんかは設定しとけばロード、アンロード時に
勝手に自分のFrameを書いたり読んだりしてるだろーが。
542 Name: 名称未設定 [sage] Date: 04/02/23 02:55 ID: yQ6tPN/I Be:
>>539
悪いこと言わんから、荻原本とヒレガス本を2冊セットで買おう。
値は張るけど、熟読する価値あり。

539 の今回の質問に対する答えはもちろん、これからぶち当たるであろう、
数々の疑問に対する答えがそこにはある、と思うよ。

最初は素直に本でも買って、体系的にまとまった量の知識を一気に吸収した方が
いいと思う。学習曲線の最も急勾配なところを2ちゃんを頼りに登るなんてのは
あまり賢いやり方と思えない。

以上、あくまで私見ですが、アドバイスでした。
543 Name: 名称未設定 [] Date: 04/02/23 11:03 ID: 6VTKiI7N Be:
質問。CocoaをやるにはC++も知っておいた方がいいですか?
いきなりObjective-Cの参考書を見てもわかるなら、
C++やるのは後回しにしたいのですが。

現状。
Objective-Cの参考書は「C言語の知識が必要」らしいので
荻原本と一緒に高橋麻奈「やさしいC 第2版」を注文したところです。
(まだ届いてない)
今迄のプログラミング経験はPerl、PHPをかじった程度で、
Javaは全く知りません。
544 Name: 名称未設定 [sage] Date: 04/02/23 11:18 ID: SqsNPdSA Be:
Cから説明始めてるC++の基礎本買っといても損はないと思うけど。
545 Name: 名称未設定 [sage] Date: 04/02/23 11:18 ID: wdqgikKa Be:
>>543
知らなくても問題なし

546 Name: 名称未設定 [sage] Date: 04/02/23 11:23 ID: wdqgikKa Be:
>>544
萩原本でOOPを学ぶということだから、必要がなければ混乱をさけるためにも、
むしろC++のことは勉強しない方がよいと思います。
547 Name: 543 [sage] Date: 04/02/23 11:32 ID: 6VTKiI7N Be:
レスありがとうございました。
必要がないなら、混乱を避けるためにも、C++は後回しにします。
548 Name: 名称未設定 [sage] Date: 04/02/23 13:33 ID: Qt3H+GI2 Be:
>>535, 541
どうもありがとうございました。
簡単な例しかみたことがなかったため、複雑なプロジェクトになった時に
どのように書くと読みやすいのか悩んでいました。
参考にしてよく考えてみようと思います。
549 Name: 名称未設定 [sage] Date: 04/02/23 22:31 ID: yf8cVRy8 Be:
Cocoa+Javaで質問です。
NSImageの画像を回転させる方法って無いんでしょうか?
簡単な画像ビューワを作っているのですが、回転させる方法がわかりません。


//新しいNSImageを作って
NSImage image = new NSImage(new NSSize(300, 300));

image.lockFocus();
//別のNSImageであるobjimgから画像を貼付ける
objimg.compositeToPointFromRect(new NSPoint(0, 0),
new NSRect(new NSPoint(0, 0), objimg.size()), NSImage.CompositeCopy);
//できればここで回転させたい。

image.unlockFocus();
550 Name: 名称未設定 [sage] Date: 04/02/23 22:49 ID: yf8cVRy8 Be:
すみません。549ですが自己解決しました。
drawAtPointとNSAffineTransformでできました。

ってか今日1日潰したのに。。。。
気づくときはあっさりと気づくもんですね。
551 Name: 名称未設定 [] Date: 04/02/24 00:06 ID: 9csFPGX8 Be:
ADCからXcodeをダウンロードしようと思い、
Xcode Tools v1.1CDのDawnloadを押すとでるSegmentsの中のXcode_Tools_1.1.dmg.binを落として
解凍したんですが、ディスクイメージをマウントする際に
「セグメントが見つかりません、所属不明なパート」
とでてマウントできませんでした。
segments内のすべてを落とさないといけないのでしょうか?
552 Name: 名称未設定 [sage] Date: 04/02/24 03:07 ID: 4/z4zxXo Be:

>>550 そこが Cocoa のおもしろさであり、怖さなのよね。

10年以上の実績があるだけに、一見面倒でも実はある程度
を越えた時にすごく楽になるようよく考えられてる。気が
ついた時には嬉しいが、それを知らず遠回りしていた事ま
で気づいた時は酷く鬱だ。

553 Name: 名称未設定 [sage] Date: 04/02/24 08:45 ID: qMgwX0RE Be:
>>551
いや、だから segment なんだって。
segment = 部分、切片 ってそのまんまじゃん。
全部落としてから先頭の segment をダブルクリックで自動的に結合されるはず。

segment に細かく分割されているのは回線が遅い人への配慮。
1つのアーカイブになってるやつもあるはずだけど。

ってかネタ?
554 Name: 名称未設定 [sage] Date: 04/02/24 08:51 ID: GqYIthhU Be:
Cの文法を憶えたくらいの初心者です。
以前買った「やっぱり!」本一冊を見ながら、今になって10.2で勉強しています。
配列データをファイルで管理するようなプログラムを組みたいのですが、
もし、それに近いサンプルがあれば書籍や資料を教えていただけませんか。
555 Name: 名称未設定 [sage] Date: 04/02/24 15:50 ID: /xjfR+93 Be:
>>554
ヒレガス本 4~6章あたりが良いかもしれません。
KeyTermとしてはNSCoder, NSArchiverあたり。
556 Name: 名称未設定 [] Date: 04/02/25 07:54 ID: j2afweZ8 Be:
こんなの作ってみたけど、どうよ

inline IMP _METHOD(id __obj, SEL __sel){return [__obj methodForSelector: __sel];}
// _imp = [_obj methodForSelector: _sel]; <<< g++ Bus error

template <typename _Tr = id, typename _Ta1 = id, typename _Ta2 = id, typename _Ta3 = id>
class ImpMethod
{
public:
id_obj;
SEL_sel;
IMP_imp;

ImpMethod<_Tr, _Ta1, _Ta2, _Ta3>(id __obj, SEL __sel) :
_obj(__obj), _sel(__sel), _imp(_METHOD(_obj, _sel)){}

_Tr operator *()
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel);}

_Tr impFunc(_Ta1 __arg1)
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel, __arg1);}

_Tr impFunc(_Ta1 __arg1, _Ta2 __arg2)
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel, __arg1, __arg2);}

_Tr impFunc(_Ta1 __arg1, _Ta2 __arg2, _Ta3 __arg3)
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel, __arg1, __arg2, __arg3);}
};



557 Name: つづき [] Date: 04/02/25 07:54 ID: j2afweZ8 Be:
- (void) test
{
NSMutableArray* ary = [NSMutableArray array];

ImpMethod<void> impAdd(ary, @selector(addObject:));
for (int i = 0; i < 10; i++)
impAdd.impFunc([NSString stringWithFormat: @"%d", i]);

ImpMethod<> impEnu([ary objectEnumerator], @selector(nextObject));
for (id obj; (obj = *impEnu) != nil; )
NSLog(@"%@", obj);

ImpMethod<id, int> impGet(ary, @selector(objectAtIndex:));
ImpMethod<unsigned>impCnt(ary, @selector(count));

for (unsigned c = 0; c < *impCnt; c++)
NSLog(@"%@", impGet.impFunc(c));

NSString* str = @"abcdefg";
ImpMethod<NSComparisonResult, NSString*, unsigned, NSRange>
impCmp(str, @selector(compare:options:range:));
ImpMethod<unsigned int> impLen(str, @selector(length));

for (unsigned int t = 0; t < *impLen; t++)
 NSLog(@"match=%d",
(NSOrderedSame == impCmp.impFunc(@"c", NSCaseInsensitiveSearch, NSMakeRange(t, 1))));
}
558 Name: 名称未設定 [] Date: 04/02/25 12:35 ID: Mp+TlGHm Be:
ここのスレだとHMDTの本は人気ないのかな?
最初の1冊としては一番バランスよくまとまってると思うのだが。
あの本があれば、ヒレガス本要らなくない?
荻原本は一応読んどいたほうがよさそうだけど。
559 Name: 名称未設定 [sage] Date: 04/02/25 13:22 ID: UEUQ8f8c Be:
>>558
HMDTは入門書としてはちょっと・・・。Cocoaの全容をごく簡単に掴むには
いいけどね。
560 Name: 名称未設定 [sage] Date: 04/02/25 13:47 ID: Cfaib6zr Be:
個人的に薦めてるのは、ヒレガス本かな。両方読んでも損にはならんでしょう。
ただ、今はCocoa Programming for Mac OS X second edition in April 2004 が出るまでとりあえず保留。

#HMDT本は想定される読者層から外れちゃったので、ちゃんと評価を下せていない(ので、微妙に薦めづらい)。
#“さっぱり本”みたいにWebページが大量削除されれば多少事情が変わるの かも しれないが。
561 Name: 名称未設定 [sage] Date: 04/02/25 14:18 ID: avptayc7 Be:
Webが削除されたから人にはすすめられなくなったな。さっぱり本。
562 Name: 名称未設定 [sage] Date: 04/02/25 16:41 ID: CqySULa9 Be:
>>558, 560 and all
ヒレガス本しか読んでないんすけど、ヒレガス本と比べた場合、
HMDTのおすすめポイントってどこらへん?サンプルアプリが派手目な点??

個人的にはヒレガス本で漏れてるAppKitの細かい部分を補える中級書が欲しい、
けど、和書ではなかなかなさそう。
ということで、Cocoa Programming (SAMS) を読んでます。
網羅している項目も、すぐに使えるサンプルも多く、なかなか良いです。
難点は1000頁を越えるので、かなり重いこと。通勤電車で立読みはつらい。。。
ttp://www.amazon.co.jp/exec/obidos/ASIN/0672322307/
563 Name: 名称未設定 [sage] Date: 04/02/25 16:54 ID: 52n4kVVe Be:
>>562
マジであんなデカ重本を通勤電車で立ち読みしてるのかよ
564 Name: 名称未設定 [sage] Date: 04/02/25 17:33 ID: UEUQ8f8c Be:
バラしてしまえばいいんじゃない? 一度に全部読むわけじゃないし。
565 Name: 名称未設定 [sage] Date: 04/02/25 17:48 ID: KLedmtLq Be:
OutLineVIewの実装が載ってっとこ
566 Name: 名称未設定 [sage] Date: 04/02/25 18:09 ID: dRqR+fBB Be:
>>562
おお、俺も今読んでるぞ、Cocoa Programming。
荻原本、ヒレガス本ときて、次にこれだけど、いい本だよね。
特に Custom Views and Graphics で200ページ近く割いてくれてるのがいい。
NSBezierPath や NSAffineTransform を使った基本的な描画から、簡単な描画
処理の最適化手法まで、手広く、突っ込み過ぎない程度にカバーしてくれてて、
かなり勉強になってる。

今やっと 563 ページ目。ようやく半分。
確か 26 章のサンプルがテトリスなんだよな、楽しみ。
567 Name: 名称未設定 [sage] Date: 04/02/25 23:04 ID: XUuEWzmM Be:
誰も触れてないけど>>556-557って何なの?
568 Name: 名称未設定 [sage] Date: 04/02/25 23:43 ID: pFGC5S8V Be:
>>567
いかにして可読性を低下させるか。
および、templateによる、汎化と特化の2面性について。

着想はいいんだけどさ。。。
素直に 普通に IMPとってくりゃいいじゃないのって思う。
569 Name: 名称未設定 [] Date: 04/02/26 00:33 ID: 2rbLyiR1 Be:
HMDTのトップページ
最近、読み込みにやたら時間かかるんだよなぁ
なんでだろ
570 Name: 名称未設定 [sage] Date: 04/02/26 01:08 ID: fTCj4SNO Be:
Cocoaで実行中のOSバージョンってどうやって調べればいいのでしょうか?
gestaltとかないのかな。
571 Name: 名称未設定 [sage] Date: 04/02/26 02:34 ID: SqcVaN7Q Be:
HMDTを参考にdrawrectで表示した矩形をマウスでドラッグして任意の位置に動かし、マウスイベント内で移動量や移動後の座標値
を格納して、ボタンを押すとその移動量とかをテキストフィールドに表示するというのを試しに作ってみたのですが、
矩形は自由にドラッグで移動できるのにボタンを押しても0となってしまいます。
マウスイベント内やdrawrect内ではデバッガで値を見ても格納されているのに、
ボタンを押すところでは他の座標値も含め0になってしまう原因が判りません(;´Д`)

572 Name: 名称未設定 [sage] Date: 04/02/26 02:58 ID: 3lYBiShf Be:
>>556
implFunc(...)のかわりにoperator()(...)って使えないのかな?

メリットとしてはIMP使うので多少は早くなるのかもしんないのと、
IMPを意識しないでつかえるのと、
あとはSTLとかと組み合わせられそうなことかな?
573 Name: 名称未設定 [sage] Date: 04/02/26 03:41 ID: h0dO4RCA Be:
>>570 NSProcessInfo 使うヨロシ
574 Name: 名称未設定 [sage] Date: 04/02/26 13:14 ID: 0Y2AdVZt Be:
>>571
アウトレットをちゃんとつないでないとか
setStringValue:つかってないとか
ボタンのアクションが間違ってるとか
575 Name: 名称未設定 [sage] Date: 04/02/26 13:56 ID: lySuTIhE Be:
>>574
あるんだよね、それ。
俺、それで結構長い時間悩んだことあるよ。 (つд`)
571 ガンガレ!
576 Name: 名称未設定 [sage] Date: 04/02/26 17:20 ID: fTCj4SNO Be:
>>573

ありがとうございます。
NSString *versionName = [[NSProcessInfo processInfo] operatingSystemVersionString];

ですね。これって、リターン値の比較用コンスタントってどこかに定義されていまうか?
それと
Available in Mac OS X v10.2 and later.
ってことなんですけど、10.1とかはどうやって判定すればよいのでしょうか?
577 Name: 名称未設定 [sage] Date: 04/02/26 17:33 ID: aUVWiI4R Be:
>>576
>This string is human readable, localized, and is appropriate
> for displaying to the user or using in bug emails and such.
> This string is NOT appropriate for parsing

って書いてあるでしょ。
Backward Compatibility を問題にしているのなら、AppKit の
ReleaseNote を読んでごらん。
578 Name: 名称未設定 [sage] Date: 04/02/26 18:38 ID: UNw+kG7i Be:
>>577
>AppKit の
>ReleaseNote を読んでごらん。

ありがとさん。
#import <NSApplication.h>

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_0) {
/* On a 10.0.x or earlier system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_1) {
/* On a 10.1 - 10.1.x system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_2) {
/* On a 10.2 - 10.2.x system */
} else {
/* 10.3 or later system */
}

ってことですね。floorってなんだろう。

The floor() and floorf() functions return the largest integral value less
than or equal to x.

なるほど上は、マイナー番号削って調べる例か。とにかくありがとさん。
579 Name: 名称未設定 [sage] Date: 04/02/28 07:41 ID: lWtYtgLW Be:
NSTextView と NSScrollView に関して質問です。
NSScrollView が表示している文字の範囲を range で得たいのですが、
何か良い方法はあるでしょうか?

NSScrollView - documentVisibleRect で rect は得られるのですが、
その rect に含まれる文字の range を得る方法がわからないのです。
580 Name: 名称未設定 [sage] Date: 04/02/28 08:22 ID: r2/8SNea Be:
>>579
CocoaBrowserのソースにあったと思うよ。
読んでみ。
581 Name: 579 [sage] Date: 04/02/28 10:09 ID: wAzix6uG Be:
>>580
見つけました。サンクス!
他にも色々と参考になりそうな部分がありますね。
( ゚Д゚ )ウマー
582 Name: 名称未設定 [sage] Date: 04/02/29 21:59 ID: 0T/90Aof Be:
NSFormを使っていて、Cellの中身のほうで文字列が特定の条件を満たすとき
赤色の文字を表示するようにしています。しかし、マウスクリックでこの
文字列を選択すると、文字色が黒になってしまい、選択解除しても黒のままです。

AttributedStringで赤色にしているのですが、他に良い方法はありませんか?

あるいは、選択/選択解除のイベントがとれればそれを拾って、赤色に戻しても
かまわないんですが、NSForm/NSFormCell(とその先祖)には該当する
Notificationなどが定義されていないようです。

よろしくお願いします。
583 Name: 579 [sage] Date: 04/02/29 23:22 ID: T2eBHavw Be:
>>582
>文字列が特定の条件を満たすとき 赤色の文字を表示する
Formatter を自作すれば編集中の文字列にあわせてリアルタイムに文字の色を
設定できるよ。Formatter を set するインターフェースは NSControl ( NSForm
の先祖)にあるから、NSForm でも使えると思うけど。

まあ、Matrix ってことで何となくややこしそうではあるね。
上のやり方でうまくいかなかったら NSTextField で代用するのが楽かな。
NSTextField ならデリゲートに textDidChange: を送るようにできるし、
NSControlTextDidChangeNotification も使える。ま、ラベルと一緒に
縦に並べとけば使う側から見て違いもわからんし。
584 Name: 名称未設定 [sage] Date: 04/02/29 23:33 ID: T2eBHavw Be:
あ、選択/選択解除か。textDidChange: じゃねえや。ゴメソ
585 Name: 名称未設定 [sage] Date: 04/03/01 00:18 ID: TRcxgmhj Be:
>>582
試してないがセルをサブクラス化して、drawXXX:で書くしかない。
586 Name: 名称未設定 [sage] Date: 04/03/01 18:35 ID: qKtjopu/ Be:
>>583,584
4行2列でタイトル+文字列を配置したいんですが、NSTextFieldだと
ウインドウリサイズしたときに、横に4つならべることになって、
きれいにリサイズできるようにラバーバンドを設定できないんです。

それと、色を変える条件が行ごとに違っているのでNSFormに一括して
ルールを設定することができません。NSFormCellはNSControl一族では
ないのでFormatterを貼れなくてそれでsetAttributedStringすることに
したんです。

>>585
サブクラス化しかないですか。はぁ。
それを使うようにするのは、NSForm -setCellClass:でやればできるの
でしょうか。っていうかやってみます。

アドバイスいただきありがとうございます。
587 Name: 583 [sage] Date: 04/03/02 04:38 ID: ipzP48JD Be:
>>586
> 4行2列でタイトル+文字列を配置したいんですが、NSTextFieldだと
> ウインドウリサイズしたときに、横に4つならべることになって、
> きれいにリサイズできるようにラバーバンドを設定できないんです。

ううむ。ラバーバンドの設定で自分の思うようなリサイズができない場合、
autoresizing に頼るのをやめ、ウィンドウのリサイズに合わせてマニュアルで
やるというのもありでは。NSWindow のデリゲートメソッド
windowWillResize:toSize: はウィンドウのリサイズ中、mouseDragged:
みたいに何度も送られ続けるので、これを使って4行2列を適切にリサイズ
するようにしてみては? drawRect: の要領です。

って、もう Cell のサブクラス書いちゃった?
解決したんならそれはそれでいいですけど、一応代替案ということで。
588 Name: 名称未設定 [sage] Date: 04/03/02 06:40 ID: 6wuHVp6M Be:
>>587
タイトル+文字列をNSViewのSubViewに入れてまとめてしまえば
NSFormCellと同じようにauto resizeできるんじゃないかいな
589 Name: 583 [sage] Date: 04/03/02 07:20 ID: ipzP48JD Be:
>>588
4行2列って

ラベル フィールド  ラベル フィールド
ラベル フィールド  ラベル フィールド
ラベル フィールド  ラベル フィールド
ラベル フィールド  ラベル フィールド

こんなのを想像してるんだけど、違うのか?
ラベルとフィールドを組みにしても、2列目の水平位置がやっかいなことに
なりそうじゃない?

つーか、autoresize の機能に proportional な位置決めがあったら
いいなあとかよく思うよ。水平位置は中央、垂直位置は下辺から 1/4 を
維持、みたいな。
590 Name: 名称未設定 [sage] Date: 04/03/02 10:08 ID: 0k7T8DX0 Be:
流れを読まずコピペすまそ。
これXcodeで作ったみたいですが
そうなるとCocoa?なのかな? 部分部分でCarbon使ってるとか?
全く無知な自分が推測で言っても恥ずかしいだけですが。

>
> ∧∧
>Γ(,,゚Д゚)
>Σ∪【《〓0☆Ξ=∞ =∞ =∞ =∞ =∞ =∞
>~て ) _)
>(/
>
>MacOSX対応 ネタシュー「スペースギコハリャーン」
>
>ども、お久しぶりです。
>2年半の月日を経てギコハリャーンシリーズ第2弾をリリースしました。
>ついでに、おまえもなーるたいぷも復活。
>

http://www.geocities.jp/adoveproject/ghgikoharri.html

>NVIDIA系の検証が少ないですが多分大丈夫でしょう;;

個々のパーツはアマチュアLVなのは置いといて
ポテンシャルはもの凄いと思ったです。

591 Name: 名称未設定 [sage] Date: 04/03/02 10:53 ID: 6wuHVp6M Be:
>>590
Cocoaではない。Mach-O Carbonだな
592 Name: 名称未設定 [sage] Date: 04/03/04 13:01 ID: A1WWmws5 Be:
Cocoa でも飲んで、もうひと頑張り!

( ・∀・)つ旦
593 Name: 名称未設定 [sage] Date: 04/03/04 16:51 ID: Eyi7yjAY Be:
>>592
湯飲みでココア?
594 Name: 名称未設定 [sage] Date: 04/03/04 19:20 ID: kj1/gKUP Be:
>>593
( ・∀・)つ c|_| ホラヨ。マグカップ!
595 Name: 名称未設定 [sage] Date: 04/03/05 00:10 ID: CcJgKqyN Be:
ココアといえばバンホーテン。長嶋さん...
596 Name: 名称未設定 [] Date: 04/03/05 03:33 ID: vwJttUL6 Be:
別のスレ

【Yahoo!】OSXでメッセチャット【誰か作って!!】
http://pc.2ch.net/test/read.cgi/mac/1078162637

で問題が発生しています。
そのスレにリンクが張られているソフトの改造をして
ビルドしようとするとエラーが3つでます。

NSLayoutManager.h:68: cannot find protocol declaration for `NSGlyphStorage'

こういったものですが、Cocoaのヘッダの中身でエラーがでるのです。
簡単なことならソースを追いかけていくことができるのですが、
NSGlyphStorageでぐぐっても、ほとんどヒットせず
この問題はまったくお手上げで、どうしたらいいか分かりません。

お助けいただける方、智慧を貸して下さい。
597 Name: 名称未設定 [sage] Date: 04/03/05 03:36 ID: Jlu3aYqL Be:
Available in Mac OS X v10.3 and later.
ということだが、10.2 以前でビルドしようとしているという可能性は?
598 Name: 名称未設定 [] Date: 04/03/05 03:44 ID: vwJttUL6 Be:
>>597
失礼しました、環境を書いておくべきですね。
私の環境は

・Mac OS X 10.3.2(Panther)
・Xcode 1.1(ヘッダの書き換えとか、勝手な変更は加えていません)
・PowerBook Pismo 500MHz
・RAM : 640MB

ソースは先程のスレのリンクから得ることができます。
改造したポイントもそのスレに書いておきました。
599 Name: 名称未設定 [sage] Date: 04/03/05 04:00 ID: WIXnIO4p Be:
>>598
sudo fixPrecomps
してみるとか? 関係ないかも
600 Name: 名称未設定 [sage] Date: 04/03/05 05:26 ID: l6O2wi/n Be:
>>596
>別のスレ
charla2 ?

これさ、10.2.8 & PBで作成されているよね。
この環境なら、buildできるよ。
Xcodeで互換オプションなかった?(持ってないので試せない)


(1)プリコンパイルヘッダーMyCocoa.h内で宣言されているから外してみるとか
#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_1

(2) 使われないものなら、存在しない宣言、変数などは偽装する
@protocol NSGlyphStorage{} をつくる

601 Name: 名称未設定 [sage] Date: 04/03/05 05:47 ID: bRCpoSKe Be:
ココアといえばコデン
602 Name: 名称未設定 [sage] Date: 04/03/05 17:14 ID: vwJttUL6 Be:
>>599,600
レスありがとうございます。

MyCocoa.h
#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_1

というのをコメントアウトし、sudo fixPrecompsしたところ通るようになりました。
これから通信部分を日本語に直す作業にとりかかります。
603 Name: 名称未設定 [sage] Date: 04/03/05 17:24 ID: vwJttUL6 Be:
丁寧に書いていただいたのに、レスが簡素すぎる気がしますので。

>>599
一度に二つのことをしたので分かりませんが、効果はあったかも知れません。
Cocoaのヘッダがおかしいとは思えないので
プリコンパイルヘッダの混乱は妥当な判断だと思います。

今までCodeWarriorでC++/Carbonやってたもので
あまりXcodeやPBには詳しくないのでやり方を知らなかったのですが。

>>600
> charla2

はい、そうです。
自分が使うわけじゃないのですが、面白そうなのでいじってみることにしました。

>Xcodeで互換オプションなかった?(持ってないので試せない)

これは分かりません。
大抵のものはXcodeで手直しなくビルドできていますから
互換オプションのお世話になったことがないのです。

>(2) 使われないものなら、存在しない宣言、変数などは偽装する

荒技ですね。
該当のヘッダが読まれる直前に書くか、
書き込み禁止のヘッダを操作することになるので躊躇していました。
604 Name: 名称未設定 [sage] Date: 04/03/05 21:46 ID: VZRNctZn Be:
>>587
まだ、実装していません。
自動リサイズ位置決めプログラムのほうが難しそうなんですけど、
なんかサンプルとかありますでしょうか?

>>588
InterfaceBuilderってそういうViewのネストを増やすと、極端に
速度低下してしかも不安定になるので、あんまりしたくないんです。
NSViewのサブクラス化をIBでつくって配置する方法がわかれば
やってみようかとは思うんですけど、よくわからないものですから。

>>589
>ラベル フィールド  ラベル フィールド
>ラベル フィールド  ラベル フィールド
>ラベル フィールド  ラベル フィールド
>ラベル フィールド  ラベル フィールド

そうです。一応、同じサイズで作ってNSFormの位置をあわせて
おくと各行の水平位置はあいます。
605 Name: 587 [sage] Date: 04/03/05 22:27 ID: l9OewXIy Be:
>>604
>自動リサイズ位置決めプログラムのほうが難しそう
なんで? ウィンドウの幅から相対的にフィールドの位置と幅なんてすぐに
求められるし、そしたら後は setFrame: するだけでしょ。サンプルがないと実装
できないほどのもんでもないと思いますけど。

つーか、まずはコード書こうよ……  _| ̄|○
606 Name: 587 [sage] Date: 04/03/05 23:18 ID: l9OewXIy Be:
とかなんとか言ってるうちに俺実装できちゃったYO!
といっても、1行だけの

ラベル フィールド  ラベル フィールド

っていう構成だけど。なんとか2列目の水平位置もうまいこといった。
でもまあ、こっから行を増やすのなんてどうってことないし。

ま、実現できることはわかったので、後は 604 の頑張り次第かな。
でもまあ、これでやったとしても formatter の自作が残っているわけだが……
607 Name: 名称未設定 [sage] Date: 04/03/06 02:24 ID: 5QzIqt+6 Be:
バインディングの配列コントローラに関して質問なんですが

http://homepage.mac.com/mkino2/panther/CocoaBindings/masterdetail.html
>たとえば、File's Owner が mediaAssets という Media オブジェクトの集合を管理しているとすると

というのは具体的にどういう状態なんでしょう。
配列をどこにどう設定すればFile's Ownerが管理していることになりますか?
608 Name: 名称未設定 [sage] Date: 04/03/07 17:08 ID: o2CSEW0D Be:
>>607
HMDT に BBS あるだ(略)
609 Name: 名称未設定 [] Date: 04/03/07 19:52 ID: kh0UA2Ez Be:
あるNSDataを initWithData でunicode指定でNSStringにして
str = [[NSString alloc] initWithData:dat encoding:NSUTF8StringEncoding];

それをそのままwriteToFileでファイルに書き込むんだけど、できたファイルを開いてみると
Shift JISでエンコードされてるみたい。どこが間違ってるんでしょ?
610 Name: 名称未設定 [sage] Date: 04/03/07 20:14 ID: pwUySWsN Be:
>>609
NSStringのwriteToFileは、問題なければdefaultCStringEncodingで書き込む(のかな?)
なので、NSDataのwriteToFileを使う。
str = [[NSString alloc] initWithData:dat encoding:NSUTF8StringEncoding];
としたなら、
[[str dataUsingEncoding:NSUTF8StringEncoding] writeToFile:~~];
とでもすればいいだろう(かな?)
611 Name: 名称未設定 [sage] Date: 04/03/07 20:30 ID: kh0UA2Ez Be:
できますた!即レスありがとう!
612 Name: ito [] Date: 04/03/08 21:00 ID: eWAEo4De Be:
>>275さんと同じ症状が出たんですけどだれか直し方を教えてください

command+ダブルクリックで検索できなくなりました。クラスの階層表示も、からになっています。
NS*の索引が出来てないみたいなんです。
クリーニングや索引の再構築をやってみましたが効果はありません。

前になったときは、プロジェクトを作り直して直ったんだけど、毎回作り直すのは面倒なので...
613 Name: 名称未設定 [sage] Date: 04/03/10 01:12 ID: MzrQwgk/ Be:
Interface Builderを使ってスプリットバーをクロスさせるにはどうすれば良いのでしょうか?

具体的には、下図のように一つのウィンドウに4つのビューがあって、
横のスプリットバーでAB<->CD、縦のスプリットバーでAC<->BDと移動させたいのですが、
A<->C、B<->DのあとAC<->BDとすると、AB<->CDがうまく動かないです。
かといって、ABCDをまとめるとA<->B<->C<->Dのように一列になってしまいます。
分かりにくい説明で申し訳ないです;;

AB
CD
614 Name: 名称未設定 [sage] Date: 04/03/10 09:48 ID: vJ950ONy Be:
>>613
2つの SplitView のバーを同期させたいということですよね。
SplitView のデリゲートメソッド splitViewDidResizeSubviews: が使えるはず。
SplitView にはバーの位置を設定するメソッドがないので、バーの位置を同期
させるには対応関係にある SplitView の subview の frame を直接設定した後、
SplitView の再描画を促せばいいと思います。
615 Name: 614 [sage] Date: 04/03/10 10:51 ID: vJ950ONy Be:
上記の方法でやってみたらできました。
なんかわからないことがあったら聞いて下さい。
616 Name: 名称未設定 [sage] Date: 04/03/11 09:33 ID: bE1PeoVj Be:
>615
ありがとうございます。まだCocoaに詳しくないので、
勉強しながら試してみることにします。
ところでその方法(A<->C、B<->DのあとAC<->BDとして
A<->C、B<->Dを同期させる方法)だと、縦方向にスプリットバーが1つ、
横方向にスプリットバーが2つになって外観を損ねたりはしないのでしょうか?
617 Name: 614 [sage] Date: 04/03/11 20:33 ID: hWn4TCr4 Be:
>>616
ええと、こういうのは文章で説明するの難しいですね。
とりあえず、これが完成イメージです。
http://mac.oheya.jp/etc/img-box/img20040311202448.jpg

入れ子になった3つの SplitView があるのでバーは実際には3本
あるわけですが、その内、2本ある水平のバーを同期させることで、
2本のクロスしたバーがあるように見えます。

(1)から(3)は通常の SplitView の動き、
(1)から(2)で2本のバーを同期させています。

外観を損ねるかどうかは画像を見て判断して下さい。
618 Name: 614 [sage] Date: 04/03/11 21:08 ID: hWn4TCr4 Be:
それから、ここでいう「同期させる」というのは「同時に動かす」という
意味です。splitViewDidResizeSubviews: はバーのドラッグ中、繰り返し
呼ばれるのでこういったことが可能になります。
619 Name: 名称未設定 [] Date: 04/03/13 11:40 ID: /U0BUXOt Be:
オープンソースで公開されているPythonスクリプトをパッケージ内に入れて
CocoaでGUIをつけようと試みています。

ところが、そのスクリプトは複数のファイルで出来てるんですが、ファイル間の階層構造が保た
れていなくてはいけないようなのに、フォルダのままProjectBuilderにドロップ→ビルドすると
その中のファイルが全部フォルダから出されてResourcesに入れられてしまいます。

フォルダの階層構造を保ったままResourcesファイルに入れる方法ってありますか?
620 Name: 名称未設定 [sage] Date: 04/03/13 11:57 ID: sZyU6+dG Be:
>>619
Target 設定の一番下の辺りに Build Phases ってのがあるだろ。
そこに Copy Files Build Phase を追加すれば、アプリケーションラッパに
コピーするファイルとコピー先のサブパスを設定できる。

Project メニューに New Build Pahase > ってのがあるからそっから
Copy Files Build Phase を選べば追加されるよん。
621 Name: 619 [] Date: 04/03/13 12:47 ID: /U0BUXOt Be:
>>620
素早いレスありがとうございます。

なるほどなるほど。日本語でいう「ファイルをコピー」というのを追加して
その中に件のファイルを入れてしまえば良い訳ですね。

ありがとう。がんばってみます。
622 Name: 620 [sage] Date: 04/03/13 13:21 ID: sZyU6+dG Be:
スクリプトが1つのフォルダにまとまってるなら、そのフォルダ自体を
指定したらいい。そしたらフォルダ内の階層構造もそのまま保存されたはず。
623 Name: 619 [sage] Date: 04/03/13 18:30 ID: /U0BUXOt Be:
フォルダのコピーはちゃんと行けたけど、肝心のスクリプトがうまいこと動いてくれない・・
Pythonなんてわかんないし、あきらめました・・。

ちなみに、そのスクリプトはPluckerというやつで、HTMLをPalmで読めるように整形してくれる
スクリプトでした。一応GUI版もあるんだけどあまり日本語のことを考えてくれてないようなので
自分で作ってみようかなーと。

と思いやってみたら、文字だけは変換できるのに画像は出来ないという変な動き・・。
よく調べたらTerminalで動かしても同じ症状が出てました。
なんでだー、元のGUI版と何が違うんだよー・・・ orz
624 Name: 名称未設定 [sage] Date: 04/03/14 12:13 ID: smIz7K1j Be:
Cocoa とは直接関係ないんであれなんですが……
画像掲示板に相当する、ソースやプロジェクトを匿名で気軽にアップできる
ような板ってないもんでしょうか。質問するにしてもそれに答えるにしても、
ソースやプロジェクトをやり取りできれば便利だと思うんですが。

というか、俺が知らんだけでそういうものは既にあるのかな……
625 Name: 名称未設定 [sage] Date: 04/03/14 18:04 ID: TQgM8Yu6 Be:
>>624
aaacafeあたりを借りれば掲示板とuploader、wikiなどは置ける。
626 Name: 名称未設定 [sage] Date: 04/03/14 18:25 ID: QXDXTayI Be:
画像を拡大・縮小した後、そのサイズで保存するには
どのクラスのお世話になったらいいですか?
NSImageやNSImageRepにsetSizeしても、ファイルに書き出してみると
サイズは元のままなんですが...
627 Name: 名称未設定 [sage] Date: 04/03/14 18:29 ID: wLAKUT53 Be:
あまり長いソースだと読むのが大変で
気軽に答えられないからじゃないかなあ。
628 Name: 名称未設定 [] Date: 04/03/14 19:05 ID: TQgM8Yu6 Be:
ソースって追いかけるものなんじゃないかな。
量が多くても全部読むわけじゃなくて、必要なところだけ辿ってくわけで
聞く方は晒せるなら全部晒した方がいいと思う。

全部必要なのか、部分的にあればいいのかは答える方(上級者)が判断することだし。
629 Name: 名称未設定 [sage] Date: 04/03/14 19:39 ID: 4l4nKXwL Be:
>>626
うろ覚えなんで間違ってるかも知れないんですが、

保存したい NSImage を setSize
保存したいサイズの NSImage を新たにもう1つ作り、それに対し
lock focus
setSize した方の NSImage をそこへ draw
unlock focus

こんな感じでいけませんかね。
630 Name: 名称未設定 [sage] Date: 04/03/14 21:05 ID: QXDXTayI Be:
>>629
ありがとうございます。ばっちり出来ますた!
元のimageにはsetSizeしなくても、drawInRect:で
新しいほうのimageのサイズを指定すれば大丈夫なようです。
631 Name: 629 [sage] Date: 04/03/14 21:51 ID: 4l4nKXwL Be:
NSImage や NSImaseRep に対し setSize: しても、それを書き出して
みたらサイズが元のままなのは、これらがメモリ上にロードしたイメージ
データ(NSImageRep が持ってます)をどんなサイズでレンダリングするかを
指定するものだからです。

NSImage はこのサイズにあわせて、ベストな NSImageRep からキャッシュ
イメージを作り、自身の描画を要請された時にはこのキャッシュを使います。
(描画の度に NSImageRep の持ってるデータからサイズ変換してたら効率悪いし)

仮に setSize: で NSImageRep の持ってるイメージデータのサイズを
実際に変換してしまったら、一度サイズを縮小したら最後、縮小に伴って
失われた情報を、もう一度ディスクからファイルをロードし直さない限り
復元することができなくなってしまいます。

そんなわけで、NSImage では setSize: される度に、NSImageRep の
データからキャッシュを作り直しているわけです。(実際には、描画の
要請があってからキャッシュを作り直すみたい)

NSImage とか NSImageRep とかのあたりはほんとにややこしくて、
自分も完全に理解しているとは言い難いのですが、とりあえず。

詳しい人、補足、ダメだしあったらおながいしまつ。
632 Name: 名称未設定 [] Date: 04/03/15 11:57 ID: 6Ii7y6yh Be:
FinderのようにOutlineViewを使ってファイルリストを表示させるプログラムを
つくっていたのですが、Cocoaでファイル&フォルダの不可視属性を取得することは
できるのでしょうか?
Carbonを使ってみたのですが、一部のフォルダなどには不可視属性がついていないものも
ありったりして、Finderのように表示させることができません。

どなたか、情報をおもちの方がいらっしゃいましたら教えてください。
お願いします。
633 Name: 名称未設定 [sage] Date: 04/03/15 17:53 ID: q7l8yECV Be:
スクリーンセーバーモジュールのビルド時に、リンカが以下のような
警告を吐きました。

ld: warning dynamic shared library: /usr/lib/libSystem.dylib not made
a weak library in output with MACOSX_DEPLOYMENT_TARGET environment
variable set to: 10.1

not made a weak library というのは何か重大な問題でしょうか?
ビルド自体は成功し、モジュールも問題なく動作しますが、この警告が
気になって仕方ありません。こちらの環境は

Mac OS X 10.2.8
Developer Tools December 2002  です。
634 Name: 名称未設定 [sage] Date: 04/03/15 19:05 ID: SGOkhT4W Be:

ttp://developer.apple.com/ja/qa/qa2001/qa1233.html みれ。

635 Name: 633 [sage] Date: 04/03/15 19:34 ID: q7l8yECV Be:
>>634
ずばりですね。ありがとん!  (・∀・)
636 Name: 633 [sage] Date: 04/03/15 23:18 ID: PZYCuvKo Be:
って、読んでみたけどこの辺の話はよくわからんす(恥

10.1 でも使えるようにしたいので、QA1223 で示されている回避策2で
いこうと思ったのですが・・・

問題の回避策2
>Mac OS X 10.1 以上を対象にビルドする必要がある場合、または、
>ライブラリ A へのウィークリンクを開始したくない場合は、ライブラリ A の
>シンボルへの実際には使われない余分な参照を 1 つ作成して、リンカに
>ライブラリ A に強くリンクさせることができます。

これって具体的にはどうすることなんでしょうか?
ライブラリ A に相当するものは多分インポートしてるフレームワークのどれか
であり、それらに含まれる関数を無駄に呼んでみるとか、クラスのインスタンスを
無駄に作ってみるとかすればいいのかと思い、いろいろやってみたんですがどうも
違うみたいです・・・

リンカとか共有ライブラリの仕組とか、全然わかってない…… (´・ω・`) トホホ
637 Name: 名称未設定 [sage] Date: 04/03/16 01:03 ID: lRzwJeuM Be:
>636

%nm /usr/lib/libSystem.dylib
とするといろいろなシンボルが表示されますが、よく見るとただのCの標準ライブラリであることが分かりますね。
ですから、この場合、ライブラリAであるところの、Cの標準ライブラリを直接使ってやればよいことが分かります。

使わなくていいものは別に使わなくてもいいので

if( fclose == NULL ) { fprintf( stderr, "You have no C Lib!!¥n" ) } 
// 3つも使っちゃいました! fcloseがなくてfprintfがあるなんてどんなシステムなんだろう(w

とかで十分でしょう。最適化で消えないように気をつける必要がありますが。

警告を無視するのでいいのなら、
>>633
>not made a weak library というのは何か重大な問題でしょうか?
べつに問題ありません。
警告の意味は「ld は弱いリンクを作ろうとしましたが、できませんでした。」
Appleの回避策2は ld に弱いリンクを作ろうとさせない。
ってことですから。
作ろうとしなければ警告は出ませんよね?
638 Name: 633 [sage] Date: 04/03/16 01:50 ID: q57OVuhd Be:
>>637
なるほど。Cの標準ライブラリですか。Foudation や AppKit の関数やクラスで
何をやっても駄目なわけだ。かなりアホなことやってました俺。
ttp://developer.apple.com/ja/technotes/tn2064.html
とかも読んでみたものの余計に混乱してしまいまして  _| ̄|○

weak link しようとしたけどできなった、ってことは strong link しました
ってことだから、10.1 でも問題ないですよね、そりゃ。

色々勉強になりました。ありがとう。
639 Name:    [sage] Date: 04/03/17 08:04 ID: FvBWDMVl Be:
>>632
> 一部のフォルダなどには不可視属性がついていないものも
> ありったりして、Finderのように表示させることができません。

不可視属性がついていないのに表示されないものがある、ということですか?
具体的には何ですかそれは? まさか . で始まるやつとか言うんじゃ……
640 Name: 名称未設定 [sage] Date: 04/03/17 15:39 ID: c63EUxA2 Be:
>>632
>>639
起動ディスク直下のusrとかtmpとか.hiddenに影響されるもののことでは
ttp://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2600/2621.html
ttp://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2600/2624.html
641 Name: 名称未設定 [sage] Date: 04/03/17 16:00 ID: FvBWDMVl Be:
data = [image TIFFRepresentationUsingCompression:
NSTIFFCompressionNone factor:0.0];
bmRep = [[NSBitmapImageRep alloc] initWithData:data];

とやって image から BitmapImageRep を作った後、ピクセルバッファの
アドレスを得て、そこから直接ピクセルをいじって画像にエフェクトをかける
プログラムを書いています。

32 bit のカラー画像なら、メモリ上で R, G, B, A の順で並んでいて、
plane は 1 つ、という前提でプログラムを書いているのですが、果たして
これは保証されているのでしょうか?

NSBitmapImageRep のドキュメントを見ても、initWithData: でインスタンスを
作った場合に、ビットマップデータがメモリ上でどのような構成になるかといった
ことが一切書かれていないので、ちょっと不安になりまして。

情報、もしくはその在り処を知っている方がいたら教えて下さい。
642 Name: 名称未設定 [sage] Date: 04/03/17 17:26 ID: OixMsgeT Be:
>641
詳しい情報はもってないけど、どうしても不安なら、
独自のNSImageRepのサブクラスを作ればいいのでは?
643 Name: 名称未設定 [sage] Date: 04/03/17 23:50 ID: uZ8ILPym Be:
>>642
レスありがとうございます。
1 pixel 32 bit RGBA 1 plane で正規化された bitmapImageRep を返すような
クラスメソッドでも NSImage にカテゴリとして追加しようかなあと思います。
644 Name: 641=643 [sage] Date: 04/03/17 23:52 ID: uZ8ILPym Be:
いけね。×クラスメソッド ○インスタンスメソッド
645 Name: 名称未設定 [sage] Date: 04/03/18 23:22 ID: sZKwhZNi Be:

下記はeventを一つづつ取り出して、そのイベントが何に対する
イベントか判断して実行するか、無視するか決定するルーチンです。
今現在ボタンAなのかスライダーBなのかの判断をイベントが発生した
マウスの座標で行っています。
マウス座標で判定する以外の方法でeventを受け取るコントロールを知る方法はないでしょうか?

ボタンなどのコントロールの数が多くなると、座標判定ルーチンを記述する
のが結構大変です。
もっとスマートな方法をご存知の方は教えていただきたくお願いします。

while(適当にループ){
NSEvent* event = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]
inMode:@"NSDefaultRunLoopMode"
dequeue:YES ];

if([event type] == NSLeftMouseDown){
   if(ボタンA の位置でイベントが発生==YES){
   [NSApp sendEvent: event];
}else if (スライダーB の位置でイベントが発生==YES){
    [NSApp sendEvent: event];
}
}
646 Name: 名称未設定 [sage] Date: 04/03/18 23:49 ID: mQlvAy7W Be:
>>645
何のためにそれをやってるの??
647 Name: 名称未設定 [sage] Date: 04/03/19 00:03 ID: yveiV8c7 Be:
>>645
NSView に hitTest: ってのがあるね。
それか、コントロールの一覧を配列か何かに入れておいて、mouse: inRect: あたりで
順番に調べればいいのでは。

てゆうか、なんでそんな変なことがやりたいの?
たぶん目指してるやりかた自体が全然スマートじゃない。
648 Name: 名称未設定 [sage] Date: 04/03/19 00:46 ID: QST7yJ8k Be:
一体何のための Application Kit なのかと小一時間……
649 Name: 名称未設定 [sage] Date: 04/03/19 00:50 ID: ECQ0e4+E Be:
Think different.
650 Name: 名称未設定 [sage] Date: 04/03/19 00:59 ID: QST7yJ8k Be:
ああ、なんか古の WaitNextEvent() を思い出しますなあ……
全然ものにならなかった苦い思い出がっ!

それを思えば随分とラクチンになったもんだ。いいね、Cocoa。
645 は Application Kit が裏で何をやっているか理解するためにあんな
プログラムを書いているに違いない、

と、好意的に解釈してみる。
651 Name: 名称未設定 [] Date: 04/03/23 04:42 ID: oSJY7XQX Be:
CFBundleName, CFBundleDisplayName を設定して自作アプリの
名前を Finder に日本語で表示させるようにしたのですが、Dock では
なぜか英語名になってしまいます。Dock にも日本語で表示させるには
Info.plist に何か別の設定が必要なのでしょうか?
652 Name: 名称未設定 [sage] Date: 04/03/23 05:48 ID: 3YzRbiVh Be:
>>651
Japanese.lproj/InfoPlist.stringsかな
テキストエディットなどを参考にしてください
653 Name: 名称未設定 [sage] Date: 04/03/23 06:10 ID: uoumliyY Be:
CocoaはC++ではなくObject Cって本当ですか?
654 Name: 651 [sage] Date: 04/03/23 07:37 ID: oSJY7XQX Be:
>>652
それを参考にして Finder に日本語表示させるところまではきたのですが、
なぜか Dock ではダメなのです。InfoPlist.strings も

CFBundleName = "日本語名";
CFBundleDisplayName = "日本語名";

という感じで、設定に不備はないはずなんですが。
655 Name: 名称未設定 [] Date: 04/03/23 10:33 ID: HUVAC8iN Be:
>>652
それは嘘です。
656 Name: 655 [sage] Date: 04/03/23 10:34 ID: HUVAC8iN Be:
まちがえた。

>>653
それは嘘です。
657 Name: 名称未設定 [sage] Date: 04/03/23 14:53 ID: gRZWwbzK Be:
Object Cってどんな言語ですか?(藁
Objective-Cなら知ってるんだけど。
658 Name: 名称未設定 [sage] Date: 04/03/23 15:18 ID: u7CEFvIQ Be:
>>653
C++というかObjective-C++ならサポートされている。基本はObjective-Cだ。
>>654
本当に設定不備が無いのならキャッシュされているだけかも?
>>657
object Cは存在する。それに“c”と“object”がつく言語はいくつもある。
今回の件には無関係だし、トリビア程度な知識だから知らなくても全然気にするこたぁ、、あるから存分に吊ってくれ。
659 Name: 名称未設定 [sage] Date: 04/03/23 15:41 ID: GPeOvRmM Be:
Objective-C++っても、C++のクラスをO-Cで継承できない、んだよね?
660 Name: 651 [sage] Date: 04/03/23 20:00 ID: vWySDxGT Be:
>>658
それは Dock がキャッシュしてるっていうことですか?
661 Name: 名称未設定 [sage] Date: 04/03/24 01:18 ID: pnf1af/g Be:
>>660
パッケージの中のContentsフォルダを外に出して、入れてみると、どう?
662 Name: 名称未設定 [] Date: 04/03/24 04:58 ID: jRUfl/ai Be:
>>659
できない。
紛らわしいけどC++とObjective-Cを混ぜて書けるだけで
言語的に融合はしていない。

http://homepage.mac.com/mkino2/spec/objectiveC++/objectiveC++.html
663 Name: 名称未設定 [sage] Date: 04/03/24 16:53 ID: gWOz12tY Be:
MainMenu.nib の FirstResponder に独自の Target を追加して
新しいメニューを MyDocument あたりで処理するにはどうすればいいのですか?
664 Name: 名称未設定 [sage] Date: 04/03/24 18:14 ID: zSoNO0rJ Be:
>663
tergetを追加する必要はありません。

ClassタブでFirstResponderを選んでactionを追加。
新メニューのアクションをFirstResopnderのactionにつなぐ。

これだけです。

MyDocumentがactionメソッドを持っていて、且つFirstResponderになっていれば
MyDocumentにアクションが飛んできます。
665 Name: 名称未設定 [sage] Date: 04/03/25 09:48 ID: IYMUj6hS Be:
>664
ありがとうございます。
おかげさまでメニューの追加ができました。
666 Name: 名称未設定 [sage] Date: 04/03/25 22:20 ID: JUMFOHhE Be:
Safari上に表示された 画像(PNGファイル)をドラッグすると、
(1)画像が半透明になってマウスに追従して動きます。
(2)そのまま、テキストエディットにドロップすると画像がペーストされます。
(3)一方デスクトップ上にドラッグドロップするとABC.pngのようにPNGファイルになって保存されます。

上記(1)(2)(3)を行う機能を実装したいのですが、方法がわかりません。
どなたか御教授いただければ幸いです。

試したこと。
dragPromisedFilesOfTypes:fromRect:source:slideBack:event:を使い、
namesOfPromisedFilesDroppedAtDestinationをオーバライドすることで
(3) が実現できました。しかしドラッグ中に表示されるのは(1)の画像ではなく
PNGアイコンになります。さらに(2)は実現できません。
dragImage:at:offset:event:pasteboard:source:slideBack:を使った場合は、
逆に(1),(2) は正しく行えるのですが、(3)が実現できません。
Safariのように(1)(2)(3)を同時に行う方法があれば教えていただきたくお願いします。

667 Name: 名称未設定 [] Date: 04/03/26 01:09 ID: 9hV6Tyd6 Be:
>>666
ペーストボードにNSFilenamesPboardTypeでフルパス(の配列)を
入れておけばdragImageで(3)も可能。
668 Name: 名称未設定 [] Date: 04/03/26 01:54 ID: S0Bhxg2O Be:
初期型iMac用CPUカード Newer Tech iMAXpowr G3/466MHz/1MB
http://page7.auctions.yahoo.co.jp/jp/auction/g17765890
669 Name: 666 [sage] Date: 04/03/26 09:05 ID: r0/r7A0v Be:
>>667
ありがとうございます。
ファイルが存在する場合はそれで良いような気がしますが、
本ケースでは、ファイル自体が存在しないため(アプリーケッション内のデータとして存在する)
当然ながら、NSFilenamesPboardTypeで名前を指定できないのです。
Safariは一旦テンポラリファイルを作っているのだろうか?
670 Name: 名称未設定 [sage] Date: 04/03/26 12:11 ID: 9hV6Tyd6 Be:
>>669
漏れも同じようなことがあって、調べても分からなかったので
一時ファイルを作る方法で対処したことがある。
671 Name: 名称未設定 [sage] Date: 04/03/26 12:37 ID: 4rq5nH99 Be:
>>669
NSFilesPromisePboardType を使う。
どう使うかは知らん
ぐぐればCocoaはやっぱりのpdfが見つかるだろう
672 Name: 666 [sage] Date: 04/03/26 18:47 ID: r0/r7A0v Be:
>>670
ありがとうございます。
>>671
それは当然そうなんだが、、、
ありがとうです。
673 Name: 名称未設定 [sage] Date: 04/03/30 17:22 ID: h+dzWUHa Be:
以前FirstResponderについて質問させていただいた者です。
ドキュメントのNSViewないしNSWindowから該当のNSDocumentのポインタを得ることはできないのでしょうか。
できるとしたらFirstResponderをたどる方法なのかな・・この辺ご教授いただけると助かります。
674 Name: 名称未設定 [sage] Date: 04/03/30 17:43 ID: RuUgzLv4 Be:
[[window windowController] document]
675 Name: 名称未設定 [sage] Date: 04/03/30 17:55 ID: QlHv+1xp Be:
こんにちは。
灰色の透明なウィンドウ(音量設定みたいなウィンドウ)を作ろうとして、

#import "MyWindowController.h"

@implementation MyWindowController
- (void)drawRect:(NSRect)rect
{
[window2 makeKeyAndOrderFront :self];
[[window2 contentView] lockFocus];
NSRect rect = [[window2 contentView] frame/*bounds*/];
[[window2 contentView] unlockFocus];
[window2 flushWindow];
}

@end

としてみたのですが MyWindowController.m:9: unused variable `rect'
ウィンドウ自体を透明にすることはできましたが、このようにでてうまく表示されません。
勉強し始めてまだ四日位なのですが、何か基本的なことを見逃してしまっているのでしょうか。
676 Name: 名称未設定 [sage] Date: 04/03/30 17:59 ID: QlHv+1xp Be:
>としてみたのですが MyWindowController.m:9: unused variable `rect'
>ウィンドウ自体を透明にすることはできましたが、このようにでてうまく表示されません。
少し変な言い方でした。
上にかぶせる半透明なウィンドウが表示されない、ということなんです。
677 Name: 名称未設定 [sage] Date: 04/03/30 18:45 ID: n4nKEF0a Be:
何故そういうコードで半透明になると思ったのか
根拠を教えてほしい。
678 Name: 名称未設定 [sage] Date: 04/03/30 21:46 ID: +Sbq1mLl Be:
俺も教えて欲しい。
679 Name: 名称未設定 [sage] Date: 04/03/30 23:00 ID: qTFrMjgT Be:
>>675
これで出来たよ。

#import "stdio.h"
#import <AppKit/AppKit.h>

@implementation hoge

-(id)initWithContentRect:(NSRect)contentRect
styleMask:(unsigned int)aStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag {

NSColor *ccol;
ccol=[NSColor colorWithCalibratedRed:1
green:1
blue:1
alpha:0.6];
NSWindow* result = [super initWithContentRect : contentRect
styleMask : NSBorderlessWindowMask
backing : NSBackingStoreBuffered
defer : NO];
//背景にカラーをセット
[result setBackgroundColor : ccol];
[result setLevel : kCGDockWindowLevel]; //Windowの階層レベル(Dock)
[result setAlphaValue : 1]; //透明度をセット
[result setOpaque : NO]; //不透明度
[result setHasShadow : NO]; //影
return result;
}
680 Name: 名称未設定 [sage] Date: 04/03/31 00:53 ID: LZBaoQB+ Be:
>>677-678
始めて四日だっていってるんだからそんなにいじめるなよ。
681 Name: 名称未設定 [sage] Date: 04/03/31 03:29 ID: iiIfI//F Be:
>>675
>unused variable `rect
って単に変数rectを使ってないよ~、ってことだと思う。
用意したのに使ってないのは何かのミスかもしれないので
教えてくれるのでしょう。
682 Name: 名称未設定 [sage] Date: 04/03/31 08:13 ID: Me1cVLbk Be:
>>675
何を読んで勉強しているのか分からんが
とりあえずこれでも見とけ。
http://developer.apple.com/samplecode/RoundTransparentWindow/RoundTransparentWindow.html
683 Name: 名称未設定 [sage] Date: 04/03/31 14:41 ID: XrINcQXX Be:
>>679
ありがとう、やってみますね

>>680
ありがとう

>>681
変数rectでぐぐってみます、ありがとう

>>682
ありがとう

まだ何も分からないのでありがとうしか言えません・・・・
もっと勉強して出直します。どうもありがとうございました!
684 Name: 名称未設定 [] Date: 04/03/31 15:24 ID: /FoW4DD2 Be:
>683
変数rectじゃなくて C言語がヒットしても良いから 変数 スコープ でググれ。

ていうか、本買え、本。

その状況じゃ3日後には挫折するぞ。
685 Name: 名称未設定 [sage] Date: 04/03/31 15:28 ID: /FoW4DD2 Be:
>684
あまりの馬鹿さ加減に興奮して、上げてしまったではないか。




ていうか ガンガレ !
686 Name: 名称未設定 [sage] Date: 04/03/31 22:31 ID: 3ZUvIowg Be:
>>684
ありがとう、変数 スコープですね。
本なんですが、実はXcode入門を買ってしまいまして、当分は買えないかなぁ・・・と
687 Name: 675 [sage] Date: 04/04/01 00:16 ID: 2uLYEGqq Be:
やっとできました!
@implementation some
- (void)drawRect:(NSRect)rect
{
[window makeKeyAndOrderFront :self];
[[window contentView] lockFocus];
NSRect rect = [[window2 contentView] frame/*bounds*/];
ここに何を書くかを設定しなきゃいけなかったんですね・・・・
[[window contentView] unlockFocus];
[window flushWindow];
}
やっと気づきました。
根拠を教えてほしい、という言葉が今では身にしみます・・・・・・
もっとCocoaになじめるよう、努力します。
688 Name: 名称未設定 [sage] Date: 04/04/01 00:46 ID: F+peyiZy Be:
そういう問題じゃなかろうと思うが。
689 Name: 名称未設定 [sage] Date: 04/04/01 17:16 ID: 37ZG1UnX Be:
NSMutableAttributedStringを使って、一文字の幅を指定してdrawすることは可能でしょうか。
(文字と文字の間を大きくしたり、逆に文字が重なるようにしたいのです)
690 Name: 名称未設定 [sage] Date: 04/04/01 18:11 ID: Ef3XcYvw Be:
>689
see NSTextStorage, NSLyaoutManager, NSTextContainer とか。

http://developer.apple.com/documentation/Cocoa/Conceptual/TextLayout/index.html

とか。
691 Name: 名称未設定 [sage] Date: 04/04/01 21:02 ID: I43/OqRV Be:
文字列を表示したとき、実際にそれが表示されている範囲(Rect)を知るにはどうしたらいいでしょうか。
>>690氏のリンクはまさにその辺りの話だと思うんですが、ぶっちゃけよくわかりません。
692 Name: 名称未設定 [sage] Date: 04/04/02 01:06 ID: 2wYX0uZx Be:
メソッドを関数風に扱う初歩がわかりません……。
List-1(処理内容はサンプル)は正常に動作しますが、同じ動作を期待しつつ、
独立したメソッドで文字列決定を処理させようと思ってList-2のようにすると
コンパイルOKですが実行するとエラーになります。
どこをどうしないといけないんでしょうか。
■ list-1
- (IBAction)myAction1:(id)sender{
NSString*s;
if((random()%10) <= 5) { s = @"AAAA"; } else { s = @"BBBB"; }
[ myOutlet1 setStringValue:s ];
}

■ list-2
- (IBAction)myAction1:(id)sender{
NSString*s;
[ s randomString:5 ];
[ myOutlet1 setStringValue:s ];
}
//
- (NSString *)randomString:(int)iSeparate{
NSString*s;
if((random()%10) <= iSeparate) { s = @"AAAA"; } else { s = @"BBBB"; }
return( s );
}
693 Name: 名称未設定 [sage] Date: 04/04/02 01:37 ID: SgQm8F3Q Be:
>>692
> [ s randomString:5 ];
s = [ self randomString:5 ];
かな。
694 Name: 名称未設定 [] Date: 04/04/02 01:48 ID: ZzfeRsDX Be:
>>692

list-2の、
>[ s randomString:5 ];
って、オブジェクトsにメッセージ"randomString"を送出する、って意味。
 NSStringでrandomStringメソッドが定義されていないとだめ。
 単に、NSStirng *randomString(int) ; の関数を定義するのではダメか?
 - (NSString*)randomString: はどのオブジェクトのメソッド?
695 Name: 名称未設定 [] Date: 04/04/02 01:50 ID: ZzfeRsDX Be:
>>693
 あぁぁぁ

696 Name: 名称未設定 [sage] Date: 04/04/02 09:14 ID: du696CNF Be:
文字の最大の縦幅を得る方法を教えてください。
NSFontの属性が多くてよくわからないです。
試しにfontHeight=[font ascender]-[font descender]としても
フォントの種類によってうまくいかないですし・・。
697 Name: 名称未設定 [sage] Date: 04/04/02 21:44 ID: Yv0ywEVx Be:
むりやりだが、@"ABC…xyz"にsizeWithAttributes:を送ってみるのはどうだ?
698 Name: 692 [sage] Date: 04/04/02 23:20 ID: ebUl9BJ8 Be:
>>693
それです!ありがとうございました。
言われてみると今の自分、「selfってなんなんだろ」状態でした・・。

>>694-695
コンパイルエラーにならないように試行錯誤した結果が
[ s randomString:5 ];なのでした(←ひどすぎますね)。
NSStirng *randomString(int iSeparate)
これ↑の場合も試して、同じ内容で動作するのを確認できました。
両方使い分けてもいいのですね。ありがとうございました。
699 Name: 名称未設定 [] Date: 04/04/03 02:33 ID: YIsbXhNT Be:
Objective-CはC++と違って実行時決定で
定義していないメソッドを呼んでもコンパイルエラーにならないから
慣れてないと分かりにくいかも知れない。

そのかわり柔軟なdelegateとか定義できるみたい。
C++でテンプレートを駆使してdelegateやってるのを見ると涙ぐましい。
700 Name: 名称未設定 [sage] Date: 04/04/04 22:03 ID: Do3WZ3ap Be:
NSArrayControllerにプログラムでオブジェクト追加/削除していてしかも、オブザーバーにも
設定しているんですが、削除時に以下のエラーメッセージが実行ログ中に出力されます。なんが悪いんでしょうか?

An instance 0x35e2f0 of class MyClass is being deallocated while key value observers are still registered with it. Break on _NSKVODeallocateLog to start debugging.

追加削除のコードはこんな感じ
- (IBAction)add:(id)sender {
MyClass *anObject = [[[MyClass alloc] init] autorelease];
[self registerForChangeNotification:anObject];
[sourceController addObject:anObject];
}

- (IBAction)remove:(id)sender {
MyClass *anObject = [[sourceController selectedObjects]
objectAtIndex:0];
[self unregisterForChangeNotification:anObject];
[sourceController removeObject:anObject];
}

- (void)unregisterForChangeNotification:(id)anObject
{
[anObject removeObserver:self forKeyPath:@"value"];
}

- (void)registerForChangeNotification:(id)anObject {
[anObject addObserver:self
forKeyPath:@"value" options:NULL context:NULL];
}

こうしているのは、このクラス(MyClassとは違う)でMyClassの各インスタンスが
変更されたときに処理をしたいからなんですけど。unregisterがうまくできていない感じです。
sourceControllerはNSArrayControllerです。
701 Name: 名称未設定 [sage] Date: 04/04/05 15:27 ID: dQGtNS2z Be:

> - (IBAction)add:(id)sender {
> MyClass *anObject = [[[MyClass alloc] init] autorelease];
> [self registerForChangeNotification:anObject];
> [sourceController addObject:anObject];
> }

ここで anObject を -autorelease しているが、大丈夫か?

sourceController の addObject: で retain されていればいいのだが、
そうでなければ直近の AutoreleasePool が release されたときにこの
anObject は dealloc されてしまうぞ。

エラーメッセージから察するに、どこかで retainCount の数え間違い
をしていて、既に解放されたオブジェクトを delete しようとしている
感じだ。

ここらへんの問題を解きたいなら素直に ObjectAlloc.app を使うべし。

702 Name: 名称未設定 [sage] Date: 04/04/05 18:19 ID: bSiHsnHi Be:
>while key value observers are still registered with it
というところから想像すると
anObjectにバインドしているviewオブジェクトがまだあるのに、
勝手にanObjectを解放するな、ということかも。

選択中のオブジェクトを削除するのは
- (void)removeObject:(id)object
ではなくて
- (void)remove:(id)sender
を使うのではないか?
703 Name: 名称未設定 [sage] Date: 04/04/06 01:27 ID: Rp3bx5N/ Be:
>701

ObjectAlloc.app使ってみました。よくわかりませんが、オブジェクトは
消したいところで消えますし、そうでないところではちゃんと残っています。

>702

remove:でも同じです。実は、Master-Detail表示にしているのでそれが
悪いのかもしれないんですけど、よくわかりません。

削除ボタンをNSArrayControllerのremove:に直接バインドしたときには
エラー表示はないのですが、別のオブジェクトにもNSArrayControllerの
数が変わったら通知がいくようにしたいので、add/removeともに
別オブジェクト経由にするようにしています。
704 Name: 名称未設定 [sage] Date: 04/04/06 11:28 ID: 7EzSwLY5 Be:

ふと思ったが

> [self unregisterForChangeNotification:anObject];
> [sourceController removeObject:anObject];

これ、逆の順番にしたらどうなる?
705 Name: 名称未設定 [sage] Date: 04/04/07 01:16 ID: 4pl6QBNU Be:
>704
同じでした。アドバイスありがとうございます。
706 Name: 名称未設定 [sage] Date: 04/04/07 14:17 ID: DONhoAQ6 Be:
ユーザがビューをスクロールさせた場合に、それをnotifyさせることはできないのでしょうか?
NSScrollViewにデリゲードがないみたいですので・・。
707 Name: 名称未設定 [sage] Date: 04/04/07 14:42 ID: RD1d4D0H Be:
前にMacOSX-DEV-MLにそんな話題があったよう。
結論は忘れたけど、ぐぐれば出てくるんじゃない?
708 Name: 名称未設定 [sage] Date: 04/04/07 15:44 ID: Yts/wyzN Be:
>> 706
[[NSNotificationCenter defaultCenter] addObserver:observer selector:@selector(frameChange:) name:NSViewFrameDidChangeNotification object:[scrollview contentView]];
でどうさ。
709 Name: 名称未設定 [sage] Date: 04/04/07 16:00 ID: DONhoAQ6 Be:
>707-708
ありがとうございます。
NSViewFrameDidChangeNotificationではなくNSViewBoundsDidChangeNotification
にしたら、上手く動作するっぽいことが分かりました。
710 Name: 708 [sage] Date: 04/04/07 16:25 ID: Yts/wyzN Be:
訂正
(NSClipView *)[scrollview contentView] ×
(NSView*)[scrollview documentView] ○
711 Name: 名称未設定 [sage] Date: 04/04/07 17:30 ID: lSRMgYqr Be:
>>700
話の本筋からは若干はなれるんだけどさ、
add: remove:の中でノーティフィケーション登録するよりは
MyClassのinit / deallocのタイミングで登録した方がスマートでは?
MyClassがノーティフィケーションを発行するかなにかして。
そうすれば自前のadd: remove:を準備する必要も無いし。
712 Name: 名称未設定 [sage] Date: 04/04/07 18:13 ID: lSRMgYqr Be:
>>700
>MyClass *anObject = [[sourceController selectedObjects] objectAtIndex:0];
って本当に正解?
今似たようなことやってたら
[[NSArrayController selectedObjects] objectAtIndex:0]
で、NSCFDictionaryが出てきたぞ?
俺の問題かもしれんが
713 Name: 712 [sage] Date: 04/04/07 18:23 ID: lSRMgYqr Be:
>[[NSArrayController selectedObjects] objectAtIndex:0]
>で、NSCFDictionaryが出てきたぞ?
NSArrayControllerのObject Class Nameを設定し忘れてただけだった。
逝ってきます・・・
714 Name: 名称未設定 [sage] Date: 04/04/08 20:18 ID: z7zxMbwK Be:
>711

ありあがとうございます。試してみましたが、うまくゆきません。

An instance 0x3af970 of class MyClass is being deallocated while key value observers are still registered with it. Break on _NSKVODeallocateLog to start debugging.

unregisterするメソッドにNSLogを書くとこのメッセージの後にデバッグメッセージを表示します。

そしてその後、アプリケーションは異常終了SIGSEGV。

ちなみに、(修正前の)上記メッセージが出ているだけではアプリケーションは
何事もなく動作を続けています。
715 Name: 名称未設定 [] Date: 04/04/09 13:33 ID: MQmqarYG Be:
一つ質問なのですが、別のウィンドウをクリックしてドキュメントが切り替わったときに、
例えば色を薄くするとかの処理を行いたいときは、どこをいじればよいのでしょうか?

・・下がりまくってるのであげます。
716 Name: 名称未設定 [sage] Date: 04/04/09 15:52 ID: FYeAChj3 Be:
色を薄くする対象はウィンドウそのもの?それともウィンドウに載っている部品?
717 Name: 名称未設定 [sage] Date: 04/04/09 17:13 ID: SY6mUREF Be:
>714
そもそもregisterとunregisterに問題があるのでは?
registerしてすぐにunregisterしてもちゃんと動く?

>715
NSWindowDidResignKeyNotification
NSWindowDidResignMainNotification
718 Name: 名称未設定 [sage] Date: 04/04/10 13:36 ID: XXEbxbvU Be:
>717
ありがとうございます。

もちろん、更新処理は呼び出されませんが、同じようにエラーがでました。
そもそもremoveObserverができていないようです。

マニュアル等見直してみます。
719 Name: 名称未設定 [sage] Date: 04/04/10 14:47 ID: 905CPMTU Be:
全く関係ない話だけど、マルチドキュメントのアプリケーションを作っていて
NSDocument を NSNotificationCenter に observer として登録していたんだが、
NSDocument を閉じる時に observer を解除するのを忘れてしまい、
それでアプリケーションが落ちまくって原因が分からずに困った覚えがある。
NSNotificationCenter が既に存在しない observer に通知を投げようとしてたんだな。
720 Name: 名称未設定 [sage] Date: 04/04/10 19:44 ID: GxB5bGeR Be:
SketchはdeallocでremoveObserverしていたよーな?
721 Name: 名称未設定 [sage] Date: 04/04/11 00:12 ID: y6w1FBE2 Be:
俺は登録してようがしてまいがdeallocで必ず
[[NSNotificationCenter defaultCenter] removeObserver:self]してる
722 Name: 名称未設定 [sage] Date: 04/04/14 09:26 ID: UHzWjM26 Be:
NSTextVewなどによる文字単位や単語単位や行単位での文字列操作のメソッドを網羅していきたいのですが、
こういう場合に調べる方法がわからないのでアドバイスかヒントをお願いします。

書籍、Webページ、DevelopTool内のファイル、ヘルプなど、どういった物をどのように活用して
「こういうメソッドがあって、こう使える」と理解していけばいいでしょうか。
723 Name: 名称未設定 [sage] Date: 04/04/14 10:27 ID: LIn1rwIw Be:
>722
ADCのページ見れば一目瞭然だが。
「Text & Font」 って書いてあるし。

Cocoa だけじゃ全部は出来ないけどさ。

盲点なのは 「Unicode Utilities」かな。
724 Name: 名称未設定 [] Date: 04/04/15 01:56 ID: YUjIVpkv Be:
NSUserDefaultControllerを使ってPreferenceの中のある項目にバインディングしようとしてるんですが
Model Key Pathを items.anItem.title のようにドットで区切ってもdictの中を読んでくれません(itemsとanItemはdict、titleはstringだとして)
prefを保存すると <key>items.anItem.title</key> というようにそのままkeyにされてしまいます。
どのへんが間違っているんでしょうか?
725 Name: 名称未設定 [sage] Date: 04/04/15 11:24 ID: 3HrQT3oP Be:
NSOutlineViewを使ってるのですが、どうもデフォルトでは
ダルブクリックで名前変更するみたいです。
Finderのように時間を置いて2回クリックすると名前変更するようにして、
ダブルクリックではまた違う動作をさせたいのですが、どうすれば良いのでしょうか?
726 Name: 名称未設定 [sage] Date: 04/04/15 20:18 ID: uGbcnDSo Be:
>>724
Model Key Pathはdictionaryを指定するんじゃなくてdictionaryのkeyを指定するんだ。

>>725
setDoubleAction:でダブルクリックしたときに呼び出すメソッドを指定。
727 Name: 726 [sage] Date: 04/04/15 20:23 ID: uGbcnDSo Be:
>>725
ごめん。出来なかった。
728 Name: 名称未設定 [sage] Date: 04/04/15 22:08 ID: ep3CGG5T Be:
>725
>NSOutlineViewを使ってるのですが、どうもデフォルトでは
>ダルブクリックで名前変更するみたいです。
IBでアウトラインビューのヘッダをダブルクリックしてEditableのチェックを外す。

>Finderのように時間を置いて2回クリックすると名前変更する
自分でなんとかする
選択状態でさらにクリックされたら該当するセルを編集状態にする、ってところか。
セルを編集状態に切り替える方法は知らない。
調べたら教えてくれ。

>ダブルクリックではまた違う動作をさせたい
setDoubleAction:
729 Name: 名称未設定 [sage] Date: 04/04/15 22:58 ID: YUjIVpkv Be:
>>726
ええと、plistの中に

<key>items</key>
<dict>
   <key>anItem</key>
   <dict>
      <key>title</key>
      <string>XXXXXX</string>
   </dict>
</dict>

こんな感じに設定が入っていて、UserDefaultController経由で
このXXXXXXにバインディングしたいということなんです。
Controller Keyはデフォで values になっていますから
values.items.anItem.title でXXXXXXが取れるかなと思うんですが...
730 Name: 名称未設定 [sage] Date: 04/04/15 23:31 ID: cg9uYc0t Be:
>>729
plistをそういう構造にする必要があるのか。
バインディングしたいてことはkeyの名前は決め打ちなんでしょ?
<key>items.anItem.title</key>
<string>XXXXXX</string>
てすれば楽じゃん
731 Name: 722 [sage] Date: 04/04/16 16:42 ID: ei118ilA Be:
>>723
どうもありがとう。
ADC広過ぎ深過ぎ‥‥とりあえずしばらく悶々と探索します。
732 Name: 名称未設定 [] Date: 04/04/17 12:47 ID: VZY2HDFR Be:
developer.apple.comは検索エンジンにGoogle使ってるから、結構正確で便利。
733 Name: 名称未設定 [sage] Date: 04/04/19 21:50 ID: c8vhbK9s Be:
ファームウェア(みたいなもの)を作ろうと思っています。

(a)Cocoa Application としてIBを使って組んだプログラム。
(b)Foundation Tool として組んだプログラム。

(a)はダブルクリックで、(b)はターミナルからそれぞれ実行できるものとします。
(a)を起動しっぱなしにして、(a)の内部で必要な時に(b)を呼び出して実行する、
という連動方式を考えているんですけど、
(a)から直接(b)を実行するには‥‥どうすればいいのでしょう?
734 Name: 名称未設定 [sage] Date: 04/04/19 22:08 ID: /RPJo1xS Be:
>>733
一番簡単なのはsystem()
735 Name: 名称未設定 [sage] Date: 04/04/20 01:28 ID: E+IgtF4Z Be:
質問です。
appendStringなのですが最初UTF8をエンコーディングに使い、もしnilを返すようだったら
適当なエンコーディングを(MacJapaneseやMacRoman等)推測させたいのですが可能でしょうか。

@implementation NSMutableData (String)
- (void) appendString: (NSString*) value; {
[self appendData: [value dataUsingEncoding: NSUTF8StringEncoding]];
}
@end
736 Name: 名称未設定 [sage] Date: 04/04/20 13:40 ID: jGlmBmYy Be:
>>733
NSTaskだな。
737 Name: 名称未設定 [sage] Date: 04/04/20 16:52 ID: RjwTIw59 Be:
凄く初歩てきな質問だと思うのですが・・・

SafariやCocoMonarの初期設定みたいに、
アイコンをクリックするだけでぐにょ~んとウィンドウが伸びちじみして
それぞれのウィンドウを下に表示するのはどうすればいいのでしょうか?

どうか教えてください!
738 Name: 名称未設定 [sage] Date: 04/04/20 17:04 ID: jGlmBmYy Be:
NSSizeの定義は

typedef struct _NSSize {
   float width;
   float height;
} NSSize;

とありますが、例えば以下のようにして、構造体でオブジェクトを
扱うにはどうすればいいのでしょうか?
(以下の定義の仕方は正しいのでしょうか)

typedef struct _MYStruct {
   MyObject *obj;
} MYStruct;
739 Name: 名称未設定 [sage] Date: 04/04/20 18:07 ID: zTltcatD Be:
>738
> (ry 構造体でオブジェクトを
> 扱うにはどうすればいいのでしょうか?

なぜそのような奇怪なことがやりたいのでしょう?
740 Name: 名称未設定 [sage] Date: 04/04/20 20:03 ID: nEhZfz5R Be:
>>738
どうすればいいのでしょうかって、そのまんまじゃないのか?
MyObject * はしょせんはポインタなんだから。
741 Name: 名称未設定 [sage] Date: 04/04/20 20:52 ID: RjwTIw59 Be:
>>737は相手にされない程(ry
742 Name: 名称未設定 [sage] Date: 04/04/20 21:14 ID: o/lO2gWj Be:
奇怪ってこともないと思うけど
それでできるだろ、きっと。
743 Name: 名称未設定 [sage] Date: 04/04/20 21:19 ID: OoJ/C4R9 Be:
>> 737, 741
NSWindowの
- (void)setFrame:(NSRect)frameRect display:(BOOL)displayFlag animate:(BOOL)animationFlag

試してないがたぶんこれだろう
744 Name: 名称未設定 [sage] Date: 04/04/20 22:11 ID: o1a0IZh0 Be:
>>734
>>736
有難うございますm(_ _)m。
呼び出して待つだけならSystem()、マルチタスクで動かすならNSTask()という感じでしょうか。
後者はタスク管理の壁がそびえ立ってますが、前者なら手近っぽいのでサンプル作ってみます。

探していたらexecve()というのが自分の求めている答えのような気がしてきました‥‥が、
これも試行錯誤してからですね。
745 Name: 名称未設定 [sage] Date: 04/04/20 22:30 ID: 6uwPzzuA Be:
exec系は正常に実行できた場合帰ってこないので、fork()してからなんだけど、
初心者にはおすすめできないのでsystem()が手っ取り早い。
746 Name: 名称未設定 [] Date: 04/04/20 22:52 ID: +G4q+HL9 Be:
ところで、CocoaではSIGCHLDとかSIGPIPEとか、あの辺の
扱いはどうなっているの?
747 Name: 名称未設定 [sage] Date: 04/04/21 07:16 ID: hmS4g+cv Be:
>>743
ありがとうございます。
748 Name: 名称未設定 [sage] Date: 04/04/21 18:04 ID: hmS4g+cv Be:
質問ですが、
メニューやボタンからPanelを表示させるにはどうしたらよいのでしょうか?
749 Name: 名称未設定 [sage] Date: 04/04/21 20:44 ID: 0WfaqEPD Be:
どういう Panel かにもよる。
具体的に書いたらどうか。
750 Name: 748 [sage] Date: 04/04/21 21:11 ID: hmS4g+cv Be:
>>749
どういう風に・・・
例えばアバウトダイアログをデフォルトのではなく自作のを表示したり、
普通のパネルを出したりしたいので・・・
751 Name: 名称未設定 [sage] Date: 04/04/21 21:22 ID: Wp043tUe Be:
>>750
悪いが一度自分で調べてから来ることを勧める。
752 Name: 名称未設定 [sage] Date: 04/04/21 21:35 ID: OS8Qkh41 Be:
>>745
似た用途の関数にstdlib系とunix系があるんですね。

↓横道にそれます・・・

確認用の単純なサンプルを作ろうと思い、Foundation Toolで自動生成されるソースの、
NSLog(@"Hello, World!");の部分をNSBeep();に置き換えてみると、
エラー Undefined symbols:_NSBeep が出ます。
#import <Cocoa/Cocoa.h>や#import <AppKit/AppKit.h>などを試しても同様です。

何をimportすればいいのか、それとも方法が間違いなのか("Foundation" Toolという
プロジェクト区分が気にかかる……)、よく分かりません。
続け質問ですみませんが、指摘をお願いします。
753 Name: 名称未設定 [sage] Date: 04/04/21 21:37 ID: OS8Qkh41 Be:
>>748
NSApp beginSheet: の指定次第でいろいろできるようです。
754 Name: 名称未設定 [sage] Date: 04/04/22 00:41 ID: B0f6VP9g Be:
>>748
>>753
おまいら二人ともちゃんと本買って1から勉強汁
755 Name: 名称未設定 [] Date: 04/04/22 12:40 ID: xdUJmYNF Be:
>>752
importとは別に、必要なフレームワークをプロジェクトに登録する必要がある。
/System/Library/Frameworks/Cocoa.frameworkフォルダを
External Frameworks and Librariesのところにドラッグ&ドロップする。
756 Name: 名称未設定 [sage] Date: 04/04/25 00:37 ID: Ir6cr2JG Be:
アクセス規制とけた‥‥

>>754
やっぱそうですね。

>>755
ありがとうございます。frameworkの扱い方の何が自動で何が手動なのか
漠然としていたのですが、助言で視界が開けてきました。

ターミナル無しで実行を確認できるFoundation Toolを(NSBeep()も含め)
数種類作って、Cocoa Applicationからsystem( )で一行コマンドを渡して
それらを実行させてみてみました。問題なしです。
argumentを判別させて結果ファイルを吐き出すところまで動いたので、
あとは結果ファイルをCocoa Application側に読み込ませれば、双方向の
連動ができそうです。
皆様ありがとうございました。m(_ _)m
757 Name: 名称未設定 [] Date: 04/04/28 10:02 ID: tfG0xXTy Be:
Objective-C プログラミング言語 日本語訳。質はどうだ?
http://developer.apple.com/ja/documentation/cocoa/Conceptual/ObjectiveC/index.html
http://developer.apple.com/ja/documentation/japanese.html
758 Name: 名称未設定 [sage] Date: 04/04/28 14:08 ID: 1jltvPS7 Be:
>>757
をぉやっとかぁ。
まぁ、原文と引き当てながら読んでいけば誤訳はなんとかなるって事で。

要するに無いよりマシってことで。
759 Name: 名称未設定 [sage] Date: 04/04/28 14:17 ID: tfG0xXTy Be:
んじゃやらんぞ。
760 Name: 名称未設定 [sage] Date: 04/04/28 22:34 ID: 1jltvPS7 Be:
てか2003年の9月ってなんでもっと速く晒せないんだよorz
761 Name: 名称未設定 [sage] Date: 04/04/30 19:51 ID: /MsFc1+I Be:
原文の日付のままなんじゃねーの?と擁護してみるテスツ。
それよりPDF版がないのはなんでじゃろ。
762 Name: 名称未設定 [sage] Date: 04/05/01 08:29 ID: v9rMgDhI Be:
複数ページのHTML=>1ファイルのPDF、の良いソフト無い?
763 Name: 名称未設定 [sage] Date: 04/05/01 16:30 ID: lNwaZkML Be:
>>761
英文のもCocoa関係はHTMLオンリーのが増えて来たね。
どうもPDFを晒しておくと自前印刷する奴ばかりで印刷物が売れないとか思ってるのか
オンライン参照しつつコード書けと言いたいのかわからんが。

PDFあると楽だよね。リファレンス系じゃなくてこういう読み物系は特に。
764 Name: 名称未設定 [] Date: 04/05/02 02:21 ID: xa+EQfZw Be:
ムービーの上に線や絵を描いてそれをムービーに書き出すことしたいんです。
ようは、テレビのスポーツ番組で解説者がやっているようなことをCocoaとQuickTimeをつかって
やりたいのだけれど誰か参考になるようなサンプルしりませんか?
765 Name: 名称未設定 [sage] Date: 04/05/02 03:55 ID: WYaRraZS Be:
Movie上に絵やテキストを書く
http://developer.apple.com/samplecode/Movie_Overlay/Movie_Overlay.html
NSImageからMovieを作る
http://developer.apple.com/samplecode/CocoaCreateMovie/CocoaCreateMovie.html
766 Name: 名称未設定 [sage] Date: 04/05/02 19:58 ID: MfIFBWD/ Be:
NSって何の略だい?
767 Name: 名称未設定 [sage] Date: 04/05/02 20:17 ID: VsbX5VBA Be:
NeXTSTEP
768 Name: 名称未設定 [sage] Date: 04/05/03 13:21 ID: Ywf4Szct Be:
>>767
NEXTSTEPな。
769 Name: 名称未設定 [sage ] Date: 04/05/05 11:39 ID: /M1pz76A Be:
>>767
「なんばしよっと!」の略
770 Name: 名称未設定 [sage] Date: 04/05/05 14:27 ID: k7HLPEP7 Be:
野島伸司の略
771 Name: 名称未設定 [sage] Date: 04/05/06 03:00 ID: LFPiyUjY Be:
ナショナルセミコンダクター
772 Name: 名称未設定 [sage] Date: 04/05/06 07:38 ID: XqSDhuD1 Be:
ナイクロソフト
773 Name: 名称未設定 [sage] Date: 04/05/07 01:41 ID: exci8N7o Be:
なんじゃそりゃ
774 Name: 名称未設定 [sage] Date: 04/05/07 09:54 ID: 2Lr+cUCq Be:
なますて
775 Name: 名称未設定 [sage] Date: 04/05/08 01:41 ID: mMLkAO+e Be:
質問です.
他のアプリケーションがアクティブで、
そのアクティブなウィンドウの座標やサイズを取得するにはどのようにしたらいいのでしょうか。
ご教授お願いします.
776 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:33 ID: evr+56Sy Be:
ななししね の縦読みコピペを表示するプログラムを作ろうしてるんですが、うまいこといきません

#import "Test.h"

@implementation Test
NSMutableString* stringer;
NSMutableArray* nanasisine;
int cnt;

- (IBAction)progress:(id)sender
{
NSString* bun;
NSString* a;
bun=[nanasisine objectAtIndex : cnt];
[stringer appendString : bun ];
[stringer appendString :@"¥n"];
[ writeTexts setStringValue : stringer ];
777 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:33 ID: evr+56Sy Be:
cnt ++;
if (cnt==5)
{
[endTexts setEnabled : NO];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Nanasisine"
value :nil
table : nil ];
[stringer appendString : a];
[writeTexts setStringValue : stringer ];

}
}
778 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:34 ID: evr+56Sy Be:
-(void) applicationDidFinishLanching : (NSNotification *) aNotification
{
NSString* a;
cnt = 0;
stringer = [NSMutableString string];
nanasisine = [ NSMutableArray array];

a=[[NSBundle mainBundle ]
localizedStringForKey : @"Naa"
value :nil
table : nil ];
[ nanasisine addObject : a ];
779 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:35 ID: evr+56Sy Be:
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Nannka"
value :nil
table : nil ];
[ nanasisine addObject : a ];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Shindahouga"
value :nil
table : nil ];
[ nanasisine addObject : a ];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Shinoukana"
value :nil
table : nil ];
[ nanasisine addObject : a ];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Nee"
value :nil
table : nil ];
[ nanasisine addObject : a ];
}
@end
780 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:37 ID: evr+56Sy Be:
/* Test */

#import <Cocoa/Cocoa.h>

@interface Test : NSObject
{
IBOutlet id endTexts;
IBOutlet id writeTexts;
}
- (IBAction)progress:(id)sender;
@end

ちなみに、endTextsはボタンに
writeTextsはテキストフォームにつながってるアウトレットです
progress:はボタンをクリックした時に発動するアクションです

なぜかうまく動きません
781 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:38 ID: evr+56Sy Be:
説明不足でした
>>780がヘッダファイル
>>776->>779がmファイルです
782 Name: ◆x3PtJI4Jik [] Date: 04/05/08 02:41 ID: evr+56Sy Be:
2004-05-08 02:38:55.554 Foo[2581] *** Assertion failure in -[NSTextFieldCell _objectValue:forString:], AppKit.subproj/NSCell.m:1079
2004-05-08 02:38:55.563 Foo[2581] Invalid parameter not satisfying: aString != nil

ボタンをクリックするとこんなエラーが出ます
ちなみに
そしてテキストフォームにはなんの変化も起こりません
783 Name: 名称未設定 [sage] Date: 04/05/08 02:59 ID: n3L7Z4tv Be:
>>776
stringerとnanasisineを生成したときにretainしとけ
Objective-C をやり続けたいなら retain release alloc dealloc init~ ファクトリメソッド
をしっかり学べ
784 Name: ◆x3PtJI4Jik [] Date: 04/05/08 03:19 ID: evr+56Sy Be:
>>783
いまそれを試してみました
[stringer retain];
[nanasisine retain];
をそれぞれ
stringer = [NSMutableString string];
nanasisine = [ NSMutableArray array];
の後に入れてみました

でもやっぱり同じエラーが出ます
785 Name: 名称未設定 [sage] Date: 04/05/08 04:04 ID: T1sKqmab Be:
>>784
applicationDidFinishLanchingがちゃんと呼ばれているか確認した?
786 Name: ◆x3PtJI4Jik [] Date: 04/05/08 05:03 ID: evr+56Sy Be:
>>785
現在解決しました
あなたの発言がズバリでした

呼ばれてませんでした

原因を調べた所

×…-(void) applicationDidFinishLanching : (NSNotification *) aNotification
○…-(void) applicationDidFinishLaunching : (NSNotification *) aNotification

のミスでした
しかし、これってなんでメイクした時にエラーになんなかったんだろう...
787 Name: 名称未設定 [sage] Date: 04/05/08 10:52 ID: DVaUkT/D Be:
applicationDidFinishLanching
が何かのNotificationから呼ばれるかもしれないから。
788 Name: 名称未設定 [sage] Date: 04/05/08 10:56 ID: 2buZePqT Be:
>>786
エラーは出ないけど警告は出てるでしょ?

Obj-Cはダイナミックバインドがあるから、コンパイル時、リンク時に
存在しないメソッドを呼べるのでエラーにできないんだよね。
カテゴリがローダブルバンドル上に存在してるとかあるから。
789 Name: 名称未設定 [sage] Date: 04/05/08 17:22 ID: YMMC0UeA Be:
Interface builderの話なので板違いかもしれませんが、
すごく初歩なところでつまずいています。

簡単なサンプルを作ろうとしてボタンを配置したのですが、
そこからコネクションを張ろうと思い、コントロールキーを
押しながらドラッグしてもコネクションラインがでません...

本見ながらやってるので、見落としはないと思うのですが何か
設定がいるのでしょうか?
790 Name: 名称未設定 [sage] Date: 04/05/08 18:20 ID: WXL1KZjv Be:
>>789
Carbon 用の nib を新規に作ったとか。
791 Name: sage [] Date: 04/05/08 21:23 ID: zr47uqxF Be:
Cocoaまったくの初心者です。
簡単なファイルダウンローダーを作ろうと思い、
NSURL *url = [ NSURL URLWithString : [ vUrl stringValue ] ];
NSURLRequest *req = [ NSURLRequest requestWithURL : url ];
NSURLDownload *dl = [ [ NSURLDownload alloc ] initWithRequest : req delegate : self ]
として、みんな自動でやってくれるので凄く便利なのですが、
User-Agentを残さないのも失礼なことと思いまして、
NSMutableURLRequestを使えばUser-Agentを設定できるかと思ったのですが、
サンプルコードもないし、どうにもこうにもなりません。
NSMutableURLRequestの使い方、ご教授願えないでしょうか?
792 Name: 名称未設定 [] Date: 04/05/08 21:51 ID: BvQBHnDr Be:
Cocoaはさっぱり森永♪
793 Name: 789 [sage] Date: 04/05/08 23:29 ID: YMMC0UeA Be:
>>790
いやーそれはなかったです。
試しにCocoa-Java Appでもやってみましたが、同じでした。
なんでですかねぇ・・・(鬱
794 Name: 名称未設定 [sage] Date: 04/05/09 02:45 ID: NueccsFn Be:
>>789
昔それあってあせった。
再インストールしたら直った。
795 Name: ◆x3PtJI4Jik [] Date: 04/05/10 04:07 ID: qK8/nGS9 Be:
全然関係ないけどこんなの作った

ttp://www.pandora.nu/tv/src/img20040510035842.sit
NSButton反応わるっ...
糞ゲーと化してしまったw
796 Name: 名称未設定 [] Date: 04/05/10 15:56 ID: hX7fF32k Be:
NSTableView内のセルを自前で描画しようと、NSTextFieldCellのサブクラスを
作り、-drawInteriorWithFrameを上書きしてみました。
とりあえず望む通りの描画は出来たのですが、こんどはダブルクリックで
編集状態に持っていくことが出来なくなりました。

これを両立させるのってどうやればいいのですか?
NSTextFieldCellのサブクラスにしたのがいけないのでしょうか。
797 Name: 796 [] Date: 04/05/11 18:46 ID: 1wyLqoTp Be:
誰か・・ヘルプミーあげ。

なお、編集状態に持っていける普通のセルはNSTextFieldCellで間違いないことは
その後の調べでわかりました。
かつ、NSTextFieldCellのサブクラスとして作っただけ(何も実装していない)のセルでも
やはり編集状態に出来ないということもわかりました。

編集状態に入る前に、セルの-setUpFieldEditorAttributesが呼ばれるらしいのですが
自前のセルの場合は、これを実装しても、ここに処理が飛んできてくれませんでした。
わざわざ「フィールドエディタをカスタマイズするならこのメソッドを上書きして」と
書いてあるくらいだから呼ばれるのが普通だろうと思ったのですが..,。

うーん、むずい。
798 Name: 名称未設定 [sage] Date: 04/05/11 18:54 ID: +9vHBxme Be:
アホなこと聞くかもしらんけど、setEditable の属性は YES になってる?
799 Name: 796 [] Date: 04/05/11 19:25 ID: 1wyLqoTp Be:
レスありがとうございます。
一応、NSTextFieldCellでなら普通に編集できているコードで、自前のセルに置き換えてるだけ
なので大丈夫かと思いましたが、念のため自前のセルを-isEditableに常にYESを返すように
してみました。
特に変化はありませんでした(T.T)
800 Name: 名称未設定 [sage] Date: 04/05/11 19:29 ID: +9vHBxme Be:
サブクラスの isEditable で YES を返すんじゃなくて、
-(void)awakeFromNib{
[[[hogeTableView tableColumnWithIdentifier:@"piyo"] dataCell] setEditable:YES];
}
こんな感じにしてみたらどうなる?
801 Name: 796 [] Date: 04/05/11 19:43 ID: 1wyLqoTp Be:
あれれれ、いけました!!!
サブクラスを作るとデフォルトでeditableがNOにセットされているのでしょうか??
とにかくありがとう!!
802 Name: 名称未設定 [sage] Date: 04/05/12 04:05 ID: s8Hz9LiT Be:
ログ読了。
漏れもぷよ発売に合わせてゲームを作りたい訳だがココアからジョイパッドの入力って読めるのか?
ADCにあるRed_Rocket.sitはカーボンだがやっぱりカーボンから触らないと無理なのか?
803 Name: 名称未設定 [] Date: 04/05/12 23:48 ID: gxwglvKW Be:
質問です。
NSMatrixのなかにNSTextFieldCell。そのフィールドに入力が有ったらメソッド(?)を呼びたいのですが、
デリゲートをつかうんですよね?んでこの辺かなと、、、
-(void)textDidBeginEditing:(NSNotification *)notification
- (void)textDidEndEditing:(NSNotification *)notification
なんですが、ぜんぜん呼び出されません。

やったことはといえば 
IBでNSMatrixからFile's Ownerに線を引っ張って、Outlet >> delegate 
MyObject.mに
-(void)textDidBeginEditing:(NSNotification *)notification
{ NSLog(@"123456""); }

なんか基本的に間違ってますか?
804 Name: 名称未設定 [sage] Date: 04/05/13 01:05 ID: cKKFd/ix Be:
NSControlTextDidBeginEditingNotification
NSControlTextDidEndEditingNotification
を拾ってくればいいんじゃないか。
805 Name: 名称未設定 [sage] Date: 04/05/13 10:00 ID: wiStvlQz Be:
>>803
よくやるポカはインスタンスがないとか
806 Name: 名称未設定 [sage] Date: 04/05/13 10:45 ID: 3PJutXzE Be:
>803
実はメインの Nib でFile's Owner が NSApplication。
807 Name: 名称未設定 [sage] Date: 04/05/13 11:26 ID: LeaD/Nnw Be:
>>803
NSMatrixにつないでも意味無いんじゃね?
NSTextFieldCellを直接つながないと。
808 Name: 名称未設定 [sage] Date: 04/05/13 13:15 ID: YFI2H9kn Be:
>>803
NSMatrixをサブクラス化。delegateと同名のメソッドが
定義されているのでオーバーライドしてdelegateに流す
とかすればいいかな?
809 Name: 807 [sage] Date: 04/05/13 20:31 ID: SDTX2CLf Be:
NSCellにはdelegateもnotificationも無かった。
適当なこと言ってスマソ。
でもNSMatrixは編集は感知しないんじゃないかなあ?
810 Name: 803 [] Date: 04/05/13 21:16 ID: f0RPqIvW Be:
>>804-809さん、ありがとです。
でもさっぱり意味が分かりません(笑)
>>804さん
-(void)textDidBeginEditing:(NSNotification *)notification
のかわりに
-(void)NSControlTextDidBeginEditingNotification:(NSNotification *)notification
ってことですか?やってもかわりませんでした。
>>805さん
インスタンスは、NSObjectのサブクラス(MyObject)のインスタンスを一つ作っただけです。
サブクラスはNSObjectのしか作ったこと有りません。っていうかまだ作る意味がわかりません。
>>806さん
Nibは一つしかありません。File's Owner は NSApplicationだとおもいます。だめなの??
>>808さん
NSMatrixをサブクラス化。んで、いろいろつないでみたんですけどさっぱりわかりません。
>>807,809さん
CocoaBrowserでNSMatrixのInstanceMethodsってとこみると-textDidEndEditingってのが
あるんだけどだめなのかな?

>>805,806,808あたりだと思うんだけど、むつかしいです。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
ってのは動いたんだけどな。う~ん。本みてものってないし。

NSMatrixでNSTextFieldCellをたくさん作って、そこに数字をいれてtabKeyを押すと
その数字を評価してくれるってのを作りたいんですけど。
アフォでもわかるように説明もらえないでしょうか?


811 Name: 名称未設定 [sage] Date: 04/05/13 21:17 ID: vzXdNwYa Be:
>>803
// matrix delegate
- (void)controlTextDidBeginEditing:(NSNotification *)aNotification;
- (void)controlTextDidEndEditing:(NSNotification *)aNotification;

Reference NSControlのDelegate Method Typesをみるよろし
matrixからdelegateにconnectつなげるだけでOk
812 Name: 807 [sage] Date: 04/05/13 21:38 ID: SDTX2CLf Be:
>>810
>Nibは一つしかありません。File's Owner は NSApplicationだとおもいます。だめなの??
なんだ、つないでる先が違うよ。
MyObjectをdelegateにしたいのに、NSApplicationをつないでdelegateにしてもダメだろうに。
MyObjectをNSMatrixのdelegateにしないと。
813 Name: 803 [] Date: 04/05/13 21:47 ID: f0RPqIvW Be:
>>811さん ありがとです。
やってみたけどやっぱりだめです。
NSMatrixのサブクラスのインスタンスは必要なんでしょうか?
NSTextFieldCellになんか書いてtabKey押せば呼び出されるはずなんですよね?
814 Name: 803 [] Date: 04/05/13 21:57 ID: f0RPqIvW Be:
できた!!!
てんで見当違いのことやってたようでした。
>>812,813さんのいうようにやったらできました。
そうか、そうやってインスタンスってのが増えていくんだな。

ほうほう。なんかうれしいね。
ありがとうでした。
815 Name: 名称未設定 [sage] Date: 04/05/13 22:02 ID: cKKFd/ix Be:
一度参考書を通読した方が良さそうな気もするな。
delegate とかの基本的なことは載ってるだろうし。
816 Name: 796 [] Date: 04/05/13 22:27 ID: 2lTJ9fe+ Be:
ごめんなさい、さらに質問させてください。
自前のセルを描画する時って、強調表示されているかで色を塗り分けないと
いけないですけど、、ハイライト中の2種類の状態、つまり
「ウインドウがアクティブ&コントロールが選択中」と
「ウインドウがデアクティブ&コントロールが選択中」というのは
どうやって見分けるのでしょうか。

とりあえず、isHighlitedで条件分けすれば、選択中かどうかはわかるの
ですが、これではハイライトの2種類の状態を塗り分けることができません。
なにかisHighlited以外の判定メソッドなんかがあるのでしょうか。
817 Name: 名称未設定 [sage] Date: 04/05/13 23:58 ID: vzXdNwYa Be:
>>816
// cellのサブクラス
-(void)drawWithFrame:(NSRect)rect inView:(NSView *)controlView {
if ([self isHighlighted]) {
NSColor * color = [self highlightColorWithFrame:rect inView: controlView];
}
}
NSTableViewでテスト
ウインドウの状態によってhighlightColorWithFrameが
(NSColor*)alternateSelectedControlColor(active)
(NSColor*)secondarySelectedControlColor(deactive)を切り替えて返しますね。

818 Name: 816 [sage] Date: 04/05/14 00:40 ID: cLk32CuJ Be:
>>817
おぉ、ありがとうございます。
質問の内容はシステムカラーをそのまま使う方法なのではなかったのですが
デアクティブのときのカラーがsecondarySelectedControlColorだというのを
教えていただいたおかげで突破できました。

-(void)drawWithFrame:(NSRect)rect inView:(NSView *)controlView {
if ([self isHighlighted]) {
if([self highlightColorWithFrame:rect inView: controlView]==[NSColor secondarySelectedControlColor])
//デアクティブの時の描画
else{
//アクティブの時の描画
}
 }
}

こんな感じでいきました。とりあえず動いています。
ありがとう~。
819 Name: 817 [sage] Date: 04/05/14 20:06 ID: 94j9469S Be:
>>816
817の方だと他のviewにフォーカスが移るとinacitveになるので、windowのactive, inactiveのみで選択色をコントロールしたい場合
if ([self isHighlighted]) {
if ([[controlView window] isKeyWindow]) {
color = [NSColor selectedControlColor]; // active color
} else {
color = [NSColor secondarySelectedControlColor]; // inactive color
} }
の方がいいかな。
820 Name: 名称未設定 [sage] Date: 04/05/17 19:17 ID: CEXQPjwq Be:
メニューからアクションでアクションメソッドに飛んだ時に
モディファイアキーを押したかどうかをチェックするいい方法は
ないですか?

senderのNSMenuItemもNSMenuもResponderではないのでどうやって
取り出したらいいものか・・・。今はCarbonと混在させてGetKeys()
で取り出すという姑息で感心しない手段を使っています。
821 Name: 名称未設定 [sage] Date: 04/05/17 19:28 ID: 0WWOwyZ6 Be:
[NSApp currentEvent]から取り出すってのはどうだ?
822 Name: 名称未設定 [sage] Date: 04/05/17 19:29 ID: sG7Vk7PF Be:
NSEvent *event=[NSApp currentEvent];
unsigned int flags=[event modifierFlags];

こんな感じ。
823 Name: 名称未設定 [sage] Date: 04/05/17 19:29 ID: sG7Vk7PF Be:
かぶった……
824 Name: 名称未設定 [sage] Date: 04/05/17 19:47 ID: a8odNQwK Be:
たしか[NSApp currentEvent]はメニューバーのトラッキングを
始める前からモディファイアキーを押してないと取れない

IBのTreat as an alternate to the previous itemを利用して
ふたつMenuItemを作って別のactionに繋げれば楽だしメニュー
の表示も動的に変わって素敵(panther必須だっけか)
825 Name: 名称未設定 [sage] Date: 04/05/17 19:48 ID: KbdsjCcv Be:
>824
うむ。Treat as alternate...はPanther以降だね。
826 Name: 名称未設定 [sage] Date: 04/05/18 00:43 ID: e1SRKFuU Be:
スクリーンをキャプチャするアプリのソースってどっかにありませんか?
827 Name: 名称未設定 [sage] Date: 04/05/18 01:26 ID: LBfADff8 Be:
>>826
HMDTにあるやんけ
僕はNSTaskで/usr/sbin/screencaptureしてるが
828 Name: 名称未設定 [sage] Date: 04/05/18 03:46 ID: e1SRKFuU Be:
あ、ありました。HMDTに。
失礼しました。

829 Name: 820 [sage] Date: 04/05/18 10:49 ID: rfdShUYV Be:
>>821,822,824
ありがとう。提案された方法で試してみます。
830 Name: 820 [sage] Date: 04/05/18 11:14 ID: rfdShUYV Be:
試してみた結果です。

NSEventを使う場合、824が書かれたようにメニューをクリックする前に
モディファイアキーを押していないとイベントを取れず、また、押していた
場合でもメニューをプルダウンしている時にモディファイアキーをはずすと
逆にイベントが残ってしまうという問題がありました。難しいですね。

そこで824の提案のTreat as an alternate to the previous itemを
使うことにしました。ありがとうございました。
831 Name: 名称未設定 [sage] Date: 04/05/18 23:47 ID: IiHkJIBg Be:
広文社って無くなったの?
http://www.kobunsha.co.jp/ じゃ繋がらないが...
832 Name: 名称未設定 [sage] Date: 04/05/19 22:26 ID: 7O9X0qdY Be:
NSTableView に長い文字列を表示させようとしています。
その際、文字列を "abc...ghi" といった形で省略して表示させたいのですが、
どのようにすれば可能でしょうか。
Finder のリスト表示などは、そのような形の省略を行っているので、
どこかに設定する項目があるとは思うのですが。
833 Name: 832 [sage] Date: 04/05/19 22:55 ID: 7O9X0qdY Be:
表示する cell に NSAttributedString を設定することにより解決しました。
お騒がせしました。
834 Name: 名称未設定 [sage] Date: 04/05/20 07:38 ID: JDSX3JKR Be:
ファビコンってなんですか?
835 Name: 名称未設定 [sage] Date: 04/05/21 10:43 ID: Ai8hXPHa Be:
objectがdeallocされて解放されたことを確認する方法ってありますか?
retainCountはdealloc後では使えませんし、deallocしてもobjectの
ポインタは残骸として残っているのでobjectがnilかどうかでチェック
できません。

今はreleaseでdeallocした後、objectの変数にnilを入れてますけど
他に方法はないのでしょうか?
836 Name: 名称未設定 [sage] Date: 04/05/21 18:22 ID: iF+he85U Be:
>>835
>objectの変数にnilを入れ

それでいいんじゃない。
Objectの実態はCの構造体のポインターだから、インスタンスがなくなったら
存在自体がなくなるわけで、そうするしかないでしょう。

GnuStepならisaが0xdeadfaceになるようだが、Cocoaだと0x357bになるのか?
837 Name: 名称未設定 [sage] Date: 04/05/21 18:46 ID: 0ONr3/JO Be:
>>835
アクセスしてバスエラーが出たら、使われてないよ。きっと
signal()でSEGVトラップしておけば (W

838 Name: 名称未設定 [sage] Date: 04/05/21 19:56 ID: u8174Vfd Be:
フ ァ ビ コ ン っ て な ん で す か ?
839 Name: 名称未設定 [sage] Date: 04/05/21 19:56 ID: yQJ5zU8C Be:
>>835
>解放されたことを確認する
ということであればdeallocにNSLog入れるかNotificationを発行するか。
ポインタが指しているオブジェクトが生きているかどうかを見分けるのは無理じゃない?
解放されていたら何をポイントしているのかまったくわからないわけだから。
840 Name: 名称未設定 [sage] Date: 04/05/21 19:59 ID: yQJ5zU8C Be:
>>838
http://www.google.com/
841 Name: 名称未設定 [sage] Date: 04/05/21 20:41 ID: u8174Vfd Be:
>>840
死ね
842 Name: 名称未設定 [sage] Date: 04/05/21 21:59 ID: RMGaMnFz Be:
0xdeadface

16進数でありながら単語っぽい、すごい発想だなぁ。
843 Name: 835 [sage] Date: 04/05/22 12:12 ID: XsCEnXGV Be:
>>836,837,839
やはりnilを代入してチェックするしかないみたいですね。残念。
844 Name: 名称未設定 [sage] Date: 04/05/22 14:00 ID: q+GDWRyK Be:
Objective-Cでは、「メモリはプログラマ側が管理」という立場なので
別にnil代入にこだわらなくても自分で管理しやすいように設計すれば良い。

ただ、AutoreleasePoolにまかせられない局面が多発するような事態は
設計がダメダメな可能性が大
845 Name: 名称未設定 [sage] Date: 04/05/22 16:07 ID: T/v+O/hw Be:
>>842
0xdeadbeefのほうが一般的かと


846 Name: 名称未設定 [] Date: 04/05/24 17:30 ID: JgmoDEsJ Be:
Objective-CとC++の混合の仕方が分からないです。

以下のファイルを MyClass.h とします。

#import <Carbon/Carbon.h>
class MyClass
{
public:
MyClass();
~MyClass();
};

としまして、MyDocument.m (Objective-C)に

#import "MyClass.h"

と表記してコンパイルしても

error: parse error before "MyClass"
error: syntax error before '{' token

とかいうエラーが出てコンパイルできません。
一体どうすれば良いのでしょうか・・。
847 Name: 名称未設定 [sage] Date: 04/05/24 17:50 ID: ObOnTGkk Be:
>>846
ソースファイルの拡張子を .mm にする。次が参考になるかもね。
Cocoa_With_Carbon_or_CPP
ttp://developer.apple.com/samplecode/Cocoa_With_Carbon_or_CPP/Cocoa_With_Carbon_or_CPP.html
848 Name: 名称未設定 [sage] Date: 04/05/24 18:45 ID: o878uCjw Be:
Obj-Cアプリの動作速度をなんとか上げたいんだけど、手軽な最適化の道は何かありますか?
たとえば、mkinoさんとこのObj-C最適化のとこに載ってるみたいな、
クラスメソッドでオブジェクトを作らずに、allocとreleaseを使うとか
autoreleaseを使わないとか。そんな感じの。
849 Name: 名称未設定 [sage] Date: 04/05/24 22:55 ID: ByojBbx+ Be:
Computer Hardware Understanding Development Tools (CHUD Tools).
とかをつかって、遅い原因が何かを調べる。
原因があってそして個々に対策がある。
それがいやならG5 3GHzが出るのをまてば、お手軽に動作速度は向上する。
850 Name: 名称未設定 [sage] Date: 04/05/25 00:51 ID: jw/iO6MI Be:

小手先の最適化よりもアルゴリズムの見直しが先決。
以前見たのでは配列の先頭から1個ずつちんたら検索せんでも
バイナリサーチすりゃいいとか、ハッシュテーブル使えとか
アドバイスしたら?はぁなにそれ?とか論外な状況だったことあり。
851 Name: 848 [sage] Date: 04/05/25 08:03 ID: rSbyyP2z Be:
お二人さんありがとう。
CHUD、使い方がよくわからん・・。何かで解説が見れないものだろうか。
852 Name: 名称未設定 [sage] Date: 04/05/25 10:17 ID: JiJJrptn Be:
>851

ご自身が示したHMDTの訳物の最初の方に書いてる Sampler を使うのが第一歩。
完全なOOP(?)を目指すのか、速度のためにそれを犠牲にするか。

Obj-Cの場合、ダイナミックバインドのおかげでメソッド化せずに、
コピペしまくるほうが格段に速くなったりしますからね。

ある意味コピペ厨最強言語。(w
853 Name: 名称未設定 [sage] Date: 04/05/29 11:30 ID: vFrIZuF1 Be:
>>851
アルゴリズム改良にも、どこが遅いのかを知るのは重要。
Shark上げといて、ターゲット実行中(重い処理中)に、Start=>5秒後=>Stopでサンプリング。
あとは見りゃわかるでしょ。
854 Name: 名称未設定 [sage] Date: 04/05/29 16:06 ID: +IRhfLe+ Be:
NSView に他のNSViewをsubViewとして追加。
どんどん追加するから、追加でオーバーする分を
superViewをsetFrameSizeでサイズ変更ってやると
サイズ変更で増えた分の領域になにも表示されなくなるのよね。
再描画のタイミングを何回も見直したんで、その問題じゃないと思うんだけど。
リサイズしないで、superViewのサイズを2000とかにしておくと
追加されたViewは問題なく表示されるので、追加する部分の問題でもないと思う。

順番的には、
追加後のsuperViewのサイズを先に計算
superViewをリサイズ
subViewを追加
ってやってます。

誰かなにかアドバイスください。
855 Name: 名称未設定 [sage] Date: 04/05/29 17:54 ID: 2wJm4qz6 Be:
Object-Cでトリップ検索ソフトが作れますか?

と聞いてみる。でもやっぱりC++とかじゃないと無理なのかな?
856 Name: 名称未設定 [sage] Date: 04/05/29 18:04 ID: ItIoR4Uj Be:
>>854
全然分からないが、
-(void)setNeedsDisplay:(BOOL)flag;
を YES にするとかは?

>>855
作れるだろうが、既に存在するものを改めて作ってもなあ……
857 Name: 名称未設定 [sage] Date: 04/05/29 18:13 ID: 2wJm4qz6 Be:
>>856

あれ?Mac用ソフトはターミナル経由のtripperX以外にあったっけ?
858 Name: 名称未設定 [sage] Date: 04/05/29 18:16 ID: ItIoR4Uj Be:
>>857
まさに tripperx のことなんだが。
859 Name: 名称未設定 [sage] Date: 04/05/29 18:18 ID: 2wJm4qz6 Be:
>>858
いや、それはCUIでしょ?
GUIインターフェイスのやつはまだ開発されてないんでしょ?
860 Name: 名称未設定 [sage] Date: 04/05/29 18:21 ID: ItIoR4Uj Be:
>>859
たかがトリップを検索するのに GUI が必要なのかという気もするが。
まあ、需要があると思うなら作ってみれば?
861 Name: 名称未設定 [sage] Date: 04/05/29 21:22 ID: cqytOwaC Be:
>859
Xgridでおながいします。
862 Name: 名称未設定 [sage] Date: 04/05/30 06:35 ID: uvDjaKpl Be:
老婆心ながら、、
べつにC++で普通に開発できますよ。
正確にはC++じゃなくてObjective-C++なんだけど。

まあ、win板で「Cで開発って可能ですか?」と言っている奴もいるしなあ。
863 Name: 名称未設定 [sage] Date: 04/05/31 15:42 ID: EQ4/rYJQ Be:
NSEditor準拠のサンプルってないですか?
具体的には自作のNSControlで値を編集する時
準拠するにはどうしたらいいのかわからないんですが
864 Name: 名称未設定 [sage] Date: 04/05/31 15:51 ID: EQ4/rYJQ Be:
といいますか、NSEditorの
commitEditing
objectDidEndEditing:
discardEditing
objectDidBeginEditing:
の四つのメソッドの使うタイミングが掴めないんです。
865 Name: 名称未設定 [sage] Date: 04/06/01 00:17 ID: vaCykl2c Be:
>859
ASSで皮でも被せとけ。
866 Name: 名称未設定 [sage] Date: 04/06/01 21:24 ID: uC37oA7h Be:
NSFontをNSImageやCGContextに描画したりするサンプルってありませんか?
DevTools付属のサンプルSketchは見てみたんですが、
NSImageやCGContextを経由しているようには見えませんでした。

文字を書いたOpenGLのテクスチャを作ろうと思ってます。
867 Name: 名称未設定 [sage] Date: 04/06/01 22:46 ID: Cpyg4Er3 Be:
>>866
NSViewのサブクラス
- (void)drawRect:(NSRect)rect {
NSRect imagerect = {0, 0, 128, 128};
NSImage * image;
NSFont * font = [NSFont systemFontOfSize: 14];

NSDictionary * fontdic = [NSMutableDictionary dictionaryWithObjectsAndKeys: font,
NSFontAttributeName, [NSColor blackColor], NSForegroundColorAttributeName, nil];
image = [[NSImage allocWithZone:nil] init];
[image setSize: imagerect.size];

[image lockFocus];
[[NSColor blueColor] set];
[@"Draw String" drawAtPoint: NSMakePoint(0, 0) withAttributes: fontdic];
[image unlockFocus];

[image drawAtPoint:NSZeroPoint fromRect: imagerect operation:NSCompositeSourceOver fraction:1.0f];
}

NSView&OpenGL関連だがこれ読んでおくといいかも
ttp://developer.apple.com/ja/qa/qa2001/qa1325.html
ttp://developer.apple.com/qa/qa2001/qa1325.html
868 Name: 866 [sage] Date: 04/06/02 04:21 ID: qsJaWMAb Be:
その文書は一度目を通したのですが、不可視にしたViewをテクスチャにすることが
できないみたいだったのでスルーしていました。

今回、僕がわからなかったのは、
NSImageにlockFocusすることで描画開始できるってことだったみたいです。

とても参考になりました。ありがとうございます。
869 Name: 名称未設定 [sage] Date: 04/06/04 18:36 ID: oCyT3pcQ Be:
誰かNSTypeSetterで縦書きする方法知りませんかー?
870 Name: 名称未設定 [sage] Date: 04/06/07 18:11 ID: JO+qKJgn Be:
できない
871 Name: 名称未設定 [sage] Date: 04/06/07 18:56 ID: 1yeWGMtd Be:
>>869
俺も知りたい。
http://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/600/644.html
のWWDCのセッションというのはどうなったんだろう?
いまだにNDAなのかな?
872 Name: 名称未設定 [sage] Date: 04/06/07 19:04 ID: ip9x0cMJ Be:
>>871
Pantherではアラビア文字(右から左)はサポートされたけど、縦書きはまだの様ですが。
873 Name: 名称未設定 [sage] Date: 04/06/08 00:57 ID: HyUvPUyC Be:
>>872
早くできるようになると良いね。
漏れは描画させた後編集の必要が無いので自分で強引1文字つづ描画しました。
ATUIでは確かに実現できるらしいが、サンプル見て挫折。
874 Name: 名称未設定 [sage] Date: 04/06/08 06:18 ID: e5RS5xq6 Be:
>>873
さすがにTigerでは縦書きも実装されると思いますが。

>漏れは描画させた後編集の必要が無いので自分で強引1文字つづ描画しました。

この場合、縦書き用のグリフまたはCIDはどうやって取得するのでしょうか?
875 Name: 869 [sage] Date: 04/06/08 17:12 ID: iTkMcTXE Be:
>>874
>>873さんではないんですが、多分
-drawGlyphsForRange:(NSRange)range atPoint:(NSPoint)point @ NSLayoutManager
でrange=NSMakeRange( location, 1 )で一文字づつ書ける。
グリフのIDはわざわざ取得しなくてもいいかも知れないです。

ただ、これで縦書きすると、一文字分グリフの位置がずれてしまうという面倒が在り、
さらに、縦書きエディタを作ろうとすると、ATOK、或いはプラットフォームの
漢字かな変換サーバーをトラップする時に、NSTextViewのmarkedTextの位置に下線(縦書きだと横線)を
引いたりする処理がやたら面倒。
アップルがNSLayoutManager、NSTextContainerのNSLineSweepDirectionのNSLineSweepDownを
早くサポートしてくれればいいんですが。
876 Name: 名称未設定 [sage] Date: 04/06/08 17:35 ID: e5RS5xq6 Be:
>>875
確かに一文字毎に描画できますが、これでは横書き用のグリフを表示してしまい約物とか平仮名カタカナ等縦と横で字形が違う文字で問題になります。
そこである文字コードに対応する縦書き用字形のグリフIDが欲しくなりますが、Cocoaではその方法が提供されていない様ですので諦めていました。誰かご存じないですか?
やっぱりATSUIを直接触らないとダメなんでしょうかね。
877 Name: 869 [sage] Date: 04/06/11 02:13 ID: yaV8bhe9 Be:
>>876
今こそこそ仕事の後ドキュメントプリントしながら勉強してまつ。
CocoaからMacプログラムはじめたのでCarbonはさぱーり。
今日は眠いんで寝ますがCocoaからもCarbon呼べるみたいなので、
やり方分かったら書き込みます。
878 Name: 名称未設定 [sage] Date: 04/06/14 00:28 ID: m5gE1MpP Be:
はじめてのネットワークプログラミングに挑戦しています。

socketからNSFileHandleを取得して、そこに -writeDataしてるのですが、送信途中で
相手から接続が切られた場合、SIGPIPEが発生して強制終了させられてしまいます。

ググって見たところ、このSIGPIPEは無視するのが一般的だそうですが、writeDataの時の
SIGPIPEを無視する方法が分かりません。
NSFileHandleは諦めて、send()でMSG_NOSIGNALを指定すれば無視できるらしいと知り
やってみましたが、MSG_NOSIGNALがOSXでは使えないようでコンパイルが通りませんでした。

これってどう解決したら良いのでしょうか?
879 Name: 869 [sage] Date: 04/06/14 05:55 ID: rAuKGJ6T Be:
>>878
失礼な質問かもしれませんけど、
signal()関数にSIGPIPE用のハンドラ指定してます?
#include<signal.h>
#include<errno.h>
extern int errno;

void sigpipeHandler( int signo )
{
return; // 無視
}

int main(void) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
errno = 0;
if( signal( SIGPIPE, sigpipeHandler ) == SIG_ERR )
{
if( errno != 0 )
printf("Error: %s\n", strerror(errno) );
else
printf("Unknown error\n");
}
// TODO

これでとりあえずは無視されると思います。
NSFileHandleが-writeData:でサブプロセス、又はサブスレッドを作成しててもその作成前に
シグナルハンドラを指定してやれば、それがそのまま受け継がれるはず。
シグナル関係はピアソンの詳解UNIXプログラミングの10章を参考にするといいはずです。

つかFoundation Kit、シグナル処理用のメソッドを
Target-Selectorの指定でレジスタできると便利と思うんだけど。
@protocol NSSignalHandlerまだー?
880 Name: 名称未設定 [sage] Date: 04/06/14 22:57 ID: wyXJC9gt Be:
ttp://www.bignerdranch.com/classes/instructors.shtml#ahillegass
ヒレガスたん、めちゃくちゃ男前だねw
881 Name: 名称未設定 [sage] Date: 04/06/14 23:38 ID: 8JjtAan7 Be:
どこの冒険家だよ
882 Name: 878 [sage] Date: 04/06/15 00:00 ID: vGxvf9qj Be:
>>879
ありがとうございます。無事、無視してくれるようになりました。
それでもデバッグ中たまにSIGPIPEで落ちるのだけど、これは私がシグナル関係を全く知らない
ためにきっと変な扱いをしてるのでしょう。

ネットワークプログラミングも、やってみれば何とかなるものですね。
やる前はもっと敷居が高いかと思ってました。NSFileHandleのおかげでもあるけど。

あと、おすすめの本(本、ですよね?)はぜひ買って読んでみます。
883 Name: 名称未設定 [sage] Date: 04/06/15 00:42 ID: aYNd0hUa Be:
>>880
カッケー、ヒレガスたん。こんなヒゲが似合う男になりたい。

詳解UNIXプログラミングほしいけど高いよ………
884 Name: 名称未設定 [sage] Date: 04/06/15 09:19 ID: 4YsY5CSX Be:
>>883
名前を言えないアノ本を考えたら安いもんだよ。
885 Name: 869 [sage] Date: 04/06/15 10:39 ID: UwK+DliK Be:
>>882
どういたしまして。詳解UNIXは本ですよ。
http://www.pearsoned.co.jp/washo/unix/wa_uni12-j.html

>>880
スティールボールランに出てる人ですか?
886 Name: 869 [sage] Date: 04/06/15 15:25 ID: UwK+DliK Be:
>>876
縦書き用のグリフじゃないかもだけど、NSGlyphのグリフIDなら、
NSFontの内部メソッド_defaultGlyphForChar:で入手できるみたいでつ。
パブリッククラスなら、
#include<objc/objc-class.h>でずるして、
void *iterator = NULL;
struct objc_method_list *m_list = NULL;
int i;
while( ( m_list = class_nextMethodList( theClass, &iterator ) ) != NULL ) {
for( i = 0; i < m_list->method_count; i++ ) {
struct objc_method method = m_list->method_list[i];
SEL method_sel = method.method_name;
NSLog(@"%@\n", NSStringFromSelector(sel) );
}
}
で内部メソッドも入手できるっぽい。
ただ、これだとグリフの描画はNSBezierPathを使うことになるはず。
CocoaPrograming.netのサンプルの14章のTextRenderingを参照してください。
本もってなくてもサンプルはダウンロードできます。
887 Name: 876 [sage] Date: 04/06/15 16:56 ID: 2+/Z2c4t Be:
>>886
レスありがとうございます。Cocoa Programingは私も持っているのですが必要に応じて拾い読みしかしていないので、この部分はあまり読んでいませんでした。

そこでじっくり読んでみましたが、残念ながら_defaultGlyphForCharでは縦書き用グリフは無理みたいですね。指定できないですから。
ちなみに現在グリフIDとそれの描画はNSLayoutManagerの以下のmethodを使っています。
- (NSGlyph)glyphAtIndex:(unsigned)glyphIndex;
- (void)showPackedGlyphs:(char *)glyphs length:(unsigned)glyphLen glyphRange:(NSRange)glyphRange atPoint:(NSPoint)point font:(NSFont *)font color:(NSColor *)color printingAdjustment:(NSSize)printingAdjustment;

Cocoaでこの問題をクリアにコーディングするにはNSGlyphStorageのlayoutOptionsに縦書きが追加される事が必要なのかなと考えておりまして、Tigerに期待している状態です。
Tigerのリリースが遅いようならATSUIを勉強しようかな。
888 Name: 878 [sage] Date: 04/06/16 21:26 ID: rpIphs7R Be:
すいません、NSDataを-dataWithContentsOfMappedFileとか-dataWithContentsOfFile
で作ろうと思ったのですが、2G以上のデータは作れないとかの制限があったりしますか?

どちらのメソッドも2G以上のファイルを指定するとnilしか返ってこないみたいなのですけど・・・。
こんなもの?
889 Name: 888 [sage] Date: 04/06/16 21:28 ID: rpIphs7R Be:
おっと、この場合メソッドの前の記号は+ですね。まあたいした事ではないけど・・。
890 Name: 名称未設定 [sage] Date: 04/06/16 21:30 ID: qGMX3GHm Be:
>>888
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSData.html#//apple_ref/doc/uid/20000172/CIAEAJGI

>An NSData object stores immutable data in the form of bytes.
>The size of the data is subject to a 2GB limit.
って書いてあった。
891 Name: 888 [sage] Date: 04/06/16 21:50 ID: rpIphs7R Be:
うげ、リファレンスは見たつもりだったんだけど見落としてたか・・・。
ありがとうございました。

さて、どうしようかな。CFDataでも作ればいけるのだろうか。
がんばって調べてみます。
892 Name: 869 [sage] Date: 04/06/18 09:23 ID: +PWzOO82 Be:
>>891
サンプルあった。6GBオッケー。
http://developer.apple.com/samplecode/MapLargeFile/MapLargeFile.html
ただ、これUnixのシステムコールのmmap呼んでるだけなので、
void*型のバッファから、ファクトリメソッドでNSDataやCFData作ろうとしてもエラーになるかもしんない。
いまソースコンパイルできる状況に無いんであとはわかんないでつ。
NSDataのデータの限界量はリソースリミットいじっても変わんないんだろうか?
893 Name: 名称未設定 [sage] Date: 04/06/19 10:40 ID: W1DLEpfB Be:
すいません
質問させて下さい
テーブルビューに表示させたテキストを
ダブルクリックで選択して、テキスト内容を変更したいのですが
どうすれば良いのでしょうか?
894 Name: 名称未設定 [sage] Date: 04/06/19 10:48 ID: vnvCriX2 Be:
>>893
1. TableView の dataCell の isEditable を YES にする。
2. -(void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex; を TableView の dataSource に実装する。
895 Name: 名称未設定 [sage] Date: 04/06/19 14:32 ID: W1DLEpfB Be:
>>894
できましたーー!
ありがとうございました
896 Name: 名称未設定 [sage] Date: 04/06/19 17:40 ID: VspCrrlG Be:
最近Cocoaを始めたものです
いきなりつまずいたので少し質問させてください...

コード打ち込み終わりビルドすると、

Linking/Users/×××/test/build/test.app/Content/MacOS/test(1個のエラー)
can't locate file for:-Icrt1.o

とでてコンパイルできません(泣
(×××はユーザー名、testはアプリ名です)
そんなファイル探してもないし...
だれか解決法しっていたらおしえてくださひ...

897 Name: 名称未設定 [sage] Date: 04/06/19 17:45 ID: 3QfztTHm Be:
パスの一部に日本語が入っているとダメとかいうバグが昔あったが・・・
プロジェクトの位置を変えてみるとかしてみては?
見当違いだったらすまぬ。
898 Name: 名称未設定 [sage] Date: 04/06/19 18:42 ID: xpXNCezg Be:
>896
打ち込んだコードを晒せ。
899 Name: 名称未設定 [sage] Date: 04/06/19 19:27 ID: VspCrrlG Be:
>>897
全部英語にかえても駄目でした...
>>898
どんなコードでもエラーが出るんです(汗
極端な話、雛形をコンパイルしてもでます...
環境がおかしいんでしょうか?
900 Name: 名称未設定 [sage] Date: 04/06/19 19:37 ID: djOAc1lL Be:
>>899
環境がおかしい
901 Name: 名称未設定 [sage] Date: 04/06/19 20:51 ID: 3szCbxRH Be:
NSViewにfinderからDragされたfileのfilePathを知るには
どうしたらいいんでしょうか。
902 Name: 901 [sage] Date: 04/06/19 23:19 ID: 3szCbxRH Be:
[ pBoard propertyListForType: NSFilenamesPboardType ];

でできたわ。
調べるのに一苦労。みんなどうやって調べてるの?
903 Name: 名称未設定 [sage] Date: 04/06/19 23:59 ID: vnvCriX2 Be:
Google なんぞでヒントとなるキーワードを検索してからフレームワーク内で検索。
あるいは、その逆。
904 Name: 888 [] Date: 04/06/20 18:18 ID: 1EkQRQzH Be:
ありがとうございます。
困ってる本人が見つけられなかったものを見つけてしまうなんてすごいすね。
おそらく現在NSDataを使ってるメソッドは、unixのシステムコールで代用が利くと思うので
なんとかいけそうな感じです。

あと、知ってる人がいたら自分のIPアドレスを調べる方法を教えてくれるとうれしいです。
SystemConfiguration.frameworkの方でシステム環境設定のネットワークの「IPアドレス」欄に
直に書いてあるアドレスは読めそうなのですが、DHCPで割り当てられたアドレスの取得方法が
わからないです。(SystemConfigurationではDHCPで取得する、ということしか書いてない?)
905 Name: 名称未設定 [sage] Date: 04/06/20 18:51 ID: H+gdt0eB Be:
NSHost あたりかな。
906 Name: 904 [] Date: 04/06/20 20:55 ID: 1EkQRQzH Be:
>>905
即レスサンクスです!
NSHost *host = [NSHost currentHost];
NSArray *adressArray = [host addresses];

で、無事いけました。こんなに簡単だったとは・・(汗)
907 Name: 名称未設定 [sage] Date: 04/06/21 06:27 ID: /UciLCtp Be:
>>896>>899
-Icrt1.oじゃなくて-lcrt1.oだろうけど、それ、OSはプリインスコ? だったらOSをCDから
入れ直せば(復元じゃなくて)直るかも。それか10.3ならXcode 1.2を入れれば直るかも。

あるはずの/usr/lib/crt1.oが無いってことだと思うんだけど。
908 Name: 904 [] Date: 04/06/21 22:55 ID: RhVacwK0 Be:
質問ばかりでごめん。後に貢献するから許して。

Cocoaで、NSImageからJPEGのデータを作成するには、
[[ NSBitmapImageRep alloc] initWithData : [anImage TIFFRepresentation]]とかして、TIFF
に変換したあと、[ imageRep representationUsingType:NSJPEGFileType properties:dictionary]
などとしないといけないようですが、ここで作ったImageRepがいつまでたっても解放されて
くれないようです。
メモリリークにもなってないみたいなのに、画像を一枚変換するごとに5MBづつアプリケーション
の使用メモリが増えていく・・・。なんとかなりませぬか。
周辺コードはこんな感じです。

image = [[NSImage alloc] initWithContentsOfFile:anPath];
imageRep =[[ NSBitmapImageRep alloc] initWithData : [image TIFFRepresentation]];
[image release];
[ imageRep setAlpha:NO];
returnData =[ imageRep representationUsingType:NSJPEGFileType properties:dictionary];
[imageRep release];
909 Name: 904 [] Date: 04/06/21 23:20 ID: RhVacwK0 Be:
補足&自己レス

今検証していて気づいたのですが、いつまでたっても解放されないというのは正確ではなく
そのアプリケーションをアクティブにしたら200MBのメモリが一気に解放されました。
いままでtopで監視してただけなので気づきませんでした。

でも、サーバーとして作っているのでアクティブにしないと解放されないのでは困ってしまいます。
強制的にリフレッシュ(?)するような方法ってあるのでしょうか。
910 Name: 名称未設定 [sage] Date: 04/06/22 00:05 ID: ZmPwSPFB Be:
>>909
想像で済まないが、
returnDataが AutoreleasePoolに入っていて、Eventが来た(アクティブ)時に解放されている
かな?

これが当たりなら、次のどちらかをやってみる
1.returnDataがループにあるんなら、ループ内でローカルなAutoreleasePoolでかこってみる。
2..returnDataがAutoreleasePoolに入らないように実装する。
911 Name: 904 [sage] Date: 04/06/22 00:49 ID: KB8/D6jW Be:
おぉっ、すばらしい!ありがとう!
今回は1で解決しました。
returnDataは直後でそのまま返り値として使われているのですが、その戻っていった先のメソッド
の中を局所的な自動解放プールでかこってやればすぐに解放されるようになりました。

うーん、Cocoaは奥が深い。
912 Name: 899 [sage] Date: 04/06/22 06:12 ID: mGwfFx+A Be:
>>907
わかりました
入れ直してみます。
913 Name: 名称未設定 [] Date: 04/06/22 17:11 ID: 6uje2EVL Be:
ツールバーにNSPopUpButtonを入れようと思いまして、

NSToolbarItem* toolbarItem;
toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemId] autorelease];

NSPopUpButton *button = [[NSPopUpButton alloc] init];
[[button cell] setControlSize:NSMiniControlSize];
[button addItemWithTitle:@"Item1"];
[button addItemWithTitle:@"Item2"];
[toolbarItem setView:button];

みたいな感じにしたのですが、これだと文字の大きさが大きいままなのです。
文字も周りに合わせて小さくするにはどうすればいいのでしょうか?
また、選択が変更された場合にメッセージを送るにはどうすればいいのでしょうか?
914 Name: 名称未設定 [sage] Date: 04/06/22 17:49 ID: vmRhp+Ve Be:
>>913
やった事無いですがfontのサイズを落とす必要があるのでは。私はPopUpButtonをIBで用意したので簡単にMiniサイズに変更できました。

>選択が変更された場合にメッセージを送るにはどうすればいいのでしょうか?

Action methodを用意してsetAction:,setTarget:で設定すればOKかと。
915 Name: 名称未設定 [sage] Date: 04/06/23 20:01 ID: rR3wcvar Be:
スクロールビューにカスタムビューを組み込ませて、独自のエディタを
作っているのですが、カスタムビューがスクロールビューのコンテンツ
よりも小さい時、余白の部分がグレーで表示されるのですが、このグレー
を変更させる方法はありませんか?

貼付けたカスタムビューもdrawRect:内でEraseRect()で消去しないと
グレーのままです。毎回EraseRect()を呼び出すのもみっともない・・・
916 Name: 名称未設定 [sage] Date: 04/06/25 19:32 ID: OSVaJly4 Be:
NSDistributedNotificationCenterの4つの定数の意味が全然分かんない...
エロい人説明して...
917 Name: 名称未設定 [sage] Date: 04/06/25 19:32 ID: OSVaJly4 Be:
あ”あああぁぁぁっ

NSDistributedNotificationCenterのNSNotificationSuspensionBehaviorの4つの定数の意味が全然分かんない...
エロい人説明して...
918 Name: 名称未設定 [sage] Date: 04/07/01 13:46 ID: 8TFXQYnF Be:
ここの住人、今頃はWWDCか?
919 Name: 869 [sage] Date: 04/07/01 14:52 ID: S1LG9shG Be:
>>918
いえ、早めの夏休みで鹿児島の実家です。
920 Name: 名称未設定 [] Date: 04/07/02 01:30 ID: eckU6uvB Be:
(フォーカス固定済み)
NSString *s = @"test";
[s drawAtPoint:NSMakePoint(0,0) withAttributes:nil];
こんな感じで文字列は描画できるわけだが、
これだと、左の点から右に文字列が描画されていくよね。
それで、質問なのですが、
「指定した点を中央として、文字列を中央寄せで描画するには
どうしたらいいだろうか?」
もしくは、
「文字列の描画するときの、文字列全体のピクセル幅の求め方」
分かる人お願いします。m(_ _)m
921 Name: 名称未設定 [sage] Date: 04/07/02 02:00 ID: 6uEkK0ym Be:
>>920
>文字列を中央寄せで描画する
指定した点.x -= 描写したい文字列のwidth / 2;

>「文字列の描画するときの、文字列全体のピクセル幅の求め方」
単一フォントなら
width = [nsfont widthOfString: 描写したい文字列];

使ったことないけどNSAttributedStringなら
-(NSSize)[NSAttributedString Additions size];
-(NSSize)[NSString Additions sizeWithAttributes:(NSDictionary *)attributes];
ですかね。
922 Name: 名称未設定 [sage] Date: 04/07/02 02:06 ID: 2G/RgjVn Be:
>>920
drawAtPoint:withAttributes: ではなく、
drawInRect:withAttributes: を使ったらどうだろうか。

1. 指定した点が中央になるように Rect を配置する
2. Attributes の属性として中央寄せの NSParagraphStyle を与える
てな感じで可能だと思うが。
923 Name: 920 [sage] Date: 04/07/02 02:18 ID: eckU6uvB Be:
>>921,922
さんくす!
さっそく試してみます!
ありがとうございました。
924 Name: 名称未設定 [] Date: 04/07/02 02:53 ID: 6TJ7jXed Be:
>>920
「文字列の描画するときの、文字列全体のピクセル幅の求め方」
は[s sizeWithAttributes:nil]でどうでしょう?
これで良ければ
「指定した点を中央として、文字列を中央寄せで描画」
も出来るはず。
925 Name: 名称未設定 [sage] Date: 04/07/02 08:44 ID: hBhQFrgI Be:
便乗質問させてもらってよいでしょうか。

drawInRect...で文字列を表示するときに、システムの設定に関わらず
アンチエイリアスを切る方法はどうやればいいのでしょう。
図形を描画するときにはNSGraphicContetxtでアンチエイリアスを切
れるようですがこの場合は効果ありませんでした。
926 Name: 名称未設定 [sage] Date: 04/07/02 15:40 ID: R9IqcnvG Be:
FIleOwnerのCustomClassの一覧で出てくる
SCNibObjectInfo
ってなんですかね。
検索しても一件もヒットせず。
927 Name: 名称未設定 [sage] Date: 04/07/02 22:48 ID: u1N3GPvT Be:
>>924
>「文字列の描画するときの、文字列全体のピクセル幅の求め方」

ここにいる懸命なプログラマの人にはわかっていると思うけど、
もちろん「ピクセル幅」はそれでは求められないですね。
928 Name: 921 [sage] Date: 04/07/02 23:08 ID: 6uEkK0ym Be:
>>920
-(NSSize)[NSAttributedString Additions size]; × 互換維持用ってドキュメントにあった。
-(NSSize)[NSString(Additions) sizeWithAttributes:(NSDictionary *)attributes]; ○

ノイズ スマソ
929 Name: 921 [sage] Date: 04/07/02 23:37 ID: 6uEkK0ym Be:
度重なるスレ汚しスマソ
[nsfont widthOfString: 描写したい文字列]; × 互換維持用ってドキュメントにあった

> -(NSSize)[NSAttributedString Additions size]; × 互換維持用ってドキュメントにあった。
これはなかったことに ...
930 Name: 924 [] Date: 04/07/03 09:39 ID: 5KXitfUY Be:
>>927
そうですか・・・。では正しい方法を教えてください。
931 Name: 名称未設定 [sage] Date: 04/07/03 10:49 ID: yJFGFRBg Be:
>>927自身が「懸命」だから、わかってないってことなんだよ。「賢明」じゃないしw
932 Name: 924 [] Date: 04/07/03 22:01 ID: 5KXitfUY Be:
>>925
文字列のアンチエイリアスはNSGraphicsContextで切れますよ。
↓こんな感じでどうでしょう?
- (IBAction)test:(id)sender
{
NSGraphicsContext *gc = [NSGraphicsContext currentContext];
NSString *s = @"test";

[self lockFocus];
[gc setShouldAntialias:NO];
[s drawInRect:NSMakeRect(0,0,200,200)
withAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Helvetica" size:50]
forKey:NSFontAttributeName]];
[self unlockFocus];
}
933 Name: 925 [sage] Date: 04/07/03 22:43 ID: +FmT0CBP Be:
>>932
あれ、これでいけましたか?
こちらではうまくいかないのですが・・・。

違いと言えば、こちらではNSImageをallocして、それにlockFocusして、setShouldAntialias
してから文字列を描画していることくらいだと思うのですが、うまくいきません。
もうすこし調べてみます。ありがとう。
934 Name: 932 [sage] Date: 04/07/04 00:27 ID: CMWl3gpF Be:
こちらではうまくいっています。
補足ですが
上のメソッドはNSViewを継承したクラスに記述したものです。
したがって,lockFocusはNSViewのものが呼び出されています。一番の違いはここのような気がします。
935 Name: 名称未設定 [sage] Date: 04/07/04 01:24 ID: a/NWLP0W Be:
>>933
NSImage を lockFocus した"あとに" カレントグラフィクスコンテクスト を取得しましょう。

NSGraphicsContext の currentContext メソッドは現在フォーカスを持つグラフィクスコンテクストを取得します。
936 Name: 925 [sage] Date: 04/07/04 07:53 ID: dE9ocDtU Be:
おお、いけました。勉強になります。
>currentContext メソッドは現在フォーカスを持つグラフィクスコンテクストを取得します
なるほど、そういわれれば納得。

いろいろありがとうございました。>>932,935
937 Name: 名称未設定 [sage] Date: 04/07/04 23:28 ID: REV1lBkG Be:
すいません。質問させてくだい。
アウトラインビューで指定したアイテムを選択させたいのですが、
どうもうまくいきません。
テーブルビューでは行の番号で指定して選択できたのですが、
アウトラインだとその方法ではできませんでした。
助言お願いいたします。
938 Name: 名称未設定 [sage] Date: 04/07/06 14:41 ID: DL0Az12d Be:
gif2png2.5.1がCarbon/Cocoaで使えたら…と先刻ソースコードを
落としてきたものの、解凍して出来たソレは何をどうしたらいいの
かゼロから勉強せねば訳の分からぬ世界でした。

こちらのスレを参考に、頑張ってコンパイルまでたどり着けるよう
頑張ります。
939 Name: 名称未設定 [sage] Date: 04/07/06 14:49 ID: DL0Az12d Be:
頑張って~たどりつけるよう勉強します orz
まずはオライリーのCocoa本を探しに行かねば。
940 Name: 名称未設定 [sage] Date: 04/07/06 15:25 ID: iszmCYsz Be:
>>938

gif -> pngって普通にCocoaで出来るよね。
なんで必要なの?
941 Name: 名称未設定 [sage] Date: 04/07/06 15:59 ID: DL0Az12d Be:
>940
恥ずかしながらそういった事さえ分かっておりませんでした(Xcodeで
Cocoaアプリケーションを自分でも作れるらしい、程度の考え方でした)。

現在Photoshop Elementsの「Web書き出し..」.で作成したGIFファイルを
PIXTURE STUDIOにて配付されているgif2png 2.3.2でPNGに変換する方法
をとっている(二度手間ですが、不要なヘッダの取捨選択やガンマ値チャ
ンクを書き込めたりWeb書き出しのPNG保存より小さく保存できるため)の
ですが、この工程をgif2pngそのものをCocoaアプリにする事でAppleScript
なりアクションで制御出来ないだろうかと思ったのです。
942 Name: 940 [sage] Date: 04/07/06 16:09 ID: iszmCYsz Be:
>>941
>ですが、この工程をgif2pngそのものをCocoaアプリにする事でAppleScript

gif2pngがシェルのコマンドなら、そのままAppleScriptから
呼び出しできますよ。多分。
http://developer.apple.com/ja/technotes/tn2065.html

画像の合成とか必要なら、
http://www.google.com/search?q=imageMagick&num=100&hl=ja&ie=UTF-8&lr=lang_ja&sa=X&oi=lrtip7
ImageMagickなんてどうでしょう。
AとBの画像を合成して、tif書き出しなんかを行った事あります。
ただ少し遅かったですけど。
あと依存するライブラリがヤヤコシカッタような・・・。

cocoaな話であれば、合成/加工からファイルの生成までの
一連の自動化を行うアプリを作るのなんて面白いかも。
943 Name: 名称未設定 [sage] Date: 04/07/09 01:44 ID: RpoFYEqP Be:
Pixadexなどのアイコン管理ソフトやiPhotoのように
ScrollVIew内のViewに画像を多数表示させたいんですが
いいサンプルか書籍はありますか?
自分でも挑戦してみたんですがスクロールさせると描画が乱れてしまいます。
944 Name: 869 [sage] Date: 04/07/10 16:12 ID: AmAb0xQt Be:
>>943
固定サイズのサブビューをぺたぺた貼っていくのがはやいかもしんない。
変な例だけどDeveloper/Sample/AppKitについてるテキストエディットのMultiplePagesViewあたりを
参考にするとよいのでは。
945 Name: 名称未設定 [sage] Date: 04/07/10 17:05 ID: iQLbyi/F Be:
NSImageCellを使えばええんでないの?
946 Name: 名称未設定 [sage] Date: 04/07/12 19:18 ID: zJJ7HG6K Be:
本格的にプログラミングをはじめようと、本のサンプルを参考に
自分なりのメソッドを作って拡張したのですが、
一つの.m、.hファイルに付け足していったので、ソースコードが長くて不便です。
機能ごとにソースファイルを分割したいのですが、まずはじめに
何をすればよいかよくわかりません。
レベル的にもCをちょっとかじった程度です。
自学したいので参考となるURLや書籍、サンプルコードはないでしょうか…
947 Name: 名称未設定 [sage] Date: 04/07/12 19:58 ID: nbtTFRhy Be:
>>946
入門書を読んで勉強するしかないけど、.m, .hで分けるということなら
クラス毎にファイルに分ければいい。Objective-Cで書いてるなら。

入門書はいくつも買わないでとりあえず一つだけ買って攻略する。
あとは慣れ。実践で憶えていくしかない。Cocoaならヒレガス本がお薦め。
HappyMacintoshDevelopingTimeがいいという人もいるけど、あれはちょっと
初心者には向いてないと思う。初心者が読む部分の説明が良くない。
948 Name: 名称未設定 [sage] Date: 04/07/12 20:08 ID: zVJvNWxg Be:
>>946
>機能ごとにソースファイルを分割したい
カテゴリだな。
荻原本読んどけ。
初めは少々難しいが、あとになって必ず役に立つ。
949 Name: 名称未設定 [sage] Date: 04/07/12 20:26 ID: zJJ7HG6K Be:
>>947
>クラス毎にファイルに分ければいい。Objective-Cで書いてるなら。

分割したいクラスの部分を既存のソースファイルから切り取って
xxx.h、xxx.mに保存してビルドすれば良いということですか?
分割したファイルと分割元ファイルをimportなりなんなりで
クラス同士の関連付けする必要はないのでしょうか?

>あとは慣れ。実践で憶えていくしかない。Cocoaならヒレガス本がお薦め。
ヒレガス本探してきますλ....
950 Name: 名称未設定 [sage] Date: 04/07/12 20:29 ID: zJJ7HG6K Be:
>>948
カテゴリって言うんですね…
検索キーがわからなくて難儀してました。
調べてみます。

>>947-948
色々ありがとうございます(TдT)
951 Name: 名称未設定 [] Date: 04/07/13 21:05 ID: /hcMHNhq Be:
http://www.big.or.jp/%7Ecrane/cocoa/

ここ見ながらやってるのですが、
MainMenu.nibって奴をダブルクリックしても
インフォパネルってのがデフォールトで開かな
いんですけど、どうやって開くのでしょうか?
952 Name: 名称未設定 [sage] Date: 04/07/13 21:15 ID: 8VSQuQXN Be:
メニューバーを探せ。サブメニューじゃないからすぐ見つかる。
953 Name: 名称未設定 [] Date: 04/07/13 21:38 ID: /hcMHNhq Be:
あ、なんとなく出来た。。

習うより慣れろって感じっすね。<InterfaceBuilder
954 Name: 名称未設定 [sage] Date: 04/07/14 01:04 ID: XDlN+1hL Be:
ついでに
Carbon もさっぱり!!!
955 Name: 名称未設定 [sage] Date: 04/07/14 03:47 ID: d3pR6qhv Be:
>>954
漏れなんかCarbonはきっぱりってつもりだったんだが(w
肝心な所でCarbonでてくるしよぉ(鬱
956 Name: 名称未設定 [sage] Date: 04/07/15 18:17 ID: EIfWDnn6 Be:
一つのアプリで2つのウィンドウを生成して、それぞれにImageViewとOpenGLViewを
表示させたいけど起動中に落ちてしまう…
インターフェースビルダーで、windowのインスタンスを2つ作るだけじゃダメなんですかね…
957 Name: 名称未設定 [sage] Date: 04/07/16 00:40 ID: TJ4TlZMH Be:
>>956
コンソール -> ログ -> ~Library/Logs -> CrashReporter
で落ちた原因を確認しる。
958 Name: 名称未設定 [sage] Date: 04/07/17 00:09 ID: fqiKlTs5 Be:
書いてある通りにやってもできない事が大杉のHMDTの本だが、
初心者の自分も躓いた点を書いとく
p282のパネルにボタンを格子状に配置する際、オプションキーを押しながらドラッグ
となってるが正しくは、オプションキーを押しながらオブジェクト(ボタン)のリサイズハンドルを
ドラッグだった…
 オプションキーを押しながらオブジェクトをドラッグしてもオブジェクトが
コピーされるだけで2時間ぐらい悩まされた(-ωー)
 Interface Builderのヘルプを検索してようやく気づく…
新しいのは良くなってるんかねえ…
959 Name: 名称未設定 [sage] Date: 04/07/17 12:56 ID: m0WP/LLl Be:
>>958
追加以外のとこも書き直されてるみたいだよ。
960 Name: 名称未設定 [sage] Date: 04/07/17 16:33 ID: KdfKLLGJ Be:
(クリックしている絵)
961 Name: 名称未設定 [] Date: 04/07/18 08:32 ID: p/suTzR3 Be:
いまテキストエディタ書いてるんですけど、
DiskArbitrationRegister failed: 1102
ていうエラーメッセージが必ず出てしまいます。その後問題なく起動します。
AppleのサイトではCarbonのTipsにしか載ってないんですけど、どなたかこのエラーが
何なのか御存知の方いませんか?
NSTextViewをサブクラス化してるくらいで、別に変わったことはしてないですけど。
962 Name: 名称未設定 [] Date: 04/07/24 03:56 ID: T9KFdhRI Be:
300dpiのimageに下記のように文字を描画すると、
[image lockFocus];
[str drawAtPoint:point withAttributes:dicAttr];
[image unlockFocus];
できたimageの解像度は72dpiになっています。
解像度を落とさずに文字を描画したいんですが、どのように
したら良いのでしょうか。ご存知のかたお教え下さい。
963 Name: 名称未設定 [sage] Date: 04/07/24 06:20 ID: Qvrr2z75 Be:
dpi というものについて今一度考えた方が良いんじゃないか。
964 Name: 名称未設定 [sage] Date: 04/07/24 09:49 ID: K5vclZtB Be:
>>962
>解像度を落とさずに文字を描画

自分も同じ悩み持ちです。
読み込んだイメージの解像度を72dpiに変換すると同時に、
倍率を計算して、drawAtPointする時にNSAffineTransform
で倍率指定ってのが回避策か?と妄想中。

>>963

ぜひ、解像度が絡んだ場合の解決方法を教えてくださいまし。
965 Name: 869 [sega] Date: 04/07/24 20:44 ID: 3zzuSVAU Be:
>>962 >>964
WindowsのGDI+でもそうですけど、Appleの描画環境は
Device Independent + Resolution Independentです。
つまり、Cocoaレベルから解像度をいじることはできないはずです、多分。
966 Name: 名称未設定 [sage] Date: 04/07/25 00:38 ID: VfXPUdId Be:
ん??
967 Name: 名称未設定 [sage] Date: 04/07/25 01:33 ID: hIabkCZQ Be:
Carbonで出来るのに?

というかQuartzはPDFベースだから・・・
968 Name: 869 [sage] Date: 04/07/26 11:39 ID: qtwfIU8c Be:
ああ間違えたんか俺 ||orz
すんません逝ってきます
969 Name: 名称未設定 [sage] Date: 04/07/26 18:48 ID: uF5saXap Be:
【GUIライブラリ】wxWindowsでのひょーん
http://pc5.2ch.net/test/read.cgi/tech/1052186697/
970 Name: 名称未設定 [] Date: 04/07/28 20:45 ID: fGsKXR4Q Be:
NSTaskでUnixコマンドを実行しようとしてるんですが
実行しようとすると「stderr is not a tty」等と怒られてしまいます。
調べてみると出力先の問題だということは何となくわかったんですが
こういう場合どうしたらいいんでしょうか?
971 Name: 名称未設定 [] Date: 04/07/29 00:15 ID: ETseezzE Be:
実行しようとしているUnixコマンドは何ですか?
stderrがttyを前提としているコマンドって何だろう?
972 Name: 名称未設定 [sage] Date: 04/07/29 15:13 ID: 3mTSEHNC Be:
>>971
実行した時にパスワードの入力を求めてくるものなので
出力先が端末(?)でないと駄目、というようなことらしいです。
NSPipeだと無理なんでしょうか?
973 Name: 名称未設定 [sage] Date: 04/07/29 15:18 ID: 3mTSEHNC Be:
あ、関連がありそうなこのトピックを今読んでます。
NSTaskとNSPipeで対話型コマンドを実行する場合について?
http://cocoa.mamasam.com/COCOADEV/2002/01/1/21162.php
974 Name: 名称未設定 [sage] Date: 04/07/29 17:06 ID: 4Z3WXILc Be:
>>972
質問の答えになってませんよ。sudoコマンドとかですか?
975 Name: 名称未設定 [sage] Date: 04/07/29 17:34 ID: 3mTSEHNC Be:
いんや、解凍コマンドです。
パスワードがかかってる場合、実行するとTerminalではそれを入力するように
いわれるんですが、NSTaskとNSPipeでそれを受けたい&答えたいというわけで。
976 Name: 名称未設定 [sage] Date: 04/07/29 17:43 ID: ccbu77ap Be:
>972
コマンド名を書けない訳は?


とあるコマンドである場合は別な方法で実行できるとだけ書いておこう。
977 Name: 名称未設定 [sage] Date: 04/07/29 19:18 ID: +/x2QT6W Be:
>>976
2chでソフトから個人を特定されたくないってのもあり得るんだから、
あんまり追いつめるのも気の毒。

>>975
有名なコマンドなら直接APIを呼ぶなりソースをゲットするなり
それなりの方法もあるよ。そのぶん面倒臭いけど。
978 Name: 名称未設定 [sage] Date: 04/08/06 04:08 ID: h1Bmx+9i Be:
sage
979 Name: 名称未設定 [sage] Date: 04/08/06 12:05 ID: dE8JCgrG Be:
Project Builderのエディタが不安定なんですが。
とにかくよく落ちる。
returnしても落ちるし、""と入力するだけで落ちたりする。
どうも文法を解釈するときが怪しいんだけど。。。

環境設定を変えると不安定になるという噂を聞いたけど、
同じような症状になった人はいませんかね?
OSは10.2.8です。
980 Name: 名称未設定 [sage] Date: 04/08/06 12:30 ID: uu8Mk5iE Be:
自動インデントを切れ。
981 Name: 名称未設定 [sage] Date: 04/08/06 13:19 ID: f8Up1Mux Be:
ずばり、Cocoaプログラマさんにとって
ジャガーまでのProjectBuilderとパンサー以降のXcodeでの違いは?
This page was generated by Dat2HTML Rev.