Cocoaはさっぱり!!! version.7

このエントリーをはてなブックマークに追加
1名称未設定
初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。

前スレ
Cocoaはさっぱり!!! version.6
http://pc7.2ch.net/test/read.cgi/mac/1146391229/
2名称未設定:2006/10/22(日) 14:01:08 ID:sDPz5g+G0
余裕の2get

>>1
3名称未設定:2006/10/22(日) 16:15:29 ID:j34eyCTJ0
プログラミングってどうやるの?
4名称未設定:2006/10/22(日) 16:33:11 ID:EqSDGoJN0
その疑問がプログラマを生むのさ。
5名称未設定:2006/10/22(日) 19:34:19 ID:Cwi/1DZN0
stringWithFormat:なんかの書式(新しい変換文字を追加)を拡張したく
取り敢えず自前で書き始めたんですが、面倒くさ過ぎて禿げてしまいました。

何かお手軽な方法ありませんか?
6名称未設定:2006/10/22(日) 19:44:55 ID:7uZqMPM/0
リアップ
7名称未設定:2006/10/22(日) 19:54:27 ID:xGUOKKrD0
>>5
そりゃ面倒くさいだろ……。
書式指定は%@にして、別に作った文字列を生成するメソッドからNSStringを渡す方が
幸せになれるような気がする。
8名称未設定:2006/10/22(日) 19:58:08 ID:Cwi/1DZN0
即レスサンクス。
リアップ買ってきます。~orz

エェェェ(´д`)ェェェエ
9名称未設定:2006/10/22(日) 20:01:20 ID:Cwi/1DZN0
おっと、そうこうしてる間に>>7さんレスサンクス。
やっぱりそうですよね・・・そっち方面で考えます。

ありがとう。
10名称未設定:2006/10/22(日) 20:36:09 ID:gvlbkdVY0
もりなが
11名称未設定:2006/10/23(月) 03:29:01 ID:lkqaDtzE0
巨人の里の滝登ってたらはまった
12名称未設定:2006/10/27(金) 00:59:57 ID:vIPvLtNB0
そういえば、K中側のホームページでprintfを自作するっていう記事があったことを思い出した。あの人は今どうしてるんだろう。
13名称未設定:2006/10/27(金) 22:37:11 ID:dRxsjcq+0
xcoodeってCをrunできる?
14名称未設定:2006/10/27(金) 23:00:26 ID:sJh7E4HX0
>13
日本語でOK
15名称未設定:2006/10/29(日) 00:46:41 ID:udS4nhz/0
>13
このスレCocoaですよ。
16名称未設定:2006/10/29(日) 07:53:13 ID:b0fkMdlr0
できる
17名称未設定:2006/10/29(日) 19:24:49 ID:6SGz/2Vj0
Xcodeって実行ログから標準入力経由で文字列を読み込むことができるんだね。
「アポ製だしほとんどMac専用ソフトを作るときしか使われないからどうせ無理だろう」とか思ってた。なめすぎか。

しかしそろそろCocoaも落ち着いてきて話題も尽きてきたかな。
18名称未設定:2006/10/29(日) 19:36:43 ID:GazHAm5N0
Objective-C 2.0って何が変わるんだろう?
そのくらい公開してくれてもいいのに。
19名称未設定:2006/10/29(日) 19:37:29 ID:Bf7vmXYI0
ADC
20名称未設定:2006/10/29(日) 19:45:17 ID:FyTHXOVv0
言語仕様の変更がNDAってのも、よくよく考えてみると変な話だよなぁ。
別に他社もやってる事なのかもしれんが。
21名称未設定:2006/10/29(日) 20:51:05 ID:ZQMgdMoJ0
Leopardがでればまたスレは伸びるはず
22名称未設定:2006/10/29(日) 21:13:02 ID:6SGz/2Vj0
まあ、多少apple以外の所から漏れているよね。ぐぐれば出てくるはず…英語だけど。
そしてgccの方のapple用ブランチ(?)にObjective-C 2.0なgccのソースが置いてあったと
思う。
23名称未設定:2006/10/29(日) 21:55:17 ID:ZQMgdMoJ0
24名称未設定:2006/10/30(月) 18:01:49 ID:3ARNtW3M0
Xcodeを使用してアプリをユニバーサルバイナリ対応にしたつもりなんですがうまく動かず
ターミナルでUB対応になってるかどうか確認するコマンドがあるみたいなんですが
どうかご教授願えませんでしょうか
25名称未設定:2006/10/30(月) 18:11:48 ID:1SsjhmDl0
>>24
file
26名称未設定:2006/10/31(火) 05:11:57 ID:YeO+c3g+0
>>24
知っているとは思うが念のため。
Finderの「情報を見る」でも確認可能。
実行中のプロセスは、アクティビティモニタでIntelかPowerPCかわかる。
27名称未設定:2006/11/02(木) 01:07:07 ID:yeNfN0R60
Cocoaには Smalltalkのdoにあたるのがないなぁ、
と思っていたらCarbonにはCFArrayApplyFunction
なんてものがあるのですね。もしかしてCocoaにもあるのに
わたしが見落としているだけですか?
28名称未設定:2006/11/02(木) 01:14:54 ID:UfA8HGoT0
そうだね。
29名称未設定:2006/11/02(木) 01:31:46 ID:yeNfN0R60
もしかしてobjectEnumerator: や
makeObjectsPerformSelector:のことですか?
30名称未設定:2006/11/02(木) 06:31:28 ID:OhLzYGHZO
>>27
each
31名称未設定:2006/11/02(木) 10:02:39 ID:/PMcPeOV0
>>29
別人ですが、ありがとうございます。
makeObjectsPerformSelectorを知らずにfor文で回そうとしているところでした。
32名称未設定:2006/11/02(木) 22:10:11 ID:U80mOy5r0
質問です。

NSTextViewのテキストの選択色(selectedTextBackgroundColor)を強制的に変更することは
可能でしょうか?
33名称未設定:2006/11/02(木) 22:30:39 ID:D03SskeE0
NSColorをポージングするんだ!
34名称未設定:2006/11/02(木) 22:33:01 ID:2GnSWfx+0
3532:2006/11/02(木) 23:03:47 ID:U80mOy5r0
NSTextViewのsetSelectedTextAttributesは、
NSTextViewがハイライト状態では、
バックグラウンドカラーがデフォルトの灰色に戻ってしまいます。…orz
36名称未設定:2006/11/03(金) 21:47:52 ID:xRE0934O0
いま、普通にアプリを作っているつもりで
ビルドしたらリンクエラーがたんまりでる。。。

新しいプロジェクト作って、IBで画面作って、
とりあえずビルド→実行すると

Zerolink: unknown symbol '_NSApplicationMain'
NewAPP はシグナル 6(SIGABRT)により終了しました

というエラーが出る。ヘルプによると、ゼロリンクを
使ってる時はプライベート外部シンボルを使用できないとか。

_NSApplicationMain ってどんなプライベート外部シンボル??
NSApplicationってアップル謹製のクラスのことだよなぁと
思いながら調べてます。

ホントにどうしてーー。泣きそう。
37名称未設定:2006/11/03(金) 22:14:48 ID:Jw8me0O00
TargetのFrameworksのところチェックしろ。
フツーならCocoa.frameworkとかあるから。
無かったら、泣きそうなの堪えて追加汁。
38名称未設定:2006/11/03(金) 22:23:42 ID:5W3s6gNp0
Zerolinkされてるってことはdevelopで作業してるんだよな?
でも実行出来ないということはないはずだが。他のマシンにコピーして
実行させてたとか?
39名称未設定:2006/11/03(金) 22:40:33 ID:xZXI6axh0
>>37さん
ターゲットを確認したところ、フレームワークがCoreService
しかありませんでした。他のフレームワークの二重丸をチェックしたら
無事、起動するようになりました。ありがとうございました。
泣かなくてすみました。
最初に必要なフレームワークを追加してたらその時になんか
しでかしたみたいです。

>>38さん
無事、解決しました。ありがとうございました。
40名称未設定:2006/11/03(金) 23:50:24 ID:/jJiTy8R0
ものすごい初歩的な質問で悪いんですけど・・・
InterfaceBuilder上でNSPopUpButtonの項目数って増やせますか?
41名称未設定:2006/11/04(土) 00:11:53 ID:653orh0m0
増やせる。
42名称未設定:2006/11/04(土) 00:25:32 ID:bmqHyd+F0
>>41
おお!
方法教えていただけると助かります。
43名称未設定:2006/11/04(土) 00:28:58 ID:AcwHYsbk0
Show Inspector
44名称未設定:2006/11/04(土) 00:29:57 ID:gH/YMjMH0
何回かクリックするとメニューが出てくるでしょ
45名称未設定:2006/11/04(土) 00:53:33 ID:bmqHyd+F0
>>43
インスペクタのどこをいじればいいのかわからないんです・・・
>>44
よくわからないです
46名称未設定:2006/11/04(土) 01:00:52 ID:bmqHyd+F0
>>45
すいません、なんとかできました
ご迷惑おかけしました。
47名称未設定:2006/11/04(土) 09:01:06 ID:28uS/8t70
ウインドウが無いアプリケーションで
画面上のクリックされた位置を検知する事はできますか?
48名称未設定:2006/11/04(土) 09:06:09 ID:2ZRhpHzF0
C++のファイルと、Objective-Cのファイルを同じプロジェクトに混在させて
コンパイルすると、C++のヘッダのところでparseエラーがでます。以下の様な感じ
-------------------------------------------------------------------------------
#include <AudioUnit/AudioUnit.h>
#include <AudioToolbox/AudioToolbox.h>
class hogehoge {
public:
// コンストラクタ
hogehoge();
virtual ~hogehoge();
OSStatus startRecord();
OSStatus stopRecord();
OSStatus configAudioUnit();
// メンバ変数(パブリック)
AudioBufferList *fAudioBufferList;
AudioUnit fAudioUnit;
ExtAudioFileRef fOutputAudioFile;
protected:
AudioStreamBasicDescription fOutputFormat;
AudioStreamBasicDescription fDeviceFormat;
};
-------------------------------------------------------------------------------
4948:2006/11/04(土) 09:06:43 ID:2ZRhpHzF0
エラーはこんな感じです

error: parse error before 'hogehoge'
error: syntax error before '{' token
error: parse error before ':' token
error: parse error before '}' token

C++のファイルを混在させるときの作法って何かありますか??
このC++のソース自体をコンパイルすると、別にエラーは出ないです。
Objective-Cのヘッダにインクルードさせると、上記エラーが出てしまいます。
Objective-Cのヘッダファイルにインクルードさせる時って、
#include <hogehoge.h>
でOKですよね??
50名称未設定:2006/11/04(土) 09:48:49 ID:VJdJ7MQ/0
>>49
#include "hogehoge.h"
5148:2006/11/04(土) 10:23:18 ID:2ZRhpHzF0
>>50
#include <hogehoge.h> と、 #include "hogehoge.h"ってどっちでもいいのかと思ってました。
今、#include "hogehoge.h"でやってみましたが、エラーは変わりませんでした。

一応、ヘッダファイルでエラーが出てるので読み込めてはいると思うんですよね。
いろいろと調べて見てるんですが、情報が少なくて困る。。。
52名称未設定:2006/11/04(土) 10:36:32 ID:O9OwfImg0
拡張子を.mから.mmにするとか。
53名称未設定:2006/11/04(土) 10:43:33 ID:VJdJ7MQ/0
そーいう感じのエラーは、ヘッダファイル同士で #import し合っている時に出るよね。
あとは、その #include の前に #include しているファイルの最後にセミコロンを付け忘れてる時とかにも。
54名称未設定:2006/11/04(土) 12:49:39 ID:HiWx1cGo0
Objective-C++ にしてる? 上のひとも書いてるけど、
.m を .mm にしておくと自動的にコンパイラがやってくれるはずだけど。
5548:2006/11/04(土) 18:39:39 ID:3Ane+5ln0
皆さんありがとうございます。
ファイル名を.mmに換えたら解決しました。
ADCのサンプルもよく見て見るとそうなってました。
一歩前進しました。ありがとうございます。
56名称未設定:2006/11/04(土) 18:41:37 ID:MDZnzRoX0
setValue: forKey: ってやつで BOOL の値を設定するには、
どうすればいいでつか。

BOOL boolValue;
[aObject setvalue: boolValue forKey: @"isYES"];

みたいな書き方をすると warning が出まつ。
57名称未設定:2006/11/04(土) 18:47:01 ID:goHM41Nd0
>>56
valueはオブジェクトじゃなきゃ駄目です。
NSNumberを使います。
58名称未設定:2006/11/04(土) 19:32:53 ID:pktbgavO0
母音の前の不定冠詞はaではなくanを使わなくちゃ。
5956:2006/11/04(土) 20:14:25 ID:MDZnzRoX0
>>57
?ォクス
[aObject setValue: [NSNumber numberWithBool: boolValue] forKey: @"isYES"];
でいいのかな。ワーニング出なくなりますた。
60名称未設定:2006/11/04(土) 22:20:07 ID:/ZsJw2Wk0
NSObjectの-performSelector:って引数を一つしか指定できませんよね。
引数を複数指定するにはどうすれば良いでしょうか。
61名称未設定:2006/11/04(土) 22:26:02 ID:goHM41Nd0
NSInvocationとか
62名称未設定:2006/11/04(土) 22:36:05 ID:ApoiKTIS0
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
というのもあるね。
63名称未設定:2006/11/04(土) 23:54:44 ID:72TvyefL0
オブジェクトを配列か辞書に入れて渡す。



といった、単純な答えを求めているような気も少しする。
64名称未設定:2006/11/05(日) 00:19:41 ID:iP8/rxMt0
65名称未設定:2006/11/05(日) 12:01:15 ID:7wy2QeQ20
window にいくつか NSTextField があって、
それらを全部 delegate でメインのアプリにつなぎ
controlTextDidChange で監視してるのですが、
入力中の NSTextField がどの NSTextField なのかを
知る方法はあるでしょうか。
66名称未設定:2006/11/05(日) 12:35:21 ID:8R5gGK570
>>65
[window firstResponder]
67名称未設定:2006/11/05(日) 12:42:15 ID:snVe/SPN0
それだったら、フィールドエディタ返ってこね?
68名称未設定:2006/11/05(日) 12:44:12 ID:M05MhOu90
notificationのobjectを調べろ
69名称未設定:2006/11/05(日) 22:57:17 ID:Wa5v6BY60
ウィンドウにある2つのNSTextFieldをどちらとも
テキストを選択状態にしたいんですけど
そういうことってできますか?
Windowsアプリの移植でこういう変な仕様を
入れなくてはならなくなりまして…、困っております…。
70名称未設定:2006/11/05(日) 23:29:25 ID:f+1muUrv0
そんな糞仕様、窓から投げ捨ててリンゴでも食べてろ
71名称未設定:2006/11/06(月) 03:40:13 ID:vlcrpj8u0
QTMovieの再生中か否かを判断するにはどうすれば良いでしょうか
72名称未設定:2006/11/06(月) 05:36:46 ID:rrHyC67f0
NSTextFieldでなくNSTextVIewにしたら少なくとも両方選択できるけど
73名称未設定:2006/11/06(月) 07:51:14 ID:VFvIDcKp0
確定時にもう一つのフィールドに反映させるとか。
1文字づつはちょっとめんどい。
74名称未設定:2006/11/06(月) 08:00:56 ID:VFvIDcKp0
>>71
-rateが0.かな?
75名称未設定:2006/11/07(火) 22:33:50 ID:83XBQGqU0
Cocoaオブジェクトってalloc + init* はNSAutreleasePoolに登録されないから、
単純にreleaseで解放すれば良いってものではなく、クラスの内部で生成されるオブジェクト
はNSAutreleasePool使用が前提なのでしょうか?
ちょっと混乱しています。
以下のコードで、メモリーリークのログがでて気付いたのですが。

int main(){
id sound = [[NSSound alloc]
initWithContentsOfFile:@"/System/Library/Sounds/Glass.aiff"
byReference:YES];
BOOL ret = [sound play];
if( ret == YES ) NSLog(@"YES=%d");
while( [sound isPlaying] == YES );
[sound release];
return 0;
}
76名称未設定:2006/11/07(火) 22:48:56 ID:38CQ3sdT0
>>75
>はNSAutreleasePool使用が前提なのでしょうか?
Yes。Mainを起こしたら、NSObjectとその仲間たちを叩くより先に
まずAutoreleasePoolを作ろう。
77名称未設定:2006/11/07(火) 22:49:24 ID:uD4fXRul0
initWithContentsOfFileの実装内でautoreleaseが使われてないかどうかなんて分かりません。
コマンドラインツールなどで、main()内で直接Cocoaのコードを使う場合、そのままでは
NSAutoreleasePoolのインスタンスが一つも存在しないのでautoreleaseできません。
ので、最初にNSAutoreleasePoolのインスタンスを作ってやって、最後にそれをreleaseする
ってのが普通だと思います。
78名称未設定:2006/11/07(火) 22:59:20 ID:fPxceZqw0
>>75

int main() {
 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 id sound = [[NSSound alloc] initWithContentsOfFile:@"/System/Library/Sounds/Glass.aiff" byReference:YES];
 BOOL ret = [sound play];
 if( ret == YES ) NSLog(@"YES=%d");
 while( [sound isPlaying] == YES );
 [sound release];
 [pool release];
 return 0;
}
79名称未設定:2006/11/07(火) 23:33:46 ID:83XBQGqU0
どうもありがとうございます。
なろほど、autoreleaseが前提なのですね。
そういうものだ、ということなら、そうすればよいからな。

なぜdeallocで解放しないのだ?などと思ってましたが、
NSSoound のplayメソッドは再生が終わるのを待たないので、内部オブジェクトのリソースを分割し
、元のNSSooundオブジェクトのインスタンスを解放しても良いように、内部は残っている実装
にしたいからののでしょうか?
内部オブジェクトは、再生が終わった時点で内部でreleaseするしくみが、
内部にいる感じで。
じゃないと、deallocで解放しない理由が無いし。
80名称未設定:2006/11/07(火) 23:43:52 ID:uD4fXRul0
>>79
別にNSSoundのdeallocの実装がどうこうじゃなくても、
例えば渡されたパスを処理する時にNSStringのインスタンスが作られたりautoreleaseされてるかもしれないし、
NSDataが作られたり(ry
でしょ。
81名称未設定:2006/11/08(水) 00:13:13 ID:+Kf/siID0
というか、例えば、音を鳴らした後の状態については、関心が無い場合、こういうコード
が妥当か? ということです、実際こうしたいはず。
以下、GUI App の何らかのイベント処理と思ってください。

function{
id sound = [[NSSound alloc]
initWithContentsOfFile:@"/System/Library/Sounds/Blow.aiff"
byReference:YES];
BOOL ret = [sound play];
[sound release];
}
音が、なり終わる前に元のインスタンスは解放されるが、フレームワーク側に、処理/リソース
が委譲されているので、問題なし?

82名称未設定:2006/11/08(水) 00:22:14 ID:/sLdBnJA0
>>81
問題ないと思います。
alloc/deallocじゃなくて、retain/releaseを使うのは何故か考えてみるのがよろしいかと。
83名称未設定:2006/11/08(水) 00:41:49 ID:+Kf/siID0
>>82
どうもです。
なるほど、やはり内部で、retainしているのですね。
ただ、このへんは、retain/releaseの仕組みというより、NSSoundの使用方法という気がします。
ようするに、いつ内部インスタンスが解放される条件が、仕様としてどっかに乗ってない
かぎり分からないと思うのですが、なにかソースはあるのでしょうか?
というか、単純にそんなこと考えなくて良いように実装してる。
と考える方が、自然なのはわかっているのですが。。。

とりあえず、今日は遅いので、もう寝ます。
遅くまで付き合っていただき、ありがとうございます。
84名称未設定:2006/11/08(水) 11:42:12 ID:s8cxucQe0
内部でどうやっているかは知ったこっちゃ無いという立場で良いための
retain/release/autorelease なので、多分気にしなくていいんだと思う

NSSoundの仕様を読んだけど書いてなさそうだよね。

気になるんならインスタンス retain しておいて、
notification受け取ってから release したらいいと思います。
別に二三行増えるだけでしょう。

AutoreleasePool にかんしては、NSApplication を使わずに
Cocoa を使う際には必ず自分で作っておけというふうに
仕様に書いてあるので、使う方としてはそのようにするだけです。
85名称未設定:2006/11/08(水) 23:15:07 ID:+Kf/siID0
>>84
どうもありがとうございます。
とりあえず、自分で生成したもの意外は、気にせず使えるように実装しているということですね。
自分で作るクラスでも非同期処理が必要な場合等、AutoreleasePool を利用して、
NSSoundのような使い方とか参考になりそうですね。
勉強になります。
86名称未設定:2006/11/09(木) 20:53:59 ID:i9bYalEi0
最近すっかり忘れ去っていたOpenBaseだったが
10.0 のリリースなんてメールが来た。

OpenBase SQL 10 offers a variety of new and updated APIs, including PHP v5,
AppleScript API, Automator actions, WebObjects plugin, Java 1.5 JDBC Driver,
REALBasic Connectivity Module, Universal Binary Omnis DAM,
Universal Binary Cocoa Frameworks and Universal Binary C & C++ Libraries.

Cocoa Frameworksにそそられるけど、これに手を出すと凄く孤独な開発になりそう。

このスレの方で使ってみようなんて人、いらっしゃいますか?

参考のURL
http://www.openbase.com/whatsnew
87名称未設定:2006/11/10(金) 01:02:02 ID:k2lOLm0k0
>>86
使ってます。
10 になってから、
パフォーマンス制限がなくなったのが素晴らしい。
8886:2006/11/10(金) 19:39:32 ID:f6qUUNod0
>>87
soloを落として、これから使ってみる。
coredataと連携するような記述があったけど、
さて、どこから手をつけようかな。
89名称未設定:2006/11/11(土) 01:50:42 ID:D2euzxWC0
Cocoaセミナー上級編受けた方、感想ヨロ。
90名称未設定:2006/11/12(日) 02:52:53 ID:aMZHB6GW0
NSNumber と CFNumberRef が toll-free になる
予定はないのでしょうか。
91名称未設定:2006/11/12(日) 12:52:34 ID:wE8hPFD50
既にtoll-freeです。
NSNumberとCFBooleanRefも同じく。
92名称未設定:2006/11/12(日) 18:12:52 ID:ogh35N3o0
NSTaskって対話形式のコマンドは使えない?
93名称未設定:2006/11/12(日) 18:40:27 ID:aMZHB6GW0
そのようですね(汗)。
http://developer.apple.com/documentation/Cocoa/Conceptual/CarbonCocoaDoc/Articles/DataTypes.html
ここの表をみていたので気がつきませんでした。
しかもよく読むと、Table 1 is a partial listing と
なっており、完全なリストではないと書いてあるし。
94名称未設定:2006/11/17(金) 00:20:27 ID:6O9fOB1s0
質問です。
NSEventでマウスイベントを作りたいのですが、
buttonNumberを設定(6とか7とか)するにはどうしたらいいのでしょうか。
クラスメソッドの
mouseEventWithType:location:modifierFlags:timestamp:
windowNumber:context:eventNumber:clickCount:pressure:
では、NSOtherMouseDownという常数が使えますが、
ボタンナンバーまでは指定できないようです。。。
95名称未設定:2006/11/17(金) 00:52:13 ID:6O9fOB1s0
自己レス。
Guiにはあるんですね。ということは
Appleの提供するNSEventにはないのだな。
96名称未設定:2006/11/17(金) 02:51:11 ID:6O9fOB1s0
NSEventのインスタンス変数とメソッド一覧をざっと
みたけど、buttonNumberに相当するものはなさそうですな。
buttonNumberってどこにセットされてんだろ。
97名称未設定:2006/11/18(土) 11:34:48 ID:5C7WKtny0
ファイルを削除するときに、ごみ箱に移動させたいのですが、単純に~/.Trashにmoveするのでは同名のファイルが問題になります。

ごみ箱へ移動させるメソッドは、NSWorkspaceやNSFileManagerには無いようなのですが、存在するのでしょうか?
98名称未設定:2006/11/18(土) 13:11:59 ID:51HkmAo90
>>97
NSWorkspaceRecycleOperation
99名称未設定:2006/11/18(土) 13:48:11 ID:5C7WKtny0
>>98
サンクスです。
100名称未設定:2006/11/18(土) 16:27:40 ID:D99tGjH80
Apple提供のXML-RPC対応ライブラリってないのかなあ?
どなたかご存じないですか?
いちいちフレームワークやらなんやら探してビルドから始めるのは、面倒なんだよね・・。
101名称未設定:2006/11/18(土) 18:01:07 ID:zfRuea1t0
今まで気にしてなかったんだけど
NSWindowのattributeにあるOneShotoとDeferredって何をするもの?
102名称未設定:2006/11/18(土) 20:22:11 ID:7y4C8lsu0
NSWindow Class Reference 読め
10394:2006/11/18(土) 21:16:15 ID:fbo3Pr/F0
自前のイベントクラスを作ることにしたので、
setButtonNumberがNSEventになくても
先に進めるのですが、やはり気になる。
どういう理由でマウスイベントオブジェクト
を生成できるのに、そのインスタンスに
ボタンナンバーを設定できないのか。
Appleは複数ボタンのマウスを正式にはサポート
してないから、それが答えなんでしょうか?
104名称未設定:2006/11/18(土) 21:59:29 ID:3s926J7f0
>>100
WebServicesCore.framework
105名称未設定:2006/11/19(日) 01:07:30 ID:yFekvedl0
>>103
単にそこまで Apple の公開しわすれでは。
正式サポートの意味がわからんけど、環境設定のマウスとかではサポートしてるわけだし。OS Xの全ての機能が Cocoa から使える訳でもないし。
Apple に要望だしとけば?
class-dump でみたかぎりではあからさまに buttonNumber を保持している
ivar はないっぽいね。
106名称未設定:2006/11/19(日) 01:14:02 ID:BD/wDrYF0
>>103
> Appleは複数ボタンのマウスを正式にはサポート
> してないから、それが答えなんでしょうか?

複数ボタンのマウスをサポートしているし。

ttp://developer.apple.com/documentation/Cocoa/Conceptual/EventOverview/EventObjectsTypes/chapter_3_section_3.html

Events Related to Mouse Clicks and Movements項参照。

Important の項目にもあるとおり AppKitがデフォルトハンドリングを提供していないだけ。
サブクラスつくればいいだけだし大した手間ではないのでは?
10794:2006/11/19(日) 10:03:42 ID:vTpCCRhM0
>>105-106
ひとりで疑問を抱えているのがいやで、完全解決に
いたらないまでもだれかのコメントがほしかった。
レスありがと。
108名称未設定:2006/11/19(日) 23:28:08 ID:35vlIYx90
独学でcocoaプログラミングを勉強しているものです。
やっとヒレガス本を読み終わり、HMDの2ndEditionを読んでいるところですが、cocoaバインディングのところがどうにもよくわからずへこんでおります。
どうぞ質問させてください。

テーブルビューやテキストビューのバインディングは何とか理解できているのですが、ボタンのバインディングについてよくわからないでいます。
インターフェースビルダーでボタンからNSArrayControllerなどへアクションの設定をしたときに、インスペクターの画面には、add ,remove, fetch など6種類のコネクト先が列記されています。
しかし、それ以外の機能をボタンに持たせたいと思った場合、どのようにしたらいいのでしょう?

上記6種類以外の任意のメソッドをNSArrayControllerに追加させる方法はあるのでしょうか?
それとも、NSArrayControllerのサブクラスを作り自分でメソッドを書き加えるのしょうか?
あるいは、別のコントローラ用のオブジェクトを作りそちらにメソッドを用意するべきでしょうか?

初心者の変な質問かもしれませんが、どうかご指導お願いします。
109名称未設定:2006/11/19(日) 23:53:09 ID:qf/d6c560
>>108
元々ボタンは任意のオブジェクトの任意のアクションに接続可能でして、
NSArrayControllerの用意しているアクションはaddやremoveであるということです。

もし、付け加えたい機能がNSArrayControllerが担当すべきもの、つまり対応するモデルに関するものなら
NSArrayControllerのサブクラスにアクションメソッドを実装するのが有効かもしれません。
もちろん全く別のオブジェクトを作り、アクションメソッドを実装してボタンから繋げるのも可です。
110名称未設定:2006/11/20(月) 00:20:47 ID:erhVfolv0
>>109
108です。
早速のレスをどうもありがとうございます。

なるほどよくわかりました。
サブクラスを作るか、ほかのコントローラ用のオブジェクトを作るかするのが正解だったのですね。
どちらがベターな選択なのでしょうね。
好みの問題なのかな。
111名称未設定:2006/11/21(火) 13:45:44 ID:2y9z0R9x0
CoreDataについて質問です。

CoreDataのデータの保存場所は、デフォルトで
~/ライブラリ/Application Support/アプリケーション名/アプリケーション名.xml
となっていますが、これをユーザーの決める任意の場所に変更したいと思います。

ところが、CoreDataテンプレートのApp_Delegateに自動作成される
- (NSPersistentStoreCoordinator *) persistentStoreCoordinator
が呼ばれる段階では、NSUserDefautlsControllerに保存された値を読むことができ
ないみたいです。([SharedDefaults defaults]にnilしか返ってこない)

何か他に方法があるのでしょうか。自分で外部データを作るしかないのでしょうか。
112名称未設定:2006/11/21(火) 17:49:36 ID:bBT7oNS90
[NSUserDefaultsController sharedUserDefaultsController]とか、
[NSUserDefaults standardUserDefaults]とかではないでしょうか。
試してませんが。
113名称未設定:2006/11/23(木) 18:15:32 ID:2CQx4Qie0
NSArrayControllerにaddObject:したオブジェクトはNSArrayControllerによってretainされるんでしょうか?
114名称未設定:2006/11/23(木) 21:22:23 ID:FNQsBo000
数行のコードを書いたら試せることを質問しないでください。
115名称未設定:2006/11/23(木) 23:07:49 ID:2CQx4Qie0
ごめん、下のコードで試してみました。

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
id anObj = [[NSObject alloc] init];
NSLog(@"A: %d", [anObj retainCount]);
NSArrayController *ctrl = [[NSArrayController alloc] init];
[ctrl addObject:anObj];
NSLog(@"B: %d", [anObj retainCount]);
[ctrl release];
NSLog(@"C: %d", [anObj retainCount]);
[anObj release];
[pool release];

これを実行すると、
A: 1
B: 4
C: 2
って出てきます。これは、
NSArrayController内で3回retainされてて、2回releaseされ、1回autoreleaseされているという認識でよろしいでしょうか。
116名称未設定:2006/11/23(木) 23:36:29 ID:i6sg51FN0
ていうか、そんなことは知ったこっちゃない。
NSArrayControllerがretainしてようが、NSArrayがretainしてようが、そんなことはどうでもよくて、
自分のコードがどうか、を気にするべき。
117名称未設定:2006/11/25(土) 03:23:04 ID:fm2Hh27x0
こんにちは。
いつも質問させてもらっています独学でcocoa勉強中の者です。

今、閲覧専用のテーブルビュー上で任意のrowを1クリック又はダブルクリックしたときに、それぞれに別のアクションをさせることを考えています。

ちょうどOS付属のメールソフト「Mail」で、画面右上のメールリストの任意の行を1回クリックすると右下にメールの内容が表示され、ダブルクリックすると別ウィンドで表示されるようなことをやってみたいわけです。

手元の参考書(ヘレガス本&HMD2)にはサンプルがなく、どうやって実現していいのかわからないでいます。
デレゲートの
- tableView: aTableView shouldSelectRow: rowIndex
を使えば、クリックしたときに反応するメソッドを作ることはできますが、シングルクリックとダブルクリックの区別がつかないように思います。

教えて君で申し訳ないのですが、よろしくご教授願います(m..m)。

118名称未設定:2006/11/25(土) 03:37:10 ID:wla0NIUj0
setDoubleAction:
119名称未設定:2006/11/25(土) 13:52:54 ID:YfQojuy80
>>117
次からは OS のバージョン書こうね。
120名称未設定:2006/11/25(土) 21:58:28 ID:fm2Hh27x0
>>118
>>119
レスありがとうございます。
また、質問するのに最低限の情報も書かずに失礼しました。
OSバージョンは10.4.8 です。
XCodeのバージョンは2.4.1 です。

118さんの「setDoubleAction:」との指摘を受け、いろいろ調べましたら、デリゲートを使わずに実現可能だということがわかりました。

シングルクリックはIB上でアクションターゲットのコネクトをビューとコントローラーにして、任意のメソッドを実行させればいいのですね。
さらに、ダブルクリックは「setDoubleAction:」で任意のメソッドをセットすればよいだけの話なのですね。

勉強になりました。
ありがとうございます。
121名称未設定:2006/11/27(月) 10:15:06 ID:lXxnNclW0
NSLogの内容をコンソールと特定のファイルの両方へ出力したいと考えています。

main内で
freopen(path,"a",stderr); //pathは適当なファイルへのパス
とすることで、特定のファイルへ書き出されることは確認できました。

そこで、
stderr->_write = err_write;
err_writeは
int err_write(void * fd, const char * buffer, int count);
と定義してデバッガでブレークポイントを張って見ていたのですが、
処理を奪うことができませんでした。

stdout->_write = err_write;
としてprintfすると処理が流れてくるため、関数の使い方等には問題が無いように思います。

上記以外の方法でもかまいませんので、もし、ファイルとコンソールの両方へ
NSLogの内容を書き出す方法をご存知の方がいれば教えてください。
122名称未設定:2006/11/27(月) 20:59:28 ID:b/HdyLPP0
Cocoaのしくみ、Objective-Cの文法、XcodeやIBの使い方は
数々の本で勉強したのだが、どうしても自分の作りたいアプリを
うまく書けない。

どこまでを一つのクラスで処理すればいいのか、
どこから別々のクラスで管理すればいいのか、
クラス間の連携、メソッドの規模etc...
コードを書く前におおまかな設計の計画のたてかたが
分からない。
そういう事がつかめるプログラミング解説本ってありますかね?
123名称未設定:2006/11/27(月) 21:38:30 ID:bi1J/6Jn0
オブジェクト指向を解説した本は腐るほど出回ってるが、
結局は自分で効率の良いコードの書き方を模索するしかないだろう。
不格好でもいいからソフトを作ってみて、
そこで満足せずに次々と改良を加えるうちに何が良くて何が悪いかを覚えるもんだ。
124名称未設定:2006/11/27(月) 21:45:07 ID:no/I81ur0
デザインパターン…だけ覚えても意味ないしなあ
125名称未設定:2006/11/27(月) 21:57:29 ID:N/WW8flH0
デザインパターンは会話用のラベルでしかないからね。
「覚える」もんじゃない。

良い設計を眺めることと、自分で作ることを平行して
やるしか、上手くなる術は無いと思うな。
126名称未設定:2006/11/27(月) 23:14:59 ID:vJ5nroua0
>122
リファクタリングの本読めばどういったときにリファクタリング対象となるのか見えてくるよ
それが全てとは言わないが、粒度とか見えるんじゃないかな
127名称未設定:2006/11/27(月) 23:15:05 ID:Ov8f1Gy90
>>121
適当な関数、たとえばMyLog(NSString* aString)なんかを用意して、
その中でaStringをNSLog()で出力したり、
writeToURL:atomically:encoding:error:を使ったりすればいいんじゃない?
stderrとか知らない自分ならこうしてごまかす。
128名称未設定:2006/11/28(火) 01:21:04 ID:CrJuZVwM0
>>127
回答ありがとうございます。
独自のログという方法は既に実装済みなのですが、
この方法ではフレームワーク側が出している、エラーログを受け取ることができません。

ここらへんの処理って結構汎用的なので、ライブラリで公開されたりしてないかな?とか
考えたんですが、最悪ファイル出力のみで、コンソールアプリで確認にしようかともいます。
129名称未設定:2006/11/28(火) 16:42:21 ID:S57JqskP0
window 上でファーストレスポンダが「変化した」のを
キャッチするには、どういった方法があるでしょうか。
130122:2006/11/28(火) 18:49:58 ID:RZ9Tlp9A0
とりあえずいろんなサンプルを見たり
いろいろ創ってみようと思います。ありがとうございました。
131名称未設定:2006/11/28(火) 20:56:19 ID:LIrYBsZg0
>>129
実際に変化した人がみんなに「変化したよ」って教える。
132(・∀・):2006/11/29(水) 04:59:38 ID:Lyy+AXbT0
>>121
わからんかったが、参考までに。

>NSLogv writes the log to STDERR_FILENO if the file descriptor is open.
If that write attempt fails, the message is sent to the syslog subsystem,
if it exists on a platform, with the LOG_USER facility (or default facility
if LOG_USER does not exist), with priority LOG_ERR (or similar).
If both of these attempts to write the message fail, the message is discarded.
133名称未設定:2006/11/29(水) 10:29:25 ID:v/ToxRgP0
>>132
ありがとうございます。

リファレンスNSLogvの内容だと思うのですが、まず標準エラー出力へ
書き出しを試みると書いてあるため、>>121で記述したように、
freopen(path,"a",stderr); //pathは適当なファイルへのパス
とすることで特定のファイルへ書き出しができることは確認しています。

自分がやりたいことは、その内容をコンソールへも同時に書き出すことです。
で、標準エラー出力への書き出し処理を横取りしようと
stderr->_write = err_write;
と定義したんですが、それがうまく機能しないためなんでかな?という話でした。

問題点の大半がCの話なので、ひょっとすると場違いなのかもしれません。
134名称未設定:2006/11/29(水) 23:42:08 ID:uewZiBYh0
>>133
ttp://www.cocoadev.com/index.pl?NSLogToFile
もしかして、↑の話と同じ?
135名称未設定:2006/11/30(木) 02:53:37 ID:WJoWKk6m0
>>134
みたいです、いったん標準出力にかかせといて、それをNSTaskとNSPipeを使って
読み込むんですね、なるほど、やってみたいと思います。
教えていただきありがとうございます。
136名称未設定:2006/11/30(木) 08:55:44 ID:V9obhD+x0
>>121
単にNSLog()だかNSLogv()がstdioライブラリを使ってないというだけじゃないのか?
もしかしてstdioライブラリしかI/Oを知らない人?

freopen()を使うのもある意味邪道のように思えるが...

>>135
>みたいです、いったん標準出力にかかせといて、

>>132 にNSLogv()はSTDERR_FILENOに書くって書いてあるけど、
何をいったん標準出力にかかせるの?

ところで /Library/Logs/Console 以下のログファイルじゃ、駄目なんだっけ?
137名称未設定:2006/11/30(木) 13:16:13 ID:WJoWKk6m0
>>136
>もしかしてstdioライブラリしかI/Oを知らない人?
いえ、stdioすらあんまりわかってない人というほうが正しいかもしれません。
carbonなら、まだ触ったことあるんですが、標準C関係はほとんど知識が無いため
変なこと言ってるようであればご勘弁を・・・

>freopen()を使うのもある意味邪道のように思えるが...
邪道なんですね・・・

>NSLogv()はSTDERR_FILENOに書くって書いてあるけど、
>何をいったん標準出力にかかせるの?
stderrの出力先をstdoutにする?あれ?どっちもコンソールに出してるから
そんなこと必要ないのか?あれ?あれ?
dup2(stdout,stderr);なんてことを想像してました。

>ところで /Library/Logs/Console 以下のログファイルじゃ、駄目なんだっけ?
はい、特定のファイルへ書き出したいというのは絶対条件で
できれば一緒にコンソールへ書き出したいと思っています。

理解していないことが現れまくりで、お恥ずかしい限りです。

138(・∀・):2006/11/30(木) 20:02:03 ID:PN79DLVh0
stdio.hは標準入出力ライブラリ。fopen,fwriteなどの関数で構成。
読み書きはファイル記述子(ディスクリプター)に対して行う。
stdin,stdout,stderrは、予約されたディスクリプター

それとは別に低水準IOがある。unistd.hにopen,write,readとか。
読み書きはファイル番号(0〜n)に対して行う。
STDERR_FILENOは、こっちのこと。

main側で
cons = dup(STDERR_FILENO); //NSLogの出力をconsへ退避
pipe(p); //pipe作成
dup2(p[0],STDERR_FILENO); //STDERR_FILENOをパイプの入力へ


NSTask側で
len = read(p[0],log, sizeof log); //パイプから読み込み
write(cons,log, len); //consへ書き込み
write(自分のFILENO,log, len); //

こんな感じだっけ?普段こんなややこしいことしないから
正直これ理解して書けたらUnix上級者。
139129:2006/11/30(木) 20:40:48 ID:6vsYjjCV0
>>131
notification でしょうか?何て言う notification になるのでしょうか。
140名称未設定:2006/11/30(木) 21:04:02 ID:WJoWKk6m0
>>138
なるほどー、説明していただいて初めて理解できました。
PowerPlantやJavaなら、まだ少しは経験あったんですが、Unixはぜんぜんでした。
手取り足取り、ありがとうございました。
141名称未設定:2006/12/01(金) 16:58:45 ID:G1Twll1A0
CocoaにはCarbonのProcessManagerに相当するものがないのだろうか・・・?
ProcessManager使った方が早いんだろうか?
142名称未設定:2006/12/01(金) 19:10:22 ID:3NKoz3vQ0
確かに見てみるとCocoaでソフト作ってるのに部分的にCarbon使ってるソフトも多い。
Carbonじゃなきゃいけなかったのか?と疑問に思った事があった。
CocoaになくてCarbonっていうならば欠陥と思わざるを得ない。
誰か詳しい人ヨロ。
143名称未設定:2006/12/01(金) 20:08:17 ID:/Nlt+hhv0
>>142
むしろCarbonを使わずにちゃんとしたCocoaアプリを作る方が難しいと思うが。
144名称未設定:2006/12/01(金) 22:40:17 ID:PmTzQrUH0
前スレで、「自分の作ったクラスにメッセージを投げたい」
という方の質問があり、自分もやってみました。

しかし、自分の作ったクラスのメソッドを他のクラスから使おうとすると、
エラーが発生してしまいます。

たとえばClassAを作り、メソッドをいくつか実装します。
そして、作ったClassBからClassAのインスタンスにメッセージを
投げるのですが、Xcodeでビルドすると、
warning: 'ClassA' may not respond to ' (メソッドの名前) '
method not found
というエラーが出てビルドできません。

お聞きしたいのは、
一般的に自分の作ったメソッドを使いたい場合は、そのクラスの
インスタンスにメッセージを投げるという方法をとるものなのか?
だとすれば、どうしてこのようなエラーが出てしまうのか?
という事です。

こちらの環境は、MacOSX10.4 Xcodeのバージョンは2.4です。
よろしくお願いします。
145名称未設定:2006/12/01(金) 22:46:53 ID:wpQKpWyn0
ソース
146名称未設定:2006/12/01(金) 22:49:02 ID:B53fK8z10
typo という線は消したんだろうな?
147名称未設定:2006/12/01(金) 22:52:21 ID:B53fK8z10
>>143
ンなわけない。
148名称未設定:2006/12/01(金) 23:00:21 ID:PmTzQrUH0
何度もチェックしたので、入力ミスということはありません。
ただ、Cocoaに慣れていないので、クラスやインスタンスの作成の過程
で何らかの勘違いがあったかもしれません。

気になったのですが、クラスでメソッドを実装するときは、
InterfaceBuilderでクラスに追加したアクションは、
メソッドになるんですよね。
149名称未設定:2006/12/01(金) 23:01:24 ID:PmTzQrUH0
焦って日本語がおかしいので訂正します

気になったのですが、
InterfaceBuilderでクラスに追加したアクションは、
メソッドになるんですよね。
(もちろんソースファイルは作成して)
150名称未設定:2006/12/01(金) 23:02:36 ID:B53fK8z10
インスタンスメソッドな
151名称未設定:2006/12/01(金) 23:04:58 ID:1/wPFhyk0
>>144
ClassAの.hファイルにちゃんとメソッド宣言して、
ClassBの.mファイルから#importした?
152名称未設定:2006/12/01(金) 23:11:46 ID:B53fK8z10
-----AClass.h
#import <Cocoa/Cocoa.h>
@interface AClass : NSObject {
}
+(void)hoge;
-(void)hoge;
@end

-----AClass.m
#import "AClass.h"
@implementation AClass
+(void)hoge{
NSLog(@"%@",@"fuga");
}
-(void)hoge{
NSLog(@"%@",@"hogera");
}
@end

つづく
153名称未設定:2006/12/01(金) 23:12:49 ID:B53fK8z10
-----BClass.h
#import <Cocoa/Cocoa.h>
#import "AClass.h"
@interface BClass : NSObject {
IBOutlet id aClass;
}
-(void)piyo;
@end

-----BClass.m
#import "BClass.h"
@implementation BClass
-(void)piyo{
//クラスメソッドを呼んでみる
[AClass hoge];
//インスタンスメソッドを呼んでみる
[aClass hoge];
}
@end

これで理解できるか?
154144:2006/12/02(土) 08:32:05 ID:9T+Irg/B0
どうしてもメソッドを認識してくれませんorz
クラス間のメッセージングだけを行う簡単なプロジェクトファイルを
UPしていただけると幸いなのですが・・・
勝手なお願いですみません。
155名称未設定:2006/12/02(土) 10:06:33 ID:5iIqo4eE0
>>154
そんなもんいちいちUPするまでもなく、>>152-153で普通に出来る。
こっちはあなたの状況がわからないのだから、あなたの方が
出来ないっていう簡単なプロジェクトを作ってUPして下さい。
っていうかなんでプロジェクトファイルにこだわる?
もしかして、普通のメソッド作るにもInterface Builderで
アクション作ってるんじゃないよね?
156144:2006/12/02(土) 16:53:49 ID:9T+Irg/B0
>>155
すみません。もう少し自分で追求してみます。


>もしかして、普通のメソッド作るにもInterface Builderで
>アクション作ってるんじゃないよね?

そういうものかと思っていましたorz
とりあえず、152-153で普通にやってみます。
157144:2006/12/02(土) 21:03:53 ID:E+WmXeRo0
クラスメソッドのメッセージングがうまくいきました。
>>155さんの指摘のように、プログラムの中で使うメソッドと、
ユーザーの操作によって動作するIBのアクションによるメソッドを
区別にして考えていなかったのが原因でした。
ありがとうございました。

あと一つ疑問なのですが、別のメソッドに変数の内容を渡す場合は、
引数として渡してあげれば良いと思うのですが、同一クラスの
複数のメソッドで変数を共有できないでしょうか。
変数が多くなってくるとselfにメッセージを
送って引数で渡すのが非効率的だと思うのですが。
よろしくお願いします。
158144:2006/12/02(土) 21:13:11 ID:E+WmXeRo0
失礼しました。自己解決しました。インスタンス変数という
概念を忘れていました。
スレ汚し申し訳ありません。
159名称未設定:2006/12/02(土) 21:34:19 ID:5iIqo4eE0
クラスメソッドにインスタンス変数は使えないから。
クラスをインスタンス化するには
AClass *a = [[AClass alloc] init];
などとやって、インスタンスメソッドを呼ぶには
[a hoge];
使い終わったインスタンスを解放するには
[a release];
などとやる。
160-:2006/12/03(日) 04:09:27 ID:wF8/tBMw0
教えて頂きたいのですが、
IB からN SScrollView の NSScroller を NSScroller のサブクラスに変更したいのですが、
NSScrollView を ダブルクリックすると NSScroller を選択出来ません。
IB から NSScroller をサブクラスに変更出来ないのでしょうか?
trackKnob:を使いたいので...
161名称未設定:2006/12/03(日) 05:18:46 ID:/a81gx/j0
>>160
コードから変更すればいいじゃん
162名称未設定:2006/12/03(日) 08:32:28 ID:3yIdgKyQ0
毎日悩みながらcocoaをはじめた初心者です。
QTkitを中心に触っています。
ファイルの名前、長さ、サイズなどをcoredataにいれてテーブルビュー
で見て検索できるものを勉強がてら作っています。
QTMovie* movie = [QTMovie movieWithFile:aFile error:nil];
NSString *durStr= QTStringFromTime([[movie attributeForKey:QTMovieDurationAttribute] QTTimeValue]);
[object setValue:durStr forKey:@"movietime"];
で長さはとれて格納できたので、次はムービーのコーディックを取り出したい
と思ったのですが、どうしてもムービーのコーディックを取得する方法がわからず
悩んでおります。
もしご存知の方がいらっしゃいましたらどうかご指導お願いします。
163名称未設定:2006/12/05(火) 17:55:36 ID:Atc5YgfQ0
int型の変数をNSStringの型に変えるのはどうやってやるんでしょうか
01234という変数を "01234"という文字列に変えたいのですが。
164名称未設定:2006/12/05(火) 18:01:13 ID:qBG6pDOz0
[NSString stringWithFormat:@"%d", anInteger]
165名称未設定:2006/12/05(火) 18:05:18 ID:Atc5YgfQ0
>>164 早速お答えしていただき、ありがとうございました。
166名称未設定:2006/12/05(火) 20:17:37 ID:/0RtNGA+0
01234は1234になるかと。
167名称未設定:2006/12/05(火) 20:57:25 ID:xs2+2cfD0
8進・・・
168名称未設定:2006/12/06(水) 10:47:19 ID:XMDMDtNT0
お答えしていただき、だと謙譲語ですよ
お答えくださり、のほうがマシ
169名称未設定:2006/12/06(水) 20:04:58 ID:XKFCBC1x0
>>168
お前も勉強し直せ。
170名称未設定:2006/12/06(水) 21:44:54 ID:uPlZWbQu0
質問です。

アプリケーションが2つのフレームワークをリンク
しているとします。

仮にFramework_A, Framework_Bとします。
その中にそれぞれNSObjectから派生した、
ObjectA, ObjectBというクラスがあるとします。

その2つのクラスが、同じ名前だが内容は異なる
C言語関数Hogeを呼んでいるとします。

2つのフレームワークをリンクすると
内容が異なる2つのHoge関数がプログラム中に存在するわけですが
意図しない動作をアプリがするようになるのでしょうか?

つまり、Framework_AのHoge関数が呼ばれて欲しいのに
Framework_BのHoge関数が呼ばれてしまうことってありますか?
171名称未設定:2006/12/06(水) 21:58:19 ID:rO1EOtdx0
クラス名が違うんだったら、問題無いでしょ。
172170:2006/12/06(水) 22:04:23 ID:uPlZWbQu0
ちなみに、私が作ったサンプルプログラムでは
意図した動作をしています。

つまり、ObjectAクラスからは正しく
Framework_Aに実装されているHoge関数が呼ばれます。

不思議なのですが、そういったものなのでしょうか?
173名称未設定:2006/12/06(水) 22:06:13 ID:c7PswZvr0
>>171
クラス名とC関数に何の関係があるのかと
174名称未設定:2006/12/06(水) 22:13:09 ID:rO1EOtdx0
スマン。良く読んでなかった。
大抵の場合期待した動作をするが、言語の仕様としては全く保証されていない。のまつがい。
175名称未設定:2006/12/06(水) 22:16:11 ID:rO1EOtdx0
関数がexportされているならば、リンクのときに何か言われている筈
176名称未設定:2006/12/06(水) 23:38:56 ID:03YBeblS0
>>172
ttp://developer.apple.com/jp/technotes/tn2071.html#Section7

two-level namespaceが有効であれば、関数名(シンボル)とフレームワーク
(ダイナミックライブラリ)の両方を使って関数を探すので、同じ名前の関数が
あっても大丈夫です。
10.2以降なら、とくにflat_namespaceを指定しなければtwo-levelになります。
177170:2006/12/07(木) 02:32:40 ID:NwoK5gtF0
>>176
なるほど!
リンカーのデフォルトがtwo-level namespaceになっているため
シンボルの解決ができていたわけですね。
納得しました。
有り難うございます!
178名称未設定:2006/12/09(土) 12:18:42 ID:3dMO/CX10
CocoaにはRelaxerみたいにXMLからソースコードを生成してくれるツールってないの?
Cocoa-Javaを使えばいいんだろうけど、Cocoa-Javaはやばそうだし。
179名称未設定:2006/12/09(土) 13:13:57 ID:mTYfcTD/0
見つからなければ作る。
そして見つかりやすいようにGoogleに登録。
180名称未設定:2006/12/09(土) 15:22:27 ID:wqZvEl/10
181名称未設定:2006/12/09(土) 18:34:25 ID:CAtwcAMS0
>>179
はい
182名称未設定:2006/12/09(土) 20:27:05 ID:0iZnb95p0
Relaxerのことを全然知らずに書くけど、CoreDataのモデルはXMLファイルだよ。
なのでXcodeのモデルエディタ相当のことなら、理論的にはXMLファイルの操作だけで可能。
183(・∀・):2006/12/10(日) 01:11:55 ID:KYjZNx1G0
.plistがXMLだからそれで書き出せば?
property listで検索してくれ。
184名称未設定:2006/12/10(日) 02:17:18 ID:vfbyvm1o0
まず、XMLのスキーマなりが前提の開発なのでは?
185名称未設定:2006/12/10(日) 10:20:41 ID:FtwTf5wd0
Relaxerってその辺に転がっているXMLファイルから、そのラップクラスを自動的に作成してくれるツールじゃない?
いちいちDOMやSAXを扱いたくない時に使うツールだよね。
186名称未設定:2006/12/10(日) 18:38:24 ID:qfnmBLt00
質問です。

Cocoaアプリケーションで起動直後、つまりユーザーの
アクションが来なくても起動してすぐにメソッドを実行したり
変数に値を入れたりしたい場合は、どこにどんなコードを
記述すればいいのでしょうか。よろしくお願いします。
187名称未設定:2006/12/10(日) 18:43:43 ID:9O5iKQi60
nib ファイルでインスタンス化するクラスに -(void)awakeFromNib; を実装する。
188名称未設定:2006/12/10(日) 18:48:12 ID:vfbyvm1o0
1.mainの中に書く(NSAutoreleasePootを忘れずに)
2.アプリケーションのデリゲートを設定してapplicationDidFinishLaunchingとかを実装する
3.NSApplicationDidFinishLaunchingNotificationを受け取るようにする。

2.3はNSApplicationのマニュアルの下のほうに詳しく書いてあります。
189名称未設定:2006/12/10(日) 18:54:18 ID:qfnmBLt00
>>187,>>188
どちらでもいけるという事ですね。
すばやい回答をいただき、本当にありがとうございました。
190名称未設定:2006/12/10(日) 21:43:55 ID:4KDrJ0840
>>180
俺様File Not Found.

そうか俺は対象者じゃなかったか。トホホ。
191名称未設定:2006/12/10(日) 21:45:21 ID:qfnmBLt00
上級編おとせねー
192名称未設定:2006/12/10(日) 23:41:16 ID:27TbwTdQ0
うちから見ても上級編Not Foundだ
193名称未設定:2006/12/11(月) 03:01:24 ID:etouuBdd0
NSDictionary* dic /* ... */;

SEL method = [dic objectForKey:keyword];

[obj performSelector:method];

こんな感じでやりたいんだがどうすればいいんだぜ?
194名称未設定:2006/12/11(月) 03:05:22 ID:yOw6E7+R0
NSDictionary にはオブジェクトしか入れられないんだから
メソッド名を NSString で格納して使う時は NSSelectorFromString でメソッドに変換すれば?
195名称未設定:2006/12/11(月) 04:36:31 ID:etouuBdd0
>>194
マジサンクス

関係ないけどinitWithObjectsAndKeys:って
Value,keyの順番なのな
Perlと逆ではまっちまったぜwwwwwwwwwwww
196名称未設定:2006/12/11(月) 11:20:48 ID:xNklzU8R0
NSInvocation つかってもいいかもしれないぜ
197名称未設定:2006/12/11(月) 19:20:48 ID:dV/IUyHt0
いまだに、
上級編おとせねー
198名称未設定:2006/12/12(火) 00:34:51 ID:0wTQU8d80
上級編みたいよー
199名称未設定:2006/12/12(火) 00:54:19 ID:68VfZzRy0
質問すまそ
IBで内容がNSImageCellのNSMatrixってどうやって作るの?
200名称未設定:2006/12/12(火) 03:20:01 ID:OOWAcIHu0
ImageViewをウインドウにDropして、ハンドルをoption+Drag
201名称未設定:2006/12/12(火) 06:17:52 ID:4CqqGwXJ0
上級編落とせるようになってた
202199:2006/12/12(火) 07:17:29 ID:NTSQV5mc0
3x!! > 200
203名称未設定:2006/12/12(火) 15:12:49 ID:dQvk4DK/0
ぐふぉ、なんだこりゃ?
NSString *currentTrackName = [[iTunes currentTrack] name];

Scripting Bridge
http://developer.apple.com/leopard/overview/apptech.html

tell application "iTunes" to get name of current track
204名称未設定:2006/12/12(火) 15:23:09 ID:BM8RspHM0
>>203
AppleScriptイラネw
205177:2006/12/12(火) 18:44:57 ID:qv6IK53w0
two-level namespaceでリンクされているはずなのですが
ワーニングで
"warning multiple definitions of symbol"
ってのが出るんですが、これはそういうものですか?

ちなみにワーニングが出るのは、gcc3.3で
gcc4.0では出ません。
206名称未設定:2006/12/12(火) 20:04:08 ID:0uf+WIXb0
以下ワーニングの話題禁止。
207177:2006/12/13(水) 11:55:04 ID:g6S8/CRJ0
自己レスです。
gcc4.0では多重定義シンボルのコンパイルオプションが
デフォルトでオフになっているようです。

ひとつ確認なのですが、two-level namespaceのリンク環境だと
Framework_AのObjectAで呼ばれているHoge関数は
Framework_AのHoge関数を必ず呼ぶという認識でよいのでしょうか?

208名称未設定:2006/12/13(水) 12:10:26 ID:2LyAOiKC0
CodeWarriorで使っていたコードをXcodeに持ってこようとしてるのですが、↓みたいなコードで、
multi-charactor charactor constantの警告が出ます。

bool IsSjisAlphabetBig(const wchar_t code) { return code >= 'A' && code <= 'Z'; }

これはCodeWarriorでもWindowsのC++ Builderでも使えていたコードなんですがgccだとダメなん
でしょうか?回避する方法があったら教えてください。
209名称未設定:2006/12/13(水) 12:37:03 ID:F/NbL/im0
AとZをキャストすりゃいい、かな?
210名称未設定:2006/12/13(水) 12:44:26 ID:2LyAOiKC0
(wchar_t)をつけてみたり、(long)を付けてもダメ。L 'A' とかしてもダメでした。

まだ、他にもコンパイラエラーがいろいろあってテストできないんですけど、
この警告、無視するとどうなるんですかね?
211名称未設定:2006/12/13(水) 13:32:55 ID:2LyAOiKC0
>>208
簡単なテストプログラム作って見てみた範囲では一応警告出たままでも予期した
とおりには動くみたいです。とりあえずは警告出たままで放置することにします。
212名称未設定:2006/12/13(水) 14:16:28 ID:sM45be7T0
>>208
>multi-charactor charactor constant

>ttp://pierrot.daionet.gr.jp/~kuno/prog/cpp/guide1/literal.html
とか?
213名称未設定:2006/12/13(水) 14:20:15 ID:cgnizdio0
multicharacter character constant は endian がヤバくね?
214名称未設定:2006/12/13(水) 14:21:55 ID:zDV1j5Tr0
ソースコードのエンコードに依存するような。
>176 のリンクにも何か不吉な事が書いてある。
215名称未設定:2006/12/13(水) 15:01:44 ID:2LyAOiKC0
>>212-214
コメントありがとうございます。

もしやと思って↓にしてみたら、警告も消えて(多分)正常に動作しました。
bool IsSjisAlphabetBig(const wchar_t code) { return code >= 0x8260 && code <= 0x8279; }

>ttp://pierrot.daionet.gr.jp/~kuno/prog/cpp/guide1/literal.html
の説明だと、1バイトより大きい定数をシングルクオートで挟んで書くのは
言語仕様上はダメで、VC++やCodeWarriorとかで通る方が本来はおかしい
ということで、より厳格なgccでは警告が出るということみたいですね。

この手の関数たくさんあるんで全部書き換えるのは一仕事だぁorz
216名称未設定:2006/12/13(水) 15:40:08 ID:cgnizdio0
文字処理が沢山あるのなら、この際 unicode 対応にしてしまうのが吉ではないかと思う。単純に文字定数を数になおすよりは有意義なんでは。

もしくは C プログラムを読み込んで文字定数を数になおした C コードを吐くスクリプトを書くか。
217名称未設定:2006/12/13(水) 15:47:43 ID:ZklB9ib80
>>215
警告を消すだけなら gcc の -Wno-multichar オプションらしい。

でも、wchar_t っつーのも微妙だよなあ。
218名称未設定:2006/12/13(水) 16:06:37 ID:2LyAOiKC0
>>217
>警告を消すだけなら gcc の -Wno-multichar オプションらしい。

ありがと〜。山のように出ていた警告が一気に600以上消えました。設定の
「その他の警告フラグ」というのを見て消せるのかもしれないと思いつつ、
Xcode初心者なんでマニュアルのどこ見ていいか分かんなくて困ってました。

>でも、wchar_t っつーのも微妙だよなあ。

まぁ、確かに微妙なんですが、Windowsとソース共有しようとするとそれなり
に便利な時もあります。
219名称未設定:2006/12/14(木) 21:31:36 ID:LXaLqkvJ0
プロジェクト作る前に、仕様書とかって作った方がいいんでしょうか?
皆さん作ってますか?
220名称未設定:2006/12/14(木) 21:43:15 ID:9V9EEqrW0
ソースファイルが200近くになるソフトを組んでるけど。
他人にソースを見せるようなことも無いので仕様書なんて作ったことない。
221名称未設定:2006/12/14(木) 21:51:13 ID:9V9EEqrW0
大体、紙を使うのはユーザーインターフェイスの概念図を描いてみたりする時くらいだな。
それも実装が終わったら捨ててしまうが。
222名称未設定:2006/12/15(金) 01:10:38 ID:U0bydmE50
>219
ぶっちゃけ
プロですら、あらかたテストまで終わってからおもむろに仕様書を書き出すってこともままあるw
223名称未設定:2006/12/15(金) 01:45:25 ID:BTvLsZ+M0
Macって時点で規模が小さいこと多いからねー
ちゃんと設計やってから作りはじめれるほど予算が無かったりする
224名称未設定:2006/12/15(金) 03:19:40 ID:J2QstYMF0
なに知った風な口きいてんだよ。
仕様書を作らないなんてのはMacWin問わず業界全般の傾向だよ。
仕様書を作らないのは予算の問題ではないしな。
225名称未設定:2006/12/15(金) 10:46:57 ID:BTvLsZ+M0
予算=時間、って意味で書いたんだけど他の会社はそんなこと無いのかな?
特に、規模小さくて1〜2人で開発だと、うちの場合Doxygenから自動生成+アルファになっちゃうけどな。
自分の周りの非常に狭い範囲からの主観なので、えらそうに業界語ってるように見えたのであれば
そういう意図ではないです。
226名称未設定:2006/12/15(金) 13:12:15 ID:jZvWsNfc0
数人で開発する小規模なプロジェクトで仕様書なんて必要ないよ。
大規模なプロジェクトなら必要になるだろうが、そんな開発することはないし。
227名称未設定:2006/12/15(金) 17:10:01 ID:TycHkDNi0
「俺ってカッコイイ!?」とか勘違いするために書いてます。
作り始めるとほとんど別物になったりします。
228名称未設定:2006/12/15(金) 20:21:54 ID:pCBS+kqG0
ISOがらみで不要な仕様書を沢山書いています。
でも、Macの場合はスクショットのオンパレードだけどねw
229名称未設定:2006/12/16(土) 13:17:17 ID:6ZDoiGpC0
XMLをキーバリューコーディングを使ってうま〜く処理したいんだけど
何か良いイディオムをまとめたサイトってないかな?
230名称未設定:2006/12/16(土) 16:49:02 ID:m+0c4j4t0
うまくとは?
231名称未設定:2006/12/16(土) 17:05:15 ID:XpoQ7IVM0
上手にってことだね
232名称未設定:2006/12/17(日) 14:47:48 ID:/Ftaayr30
>>229
setValue:forUndefinedKey:を駆使すればいいんじゃね?
233名称未設定:2006/12/17(日) 17:19:40 ID:PfvJxJHk0
質問をお願いします。
インスタンスメソッドで引数として渡されて来た値を
インスタンス変数に代入するには

(インスタンス変数) = (引数のラベル)

のように等式で結べばいいのでしょうか?
このようにやってみたら、同じクラス内の他のメソッドで
そのインスタンス変数を利用したときに値が保持されていませんでした。
どうすれば良いのでしょうか。お願いします。
234名称未設定:2006/12/17(日) 17:34:01 ID:KRjZnlyX0
まず貴方の書いた
> そのインスタンス変数を利用したときに値が保持されていませんでした。
というコードを晒してごらんなさい。
235名称未設定:2006/12/17(日) 18:34:23 ID:adSmDX3Q0
retainしていないからだろ、常識的に考えて……。
236名称未設定:2006/12/17(日) 20:33:26 ID:fAvqeWSK0
retainしてみてもうまくいきません・・・
ビルドは通るのですが該当箇所の動作をすると
フリーズしてしまいます。

(インスタンス変数) = [(引数のラベル) retain];

じゃだめなんでしょうか
237名称未設定:2006/12/17(日) 20:34:56 ID:xZv7Fx1L0
引数のラベル?
238名称未設定:2006/12/17(日) 21:30:57 ID:ajQKWzrX0
引数の型は何よ?
239名称未設定:2006/12/18(月) 01:09:52 ID:kOf8vMNu0
何をしようとしているのか分からんが、まぁ↓読んでみてくれ
ttp://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_8_section_2.html
240名称未設定:2006/12/18(月) 13:21:54 ID:aK26SCAz0
>>236
retainって引数はオブジェクトなのか?
ソース出せや。お前の話ではさっぱりわからん。
241名称未設定:2006/12/18(月) 16:18:08 ID:gE+QWeQs0
>>236
まずはソース出したほうがいいだろうね。

ちなみに、もしメソッドの引数がオブジェクト(intとかではない)だったら、
お前がやってるのは値渡し(コピー)じゃなくて参照渡しだぞ。

他でオブジェクトを変更したら、インスタンス変数から
参照する値も変わるってのは当たり前。
それが嫌ならオブジェクトのコピーを作るべし。
242名称未設定:2006/12/18(月) 20:53:33 ID:F7IYl3xi0
拡張子が.weblocのファイルってどういう構造になってるんでしょうか?
テキストファイルとして扱えるのと、そうでなうのとありますよね。
243名称未設定:2006/12/18(月) 21:02:31 ID:ZH/grwv20
>>242
ResEditで開いてみれ
244236:2006/12/18(月) 21:19:05 ID:mNEEWsBc0
@implementation NumberClass


-(void)setNumber:(int)newNumber {//インスタンス変数numberを、引数として渡された値に変えるメソッド
number = [newNumber retain];
}



-(int)getNumber{ //インスタンス変数numberの値を返すメソッド
return number;
}
@end



というクラスを書いて、他のクラスから

NumberClass *a = [[NumberClass alloc] init];
int _number;
_number = [a getNumber];
[a release];

とやってnumberの値をとりにいこうとしても常に 0 が返ってくるので、
インスタンス変数に値がうまく保持されていないと思うのですが、
どうでしょうか。よろしくお願いします。
245名称未設定:2006/12/18(月) 21:24:49 ID:4TvyM4Tz0
>number = [newNumber retain];
ここでもう間違ってる。newNumberはint型でしょ?オブジェクトじゃないものretainしてどうすんのさ。
そもそも@interfaceでnumberをどう宣言したの?
246名称未設定:2006/12/18(月) 21:52:37 ID:OK8PsTcj0
alloc initしただけじゃ0だろ
よく知らんけど
247236:2006/12/18(月) 21:52:51 ID:mNEEWsBc0
int number; とint型で宣言しました。

すいません、retainの実態がよく分からず使っていました。
オブジェクトじゃないint型の変数を保持するにはどうするのでしょうか?
248名称未設定:2006/12/18(月) 21:53:38 ID:MUMA1qVM0
>>245さんの言うとおり、intみたいな通常のC言語で扱える値を、
わざわざオブジェクトとして管理する意味はないよ。もうちょい先へ進めば
あるかもしれないけれど、しばらくは、ない。
@interface NumberClass : NSObject
{
 int _number;
}
@end

@implementation NumberClass
- (int)getNumber{ return _number};
- (void)setNumber:(int)newNumber{ _number = newNumber};
@end

ちゅーか、他のクラスから [[NumberClass alloc] init]した直後は、
_numberは当然ゼロ(もしくは不定)だと思うけど、その部分も混乱してる?
使い始める時のためにNumberClassに
-(id)initWithNumber:(int)num みたいな初期化用メソッドが必要ではなかろう
かと。いまいちやりたい事がわからないので方向違いの話かもしれないけれど。
249名称未設定:2006/12/18(月) 22:28:05 ID:L+XISaS80
つーかivarをアンスコではじめるなってAppleがいってなかったっけ?
250名称未設定:2006/12/18(月) 22:34:30 ID:4TvyM4Tz0
>>249
クラス名じゃなかったかね。
俺ぶんぶんやるよ。KVCも対応してたんじゃない?
251名称未設定:2006/12/18(月) 22:54:26 ID:r7pI0Sbq0
KVCも対応してくれてるね。

私はアンスコが気持ち悪いから絶対やらんけれど。
252236:2006/12/19(火) 22:07:32 ID:USDXPh+I0
>>248

私の書いたコードで
NumberClass *a = [[NumberClass alloc] init];
int _number;
_number = [a getNumber];
[a release];

とやるとインスタンス変数が0に戻ってしまうのは、initすることで
初期化されてしまうからだ、ということは分かりました。
つまり、クラスにメソッドを投げるときに init してはダメという
ことですよね。その場合は、[NumberClass alloc]のようにinitしないで
単にインスタンス化するしかないのでしょうか?
(それすらうまくいくのか理解できませんが
253名称未設定:2006/12/19(火) 22:14:58 ID:CW2ouDFf0
何をしたいんだよ、おまいは。
>>248 が語り尽くしてるじゃないか。
254名称未設定:2006/12/19(火) 22:30:49 ID:HB8vQgiF0
クラスとインスタンスの違い、要するにオブジェクト指向の
基本的なところを勉強しろ、って話だな。
超解釈するとどうもクラス変数を使いたいように見えるので、
もしそれならstaticがキーワードになるが。
255名称未設定:2006/12/19(火) 22:47:19 ID:j8VIg3nF0
>>252
(俺も詳しいことまでは知らないけど)allocはメモリ領域を確保するだけだから、
[NumberClass alloc]だけではインスタンス変数の_numberには何も値が設定されていない。

だから、_numberの初期値を設定するようなinit、もしくはその値を指定してやるようなinitWithNumber:を実装した上で、
[[NumberClass alloc] init]なりなんなりしてやらなければ、_numberの値は不定なまんま。
で、おまいさんのコードではそんなinitを実装していないから、[a getNumber]が0しか返さない。

>>248の言ってるのはそう言うこと、だと思われる。
256236:2006/12/19(火) 22:49:27 ID:USDXPh+I0
>>234-254の回答してくださった皆様、いろいろと
どうもありがとうございました。

>>248の通りに考えてみます。
>>254のstaticも調べてみます。

ありがとうございました。
257236:2006/12/19(火) 22:54:26 ID:USDXPh+I0
>>255
だんだん分かってきました。ありがとうございます。
258名称未設定:2006/12/19(火) 23:54:59 ID:ZCa/ob+e0
インスタンス変数はallocかinitで0初期化されるんじゃなかったけか?
259248:2006/12/20(水) 00:49:48 ID:RjhVwotT0
>>258
たぶん(経験上も)そうだけど、実装上必ずゼロですという規約を見つけ
られないかったから、不定かも、と書きました。どこかに書いてあったっけ。

>>236
NumberClassのimplementationに、
- (id)initWithNumber:(int)newNumber
{ _number = newNumber; }

 っていう初期化用メソッドを「自分で」用意して(ヘッダにも書いて)、
よそのクラスからNumberClassのインスタンスを使う時にはこうする↓

 NumberClass *numClass = [[NumberClass alloc] initWithNumber:5];

すると _number に 5 を保持した NumberClassのインスタンスができる。確認。

 NSLog(@"%d", [numClass getNumber]);

使い終わったらrelease。
 [numClass release];

なんか真面目そうな人なので一応お答え。もう去ったかもしれないけど。
260248:2006/12/20(水) 00:51:53 ID:RjhVwotT0
す、すみません。書き込みの行数を削ろうとしてコピペ繰り返したら
initWithNumber: がむちゃくちゃだ。正しくはこう。

- (id)initWithNumber:(int)newNumber
{
 if ( self = [super init] ){
  _number = newNumber;
 }
 return self;
}
261名称未設定:2006/12/20(水) 10:02:31 ID:ES7yO1/j0
>>259
このページを数字の0で検索してみてください。「他のインスタンス変数は、すべて 0 に設定されます。」とあります。
http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_8_section_2.html#//apple_ref/doc/uid/20001425/TPXREF101
262236:2006/12/21(木) 21:24:57 ID:3DqA0uE20
>>259
コードを書いていただいて、具体的に理解できました。
ありがとうございます。
263名称未設定:2006/12/23(土) 18:02:52 ID:W1BTk1/00
Core Data のアプリで、NSArrayController を使って NSManagedObject を
削除しようとしていますが、うまくいきません。

NSArrayController * arrayController;
NSManagedObject * managedObject;

で、

(1) [arrayController removeObject: managedObject];
(2) [arrayController removeObjects: [NSArray arrayWithObject: managedObject]];
(3) [arrayController removeSelectedObjects: [NSArray arrayWithObject: managedObject]];

を試してみたのですが、(1) と (2) だと、

*** -[_NSControllerArrayProxy removeObjectsAtIndexes:] selector not recognized

というエラーが出て削除されず、(3) だとエラーメッセージは出ませんが、
削除もされません。

arrayController の content と managedObject の中身は正しいのは
確認しており、どの辺がおかしいのか見当がつかずにいます。
264名称未設定:2006/12/23(土) 21:39:00 ID:J7gY/e3a0
Cocotronってどうよ?
http://www.cocotron.org/
265名称未設定:2006/12/23(土) 23:41:17 ID:OidHq+dI0
>>264
XCodeでCocoaをクロスコンパイルするのか?AppKitがWindowsやLinuxで動くと書いてあるけど
本当?Yellow Box見たいな物なのかなー。


266265:2006/12/24(日) 00:01:42 ID:OidHq+dI0
やべぇ、BinaryがWin2000で動く
http://www.cocotron.org/Code/Examples/
267名称未設定:2006/12/24(日) 14:09:25 ID:rVmzif900
>>266
マジで?!
普通にMac OS X アプリを作ったらWin2000で動くの?!←何もわからず書き込み

268名称未設定:2006/12/24(日) 17:46:58 ID:5veIEoub0
NIB が使えないし、KeyValueCoding が未実装なのが致命的だなあ。
クロスコンパイルは魅力的なのだが。
269名称未設定:2006/12/24(日) 21:37:23 ID:g74pIwG60
>>266
おお、本当だ。Parallelsで確認。面白いね。
270名称未設定:2006/12/24(日) 21:44:47 ID:zJAmBUMh0
自作ビュー(NSViewのサブクラスで作ったもの)で一度
描画した内容を消して、(表示する数字の変数の値が変わって)、
新たに描画し直すにはどうすればいいのでしょうか?

setNeedDisplayなどのメソッドを使いましたが再描画
されませんでした。
よろしくお願いします。
271名称未設定:2006/12/24(日) 22:14:40 ID:VWs1p0/H0
display (強制描画)
displayIfNeeded (必要があれば描画)
272265:2006/12/25(月) 01:23:27 ID:GiF3/JEj0
>>268
NIBファイルをいじったらWinで起動しなくなった。
KeyValueCodingはカテゴリで追加できんじゃない?
IBを使わずにどーやってGUIをつくんだよ(w
273名称未設定:2006/12/25(月) 01:43:17 ID:5YaYALgq0
>>273
>NIBファイルをいじったらWinで起動しなくなった。
なんかテキストフォーマットのnibしか読めないみたいなこと書いてあるから、
バイナリで保存してしまったとか?

>KeyValueCodingはカテゴリで追加できんじゃない?
それってできても嬉しくないような

>IBを使わずにどーやってGUIをつくんだよ(w
GUIのオブジェクトをコードで生成すればいいのでは
274270:2006/12/25(月) 22:47:34 ID:0llm1Eie0
>>271
ありがとうございます。


自作Viewのインスタンスにdisplayメソッドを投げても、
描き直されないんです。
displayメソッドを実行したときにdrawRectが実行されてない
ことも確認しました。
そもそもdisplayメソッドは強制的にdrawRectを実行する
メソッドという認識で良いのでしょうか。
275名称未設定:2006/12/25(月) 23:55:36 ID:WnmqtJQV0
drawRect: を drawRect と書いているあたりが心配だ。
276名称未設定:2006/12/26(火) 00:09:25 ID:nE4e/v4x0
>>275
ありえる。

>>274
ウインドウサイズを変更してる時とか、drawRect:はちゃんと呼ばれてる?
一般的な用途では
 [myView setNeedsDisplay:YES];
で事足りると思うんだけどなぁ。
277270:2006/12/26(火) 20:41:06 ID:tds2LiwG0
>>276

ウィンドウサイズを変更しているときにはきちんと呼ばれています

まず起動直後にviewが描画され(ある変数の値を表示します)、
その後に表示する変数の値が変更されたあとの状態で、

 [myView setNeedsDisplay:YES];
 を投げるようにコーディングしました。

これをやっても再描画されません。
ただし、その後にウィンドウサイズを変更すると、drawRect:が
よばれ正常に新しい変数の値が描画されました。
278名称未設定:2006/12/26(火) 20:57:10 ID:kk0EPm5t0
状況からするとRunLoopの外で変数の値が変更されている感じですね。
その変数が変更されるのはどういったタイミングでしょうか?
setNeedsDisplay: のあとに
[[NSRunLoop currentRunLoop] run];
を加えるとどうでしょう?
279270:2006/12/26(火) 22:10:15 ID:tds2LiwG0
>>278
ありがとうございます。

変数が変更されるのは、
ユーザーのボタンクリックによって起こるアクションになっている
メソッドから、さらにメッセージを投げられたメソッドの内部です。

setNeedsDisplay: のあとに
[[NSRunLoop currentRunLoop] run];
を加えてみましたが、該当部分でアプリケーションがフリーズしてしまい、
うまくいきませんでした。

280名称未設定:2006/12/26(火) 22:14:16 ID:0Yugm6tr0
>>279
myViewがnilだったりはしまいか?
281名称未設定:2006/12/28(木) 16:37:13 ID:6mTdw5KB0
Core Data アプリで(Document based ではない方の)、
アプリを立ち上げたとき、前回までの data が読み込まれるタイミングって、
いついなるのでしょうか。
data が全部読み込まれたことを知る方法ってありますか?
282270:2006/12/28(木) 20:42:20 ID:5zlbm+bL0
すみません。事故解決しました。

>>278のRunLoopがヒントになり、冷静に考え直したところ、
シートを表示中に書き換えようとしていたと気づきました。
単純ミスでした。助言をくださった方々、ありがとうございました。
283名称未設定:2006/12/28(木) 21:26:29 ID:xghedo0N0
>>281
AppDelegateのmanagedObjectContextを読めばわかるよ
284281:2006/12/28(木) 22:26:09 ID:6mTdw5KB0
>> 283
すみません、managedObjectContext を読むと何がわかるのでしょうか。

やりたいことは、アプリを立ち上げて data が読み込まれた後で、
Core Data の一時属性を生成することです。
285283:2006/12/28(木) 22:56:52 ID:xghedo0N0
Core DataではNSManagedObjectContext(以下moc)がCore Dataのオブジェクトを管理します。
XcodeテンプレートのCore Data Applicationでは、
1. アプリケーションが起動
2. MainMenu.nibを読み込み
3. bindされているAppDelegateのmanagedObjectContextからmocを取得
3-1. mocを生成(managedObjectContextメソッドの前半)
3-2. Core Dataデータを読み込み(persistentStoreCoordinatorメソッド)
3-3. mocに読み込みしたデータをセット(managedObjectContextメソッドの後半)
3-4. moc を return(managedObjectContextメソッドの最後)
という順で処理しています。
ですから、3-4の直前にmocが保持しているCore Dataデータを加工することで
目的の動作を実装することができるのではないでしょうか?
286281:2006/12/28(木) 23:08:32 ID:6mTdw5KB0
>>285
AppDelegate の managedObjectContextメソッド内の return の行の直前、
ということですね。

詳しく教えていただき、ありがとうございました。
287名称未設定:2006/12/29(金) 16:53:43 ID:OVzRpVrT0
XcodeでCocoa Applicationを選んでプロジェクトを作ったら、nibファイルのメニュー
項目とかが全部英語なんですけど、日本語のソフトを作りたかったら、nibファイルを
複製して1つづつ日本語にしなきゃなんないんでしょうか?.plistファイルも?
288名称未設定:2006/12/29(金) 16:55:53 ID:OVzRpVrT0
すいません。IBで新規で作れば言語選べました。
289名称未設定:2006/12/29(金) 17:49:39 ID:Jd3sohXC0
>>287
XCodeでnibファイル(グループ)選択してCmd+i。「言語環境を追加」
無かったら「ファイルをローカライズ可能にする」だったかな。
290名称未設定:2006/12/29(金) 19:07:13 ID:4nbrF6Mf0
>>289
ありがとうです。この方法だと単にnibファイルがコピーされるだけ
みたいですね。メニューは英語のままでした。
この方法でXcodeプロジェクト内に適切なフォルダとか作らせて、そ
の中にIBで言語選んで新規ファイル作るのがよさそうに思えました。
291名称未設定:2006/12/29(金) 20:04:22 ID:Jd3sohXC0
>>290
何か勘違いしているようだが、そうやって英語版のコピーを作ってから
それを日本語にローカライズする。
まさか自動で翻訳されるとでも思ってるのか?
292名称未設定:2006/12/29(金) 20:08:56 ID:4nbrF6Mf0
>>291
自分で作ったウィンドウ上の文字列とかは当然自分で書き換えですけど、
デフォルトのメニュー項目がIBで新規につくると日本語になるって話です。
テンプレートの「File」メニューが「ファイル」メニューになるってだけ
ですけど、ちょっとは面倒くささが減りますよね。
293名称未設定:2006/12/29(金) 20:19:04 ID:Jd3sohXC0
>>292
オリジナルのメニュー項目の方が多いし、どうせ一括で書き換えるから別に。
294名称未設定:2006/12/29(金) 20:26:53 ID:XR5230AK0
用語統一の指標になる程度はローカライズされててもいいと思うがな。
295名称未設定:2006/12/29(金) 21:04:15 ID:QiW9U9Hc0
大した手間でもなかろうに。1日に何本も作る訳じゃなし。
296名称未設定:2006/12/29(金) 21:28:39 ID:XR5230AK0
用語統一は手間が多いとか少ないとかじゃないんだがな。
面倒臭がって適当な和名を付けられても困るだろ
297名称未設定:2006/12/29(金) 21:35:05 ID:4nbrF6Mf0
大体、日本語環境で起動したら日本語のテンプレートがデフォルトになってない
といけないんじゃないですかね?真のマルチリンガルOSなのなら。英語版作らな
いソフトだっていっぱいあるんだし。
298名称未設定:2006/12/29(金) 21:57:03 ID:XR5230AK0
いや、ベースは英語のほうが良いと思うが。
日本語はあくまで地方言語の一つに過ぎない
299名称未設定:2006/12/29(金) 22:00:45 ID:XR5230AK0
基本は英語版だろ、英語版作らないなんてありえねぇ
自分しか使わないアプリなら別にかまわないけど。
300名称未設定:2006/12/29(金) 22:01:21 ID:Jd3sohXC0
>>297
俺は日本語版作らないソフトの方が多いがな。
ていうかガイドラインにEnglishは必ず作れよボケ、って書いてあったような希ガス。

アクション繋げるのも楽だしね。
301名称未設定:2006/12/29(金) 22:01:41 ID:XR5230AK0
基本は英語版だろ、英語版作らないなんてありえねぇ
自分しか使わないアプリなら別にかまわないけど。
302名称未設定:2006/12/29(金) 22:07:13 ID:XR5230AK0
・・・ごめんよ、書かれてないと思って蓮ちゃんしてしまったよ
303名称未設定:2006/12/29(金) 22:28:59 ID:QiW9U9Hc0
面倒とか言う奴も、適当なローカライズする奴も
プログラムなんてやめちまえ。
304名称未設定:2006/12/30(土) 08:33:43 ID:odX4BUet0
ていうかAppleGlot使わないの?
305名称未設定:2006/12/30(土) 17:58:12 ID:vPNl27oR0
Intel Mac mini でビルドし正常に動くアプリケーションが、
PowerBook G4 では立ち上がってくれないのですが、
Intel、PowerPC の両方で動かすには、ターゲットの「アーキテクチャ」の
「ビルド対象アーキテクチャ」で PowerPC と Intel の両方にチェックを
入れる以外にも、何か必要でしたでしょうか。
306名称未設定:2006/12/30(土) 18:14:22 ID:lFvLjtEM0
>>305
ターゲットSDKは10.4.0 (universal)になってる?
307305:2006/12/31(日) 12:55:15 ID:+mX5Oh9B0
>>306
すみません、これはどこを見ればわかるのでしょうか。

「ターゲット」「ビルド」「SDK パス」であれば、
/Developer/SDKs/MacOSX10.4u.sdk
になっています。
308305:2006/12/31(日) 12:58:31 ID:+mX5Oh9B0
ちなみに Xcode のプロジェクトを丸ごと PowerBook G4 に持ってきて
ビルドすれば立ち上がります。

‥が、一部挙動不審で、Intel Mac mini 上と動作が異なるところがあります。
309名称未設定:2006/12/31(日) 13:01:44 ID:D+x9ZWCM0
まさかと思うがデバッグビルドを持って行こうとしてないか?
デバッグビルドは、そのビルドした環境でしか動かない場合が多い。
310名称未設定:2006/12/31(日) 13:14:30 ID:thfSXkVQ0
だとすれば

ヒント:ゼロリンク
311名称未設定:2007/01/01(月) 12:18:31 ID:w3+bIOjw0
IBからサブクラス作って、それのソース書き出すときに、もうすでに書き出した同じファイルへ追加やりにくくね?どうすんの?
312名称未設定:2007/01/01(月) 12:22:44 ID:Nwom1YoW0
この機能はむちゃくちゃ中途半端。自動処理はあきらめて全部手動でやったほうが確実
なんじゃない。


次バージョンではこの機能なくなるとか...あるいはブラッシュアップされる...??
313名称未設定:2007/01/01(月) 12:35:37 ID:3qaVx9Hj0
そのままMergeすりゃいいんじゃないの?
314名称未設定:2007/01/01(月) 13:26:53 ID:3qaVx9Hj0
そのままCreate FilesでMergeすると、FileMergeが起動するけど
そこでコマンド + カーソルキーで、上下で変更する場所を選択し
左右で真ん中の矢印を変更すれば、下のコードが変更されるので
それを保存すればいいじゃん。
315名称未設定:2007/01/02(火) 12:00:16 ID:/UfltKcR0
ヘッダの方を書き換えてIBに読み込ませた方が早いよ。
316名称未設定:2007/01/03(水) 00:11:25 ID:u6BO03rW0
>>311
俺もそう思う。
なぜ改良しないのか不思議だよね
複雑なアプリは、アウトレットだけIBで繋いで
アクションやデリゲートはコードで書いている
その方が、後からコードを見たときに解りやすい
317名称未設定:2007/01/03(水) 00:37:49 ID:anCAmGYK0
俺も、ヘッダファイルのなんやかんやは、文字列でソートされるより
機能別に並んでいる方がわかりやすいので、ある程度以上コーディング量が
増えてくると手書きになるな。
この部分の作業だけどうもアナログな感じがして、進化を期待。
318名称未設定:2007/01/03(水) 03:52:09 ID:jQVouJT+0
IBはXcodeの一機能になるべき。
3.0では統合されるんだっけ?
319名称未設定:2007/01/03(水) 06:56:20 ID:uyPGCgh80
別アプリのまま。
320名称未設定:2007/01/03(水) 14:38:29 ID:anCAmGYK0
スレ違いって事は承知のうえで、人の多そうなここで質問なんですが、
Objective-C 2.0でも導入されるガベージコレクトって、うまく想像つきません。

たとえば、あるクラスの、後から参照したいインスタンス変数に、これまでは
[anValue retain]
としていたのが、単純にいらなくなると考えて良いんでしょうか?
で、「不要になった時に自動的に解放される」というのもよく耳にするのですが、
「不要になった」というのはどのように判断されるんですか?
誰もその値を参照しなくなったら、イコール不要、という意味でしょうか。
これだと、循環参照とかしていると漏れちゃうわけですよね。

C++もJavaも知らないので、よろしければちょっとだけ教えて欲しいです。
321名称未設定:2007/01/03(水) 14:59:26 ID:FyS8IESA0
>>320
Wikipediaで「マーク・アンド・スイープ」とか「参照カウント」を見るよろし。
322名称未設定:2007/01/04(木) 18:31:42 ID:r+yaFjnk0
NSTableViewをEXCELみたいにRowヘッダを追加したいんですけどチャレンジした人はいますか?
NSTableViewのClipViewを右にずらして、その左にClipViewを自力で生成しているんだけど、
ウインドウのリサイズで元に戻ったり正常に動作しません。
何か良い方法はないものでしょうか?
323名称未設定:2007/01/04(木) 18:36:29 ID:r+yaFjnk0
なんか日本語が変だったorz
NSTableViewをEXCELみたいに

NSTableViewにEXCELみたいな
324名称未設定:2007/01/04(木) 19:09:27 ID:4ouSCf850
NSTableViewそのままで左端のカラムをcell継承した自作cellにしたらどうよ。
NSTextFieldCellを入れて背景色とテキスト色を変えるだけでも
それなりに見えるかもしんない。
325名称未設定:2007/01/04(木) 19:15:59 ID:r+yaFjnk0
>>324
その方法では、横方向のスクロールでRowヘッダが消えませんか?
あ、でもヒントをもらった気がする。
drawRowを上書きして、常に一番左のCellを自力で描画すればいけるかも!!
ありがとう!試してみる!
326名称未設定:2007/01/04(木) 19:39:18 ID:4ouSCf850
あ、そうかスクロールで消えちゃうわ。
すまん直接の解決策にはならんかった。
327名称未設定:2007/01/04(木) 23:57:31 ID:3HK/7MpK0
TableView を横に二つ並べて、左のは row ヘッダにつかって、
右のは普通に TableView にして、
右のを縦スクロールしたら左も自動で縦スクロールするようにするとどうかな?
328名称未設定:2007/01/06(土) 10:17:51 ID:5HIo+1WW0
久しぶりにObjectiveCを使って気づいたんだけど、変数の宣言がJavaやC++みたいに
使用時に宣言できるようになっているね。昔は関数の先頭で行う必要があったよね?
環境:MacOSX10.4.8 intel
329名称未設定:2007/01/06(土) 10:34:22 ID:pMcibc120
それはObjCじゃなくてCの話でしょ。
330名称未設定:2007/01/06(土) 10:34:47 ID:XuGSje+d0
Cocoa初心者なんですがMVCアーキテクチャについて質問させて下さい。

通常、VはNSWindow等から派生させた独自クラスとして1組の.hと.m
ファイルで実装されると思いますが、MとCを別々のクラスにして2組の
.hと.mファイルにするか、1つのクラスにまとめて1組の.hと.mファイル
で実装するかの選択の基準ってあるんでしょうか?Cocoaバインディング
を使うときは前者でそれ以外は後者でいいんでしょうか?
331名称未設定:2007/01/06(土) 10:42:37 ID:EHO3MpHV0
>>328
途中で宣言するの大嫌いだから全然気づかなかったよ

>>330
ファイルの分割とクラスの分割は無関係
332名称未設定:2007/01/06(土) 10:51:56 ID:5HIo+1WW0
>>329
今の時代のC言語では使えるんだ。知らなかった...orz

>>331
きっと気づいていない人は多そうな気がする

いつ仕様が変わったんだろう。。。気になる
333名称未設定:2007/01/06(土) 10:55:05 ID:pMcibc120
>>332
C99からブロックの途中でも変数を宣言できるようになった。
ObjCはCの上位互換だからC99で出来るようになったことはObjCでもできる。
334330:2007/01/06(土) 15:40:41 ID:jL++4Ogy0
>>331
いや、聞きたいのはMVCをそれぞれ3つのクラスにするのとVとM+Cの2つの
クラスにする時の選択の基準はあるのかってことです。Cocoaバインディング
使わなければ後者で充分?
335名称未設定:2007/01/06(土) 16:17:45 ID:/PssIyWV0
>>334
そりゃMもしくはCのクラスを使いまわす可能性があるかどうかだろう
336名称未設定:2007/01/06(土) 16:29:47 ID:4G4KbmQS0
>>334
MとCを一つのクラスにした場合、
ガチガチのクラスが1個できあがるだけと思われ。
それでもいいならいんじゃね?
オブジェクト指向の観点からは間違い。
337330:2007/01/06(土) 16:54:42 ID:jL++4Ogy0
なるほど、こないだのCocoaセミナーで小さいアプリならVとM+Cでもいいみたいな
話があったんで、どこら辺が場合分けの基準になるのかなと思ったんですが、やはり
基本的には3つのクラスで設計した方がいいみたいですね。
338ごめん:2007/01/06(土) 17:46:00 ID:ciDdAZqz0
MVCという分け方も微妙だよね
SとOを追加するべし
339名称未設定:2007/01/06(土) 22:40:44 ID:+1Z6BbtM0
>>321
ちなみに ObjC 2.0 のは世代別ガベージコレクションみたいだが。
340名称未設定:2007/01/07(日) 16:38:29 ID:KPUZzR5K0
- [NSBundle loadNibNamed:]で読み込んだものってどうやって解放すればいいの?
341名称未設定:2007/01/07(日) 18:31:14 ID:bs7KgfTm0
>>337
mkinoを鵜呑みにすると痛い目見るよ。
342名称未設定:2007/01/07(日) 18:39:50 ID:TGuCgEC+0
痛い目の具体例挙げてくれないと単なる悪口以上のものとは取れないな。
343名称未設定:2007/01/07(日) 19:27:30 ID:B/BjVd3h0
NSTextField で、1文字入力するごとに action を送るようにする方法はあるでしょうか。
IB の inspector には Enter only/End editing しかありませんが‥
344名称未設定:2007/01/07(日) 22:23:04 ID:TGuCgEC+0
- (void)controlTextDidChange:(NSNotification *)obj;
を捕まえる。
345名称未設定:2007/01/07(日) 22:27:34 ID:CK7ymx4S0
delegateの接続もしておくこと。
346名称未設定:2007/01/07(日) 23:48:41 ID:EwlKZLPg0
>>341
どんなものでも鵜呑みにするのは良くないけど、Cocoaセミナーは
結構わかりやすかったしためになったよ。質疑応答とかも的確に答え
ていて素直にすごいなと思った。
347名称未設定:2007/01/08(月) 08:01:17 ID:NVyhKV1B0
PreferencesPaneを書いているんですが、質問です。

PrefPaneはCocoaなPluginのようですが、いったんPaneがロードされると
システム環境設定を終了させるまでずーっとオブジェクトが維持されています。
最初は「全体を表示」したときに一緒にPaneもアンロードされるとおもって
いたんですが、そうではないようです。

で、一つのプロジェクトから二つのPaneを作ってインストールしたときに、
同じオブジェクト名をつかい回したら、オブジェクトが一方だけしか有効に
ならないようでした。(名前の衝突しているみたい)

自分でPaneを作るときにはPaneごとにオブジェクトの名前を変えればいい
として、他のPaneが使っているObject名とぶつからないようにする一般的な
手法はどのようなものがありますか?やはり確実な方法はないのでしょうか?

こういうたくさんプラグインを使うアプリケーションって難しい・・・
348名称未設定:2007/01/08(月) 11:14:52 ID:QVUUGDgy0
IBにはFile's Ownerという仮想オブジェクトがありますが、何のために存在しているのか理解できません。
File's Ownerのカスタムクラスに、別の実態があるオブジェクトを指定しますが(複数nibがある場合等)
そうするぐらいなら、そのまま実態オブジェクトをオーナとして使用すれば良いような気がします。
もしかして、Cocoaバインディング等で必要になるので仮想的に存在するのでしょうか?
この辺の理念が解ると、不安なくプログラムできそうな気がします。

特に最初に生成されるnibもFile's Ownerではなく、NSApplicationの方が解りやすくないですか?

理解していないまま書いてしまいましたので意味不明な部分もあるかと思いますが、
ちょっとだけディスカッションしたいです。

と思って質問を書いていたら、下記のサイトで理解できました orz.....
ttp://journal.mycom.co.jp/column/objc/011/

いやー、このサイトはすごい(^^;
349名称未設定:2007/01/08(月) 12:12:10 ID:7rxbamyt0
>>347
検証コードを書くのが面倒なんで適当に聞いてみる。
有効にならないってどういうことだ?
object = [[SameNameObject alloc] init];
これがnilになるということか?
350名称未設定:2007/01/08(月) 12:49:43 ID:g/djsDwd0
>>349
複数のプラグインバンドルから読み込まれるPaneAとPaneBとが同じ暮らす名
を使っていた場合に先に読み込まれた方が有効になって、後から読み込もうと
したものがつかえない、という感じです。

プロジェクトを使い回して二つ目を作ったがために起きただけなのかと
思ったんですが、ちょっと違うような。
もちろんPaneAとPaneBのBundleIdentifierとかはきちんと別にしてあります。

プラグインがロードされるときにInstance化されるプライマリくらすが、
たとえばPaneAとPaneBどちらもMyPrefPaneという名前で、
nibファイルのFile'sOwnerの名前がどちらもMyPrefPaneです。

PaneAとPaneBがこのようになっていたケースで、SystemPreferencesを
起動直後に先にPaneAを呼び出した場合、PaneAのほうのMyPrefPaneクラス
がインスタンスかされるようなのですが、その後にPaneBに切り替えたとしても
PaneAで起こしたほうのMyPrefPaneインスタンスが引き続き居残ってしまい
PaneBのnibに対する操作がPaneAのほうのインスタンスにわたってしまう、
という挙動を示したのです。

とりあえず、
・クラス名を変えて、バンドルの名前と同じにした
・nibのfiles'ownerをそのクラスに変更
したら、症状は治まりました。もしかして同じ名前にしないといけないのかな。
351名称未設定:2007/01/08(月) 12:55:56 ID:g/djsDwd0
というか、もしかして
 全てのプラグインのインスタンスは、同じ名前空間?の中に存在している
とかそういうことなのかな、と思ったんですけど。

もしそうなら、やっぱりプラグイン間で名前の衝突しないようなことを
考えないといけないような。
352名称未設定:2007/01/08(月) 13:05:11 ID:7rxbamyt0
両方ともMyPrefPaneは変になってもおかしくないような気がする。
システム環境設定は全てのbundleのNSPrincipalClassを辞書で管理してるだろうし。
353名称未設定:2007/01/08(月) 13:07:45 ID:948Bpjss0
Cocoa のプラグインは、読み込んだらそのなかのクラスをそのまま
Objective-C ランタイムに組み込んでしまうはずだから、
おなじクラスを定義している二つのプラグインを読み込むとおかしくなるのは
仕方がないと思う...
354名称未設定:2007/01/08(月) 13:11:34 ID:/HR4Ti5W0
異なるバンドルだろうが、クラス名は単一の名前空間だから当然衝突します。
355名称未設定:2007/01/08(月) 15:15:39 ID:gT8Q5lWy0
>>352-354

やっぱりぶつかるんですね。名前がかぶらないように
・プラグインで使うオブジェクト名は気をつけないといけない
ということが分かりました。
とりあえずBundle名とクラス名を一緒にしておくだけで、
衝突する危険はかなり減ると思うので、そうします。
ありがとうございました。
356名称未設定:2007/01/08(月) 15:19:01 ID:/HR4Ti5W0
ていうかCocoaのクラス名にNSとかがついてたり、アンダースコア付きのクラス名はAppleが予約
とかなってるのはそのためです。
自前のクラスを作る時はNSみたいなプレフィックスを付けておくべきかと。
357名称未設定:2007/01/08(月) 16:37:56 ID:vJdJwfnV0
init と awakeFromNib が呼ばれる順番ていつも同じ?
awakeFromNib が先?
358名称未設定:2007/01/08(月) 17:06:29 ID:OtTtrlA/0
一番最初がinit。
initでreturnされたselfに対してawakeしろって命令が下る。
359名称未設定:2007/01/08(月) 18:01:24 ID:PN88Qp7f0
>>357
awakeFromNibはIBでインスタンス化されたオブジェクトのみ呼ばれるというのはわかってる?
IBでクラスがインスタンス化されるとその時点でinitされてnibファイルの中にアーカイブされ、
nibファイルをロードしてインスタンスが読み込まれた時にawakeFromNibが呼ばれる。


という感じだったはず。
360357:2007/01/08(月) 18:13:47 ID:vJdJwfnV0
>>358 ?ォクス

awakeFromNib は、nib をロードしたときに呼ばれるっぽいですね。

init の中で、nib をロードする行より後ろに書いた処理が、awakeFromNib が
呼ばれたときに認識されてなかったんで焦りますた
361357:2007/01/08(月) 18:18:36 ID:vJdJwfnV0
>>359
うわかぶった
?ォクス
362名称未設定:2007/01/09(火) 11:21:44 ID:NZUI1tZY0
Interface Builder でNSWindowの派生クラスを作って、そのクラスの初期化処理を
したいんですけど、

- (id)init
{
if ((self = [super init])) {
NSArray* array = [NSArray arrayWithObject:NSFilenamesPboardType];
[self registerForDraggedTypes:array];
}
return self;
}

とやってみてもinitが呼ばれません。nibファイル経由だとallocが呼ばれないからでしょ
うか?ウィンドウでファイルのドロップを受け付けるようにしたいんですけど、どうし
たらいいでしょうか?
363名称未設定:2007/01/09(火) 11:43:27 ID:kjIMsR530
>>362
NSWindowなどの標準のCocoaオブジェクトはinitWithCoder:が呼ばれます。
364名称未設定:2007/01/09(火) 11:43:46 ID:MoS0uOBq0
ツールバーのアイコンや、例えばMail.appの左下の+のアイコンなど、多くのソフトで共通するアイコンは、どこかに用意してあって、それを使うものなんでしょうか。それとも自分で作るものなんでしょうか。
365名称未設定:2007/01/09(火) 12:45:56 ID:NPp3ES7J0
IBで作ったのは既にインスタンス化されている(initされている)
のでinitは呼び出されない
nibから解凍されるときに
awakeFromNib
が呼ばれるので、ここにコードを書く
366名称未設定:2007/01/09(火) 12:50:23 ID:NZUI1tZY0
ありがとうございました。
initWithCoderでいろいろ試したけどNSWindowの派生クラスだと呼ばれない
みたいで、リファレンス行ったり来たりしてました。awakeFromNibで解決
しました。
367名称未設定:2007/01/09(火) 13:08:20 ID:kjIMsR530
>>363
しまった、NSWindowはinitWithContentRect:styleMask:backing:defer:ですた。
368名称未設定:2007/01/09(火) 15:13:27 ID:vJDpq+Vv0
>>367
kjIMsR530 は何か勘違いしてるんでないかとおもう。
designated initializer が何かというのと、
nib ファイルのなかに凍結されているオブジェクトが読み出されるときに
なにが起こるかは別問題でっせ。
http://developer.apple.com/documentation/Cocoa/Conceptual/LoadingResources/Concepts/NibFileLoaded.html
を参照。
369 ◆RepAhs6cJ2 :2007/01/09(火) 19:04:31 ID:7bfTlnlu0
>>364
アプリケーションフォルダに入ってるアプリケーションの
アイコンを右クリックして「パッケージのアーカイブを表示」を選択。

で、出て来たフォルダから
Contents > Resources と開くと、アプリで使われてる画像が
入ってるから、それをコピーして使う。
たいていはアップル純正のソフト(Mailとか)のを流用する。
370 ◆RepAhs6cJ2 :2007/01/09(火) 19:05:32 ID:7bfTlnlu0
訂正
パッケージのアーカイプを表示

パッケージの内容を表示
371364:2007/01/09(火) 20:27:36 ID:MoS0uOBq0
>>369
やっぱりコピーして使うんですね。
ありがとうございました。
372名称未設定:2007/01/09(火) 21:17:07 ID:ctWYUA740
ドラッグアンドドロップの処理でカーソルが自分の上に来たら緑の丸に白抜きの
プラス付きのやつに変えようとしたら、これってCocoaのNSCursorじゃできない
みたいでCarbonのSetThemeCursor(kThemeCopyArrowCursor);を呼ぶことで
一応動きました。でも、必ずしもちゃんと動かず、一度別のアプリのウィンドウ上で
カーソルが変わった後に自分の上に持ってこないとダメでした。何か初期化処理み
たいなのが必要なんでしょうか?

あるいは直接Cocoaで同じ事を実現する方法ってあるんでしょうか?あのカーソルって
いろんなアプリで使われてるからCocoaでもできそうな気がするんですか?
373名称未設定:2007/01/09(火) 21:44:17 ID:chh5XqBB0
374名称未設定:2007/01/09(火) 22:03:53 ID:ctWYUA740
>>373
おぉ、ありがとうございました。やはりCocoaで実現する方法があったんですね。
でも、これ非公開機能なんですね(何故??)。

HMDTはどうやってこれを調べたんでしょうね?どこを探すの???
375名称未設定:2007/01/09(火) 22:12:33 ID:chh5XqBB0
376名称未設定:2007/01/09(火) 22:27:22 ID:ctWYUA740
>動的な言語というのは、一言で言えば、実行時にクラスやメソッドの情報を得ることが
>できる、ということだ。ということは、コンパイルされたファイルのどこかに、それら
>のメタ情報がしまわれているはずである。

なるほど、こういう事だったんですねぇ。
377名称未設定:2007/01/09(火) 23:47:57 ID:1qh5UFqJ0
>>374
>でも、これ非公開機能なんですね(何故??)。

>>372
>一応動きました。でも、必ずしもちゃんと動かず、一度別のアプリのウィンドウ上で
>カーソルが変わった後に自分の上に持ってこないとダメでした。何か初期化処理み
>たいなのが必要なんでしょうか?

こういう風に、使い方に注意が必要なものを適当に使ってちゃんと動かないように
しちゃう人がいるから、とか。
あとは、Apple が想定する UI デザインから逸脱されたものを作られるのを嫌って、
とか。
378名称未設定:2007/01/10(水) 02:15:20 ID:izs1psZB0
ドロップ先が NSDragOperationCopy を返せば、それで自動的に
>緑の丸に白抜きのプラス付きのやつ
にカーソル変わると思うんだけど、そういう方法は使えない
状況なのかな。
379名称未設定:2007/01/10(水) 18:09:13 ID:JrDBkG4J0
iPhoneで使えるCocoaアプリの開発ができるようになるのかな、とか妄想してみる。
380名称未設定:2007/01/10(水) 18:11:04 ID:/+5+zP6A0
ローカライザースレが落ちてしまったので質問です。
CocoaAppのローカライズ内容をマージするソフトがあったと思うんですが(iLocalizeではなく)
名前かサイトがわかる方いたら教えてもらえませんか?
381名称未設定:2007/01/10(水) 18:13:27 ID:laAjcvci0
AppleGlotのことか?
382名称未設定:2007/01/10(水) 18:21:54 ID:sT4aK5PK0
AppleGlot + Trunks さいこー

後はAppleScriptでnibの中身だけコピー
(CVS or .svn フォルダを残そうキャンペーン)
383名称未設定:2007/01/10(水) 18:22:45 ID:laAjcvci0
384名称未設定:2007/01/11(木) 00:20:45 ID:0muyhMZ20
>>383
残念('A`)
そもそも日本での発売は2008だし、販売元はSOFTBANKになる予感だし。
385名称未設定:2007/01/11(木) 00:23:21 ID:0muyhMZ20
mkinoさんもそれを知って急速に興味無くしてるw
ttp://hmdt.jp/archives/2007_01.html#2007011002
386名称未設定:2007/01/11(木) 08:32:56 ID:AGAn3zYZ0
skype乗れば最強なのに。
387名称未設定:2007/01/11(木) 15:39:45 ID:iVB2bVs20
>>381
アリガットーございます
388名称未設定:2007/01/13(土) 13:58:04 ID:OL9VEEcD0
Cocoaでは、OmniOutlinerのインスペクタパネルの様な
ドッキングウインドウって簡単に作れるの?
それとも、自力でウインドウの位置を調べて調整する必要があるのかな?
389名称未設定:2007/01/13(土) 22:44:59 ID:hHtrNCmL0
>388
OSは何もやってくれないので、自力で実装しないとダメだよ。
390名称未設定:2007/01/13(土) 23:10:11 ID:KeS6ciWD0
なんでOSなんて言葉が出てくるんだ
391名称未設定:2007/01/13(土) 23:34:34 ID:mNNsP+//0
>>388
Omniがフレームワークを公開していたと思うけど。
392388:2007/01/14(日) 08:38:36 ID:Int75n740
ありがとー基本的には自力で実装なのね
こういった機能が標準だと開発者も楽だろうなぁと思っていました
Omniのフレームワークを探してみます。
393名称未設定:2007/01/14(日) 11:00:10 ID:w5uDfQQn0
CocoaでCSVファイルを読み込む処理を書いているのですが、
カンマでは区切れますが改行ではうまく区切れないようです。

NSString* string = [NSString stringWithContentsOfFile:[opanel filename]];
NSCharacterSet* set = [NSCharacterSet characterSetWithCharactersInString:@",\r\n"];
NSScanner* scan = [NSScanner scannerWithString:string];
NSString* getstring;

while(![scan isAtEnd]) {

if([scan scanUpToCharactersFromSet:set intoString:&getstring]) {
NSLog(getstring);
}

if([scan scanCharactersFromSet:set intoString:&getstring]) {
NSLog(getstring);
}

}
NSCharacterSetの文字セットは改行コードを指定できないのでしょうか?
394名称未設定:2007/01/14(日) 13:33:12 ID:Yys1UFAp0
#import <Foundation/Foundation.h>
int main(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSData * data = [NSData dataWithContentsOfFile:@"sample.csv"];
NSString *csv = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
NSScanner *scanner = [NSScanner scannerWithString:csv];
NSCharacterSet *cset = [NSCharacterSet characterSetWithCharactersInString:@",\r\n"];
NSCharacterSet *rcset = [cset invertedSet];
NSString *ret;

while (![scanner isAtEnd]) {
if ([scanner scanUpToCharactersFromSet:cset intoString:&ret]) NSLog(@"%d %@",[scanner scanLocation], ret);
[scanner scanUpToCharactersFromSet:rcset intoString:&ret];
}

[pool release];
return 0;
}

出来るみたいだお。10.3.9。
ソースファイルはUTF-8だお。
全角バックスラッシュは半角のつもりだお。
395名称未設定:2007/01/14(日) 14:04:03 ID:t2zJj/CB0
396393:2007/01/14(日) 16:01:08 ID:w5uDfQQn0
>>394
ありがとん!一応改行もOKなんですね。
改行が認識されない原因は>>395 さんのおっしゃるケースかもしれませんが、
新規にテストデータを作成したらうまく行きました。
読み込みたいCSVデータを標準のテキストエディタで開くとUTF16となるので
改行コードがどのようになっているか調べる必要がありそうです。

しかし、そうだとしても、@",\r\n"で分割するのであれば、どんな改行コードでも
認識してくれないと困るのですが....
もう少しトライしてみます
397名称未設定:2007/01/14(日) 16:32:30 ID:TxluoTfo0
Cで作ったプログラムにGUIをつけたくて、Xcodeを触りはじめたのですが、
InterfaceBuilderでのGUIで、どのように変数の受け渡しをすればよいのか
悩んでいます。

どのあたりのドキュメントから参照すればよいかあたり、教えていただけないでしょうか?
398名称未設定:2007/01/14(日) 19:12:45 ID:SOM/3Zya0
Mac OS X Cocoaプログラミングという書籍が良いんでは?
俗に言うヒレガス本ね
399名称未設定:2007/01/14(日) 19:34:03 ID:znDpVrHU0
GUIとそのCプログラムとの仲介役のコントローラを作って、そいつに
http://www.big.or.jp/~crane/cocoa/0900_general/perl.html
みたいなことをやらせるとかかな。
400HK:2007/01/15(月) 04:34:58 ID:hKaMD8AC0
>>396
同様にCSVファイルを読むプログラム作ったことがあります。
最初は同様にNSScanner を使いましたが、
最終的に NSString の getLineStart: end: contentsEnd: forRange:
で行位置を調べて、スキャン位置を動して、1行ずつ処理するようにしました。
NSScanner でやるとしても、リファレンスの上記のメソッドの説明に、
改行コードの扱いについて書かれているのでそれで文字セットを作ればいいです。
NSString リファレンスの翻訳は、
http://park15.wakwak.com/~concordia/cocoa_break/
を見てください。
401名称未設定:2007/01/15(月) 14:10:02 ID:um93Ge6p0
>>397
英語で良ければ Apple のドキュメントも悪くないと思うよ:
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/index.html
一部は日本語版も出てる。
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/index.html
とか。
http://developer.apple.com/jp/documentation/japanese.html
の 下のほうの Cocoa セミナーの初級とかもいいかもしれない
402名称未設定:2007/01/16(火) 11:00:25 ID:6Msgd55a0
IBを使ってWindow上にチェックボックスを配置しました。
これがチェックされているかどうかをプログラム内から調べる場合、

1, Windowにチェックボックスがクリックされた時用のアクションを追加
2, IBでチェックボックスと1のアクションを接続
3, Xcodeで1のアクションを実装してメンバー変数にチェックの状態を格納などする

という手順でいいのでしょうか?単にチェックされてるかどうかを知りたいだけなので
プログラムから直接チェックボックスの状態を見れればもっと楽だと思うんですが、
CodeWarrior+PPだとFindPaneByIDで直接アクセスできたんですけど、そういうことは
IB+Xcodeでも可能でしょうか?
403名称未設定:2007/01/16(火) 11:05:04 ID:9ro7GBnd0
Bindingでおk
404名称未設定:2007/01/16(火) 11:16:51 ID:9ro7GBnd0
…と思ったけど基本からやったほうがいいね。アウトレットを使おう。
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/chapter_6_section_3.html

IBOutlet NSButton *checkBox;
ってインスタンス変数を置いて、IBで接続。
あとはコード中でcheckBoxのstateを調べてたもれ。
405名称未設定:2007/01/16(火) 11:37:13 ID:6Msgd55a0
ありがとうございました。アクションじゃなくてアウトレットでよかったんですね。
教えてもらったやり方でうまくいきました。
406名称未設定:2007/01/16(火) 14:58:06 ID:r0eH3D2H0
マウスダウンイベントをイベントキューからすべて削除したいのですが
どうやったら削除できるのかわかりません。
CarbonのflushEventみたいなのを探していますが
どなたかご存知でしょうか?
407名称未設定:2007/01/16(火) 17:10:18 ID:q1+7RRGR0
単にイベントに反応しないだけじゃ駄目なの?
無視したいイベントがあるんなら、適当なところで
mouseDown: を実装して食べてしまえばいいと思うし。
408265:2007/01/16(火) 17:23:54 ID:q0ci77VN0
>>406
NSApplication
- (void)discardEventsMatchingMask:(unsigned int)mask beforeEvent:(NSEvent *)lastEvent
で削除出来るみたい。

409名称未設定:2007/01/18(木) 15:29:58 ID:aW71ApKg0
Cocoaでデータベース(MySQL)アプリを作ってみようと思うんだけど、
Core Dataの使い道を模索しています。

画面は伝票形式で、ある特定のキー毎にデータを管理する。

1.ObjectiveCからMySQLへSQLを発行
2.結果をCoreDataに格納
3.GUIでデータを編集(CoreData上のデータはリアルタイムで更新)
4.適用ボタンを押すと、CoreData内を整合性チェックしてOKなら
MySQLにSQLを発行して更新

のように、NSTableDataSourceの代わりにCoreDataを使う感じです。

メリット:GUIをCoreDataのモデルを使って構築できるので楽?

デメリット:細かい制御を行う際、Cocoaバインディングを
      マスターしていないとなんのこっちゃになってしまう?

ということで無理してCoreDataを使うと余計複雑になるかな?
CoreDataの使い道が見つからないんだよね...
410名称未設定:2007/01/18(木) 15:39:56 ID:65qF7/mBO
それはあれだな、EOFカムバックーー!!!だね
411409:2007/01/18(木) 20:48:43 ID:DeT/IsIi0
だよねー。
CoreDataがP2Pでネットワーク対応とかなら色々と活用範囲が広がるんだけどなー
自力実装だとクラサーの方が楽だし
412265:2007/01/18(木) 23:47:36 ID:TIt/2Aeu0
ここら辺はつかえね?使った事無いけど

AJRDatabase
This framework is similiar to EOF from Apple
ttp://www.raftis.net/~alex/source.html

GDL
It aims to be compatible with Enterprise Objects Framework (EOF) as released with WebObjects 4.5 from Apple Inc
ttp://wiki.gnustep.org/index.php/GDL
413名称未設定:2007/01/20(土) 13:48:13 ID:BpYgpdCf0
今まで科学技術計算オンリーでCとMatlabしか使わなかったんだけど、
興味本位でCocoaを勉強し始めました。結構面白いですね。

GUIを使って、デモ用の見やすい処理結果を出したりするのによさそう。
グラフの描写を1から勉強しなきゃいけなくなったけど…
414名称未設定:2007/01/21(日) 00:50:24 ID:nsBsZ4ot0
詳しく知らないのでテキトーだけど、
グラフ描画ならAquaTermが利用できるんじゃない?
415名称未設定:2007/01/21(日) 10:19:21 ID:NaI2Kk1w0
>>413
Garpherじゃあかんの?
416名称未設定:2007/01/21(日) 11:58:44 ID:58BMbTIo0
Matlab つかっているような人だとちょっと Grapher では力不足なんではない?
勿体ない話だけど Grapher つかいこなしてないけど ... たちあげて遊んでみよう...
417名称未設定:2007/01/21(日) 13:03:54 ID:nZntgIi40
使った事無いけどこういうのもある
http://developer.snowmintcs.com/frameworks/sm2dgraphview/
あとはQuartzComposerとか
418名称未設定:2007/01/22(月) 09:43:36 ID:5zx0n9WC0
NSScrollView内で使う、NSViewのサブクラスを作っています。
ビュー内に何かをドロップされたときに、自動でスクロールされると思うのですが、
このときフォーカスリングをvisibleRectの範囲で描画していると、スクロールされた
ときに描画のゴミが残ってしまいます。
これを防ぐために、NSScrollViewが自動スクロールするタイミングをとりたいのですが、
何か良いdelegateメソッドやnotificationがあるでしょうか?

またはNSScrollView内のカスタムビューでフォーカスリングを扱ううまい方法があるでしょうか?
どなたかご存知でしょうか?
419名称未設定:2007/01/22(月) 10:00:40 ID:7KvDbQ5z0
フォーカスリングは NSScrollView 側で描画するべきじゃないのか?
サブクラス作って drawRect: を上書きするとかで。
420名称未設定:2007/01/22(月) 11:35:06 ID:luZchXbf0
>>418
ドラッグしてきてからドロップするまでの間、該当ビューに繰り返し送られる

- (NSDragOperation) draggingUpdated: (id <NSDraggingInfo>) sender

内で、[self setNeedsDisplay: YES] などと呼んで、ビューを
逐一書き直してやるといいんじゃないでしょうか。
(ただし、フォーカスリングを drawRect: 内で描いているという条件でですが)

私は NSScrollView の中の NSTextView のサブクラスで
そのように処理しています。
421418:2007/01/22(月) 11:46:11 ID:5zx0n9WC0
>>419
それも考えたのですが、NSScrollViewを使わずに単独でも扱えるカスタムビューを
作りたかったので。

カスタムビューでフォーカスリング(firstResponderのではなく、ドロップ時のやつ)を
扱う人はあまりいないんですかね?
Apple純正でも、Cocoa系ソフトでフォーカスリングをきちんと描画している
カスタムビューはあまり見ませんし。

最近のiPhotoではスクロール時に、撮影日がリアルタイムで表示されるのですが、
あんな風にスクロール時にリアルタイムで反応できれば良さそうなんですが…。
422418:2007/01/22(月) 14:27:00 ID:5zx0n9WC0
>>420
ありがとうございます!
その方法で実現できました。ただ、[self setNeedsDisplay:YES]では
描画がもっさりしてしまうので、描画範囲を細かくしてやる必要がありますね。
これから手を加えてみます。

#それにしても、これくらいはNSViewが標準で備えていても良いような…。
[self setDrawsFocusRing:YES]とかそんな感じで。
423名称未設定:2007/01/22(月) 15:44:32 ID:AkhlHIkA0
Documentベースアプリを作っています。

ファイルメニューに「最近使った項目を開く」というのがあるんですが、
そこに登録される項目が自前のドキュメントフォーマットしか登録されないんですが、
なぜだか分からずに頓挫しています。

勝手に自前のフォーマットだけ登録されるといった感じです。

読み込み可能なのは、自前のフォーマットとテキスト(.txt)ファイルです。
この「最近使った項目を開く」のメニューは自前で制御できるのでしょうか??
424名称未設定:2007/01/22(月) 15:57:54 ID:Pomz8nud0
本来なにもしなくても登録される筈だとおもうんだけど、
NSDocumentController の
- noteNewRecentDocument: か
- noteNewRecentDocumentURL: をつかってくだされ
425423:2007/01/22(月) 20:37:38 ID:AkhlHIkA0
>>424
NSDocumentControllerのnoteNewRecentDocumentURLで
できました。
ありがとうございます。
426名称未設定:2007/01/23(火) 21:37:48 ID:1zj09Vp90
427名称未設定:2007/01/23(火) 21:42:38 ID:tieMl7He0
ほんとだ。ついでにhmdt-web.netのほうも変。
428名称未設定:2007/01/23(火) 22:58:08 ID:mJ5ifm4B0
そもそも最初から変なんじゃ?
429名称未設定:2007/01/23(火) 22:58:55 ID:bDx2ReDk0
いきなり
「切り替えてみた
 どうだろう」

って言われても、どうもこうも言えないよな。
430名称未設定:2007/01/23(火) 23:03:49 ID:mJ5ifm4B0
変だとしか言えないと思う。
431名称未設定:2007/01/23(火) 23:15:51 ID:YVvMIMDz0
なんすかこの…
糞センスは…
432名称未設定:2007/01/23(火) 23:21:21 ID:E4BpVp1n0
hack されたかと思った
433名称未設定:2007/01/23(火) 23:35:24 ID:jAaYTamn0
「危ない直球notビーンボール」で検索してみたら、どうやら
ttp://d.jong.gr.jp/shachi
のサイトのようだけど、DNSでもおかしくなっちゃったのかな?
434名称未設定:2007/01/23(火) 23:37:16 ID:bDx2ReDk0
危ない直球notビーンボールの管理人が、
DNSの支配者、ネット社会の裏ボスって事だろう。

だから「切り替えてみた」ってつぶやいている。冷酷に。
もしかしたら、mkinoさんはもう……。
435mkino:2007/01/23(火) 23:55:35 ID:FHdSS2VU0
Shiiraやめた。Shachiでいくぜ!
436名称未設定:2007/01/23(火) 23:59:32 ID:1wv7wSm60
うぇっwwうぇっww
437名称未設定:2007/01/24(水) 00:21:30 ID:TWdPHEA30
繋がらなくなた
438名称未設定:2007/01/24(水) 09:56:12 ID:qL/0DhBn0
実はmkinoさんは二重人格者。
表の顔はshiira。
裏の顔はshachi。

そしてこの度裏の顔が表の顔を倒し、裏の彼が表へ出てきたのだ。

という妄想。
439名称未設定:2007/01/24(水) 12:02:01 ID:BGsrRy1M0
>>426
何が変なのかわからないんだけど...
440名称未設定:2007/01/24(水) 13:04:14 ID:qL/0DhBn0
>>439
今は直ってるけど、昨日の夜はリンクが一つだけになっていてクリックしたら、
なぜかshachiって>>433のサイトの内容が出た。
しかもURLは>>433のじゃなく、ちゃんとitools.jp内だった、itools.jp/shachiだったかも。
441名称未設定:2007/01/24(水) 13:08:34 ID:qL/0DhBn0
>>440
ちょうどitools.jp見てたから間違ったw
hmdt.jpですwwwwwww
442名称未設定:2007/01/24(水) 18:27:53 ID:BGsrRy1M0
>>440
何かの手違いかな

それにしてもNSStringのトリムってあり得へんくらいメッセージが長くなるので...
@implementation NSString (NSStringTrim)
- (NSString*) trim
{
return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
@end
としたくなるなぁ
443名称未設定:2007/01/25(木) 22:28:30 ID:aHYC8AhY0
NSStringのクラスの設計ってどうなんだろう
− drawAtPoint:withAttributes:
− drawInRect:withAttributes:
− drawWithRect:options:attributes:
− sizeWithAttributes:
上記のカテゴリをNSStringに追加する感覚が理解できないorz
それよりNSStringには正規表現機能が欲しいな
444名称未設定:2007/01/26(金) 00:19:45 ID:4283BjPZ0
つOgreKit
445名称未設定:2007/01/26(金) 14:37:47 ID:L3Ex39ff0
どなたかOgreKitでOSAX作ってくだせい。
446名称未設定:2007/01/26(金) 19:24:16 ID:xM3feWQL0
>>443
だから、それらの描画系メソッドは"NSString Additions"として、AppKitで定義されている。
1つのクラスがAppKitとFoundationにまたがって定義されているのは汚いと感じるかも
しれないけど、描画機能を持つ別クラスにするとか、別クラスにNSStringを引数として
与えて描画するとかより、現実的な実装なんじゃないかと思う。

ちなみに俺はtruncate機能が欲しい(文字列を表示幅に合わせて省略するやつね)
最近はそういう機能あるのかな。
447名称未設定:2007/01/26(金) 20:40:59 ID:jTivk9wk0
何時頃を"最近"と言うのかは分からんが。
ずいぶん前からあるぞ。
448446:2007/01/26(金) 21:22:36 ID:xM3feWQL0
>>446
Panther以降はマトモにそこらへん調べたことなかったんで。
ttp://developer.apple.com/documentation/Cocoa/Conceptual/Rulers/Tasks/TruncatingStrings.html#//apple_ref/doc/uid/20001811
に書かれてるみたいに、NSParagraphStyleの-setLineBreakMode:で
NSLineBreakByTruncating〜を指定する方法でOK?
それとももっと簡単な方法ある?
449446:2007/01/26(金) 21:32:48 ID:xM3feWQL0
あ、>>447ね。
昔はTruncateThemeText()使ってたけど。
450名称未設定:2007/01/27(土) 08:20:22 ID:SiSAeERZ0
もっと簡単な方法があるのか無いのか知らんが。
そういう面倒な処理を簡単に書けるようにするのがカテゴリじゃないのか。
451名称未設定:2007/01/27(土) 09:30:34 ID:KMoHZtV00
カテゴリ使おうが、標準で用意されてない機能に無駄なコード書かなきゃいけないことに
違いはあるまい。
452名称未設定:2007/01/27(土) 10:41:20 ID:SiSAeERZ0
機能は標準で用意されてるだろ?
創意工夫せずに文句ばかり垂れる奴はプログラミングするなよ。
453名称未設定:2007/01/27(土) 14:51:41 ID:5Mk44aGT0
Truncate処理ってあまり好きじゃないな
「...」を表示するくらいならあと3文字多く表示してくれよ!って思うし、
その前に、左右に余白があるのなら詰めてくれよ!って思う(Finder等のCarbonアプリにありがち)
454名称未設定:2007/01/27(土) 20:27:24 ID:7QavUmzl0
>>448
Tiger以降なら、NSCellの- (void)setLineBreakMode:(NSLineBreakMode)mode
を使うのが一番手っ取り早いと思いますよ。
455446:2007/01/28(日) 02:42:40 ID:VyIprSyj0
>>448
なるほど。ありがとう。
456446:2007/01/28(日) 02:43:15 ID:VyIprSyj0
また間違えた。
>>454ね。
457名称未設定:2007/01/29(月) 22:51:59 ID:6b9rP+ph0
<ヘッダ>
@interface BindObject : NSObject {
NSMutableDictionary* controls;
}
@end

<コード>
@implementation BindObject

- (void)setValue:(id)value forUndefinedKey:(id)key
{
if (!controls) {
controls = [NSMutableDictionary new];
}
[controls setValue:value forKey:key];
}

- (id)valueForUndefinedKey:(id)key
{
return [controls valueForKey:key];
}

@end
というオブジェクトを作って、NSObjectの代わりにBindObjectを継承して
モデルやコントロールクラスを作っているんだけど
458名称未設定:2007/01/29(月) 22:56:15 ID:6b9rP+ph0
ごめん用事があるので、また後で!
459名称未設定:2007/01/30(火) 15:53:58 ID:+sxRxomX0
用事は済んだか
460名称未設定:2007/01/30(火) 18:01:37 ID:1ze2xbkL0
その後、彼を見たものはいない。
461名称未設定:2007/01/30(火) 22:14:30 ID:i5RxrYPH0
おまたせ(あまり大した話題じゃないんだけど)
そうすると、IBOutletやIBActionを使わなくてもIBのバインディングを
使ってGUIにアクセスしたりイベントを受け取ったりできるんだね。

例えばウインドウにテキストフィールドとボタンがあるnibファイルがあるとすると、
バインディング部にそれぞれvalue="testField" target="testButton"と名前をつけて
自分のクラスに
-(void) testButton
{
[self setValue:@"Hallo World なんちゃって" forKey:@"testField"];
}
と書くだけでinterface部分に何も設定しなくても動く! なんか良くない?

あと、この方法ですべての処理が書けるようになれば、
サーバにモデル(コントローラ)クラスを置いて、クライアントにはNibファイルを置き
その間をソケットでキー&バリューを送り合えば、面白い事ができそうな気がするね
462名称未設定:2007/01/30(火) 22:28:38 ID:9/Vu8rn60
そっすね
463名称未設定:2007/01/31(水) 11:28:55 ID:UQ1tga/q0
>>461
ふつうに NSObjectController を instantiate して、
インスペクタの attibute のところで Automatically prepares content
とどう違うの?
464名称未設定:2007/01/31(水) 18:23:50 ID:bH+xfZyb0
>>463
nibとクラスのやり取りが簡単になるってことじゃない?
465名称未設定:2007/02/01(木) 00:24:46 ID:I2TZc/PN0
バインディング関連って表現が難しいですね
>>463さんの方法は、ボタンやテキスト <-> NSObjectController <-> modelの構造ですか?
461の方法は、ボタンやテキスト <-> model に近いと思います。
466名称未設定:2007/02/01(木) 01:04:59 ID:FoO29TJa0
前にCocoaをやるならC言語くらいちゃんとやってからと言われたので
忙しかったのもあって数ヶ月もかかりましたがようやくC言語の入門を終えました。
ようやくCocoaを勉強できるとこまで来たのだろうと思っています。
最初は何から始めれば良いでしょうか?とりあえずXcodeだけインストールしました。
今までC言語の勉強にターミナルを使ってccでコンパイルして./で実行する方法で試していたので慣れる為にXcodeいじってみてます。

スレに書き込まれているプログラム見ても全然わからないです。
C言語の拡張だと聞いたのですけどかなり違うものみたいですね。
ObjectiveC言語の入門本をやるのが良いのでしょうか?
467名称未設定:2007/02/01(木) 02:46:08 ID:m0bZH3TP0
つ[まず基本からやれ、などという経験者の言葉を真に受けてはいけない]
468名称未設定:2007/02/01(木) 03:33:37 ID:4WFLgSu70
>>466
何か作りたいものはないのか?HMDT本のアプリサンプルでも見ながら、
自分なりに書いてるうちに、段々と分かってくような気がするが。
最初は不格好なものしか書けなくとも、一番分かりやすいんじゃないかと。
469名称未設定:2007/02/01(木) 09:36:50 ID:ms8X9tX70
mkino さんの初心者編をやるのがいいとおもいますよ。
http://developer.apple.com/jp/documentation/japanese.html#CocoaSeminar1
470名称未設定:2007/02/01(木) 09:42:06 ID:4WFLgSu70
>>466
何か作りたいソフトはないの?
HMDT本なんかでいくつかのサンプルアプリを作りながら、自分なりに
プログラミングしてくうちにいろいろ覚えられると思うけど。
そして、足りない部分についてはまた勉強していけばいい。
471名称未設定:2007/02/01(木) 19:08:19 ID:r2kWkyHz0
>>461
すげwwww
動的言語ならではだな
しかし、後からコードを読むとき苦労しそうだ
472名称未設定:2007/02/01(木) 23:14:41 ID:69+PoixO0
>>467
そうなんですか、騙されたんだろうか…。
>>468
時間になったらアラームが鳴るようなソフト等使いたいもので簡単そうなものから作れたら良いと思うんですが。
出来るのはいつになるのやら(汗)
>>469
とりあえずそれを見る事から始めてみます。
こんな説明してくれる動画があったなんて知らなかった。
>>470
HMDTの本は買おうと思ったら売ってなかったです。


アドバイスありがとうございます。
473名称未設定:2007/02/01(木) 23:23:04 ID:+BfM5yqy0
HDMT 2ndは大好評につき絶版です。
474名称未設定:2007/02/01(木) 23:53:24 ID:ADNvmM4z0
iTSで、PDF形式のを売ってくれたら買うのになぁ。ってな落書き。
475名称未設定:2007/02/02(金) 14:47:53 ID:/5xp6cSE0
>>472
467の戯言を真に受けんなよ。CがわからなきゃObjective-Cでどうやって
プログラミングするんだ?
476名称未設定:2007/02/02(金) 15:49:04 ID:709ANNEz0
Cを知らなきゃObjective-Cでプログラミング出来る訳が無いなんて頭固すぎるよ
オレはCは後から覚えたけどね
未だにCのわからないとこがいっぱいあるよ
ってか、この話題は前にさんざんやっただろ?
477名称未設定:2007/02/02(金) 19:07:06 ID:Cc5CC6Kq0
まあ、Cocoaの難しさはObjectiveCというより、IBの操作方法+デザインパターンの動作を
想像できるかどうかって感じだね。細かい所を気にする人は、C言語とObjCの言語仕様を
マスターする必要があるかも
478名称未設定:2007/02/02(金) 22:19:03 ID:/5xp6cSE0
>>476
Cocoaはフレームワークにすぎない。重要なのはフレームワークを使って作る
中身の部分だよ。そういう部分は何を使ってプログラムするわけ?
479名称未設定:2007/02/03(土) 00:02:05 ID:tMzuGpJk0
<ちらしの裏>
>>478

C を「理解する」Obj-C を「理解する」ってたって
どこまで「理解」することを意味して話しているかは人によりけりでしょう。

if (){} else {} が知らないで Cocoa でプログラムできるかというと
無理だから、そういう意味では C は知らないとだめだけど、

C の int (*a)[3](int *b(double)) とか malloc calloc realloc
まで理解しなくてもだいたい [NShogehoge korewo: kousite: ]で
はなしがすむという意味では C は知らなくてもいいでしょ。

個人的には C は知ってて Cocoa に入って、Obj-C の文法は
数時間でだいたいわかったけど、IBの使い方、
File's owner って何?とか awakeFromNib ってどういうこと?とか
どんなクラスがあって何が出来るかとか、
サブクラスつくるより delegate でやるとか理解するには
非常に時間がかかったので、
フレームワークに「すぎない」という言い方には抵抗があるけど。

まあ478さんにも個人的体験があってのその発言なんだろうけどね。
</ちらしの裏>
480476:2007/02/03(土) 00:13:24 ID:VUjaLEq+0
for文を使ってループする、if文を使って分岐する、変数に代入出来るんだ程度のことは
別にCを知らなくたって、チュートリアルの書き方を見ればだいたいわかるもんだよ。
481名称未設定:2007/02/03(土) 00:50:12 ID:S57hEJuY0
Aも知らないくせにCなんて早すぎる
482名称未設定:2007/02/03(土) 01:57:19 ID:y1AtaiHt0
>>479
そのへんの「非常に時間がかかった」ことが一番よく分かるのって、
やっぱヒレガス本?
483名称未設定:2007/02/03(土) 09:46:02 ID:tMzuGpJk0
479ですが、お金がないので Apple のドキュメントでがんばりました。ヒレガス本も立ち読みしたけど。

日本語なら 469 にも上がってるけど mkino さんの初心者編。

最近は(すくなくとも英語のADCは)いっぱい Guide をかいているので(英語がある程度よめれば)分かりにくくはない、と思います。

あと、これも英語が読めれば、
http://cocoadevcentral.com/
はめちゃくちゃ丁寧でわかりやすい。
484名称未設定:2007/02/03(土) 09:50:30 ID:tMzuGpJk0
<ちらしの裏>
個人的には、IB を触ってる段階でオブジェクトが作られているわけで、
NIB ファイルにはそれがフリーズドライされてるんだというのを
どこかで読むまで全然 outlet とか awakeFromNib がわかりませんでした。

あと、File's owner が普通自動的に NSApplication もしくは NSDocument のサブクラスに割り当てられているというのも理解に時間がかかった...

チュートリアルにしたがって一通りやっても、それぞれの操作がなぜ Cocoa 的に必要なのかとわからないと自分で使えないですよね。
</ちらしの裏>
485名称未設定:2007/02/03(土) 10:47:27 ID:JU0jhOmG0
>>484 ちん
>>348だけど、俺も同じように悩んだ。
でも悩んでいる事を質問しようとすると、頭が整理されて
理解できるんだよね。
486名称未設定:2007/02/05(月) 06:03:09 ID:88l1sHKd0
上にも書いてあるが、言語とフレームワークは本来独立。
C を勉強したといっても、それで GUI なアプリを作ったりしてみたのか?

だけどまあ互いに影響はするだろうね。
例えば C++ でベタに書かれたフレームワークだと、初心者だとまず C++
を理解するのに時間がかかるだろう。

今日び、既にあるフレームワークをいかに使いこなすかがプログラミングの
大きな部分を占めるから、その手のものの学習に時間がかかるのは、
仕方ないとも言える。
487名称未設定:2007/02/05(月) 06:30:02 ID:EAkFWql40
>>486
>上にも書いてあるが、言語とフレームワークは本来独立。
>だけどまあ互いに影響はするだろうね。

フレームワークは概してはじめに対象として書かれた言語に激しく依存するとおもうので、個人的には「影響するけど、がんばれば独立させられなくはない」ぐらいだと思います。ニュアンスの違いだけど。

Tk はなかなか Tcl 以外から使うのは難しいし、Cocoa は静的オブジェクト指向の言語から使えるようにするのはかなり大変でしょう。Qt は C++ の拡張に強く依存してるから、これも他の言語で使うのは大変だと思う。
488名称未設定:2007/02/05(月) 09:20:23 ID:fa4DUQ2h0
言語に依存ってどういう意味?OSに依存ならわかるけど。
基本的にフレームワークはその名の通り骨組みにすぎない。重要なのはプログラム
の中身の方。こっちの方はソフトにもよるがフレームワークと独立してるものも
あるし、依存してるものもある。ただし、言語とはまったく関係ない。Cocoaは
CでもC++でも使えるからな。

俺が作ってるのもCocoaとCarbonのハイブリッドだし、Objective-C、C, C++,
lexとyaccの混成になってるよ。
489名称未設定:2007/02/05(月) 10:12:56 ID:H34/1TlE0
>>487
依存というか、言語の設計思想に強い影響を受けているとでも言えばいいのかな。
ResponderChainとかUndoManagerなんかは、Objective-Cのlate-bindingな特性を
うまく使ってるけど、他の言語で実現しようとすると少しトリッキーな事が必要になる気が。
490名称未設定:2007/02/05(月) 10:47:19 ID:n1vitqzV0
Runtime依存とでも表現すべきかな。
JavaのフレームワークはCから利用できないだろうけど
CのフレームワークならJavaから利用できるだろうし。
491名称未設定:2007/02/05(月) 11:13:16 ID:EAkFWql40
>>488
>CocoaはCでもC++でも使えるからな。
う〜ん、C から呼べる関数で wrap しておけば C からでも C++ からでも使えるけど、結局 wrapper の中は Objective-C で書く訳でしょ?だから
>ただし、言語とはまったく関係ない
というのには抵抗があるな...「あまり」関係ないならわからなくはないけど。
492 ◆RepAhs6cJ2 :2007/02/05(月) 17:22:26 ID:QavYZ+G90
cocoaアプリで、起動してもアプリがアクティブにならないようにする
方法はありますか?

スクリーンキャプチャのソフトを作っているんですが、
たとえばSafariをアクティブにした状態でスクリーンキャプチャの
ソフトを起動すると、スクリーンキャプチャがアクティブになった
状態で撮影されてしまい、困っています。

よろしくお願いします。
493名称未設定:2007/02/05(月) 18:59:00 ID:1uiEOuKU0
>>492
詳しくないけど、HMDTにあるCoralが参考になるかもしれん。

どーしてもダメなときはタイマーつけて何秒後〜にしてしまうのもアリだと思うが。
494名称未設定:2007/02/05(月) 22:09:58 ID:pfToWd2k0
>>492
スクリーンキャプチャしたいだけならcommand+shift+3or4で簡単にとれるんだが。
495名称未設定:2007/02/05(月) 22:13:04 ID:ENprwZzk0
>>494
どこをどう読んだらそういう話になるのだ。
496名称未設定:2007/02/05(月) 22:17:29 ID:SrN0qU050
492の作ったスクリーンキャプチャソフトがどういうツクリかがわからないとなんとも
言えないけれど、フツーのUIを持つアプリ(ボタンを押したらキャプチャ開始など)なら
1.内部のフラグセット
2.[NSApp deactvate]でキャプチャアプリを非アクティブに
3.NSApplicationのdelegateメソッドapplicationDidResignActive:で、1.のフラグを見てキャプチャ開始
4.フラグクリア
という順で処理すればいけると思う。
497名称未設定:2007/02/05(月) 23:16:18 ID:sBTbNUZj0
+loadメソッドの内部で自分をallocするのってアリですか?
498名称未設定:2007/02/05(月) 23:22:23 ID:sBTbNUZj0
すみません、ナシだったみたいです。
499名称未設定:2007/02/06(火) 07:01:58 ID:+fdVWxrU0
AppleScripy仕込んどくとか。
500 ◆RepAhs6cJ2 :2007/02/06(火) 20:32:18 ID:V8eowCLG0
>>493,496
ありがとうございました。

>>494
そういう話ではないです。
501名称未設定:2007/02/07(水) 15:00:26 ID:EAhrCLbE0
はじめまして

アプリでNSSplitView(仕切り線)の位置(高さ)を保存・復帰したいのですが、
復帰する際にどういう関数で、仕切り線の高さを設定すればよいかわかりません。
どなたかご教授ください。

P.S.
保存は、constrainSplitPositionの値を拾ってきています
502名称未設定:2007/02/07(水) 15:01:37 ID:EAhrCLbE0
Tabオーダーの処理をEnterでも可能にできるようにしたいのですが
何かよい方法がありますでしょうか?
どなたかご教授ください
503名称未設定:2007/02/07(水) 15:23:39 ID:NwaVYQNC0
>>501
泥臭いが、CocoaDev では
[[[self subviews] objectAtIndex: n] frame]
でとってきたサブビューのフレームを保存しておいて、
適用するときは
[[[self subviews] objectAtIndex: 0] setFrame: r0];
[[[self subviews] objectAtIndex: 1] setFrame: r1];
[self adjustSubviews];
とかするのが推奨されてる。
504名称未設定:2007/02/07(水) 22:06:15 ID:nwCjnF280
CocoaバインディングやCoreDateって一昔前に流行ったFileMakerやAccess&VBAみたいな感じで
なんか抵抗を感じるんだよなー
低レベルのAPIがあるのが救いだけど、動作がコードとして残らないのは良い事なんだろうか
文字列リテラルのオンパレードになるんだけど・・・
505名称未設定:2007/02/08(木) 00:47:55 ID:V6FUig8F0
有る程度同意。

でもすくなくともリテラルのオンパレードはメンテナンス上良くないのでは。
せめて .h で #define しておかないと書き間違えたときに死亡する気がする。

あと、nib ファイルは nibtool でダンプできるから binding どうなってるか
把握はできるんじゃないでしょうか。model はしらない
506名称未設定:2007/02/08(木) 12:45:41 ID:m5Q5wrKz0
普通キーバリューコーディングの引数も#defineするものなの?
507名称未設定:2007/02/08(木) 19:13:15 ID:CV/aKXir0
const NSString * HOGE;
508名称未設定:2007/02/08(木) 20:41:24 ID:QZxTnupE0
NSString * const HOGE;

じゃないのか?
509名称未設定:2007/02/09(金) 01:47:28 ID:quJ554xP0
ヒレガス本では
extern NSString *hogeしてた。
510501:2007/02/09(金) 07:49:35 ID:tHc4QVcp0
>>503
ありがとうございました。その線でなんとか対応できそうです。

ついでにどなたか、502についてアイディアがあればご教授お願いします!

511名称未設定:2007/02/09(金) 09:00:05 ID:Lj/qFyyp0
NSTextField をつかっているんなら、
field editor の delegate で enter が入力されるのを監視して
tab の動作をさせればいいと思う
512名称未設定:2007/02/11(日) 20:28:08 ID:rMJ4sQfk0
Cocoa版 Coding Standards本が欲しいな
513名称未設定:2007/02/12(月) 10:02:06 ID:kpUqr7oS0
ウィンドウにNSTableViewとNSButtonを配置しました。テーブルのリストの選択状態に応じて
ボタンのEnable/Disableを切り替えたいんですが、リストで選択部が変わったのをどうやって
検知したらいいかが分かりません。CW+PPだと確かSelectionChangedみたいなのをオーバー
ライドすれば良かったと思うんですがXcode+IBの場合はどうやるんでしょうか?
514名称未設定:2007/02/12(月) 10:11:09 ID:WVJLgAIQ0
>>513
選択が変わったのを検知する、ならdelegateかnotificationでtableViewSelectionDidChange:を捕まえる。

もっともCocoa Bindingを使えば検知してどうこう、なんて考えないで済むけどね。
515名称未設定:2007/02/12(月) 10:32:49 ID:kpUqr7oS0
NSTableViewにはNSArrayControllerをバインディングしてデータの挿入等に使ってます
が、リストの選択部の変更に応じた処理もNSArrayControllerでできるんですか?
516名称未設定:2007/02/12(月) 10:49:26 ID:WVJLgAIQ0
>>515
出来る。NSArrayControllerに管理させてるモデルにhogeというプロパティがあったとして、
NSButtonのBindingでenabledをNSArrayControllerのselectionのhogeとBindする。
517名称未設定:2007/02/12(月) 11:48:16 ID:kpUqr7oS0
>>516
できました。ありがとうございました。
518名称未設定:2007/02/12(月) 12:27:37 ID:FiRmDQWl0
Core Data Application で(Document-based じゃない方)、アプリを終了するとき

-[_NSFaultingMutableSet _isKindOfEntity:]: selector not recognized

というエラーが出てデータが保存されないときがあるのですが、
_NSFaultingMutableSet というのは何なのでしょうか。

コード内にはないので、どこをどう調べれば良いのかわかりません。
519名称未設定:2007/02/12(月) 15:34:03 ID:y5cWLaP50
>>518
Core Dataのこと知らないのでなにも言えないけど、
ググってみたら同じところで困惑している外人さんが何名かいるね。
520名称未設定:2007/02/13(火) 13:34:51 ID:3E7PPgST0
ADC Online に Leopard の Cocoa 機能のビデオが来たベ
521名称未設定:2007/02/13(火) 15:50:24 ID:8+92frVi0
ADC on iTunes だろ。
522名称未設定:2007/02/13(火) 16:04:41 ID:JED4Cb5x0
WWDC2006のビデオしかないけど。
523名称未設定:2007/02/13(火) 20:00:06 ID:HlHi+iLU0
ADC on iTunes

WWDCもTeck TalksもLast Modifiedが2007/2/2なので
追加はないように見えるけど。
524名称未設定:2007/02/13(火) 20:11:23 ID:EgIpXlB50
>>518
>_NSFaultingMutableSet というのは何なのでしょうか。
名前からして、EOF で言うところの fault handler に対応する物の何か
かな。興味深いね。
って、そんなこと知ってもお前さんの問題の解決にはならないわな。

> コード内にはないので、どこをどう調べれば良いのかわかりません。
バグはお前さんのコードの中にある事がほとんどw

この手の selector not recognized が出た場合、既に dealloc された
オブジェクトにメッセージを送っている可能性があるかな。
デバッガで例外を止めてみたら、何かわかるかも。
525名称未設定:2007/02/13(火) 23:54:19 ID:3E7PPgST0
>>523
すいません、無料会員でも見られるビデオの三本目になったんですよ
Select か Premier のかたは昔からみられたビデオです
526名称未設定:2007/02/14(水) 14:38:50 ID:vxz5GEka0
Cocoaの勉強はじめたばかりなんですが、命名規約っていうでしょうか、
メソッド名は小文字で始めるのが慣習みたいですけど、インスタンス変数
の名前ってみなさんどうしてますか?AppleでやってたHMDTの講座だと
アンダースコアつけてましたけど、なんかそれも馴染めなくて...
C++だとmつける人も多いと思いますけど、Objective-Cだとどうなんで
しょう?インスタンス変数だからiとか??
527名称未設定:2007/02/14(水) 15:12:12 ID:jQ+Sc04n0
アンダースコアはCの規則かなんかで使わない方がいいんじゃなかったっけ。

ObjCのインスタンス変数はオブジェクトのプロパティの名前をそのまま付けるみたい。
アクセサメソッドと同じ名前ね。

@interface AObject : NSObject
{
  NSString *name;
}
- (NSString *)name;
- (void)setName:(NSString *)aName;
@end

みたいに。
528名称未設定:2007/02/14(水) 15:12:27 ID:AxWp5yzQ0
http://developer.apple.com/documentation/Cocoa/Conceptual/CodingGuidelines/index.html
を読め ... と書き込もうと思ってざっと読んだら instance var. の名付けかたについては書いてなかった。

Apple のサンプルコードみてみたらいいとおもうけど、ふつう自然な単語を素直に使っていて、下線もなにも付けてないですよ。/Developer/Examples/AppKit/ の下にあるサンプルのヘッダファイルをいろいろ見てください。

あとは
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php
とか。
529名称未設定:2007/02/14(水) 15:15:24 ID:rjruFGmC0
好きに付ければいいんじゃない。俺はCodeWarriorを使ってたんで、最初'm'を
使ってたんだけど、key value codingとかの時にちょっとカッコ悪いので
普通にlocal変数と変わらん名前になった。
530名称未設定:2007/02/14(水) 15:57:32 ID:wuHEzIQO0
http://nagano.monalisa-au.org/?p=41

ページ内のリンク先が結構参考になった。

531名称未設定:2007/02/14(水) 16:42:30 ID:t3QGX0Ym0
いろいろコメントありがとうございます。特に何も付けずに普通の単語そのまま
がいいみたいですね。Examplesの中のもそうなってました。
532名称未設定:2007/02/14(水) 20:43:13 ID:wOPPniLL0
ローカル変数とインスタンス変数の区別が分かりづらいから、
俺はアンスコ付けてるけど少数派なのかな。
533名称未設定:2007/02/14(水) 20:52:26 ID:aLYp2DGY0
あれ?アンダーバーで始まる全ての変数・メソッド名とかってアップルに予約
されてるんじゃなかったっけ?
534名称未設定:2007/02/14(水) 20:56:52 ID:t3QGX0Ym0
>>530で教えてもらったリンク↓によるとメソッド名のアンダースコアはアップル予約済み
みたいですね。変数名はいいみたい。
http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/5objc_language_summary/chapter_10_section_11.html
535名称未設定:2007/02/14(水) 21:22:47 ID:wGzpU59T0
>>532
俺も付けてるよ。
GC使うようになったら要らないかもね。
536名称未設定:2007/02/14(水) 21:22:52 ID:C3rHRbno0
俺は気にせず使ってるけど、一応、インスタンス変数やアウトレットにも
Appleはアンダースコアつけてるよ。
Spotlightで 例えば "NSSavePanel.h" を検索して、見てみるがよろし。
537名称未設定:2007/02/14(水) 21:51:51 ID:wOPPniLL0
普通のインスタンス変数にはアンダースコア付けるけど、なぜかアウトレットには付けない俺。Interface Builderから見たときに何かイヤなので。
538名称未設定:2007/02/14(水) 22:11:09 ID:Dfvr6Gvq0
NSTextFieldやNSTextViewのインスタンスをウィンドウに配置しています。
それらの入力欄がクリックされてアクティブになったときに,
ウィンドウ内にあるラジオボタンの選択状態を変更したいのですが,
適切なデリゲートやノティフィケーションが見あたりません。
どうすればよいでしょうか?
539名称未設定:2007/02/15(木) 00:26:49 ID:kRGNwU1F0
NEXTSTEPのときってアンダースコアってつけてましたっけ?
NEXTSTEPのときのソースではあんまり見たことなかった気がするけど記憶違いかな
540名称未設定:2007/02/16(金) 20:45:58 ID:En+nuPdD0
ディスクユーティリティの[情報]やシステムプロファイラで確認できる
ディスクの情報を取得するAPI知りませんか?
この辺の情報はgetFileSystemInfoForPathで
取得できるかと思ったのですが、description、typeはnilが返ってくるし・・・
541名称未設定:2007/02/16(金) 22:56:36 ID:1c7AgCl00
Cocoaじゃないですが、AppleのサンプルコードにあるDumpVolumeInfoが
参考になると思います。
ttp://developer.apple.com/samplecode/DumpVolumeInfo/index.html
欲しい情報によっていくつかのAPIを使い分ける必要があるかと。
542名称未設定:2007/02/16(金) 23:19:41 ID:/MagHqkP0
>>539
確かに普通のコードではあまり見なかったが、AppKit 内部とかには結構あったような。
昔より中の人のコードが露出するので、それで中の人のコンベンションが
外に出回ってるんだったりして。
543名称未設定:2007/02/17(土) 12:34:59 ID:c5s3KIib0
NSPopUpButton で「選択が変わったことだけ」を知るには、
どういった方法があるでしょうか。

KVO を試してみようと思ったんですが、書き方が良くわかりません。

[aPopUpButton addObserver: self
forKeyPath: ?
options: ?
context: NULL?];
544名称未設定:2007/02/17(土) 13:06:43 ID:OWYohwrW0
>>543
普通に Target-Action
545名称未設定:2007/02/18(日) 10:19:43 ID:GlSfrvIj0
NSPredicate の書き方が良くわからないんですが、
Core Data で date の属性を持っているエンティティから、
date の値が「特定の年」のものだけ取ってくるには、
どういう predicate を書けばいいでしょうか。
546名称未設定:2007/02/18(日) 11:11:06 ID:OP+Oy1lE0
>>545
a) dateの年の値が特定のものを検索
b) dateの範囲がその年の1/1から12/31のものを検索
のどちらかでできると思います。

前者なら
[NSPredidacate predicateWithFormat:@"date.yearOfCommonEra == %d", year]
てな感じで。

547名称未設定:2007/02/18(日) 15:43:53 ID:9kITBYXl0
色々試したんですが、解決しないので教えてください。
やりたいことは、NSOpenPanel上に配置したNSPopupbutonに拡張子
の種類を書いておいて、それを選ぶと、該当する拡張子のファイル
だけを表示するということをしたいのです。
(例えば、TIFF(*.tif), JPEG(*.jpg)とかして、TIFFというのを選んだら
そのファイルだけを選べるようにする)

やったことは、NSOpenPanelにaccessoryViewを登録して、そこに
NSPopupbuttonを配置しました。
NSPopupbuttonからDocoumentcontrollerにアクションを登録して
setAllowedFileTypesをNSPopupbuttonの選択した物でcaseで呼ぶ
ようにしたのですが

NSPopupbuttonからcontrollerにアクション接続してしまうと、NSPopup
buttonがグレーになって選択できません。そもそもこういったやり方が
間違いなのでしょうか?
548名称未設定:2007/02/19(月) 17:05:55 ID:5wRwSQui0
やばい。KeyValueCodingにハマってしまって、例えばif文で文字列を判定する所は、
全部KeyValueCodingで書きたくなって困ってますorz。
プログラミングは楽しいけど、他人は絶対メンテできないだろうな・・・。そんな人います?
549名称未設定:2007/02/19(月) 22:29:23 ID:HrZpP/x60
KVCというか最近Cocoa試し始めたのであまり分かってないですけど、
javaなんかで、これと似たようなことをフレームワークでよくやってますよね。

ObjCだとこういうのがスクリプトなみに簡単にできるし、積極的に使って
良いのではないでしょうか。

>>例えばif文で文字列を判定する所は、
これって普通にdictionaryのかわりにKVC使うとかじゃなくて、もっと積極
的にってことですか?


550名称未設定:2007/02/21(水) 16:08:42 ID:eLZ4va2w0
ifやswitchで条件分岐するところはKVCの方がいいね。
後から条件追加するときに修正が楽だし。
551名称未設定:2007/02/21(水) 22:20:13 ID:uPO21ZsW0
某所でこんな説明見かけたんだけど、なにか違うような。

>「ユニバーサルバイナリ」とは、IntelまたはPowerPCプロセッサのどちらを搭載したMacでも、同一のプログラムを動作させることのできるアップルの最新テクノロジーです。

教えて、偉い人。
552名称未設定:2007/02/21(水) 22:31:05 ID:TOVRRx8w0
aka ファットバイナリ (FAT Binary)
553名称未設定:2007/02/21(水) 22:41:45 ID:m4o8j8OD0
MAB
554名称未設定:2007/02/21(水) 22:44:06 ID:osa89etr0
べ、べつに最新テクノロジーなんかじゃないんだからね!
555名称未設定:2007/02/21(水) 23:23:10 ID:6XfM8RV40
単にパッケージのなかに
intel 用バイナリ + ppc 用バイナリ + 画像とかデータ
が入ってるだけですよ

仕組み自体は NeXT のときからある
556名称未設定:2007/02/22(木) 00:53:03 ID:sbgBJoBH0
いやいや、x86用コードとPOWER用コードは単一バイナリに収められてるんですけど。
557名称未設定:2007/02/22(木) 03:10:16 ID:aRYmKFGp0
これでいいだろ?
「ユニバーサルバイナリ」とは、アップルのテクノロジーです。
558名称未設定:2007/02/22(木) 10:49:32 ID:Un8RZm5Y0
ユニークな婆さん猿の場合なり
559名称未設定:2007/02/22(木) 19:11:45 ID:g80rD+qk0
outlineViewのテーブル列をクリックで選択状態にして、
再度クリックで1、ダブルクリックなら2の処理(shouldEditTableColumn使用)
というようなプログラムを組んでるのですがどうしても1の処理がうまく考えつきません
よければお知恵をお貸しください。
560名称未設定:2007/02/22(木) 19:14:28 ID:375NQ1VU0
そういう処理をする方法が標準で用意されてないということは
それは間違ったユーザ・インターフェイスだと思った方がいい。
561名称未設定:2007/02/22(木) 20:22:39 ID:aRYmKFGp0
そういう処理が必要な時もある。たとえばFinderやiTunesのリスト項目の編集な。
562名称未設定:2007/02/22(木) 23:23:43 ID:ZOMr74e/0
>>559

Lap Cat Software Blog Blog Archive Single-click renaming in NSTableView
ttp://lapcatsoftware.com/blog/2006/10/12/single-click-renaming-in-nstableview/
563名称未設定:2007/02/23(金) 21:04:44 ID:Gq/RkjjI0
趣味グラマだったけど本業にしたくなってきた。
どこかにCocoaの仕事探せるとこない?
564名称未設定:2007/02/23(金) 21:18:51 ID:dDkoeR6N0
自分で探すしか。
エルゴとか募集してなかったっけ。
565563:2007/02/23(金) 22:09:54 ID:Gq/RkjjI0
Cocoaな仕事してる人って、どこで探したの?
それとも勤務先で、たまたまCocoaの仕事をアサインされた?

>>564
なるほどエルゴか
でも他ってなかなか思い当たらないなあ
566名称未設定:2007/02/24(土) 09:59:48 ID:/wikL3Ar0
>>563
MOSAで聞いてみれば?
567名称未設定:2007/02/24(土) 15:22:55 ID:SSNhV6NK0
http://www.ergo.co.jp/inquiry/jinji.html
>資  格 : C++ 言語を用いたアプリケーション開発経験2年以上

中身はCocoaじゃなかったのかw
568名称未設定:2007/02/24(土) 15:27:00 ID:NOuOCymF0
Obj-C経験で募集しても、人が集まらんだろう。
569名称未設定:2007/02/24(土) 15:27:10 ID:aJ3GO9rS0
>>567
Objective-C言語を用いた…
なんてほぼありえないからじゃね?
570名称未設定:2007/02/25(日) 12:30:36 ID:FrQ2mT360
571名称未設定:2007/02/25(日) 18:25:09 ID:VLDcMiQl0
開発対象が Mac なら Cocoa を使わないと言う手はないと思うがなあ。
Objective-C++ にして、外身は C++ ファイルだけど中はほぼ Cocoa で書いたりしたら
怒られちゃうんだろうか。
572名称未設定:2007/02/26(月) 11:05:08 ID:LeDvUzlk0
フレームワークが関係する部分はObjective-Cを使って、内部はC++で
作ってるんじゃないの?過去に蓄積してるライブラリとかもあるだろうし。
Objective-Cなんてすぐに覚えられるし。
573名称未設定:2007/02/26(月) 15:08:54 ID:qSCKi86I0
Objective-CとC++って互換性あるの?
574名称未設定:2007/02/26(月) 15:21:09 ID:LeDvUzlk0
Objective-C++から両方コール出来る。レイヤーは別々だけどね。
575名称未設定:2007/02/26(月) 17:24:31 ID:ugR/LPue0
ねぇちょっと聞いて聞いて
フォーカスが当たっているボタンで、enterキーを押してもなぜactionイベントが発生しない仕様なの?
Key Equivの設定で/Rを指定した時の動作に影響するから?
でもそれだとテキストフィールドでも同じ事が言えるよね
576名称未設定:2007/02/26(月) 20:09:15 ID:oaJfoMDx0
それは... お前を食べるためさ!
577名称未設定:2007/02/26(月) 23:02:40 ID:9kC3MVfd0
>>575
たとえば「保存しない」ボタンがフォーカスされてる時に、ユーザーがenterを押すとどうなるか?
578名称未設定:2007/02/27(火) 00:26:46 ID:1nwndlLE0
>>565
エ●ゴやめとけ。
パワハラあるぞ。
579名称未設定:2007/02/27(火) 05:05:04 ID:izeWJbGV0
ttp://images.apple.com/jp/articles/interviews/ergosoft/images/061006ergo_p2_02engeneers.jpg

えっ、じゃあ、あんなことやこんなことが?? (*´д`*)ハァハァ
580名称未設定:2007/02/27(火) 06:56:52 ID:1nwndlLE0
そういえば、だれかCocotronって使ってみた人いる?
http://cocotron.org/

CocoaでMac/Winのクロスプラットホームの
アプリ開発ができそうなんだけど
期待していいのかなぁ?
581名称未設定:2007/02/27(火) 09:11:52 ID:IW+/2cykO
おいらもMacのコードをWinに移植することがあるから、Cocotronで開発出来ると楽なんだがね。
実用レベルなのかな?
582名称未設定:2007/02/27(火) 10:41:28 ID:lEq0k2nf0
HMDTにCocotronについて書かれた日記が
あったような気がしたが。
AppKitとFoundationフレームワークくらいしか
使えなかったんじゃなかったけ?
583名称未設定:2007/02/27(火) 11:18:57 ID:1I9j55k20
NSArrayのデータをxmlのplist形式で保存するにはNSPropertyListSerializationを使うのかと
思ったら、そのままwriteToFileでもxmlになるみたいですが、NSPropertyListSerialization
を使わなきゃならない時ってどんな時なんでしょう?NSArrayの場合は使う必要はないんです
かね?
584名称未設定:2007/02/27(火) 11:31:07 ID:+5f0R5l+0
最近Cocoaプログラムを始めたものなのですが、以下の
コードは実質同じコードという理解でよろしいでしょうか?

<ケース1>
NSMutableArray* array = [[NSMutableArray array] retain];

<ケース2>
NSMutableArray* array = [[NSMutableArray alloc] init];
585名称未設定:2007/02/27(火) 11:51:21 ID:ZMMeX5NX0
>>582
はい。Cocoa without CoreDataです。
Cocotron っていうぐらいなら CoreData も用意しろって。

>>583
writeToFile は必ず xml になるという保障はないです。
いきなり ASCII 形式に戻っても文句言えません。

>>584
はい。
586名称未設定:2007/02/27(火) 11:58:49 ID:gmFxOrTf0
>>584
<ケース3>
NSMutableArray* array = [NSMutableArray new];
も入れてくれ
587名称未設定:2007/02/27(火) 15:35:42 ID:qHtEx9cC0
Windowの位置やサイズを保存・復帰するためのライブラリ関数とかってあるんでしょうか?
マニュアルでNSWindowControllerとかNSUserDefaultsとか見てるんですけどなかなか見あ
たりません。個別にWindowから位置や大きさの数値をとってplistなりに手動で保存するべき
なんでしょうか?
588名称未設定:2007/02/27(火) 15:42:43 ID:6lMXDhPT0
Interface Builderでウィンドウのインスペクタに「Auto Save Name」ってのがある。
そこに個別の名前を入れれば自動で保存される。

手動でやりたい場合はNSWindowのsaveFrameUsingName:とかを見てくれ。
589名称未設定:2007/02/27(火) 15:47:20 ID:qHtEx9cC0
>>588
できました。ありがとうございました。Interface Builderで設定できるとは気づきませんでした。
590名称未設定:2007/02/27(火) 16:57:23 ID:rZ8hEjsk0
591名称未設定:2007/02/27(火) 21:41:04 ID:eG+p7zuJ0
>>585
> >>584
> はい。

たぶんすごく基本的なことがいくつか理解できてない。
クラス継承とかautorelease poolとか。

>>586
さらには
<ケース4>
NSMutableArray* array = [[NSMutableArray allocWithZone:NULL] init];
とか?

実装にまで踏み込むと
<ケース5>
NSMutableArray* array = [[NSMutableArray allocWithZone:NULL] initWithCapacity:0];
もありみたいだが...
592名称未設定:2007/02/27(火) 21:49:24 ID:07nJpLrA0
>>591
<ケース4>とか要らんから説明しろや
593名称未設定:2007/02/27(火) 22:04:01 ID:6lMXDhPT0
>>591
理解したからこそ、実用上同等だと推測し、それを確認しに来たんでしょ。
着実だと思うな。
594名称未設定:2007/02/27(火) 22:36:29 ID:fRPCSO2X0
<ケース6>
NSMutableArray* array = (NSMutableArray*) CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
も仲間に入れてあげて。
595名称未設定:2007/02/28(水) 11:26:58 ID:k9a85DJa0
Core Foundationまで使い出したらキリないがな。
596名称未設定:2007/02/28(水) 21:28:36 ID:mMZsXDSb0
>>591
NULLじゃなくてnilのほうがよくね?
597名称未設定:2007/02/28(水) 21:36:20 ID:zgBr6uhn0
>>593
ちなみに >>591>>585 へのレス。

「実用上同等だと推測」することは「理解」じゃなくて、経験的知識に過ぎないと
思うのだが。

「実用上同等」って意味がよくわからんが、autorleaeseの有無はさすがに駄目だろ。
598名称未設定:2007/03/01(木) 01:06:22 ID:m11VHWb20
ドキュメントベースアプリケーションを作っているのですが、
NSWindowControllerとのメッセージの送信で苦労しています。

今、NSDocumentのサブクラスとNSWindowControllerのサブクラスが2つあります。(ウインドウは2つ)。
とりあえず、NSDocumentからNSWindowControllerへメッセージを送るために、
[[self windowControllers] makeObjectsPerformSelector:@selector(message) withObject:nil];
を行ったのですが、selector not recognizedと言われます。
windowControllersにウインドウが1つだけ登録されているときはうまくいくのですが、
-addWindowControllerでウインドウを2つ登録すると上のエラーになります。
どこが悪いかアドバイスお願いします。

599名称未設定:2007/03/01(木) 16:15:41 ID:mbJCBoXV0
messageは何よ?
600名称未設定:2007/03/01(木) 16:51:07 ID:aSUZLG4r0
>>596
NSZone は Objective-C のオブジェクトじゃないから
僕は NULL を使うよ。
601名称未設定:2007/03/01(木) 17:05:09 ID:q3LeHEGO0
>>600
ごめんなさい、いままでずっとNSZoneってクラスがあるもんだと思ってたよ。
今見たら構造体でしたね。


だって使ったことないんだもん。
602名称未設定:2007/03/01(木) 18:55:02 ID:/xH1Rqv60
Cocoaで簡単なXMLを扱いたいんだけど、すすめはあります?
CFXMLParserCreateとか使ってみたけど、"を認識してくれないみたいだし、
NSXMLParserもgoogleで検索してみたけど、あまり評判がよくないらしいし、
みんなどうやって処理しているの?
603名称未設定:2007/03/01(木) 18:59:15 ID:/xH1Rqv60
上記のダブルクォーテーションは&quot;(半角)のことね
Appleは新機能も良いけど、こういった基本的なバグっぽい所を
早く改善してほしいなぁ
604名称未設定:2007/03/01(木) 19:02:51 ID:q3LeHEGO0
NSXML使えば?
605名称未設定:2007/03/01(木) 19:19:49 ID:/xH1Rqv60
NSXMLはバグっぽくないの?
でも、ありがとう調べてみるよ
606名称未設定:2007/03/01(木) 23:01:11 ID:ENMgPwXY0
plist で済めば NSPropertyListSerialization が簡単だけど。
607名称未設定:2007/03/02(金) 02:04:10 ID:q1dgx7qi0
>>600, 601

allocWithZone: のマニュアルにはnilと書いてありますね。

ま、allocWithZone: の引数にはNSZoneへのポインタが要求されてるし、
nilは0に#defineされてるから、NULLと書こうがnilと書こうがコンパイラには
ヌルポインタと認識されるってことでいいんですかね?

Cの知識でそう思ったんですが、Objective-Cでもそうなんでしょうか?
608名称未設定:2007/03/02(金) 11:25:01 ID:jYZrav5J0
つーか allocWithZone: で nil/NULL 書くんだったら alloc 使わね?
609名称未設定:2007/03/02(金) 14:21:53 ID:zvTg1mwa0
>>607
それでおk
nilはObjCオブジェクト専用のNULL、みたいな感じ。
610600:2007/03/02(金) 14:35:55 ID:TQ3XpHSE0
まあ、見た目とか、意味的にとか。

あまり考え出すと
SEL って NULL ? nil ? Nil ? (char *)0 ? (SEL)0 ? 0 ?
とか、無駄なところに時間かけちゃうからほどほどでいいと思う。

SEL aSel = NO;

は、さすがにまずいとは思うが。
611名称未設定:2007/03/02(金) 15:23:35 ID:zvTg1mwa0
struct objc_selector *だからNULLだろうね。
612名称未設定:2007/03/02(金) 16:18:14 ID:oFWUJs8p0
Objective-Cでのプログラミングって、メモリーリークが心配で仕方ない
んだけど、みなさんどうですか?

それからこんど2.0でGCが実装されるけど、やっぱり旧バージョンのOSで
GCを対応したアプリを動かすのは無理なのでしょうか?
613名称未設定:2007/03/02(金) 17:40:22 ID:TTCLf6i70
何でメモリリークが心配?ちゃんとメモリ管理すれば問題ないし、
例外のfinally{}ブロックは例外発生のあるなしに関わらず必ず通るから
ここでメモリを解放するとかすればまずメモリリークの心配はないと
思うけど?
614名称未設定:2007/03/02(金) 18:00:28 ID:sOocsGzt0
>>612
万一リークしててもアプリ終了すれば全て解放される。
大きなデータを扱うんでなければ、勉強中はあまり気にしなくても。
もちろん世間に出すアプリの場合は、ObjectAllocとかでチェック。

後者については、Cocoa Bindingを使ったアプリが10.2以前で動くかどうか…ってのと
同じだと思うよ。
615名称未設定:2007/03/02(金) 19:28:54 ID:oFWUJs8p0
>>613

ちゃんと出来ているかが心配なんですw
理屈は簡単なんですけど、慣れてないこともあり、実際やると結構難しい印象です。

>>614

やっぱりGC用のランタイムライブラリを古いOSXでも提供するとかは難しいのでしょうか。
616名称未設定:2007/03/02(金) 19:51:06 ID:sOocsGzt0
>>615
向こうも商売ですから。
617名称未設定:2007/03/02(金) 20:59:57 ID:oFWUJs8p0
他の機能と同じでやらないだけなのかな。
新バージョンはLeopard以降対応で、旧OSXには対応しないでメンテナンスモードに移行とか
のアプリが増える心配ないかな。
GCに関しては、他の機能拡張と分けた方が良い気がするけど、どうなんだろう。
618名称未設定:2007/03/03(土) 15:28:52 ID:H0AQqtER0
GCも安定するのは、Leopardの後くらいじゃないかな
619名称未設定:2007/03/03(土) 15:51:37 ID:PHKvUHwB0
LeopardになったらCocoa勉強してみっかな。
620名称未設定:2007/03/03(土) 15:53:48 ID:g04NvUPm0
へたれはJavaつかっとけ。
621名称未設定:2007/03/03(土) 16:00:40 ID:gasyE0gt0
Java(笑)
622名称未設定:2007/03/03(土) 16:26:29 ID:xDl/+tzv0
達人は言語を選ばないけどね。
623名称未設定:2007/03/03(土) 16:29:30 ID:NzM5Q/W+0
環境は言語を選ぶけどね。
624名称未設定:2007/03/03(土) 16:46:10 ID:SFLQ6kbQ0
>達人は言語を選ばないけどね。
これは嘘。
625名称未設定:2007/03/03(土) 17:29:00 ID:GrMwk1fI0
達人は適切に言語を選ぶけどまあ、
それは沢山の言語に精通しているからであって、
それを言語を選ばないと言う事もできるか。
626名称未設定:2007/03/03(土) 17:52:36 ID:PHKvUHwB0
じゃあ達人が選んだ言語を選べばいいわけだな
627名称未設定:2007/03/03(土) 18:13:59 ID:bQmKV2Bm0
でも、どの言語にも達人と呼ばれる人はいるわけで
628名称未設定:2007/03/03(土) 19:04:32 ID:3T1hmddT0
達人はプログラミングなんてしない
629名称未設定:2007/03/03(土) 19:55:55 ID:BtXdyCc70
達人の話で盛り上がっているところにすみませんけど、
一般的なSQLを使えて、CoreDataも使いこなせている人はいますか?
Appleのサイトに公開してあるムービーを見たんだけど、
通常のテーターベースの世界と、あえて違う用語を使っているようで
なーんか違和感を感じてしまいました。

エンディティ=普通のテーブル
プロパティ=普通のテーブルの列
関連=普通のテーブルのキー
受信済みプロパティ=テーブルの結合で取得する結合先の列
述語=普通のWhere文

という感じですよね?
630名称未設定:2007/03/03(土) 19:58:13 ID:BtXdyCc70
エンディティ->エンティティの間違いです
631名称未設定:2007/03/03(土) 20:54:17 ID:QCFESNAF0
>>629
廃れちゃったけどObject Databaseって知ってる?
ObjectStoreとかO2とか。
あの世界じゃないかな。
632名称未設定:2007/03/03(土) 21:19:11 ID:nB3L1JE20
あとテーターベースもな。なんか笑えたw ローマ字入力じゃないのか。

>>629
>通常のテーターベースの世界と、あえて違う用語を使っているようで
>なーんか違和感を感じてしまいました。

むしろ考え方が逆かな。データーベースはデータの保存形態の一つに過ぎなくて、
ローカルなXMLファイルの中身とかでもいいわけ。
で、それらをアプリケーション上で利用するときの抽象化されたオブジェクト(大げさか?)
として、エンティティ云々があるという事ではないかと。

ちなみにむかーし Enterprise Objects Framework (EOF) というのがあって(今でもある?)、
CoreData はそれが由来かな。俺なんかにはでじゃぶーですよ。
ってか Mac OS X 自体(ry
633名称未設定:2007/03/03(土) 21:29:31 ID:k7IbO+2o0
EOFは今でもあるっしょ。
634名称未設定:2007/03/03(土) 21:50:39 ID:wEbKMuZf0
FOEなら樹海で見かけた。
635629:2007/03/03(土) 21:52:18 ID:QO4u+SAT0
>>631
聞いた事はあるけど、触った事は無いですね
>>632
誤字ごめんなさい。ローマ字入力なんだけど濁点ミスが多いんですよ(;´Д`)
EOFと同じ用語なのかもしれませんね。

SQLの考え方と違うのかもしれませんが、
例えば、2つのエンティティに関連があって、それぞれのプロパティを
取得したい場合、SQLで表現するとこんな感じですか?

select エンティティ1.プロパティ, エンティティ2.受信済みプロパティ from エンティティ1, エンティティ2
where(述語) エンティティ1.関連 = エンティティ2.関連

この考え方が合っているのならば、SQLを知っている人にCoreDataを教えやすくなるなぁ
636名称未設定:2007/03/04(日) 10:40:29 ID:xUQH0ksr0
selectはfetchで、whereがNSPredicate、fromがNSSortDescriptorか。

http://developer.apple.com/jp/documentation/cocoa/Conceptual/CoreData/Articles/cdGlossary.html
受信要求(fetch request)
エンティティと、任意指定の制約のセット(NSPredicate で表される)、および
ソート記述子の配列(NSSortDescriptor のインスタンス)を指定する NSFetchRequest の
インスタンス。
これらはそれぞれ、データベース SELECT 文のテーブル名、WHERE 句、および ORDER BY 句に
似ています
637名称未設定:2007/03/04(日) 15:38:39 ID:MbgZluNJ0
>>636
受信要求は、カーソルを作ってSELECTを発行するって意味で、
受信(fetch)はSQLのfetchと同じですね。

635を修正します。

select エンティティ1.プロパティ, エンティティ2.受信済みプロパティ
from エンティティ1 left outer join エンティティ2
on (エンティティ1.関連 = エンティティ2.関連 )

受診済みプロパティは外部結合に近いかも
638名称未設定:2007/03/05(月) 09:57:10 ID:iuwPNlop0
Cocoaを最近、学び始めたのですが、日本語の扱い方がよく分かりません。
NSString* test = @"Hello";
ならば、通るのに
NSString* test = @"こんにちは";
が通らないのは、なぜでしょうか?
日本語を代入しようとする場合は、どうすればよいのでしょうか?
TextFieldを用意して、そこに日本語を入力して、代入した場合はうまくいきました。
また、1文字を切り出したいのですが、characterAtIndex:では、英字は取り出せても、日本語は取り出せません。
いったい日本語の場合はどのようにすればよいのでしょうか・・・。
639名称未設定:2007/03/05(月) 11:01:11 ID:qrXl8JUZ0
>>638
>NSString* test = @"こんにちは";
>が通らないのは、なぜでしょうか?

そういう仕様らしい。

>日本語を代入しようとする場合は、どうすればよいのでしょうか?

例えばソースファイルをUTF-8にして
NSString *test = [NSString stringWithUTF8String:"こんにちは"]; とか?
autoreleaseされてるのでよろしく。

>また、1文字を切り出したいのですが、characterAtIndex:では、英字は取り出せても、日本語は取り出せません。

そんなことはないはずだが。エンコーディングとかは理解してるかな。
640名称未設定:2007/03/05(月) 11:42:18 ID:umr1sY1R0
>>639
スジの悪いこと教えるなよ……
641名称未設定:2007/03/05(月) 11:52:36 ID:iuwPNlop0
>>639
日本語を代入する場合は、英字のようにいかないのですね。
ありがとうございます。

1文字の切り出しについては、いろいろと調べていたら、やっと、分かりました。
char c;
c = [String characterAtIndex:0];
とやっていたのですが、
charをunicharにしたら、うまくいきました。

>>640
スジの悪いことって、何かもっと他の方法もあるのでしょうか?
642名称未設定:2007/03/05(月) 12:02:48 ID:v3PjM0qC0
643名称未設定:2007/03/05(月) 12:05:27 ID:fSoJ08xa0
>>641
普通はNSLocalizedStringなんかを使います。
ソースに直接日本語を書いて使うなんて、よほどの理由でもない限りやりませんね。
リソースに置いた方が後から好きにいじれますし。
644名称未設定:2007/03/05(月) 12:13:36 ID:iuwPNlop0
>>642
>>641
アドバイスありがとうございます。
リソースにおいて、書くのですか。VBやJavaをちょっとかじったことがあるくらいで、XcodeなどのIDEなんてものは、まったく触ったことがなかったので、こういうやり方をするとは知りませんでした。
645名称未設定:2007/03/05(月) 15:49:41 ID:H09971Ci0
各言語ごとにLocalized.stringsって名前のテキストファイルを作って、
文字列を定義しておけば、NSLocalizedString()で実行中の言語に対応した
文字列を取り出すことができるよ。
646名称未設定:2007/03/05(月) 18:33:00 ID:ku2s8MVE0
仕事でWindowsのソフト作るけど、ローカライズなんて気にしたこと無いなー
通常NSLocalizedString()の引数は英字のリテラル?
それとも事前にグローバル変数を定義するの?
647名称未設定:2007/03/05(月) 19:35:56 ID:7SDd+XFX0
>>646
通常英語で書いておく。

例えば、
NSLocalizedString(@"Who are you?", @"Comment");
ってしておいて、
"Who are you?" = "あなたは誰?";
ってすればいい。

コンソールアプリに genstrings ってのがあって、
それを使うと NSLocalizedString を探して、雛形を作ってくれる。
マクロ定義等で別名にしてある場合は、 genstrings にオプションつければ
それも雛形作ってくれる。
648名称未設定:2007/03/06(火) 01:35:31 ID:kA0Yp8EM0
>>647
やっぱりキーはそのまま書くんだ
Cocoaはリテラル文字が多くなりそうだね
649名称未設定:2007/03/06(火) 01:57:07 ID:wN26xm4s0
こういう時にリテラル文字を使わずに何時使うのかと。
650名称未設定:2007/03/06(火) 07:15:47 ID:7Vo7Mhma0
ローカライズ用リテラル宣言だけのマクロヘッダファイルを
用意するとか、そういう方法ってあり?
651名称未設定:2007/03/06(火) 08:48:38 ID:oViwYmKs0
ありはありだけど、そんなにあちこちで使い回すか?
652名称未設定:2007/03/06(火) 09:07:58 ID:G+dd26IZ0
>>648
?
それは何でも同じでしょ?
何かほかの方法があるの?
653名称未設定:2007/03/06(火) 11:10:28 ID:Z3e84PDT0
また質問ですみませんが、Cocoaでの印刷処理はどうすればいいのでしょうか?
練習として、名前と住所を入力したら葉書に出力するものを作ろうと思っているのですが、印刷がうまく行きません。
PageInfoからpaperSIzeを取得して、それに合わせて、ビューを作成して、描画して、それを印刷したのですが、1ページで出力されるのでなく、なぜか2ページで出力されます。それも、きれいに2ページに分割されるのでなく、2ページで重複している部分もあります。

NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
NSPrintOperation *printOp;
PrintView *view;
view = [[PrintView alloc] initWithPrintView:printInfo];
printOp = [NSPrintOperation printOperationWithView:view printInfo:printInfo];
[printOp setShowPanels:YES];
[printOp runOperation];
[view release];

PrintViewが、印刷用イメージを生成するNSViewのサブクラスです。
654名称未設定:2007/03/06(火) 14:18:20 ID:Z3e84PDT0
>>653
自己レスです。
作成するビューのサイズをpaperSizeで取得したものから、Marginを引いたら、うまく1ページに収まるようになりました。
655名称未設定:2007/03/06(火) 18:38:00 ID:n1T3Lnr00
自前で作ったクラスにメッセージを投げる(メソッドを実行させる)には、


AClass *a = [[AClass alloc] init];
[a hoge];
[a release];*/


毎度こうやらないといけないんですよね。
非常に面倒なんですが、みんな律儀にこうやってるんでしょうか?
656名称未設定:2007/03/06(火) 19:01:27 ID:4DVvs1940
えーっと、どこから突っ込もうか。

・クラスとインスタンス、それぞれの役割
・クラスメソッドとインスタンスメソッドと、それぞれの役割

そんなことをさらっと調べるだけで顔から火が出ると思うよ。
657名称未設定:2007/03/06(火) 19:05:33 ID:n1T3Lnr00
はぁ。。。
とにかく無知丸出しってことですね?
基礎から勉強し直したいんですが、どうやって勉強すればいいでしょうか。
ヒレガス本読めばなんとかなりますかね・・・
658名称未設定:2007/03/06(火) 19:44:15 ID:xUrEnRZo0
>>655
面倒かどうかはおいといて、律儀にそうしてますよ。
インスタンスが不要な処理なら、クラスメソッドか普通に関数を作ればいいんじゃないかな。
659名称未設定:2007/03/06(火) 21:27:23 ID:zm++FBJc0
>>640
もし指摘が NSLocalizedほげ を使えと言う事なら、問題は単に日本語のテキストを
リテラルに埋め込もうとすることでなく、UI として出てきそうな文字列をリテラルに
埋め込むことではないだろうか。
だから元の NSString *test = @"Hello"; の時点でアウトと言うべきかと。

しかしちょっとしたテストプログラムをいちいちローカライズ可能にする必要があるか?

皆、日本語の文字列を使う -> ローカライズしなきゃ、って短絡思考になってないか?
本来この2つは別のこと。
文字リテラルに問題なく日本語も使えるようになってほしいと思うがなあ。

「国際化」と言う名の「アメリカ化」にならされてしまっているのだよ。
660名称未設定:2007/03/06(火) 21:46:12 ID:A9ZfRGJt0
>>659に同意

確かに、
 char* test = "こんにちは";
はOKで
 NSString *test = @"こんにちは";
がNGというのは納得いかない。

UTF-8で書いておけば英語だろうが日本語だろうが
リテラルとしては問題ないと思うんだけどね。

こういう細かいところで妙に敷居が高いから困る。
(英語圏の奴らがそこまで考えて無いだけな気もするけど)
661名称未設定:2007/03/06(火) 21:47:09 ID:P3qWMutM0
>>文字リテラルに問題なく日本語も使えるようになってほしいと思うがなあ。
俺も思うーっ
662名称未設定:2007/03/06(火) 21:51:44 ID:XZpylKyt0
>>660
NSStringはUTF-8じゃなくてUTF-16だよ。
そしてXcode+gcc3.3だとソースファイルがUTF-16ってだけでコンパイルエラーを発してくれるから困る。
663名称未設定:2007/03/06(火) 21:54:26 ID:u42mN7570
>文字リテラルに問題なく日本語も使えるようになってほしい

マルチリンガルを謳うOS標準の開発環境でこれができないって明らかにおかしいでしょ
664名称未設定:2007/03/06(火) 22:00:26 ID:6B+uX8qJ0
>>663
よく話を本筋からズラしてしまうタイプ?
665名称未設定:2007/03/06(火) 22:01:44 ID:HA1uOEwY0
本当かどうかは知らんが、

特に非ASCII文字を含む文字列の場合、文字列として等しくてもNSString
の内部表現として異なるものが存在する。どの表現が適切かは実行時の環
境などに依存するので、コンパイル時に決めるのは難しい。しかも、実行
時において、同一インスタンスの文字列の内部表現が動的に変わることを
許すような設計になっている。だから非ASCII文字列を(内部表現が固定化
するような)リテラルとして書くのを許したくない。

とかそんなんじゃないかなぁ。
666665:2007/03/06(火) 22:05:18 ID:HA1uOEwY0
>>662
>NSStringはUTF-8じゃなくてUTF-16だよ。
内部表現は複数存在する。というか、NSStringの内部表現がどうなってるかは、
プログラマが気にしてはいけないことなのでは?
667名称未設定:2007/03/06(火) 22:11:15 ID:hPIFGWzJ0
うーむ。ソースコードに日本語文字列を埋め込むのがダメ、って
いう理由が、ソースコードファイルフォーマット自体がただの
テキストデータにすぎず、エンコーディングを保持出来るように
なっていないから、だと単純に思っていたんだけどな。
はねるのが当たり前でわ。

違うの?
668名称未設定:2007/03/06(火) 22:35:42 ID:XXu4omjp0
いや、それで合ってるでしょ・・・。
669名称未設定:2007/03/06(火) 23:29:33 ID:HA1rIAdN0
そこを工夫してほしいんだけど...
670名称未設定:2007/03/06(火) 23:32:25 ID:4DVvs1940
@pragma encoding=utf-8とかそんなんを導入してくれれば。
671名称未設定:2007/03/06(火) 23:41:41 ID:f3T6Efnm0
相手はShift-JISも通さないGCCだよ.
672名称未設定:2007/03/07(水) 01:48:02 ID:yGPw4mc50
いや「Shift-JISも」って、Shit-JISなんかこれっぽっちも要らねえだろ
673名称未設定:2007/03/07(水) 02:08:06 ID:gcHmoGfS0
そういうソースファイルの文字コードに関するグダグダした話をしたくないから
NSLocalizedString() があるんじゃないのか。
674名称未設定:2007/03/07(水) 07:22:18 ID:QjV/7Vif0
キーの押下情報を取得する方法として、
keyDownイベントだと、なぜかカーソルキーの上下やスペースキーの検知を
してくれないですよね。
keyDownイベント以外でキーの押下状態を取得する方法ってありますか?
よろしく教えてください
675名称未設定:2007/03/07(水) 09:39:18 ID:yUJOOGHE0
>>674
どっかで横取りされてるんだろう
676名称未設定:2007/03/07(水) 11:13:51 ID:PgM3s2rN0
>>674
Carbon APIのGetKeys()
使えばキーの押下状態は簡単にとれる。

677名称未設定:2007/03/07(水) 20:43:29 ID:6/jnf+Mx0
ADCのアカウントでは日本語が使えないし、Appleの日本部門(一応あるよね?)の力が弱いんだろうね
678HK:2007/03/07(水) 23:50:27 ID:umtOoyow0
>>671
たしか、通常 keyDown で拾えたと思います…。
イベントオブジェクトをうまくチェックできてないのかも。
characters だとユニコード比較になるので。
keyCode メソッドで拾う手もあります。
キーコードは、Cocoa Break! とか適当に情報を参照。
コマンド等は modifier に入るので注意。
それでひろえないなら、
テスト時のインプッドメソッド等の状態や、
ショートカットなどが介入していないかチェックしてみれば。
679名称未設定:2007/03/08(木) 04:11:13 ID:un4bopc00
今さらな話だが Objective-C でクラスの多重継承ができないのは不便だな。

例えば、NSTableView のデータソースなんかは行の管理について大概が同じ処理をしてるわけだから、
それらの処理を使い回すために NSObject のサブクラスとして NSTableViewController なるクラスを作ったとする。
もし多重継承ができるなら、この NSTableViewController クラスを
同じく NSObject から派生した NSDocument や NSWindowController に「混ぜて」使えるようになるから、
コードの省力化になるんだが。
680名称未設定:2007/03/08(木) 09:43:07 ID:SwHxtZcI0
Objective-CではProtocolを使えばいいので多重継承は必要ない。
多重継承はダサいし。
681名称未設定:2007/03/08(木) 11:41:49 ID:WBMXuzID0
>>680
それでは>679の使いまわしは出来ないでしょ?
宣言はプロトコルでするにしても、実装は委譲を使うんじゃね?
重複部分がなくなりはしないけど、ぐっと減るよ。

多重継承は、先祖に同じクラスが複数出てきたときに
鬱になるから出来ないほうがうれしいです。

ダサいってのはよくわからない。
682名称未設定:2007/03/08(木) 12:11:23 ID:Vz/W3irf0
>>679
なにも混ぜなくても、NSDocument.nibにでもそのコントローラを置いておけばいいのでは?
コードの再利用性を高くしたいのだったら、NSDocumentや他のコントローラには依存しない
書き方をするはずだし、独立してても使えるような。
683名称未設定:2007/03/08(木) 12:39:13 ID:un4bopc00
>>680
多重継承とプロトコルは別もんだよ。
プロトコルはインターフェイスの決まり事以上のものではないし。

>>681
別のオブジェクトにメッセージを処理させるにしても
インスタンス変数へのアクセスが問題だな。

>>682
実際、現状ではそのような実装にしてるんだが。
ただ、ウインドウの中にテーブルが1個しか無いような単純なアプリで
わざわざテーブル用に別にコントローラを作って IBOutlet で繋ぐのもどうよ?ってこと。
NSDocument と混ぜて使えれば単純になるのに。
684名称未設定:2007/03/08(木) 12:43:04 ID:QOeivavk0
設計見直したら?
685名称未設定:2007/03/08(木) 12:52:08 ID:Vz/W3irf0
>>683
逆に言えばテーブルが一個の時はそれでいいかもしれないけど、
2個以上の時はどうしても分離せざるを得ないんじゃないの?
2個以上を区別するコントローラを毎回書くよりも、1個専属の汎用コントローラを
複数独立で使う機会の方が多いような。
ていうかNSArrayControllerの使い方はまさにそんな感じだよね。

まあnibにテーブル一個だけ、ってアプリはあまり作ったことが無いので、俺の感覚だけど。
686名称未設定:2007/03/08(木) 15:19:17 ID:2wjUlDJp0
>>単純なアプリ
つCore Data
687名称未設定:2007/03/09(金) 00:32:12 ID:S5wrrw9r0
>>679
多重継承の必要性がわからん。
できないならできないで設計で回避できそうだし。
688名称未設定:2007/03/09(金) 09:14:11 ID:MwgCLVMd0
Cocoa(というかObjC)初心者は、いろんな制限があって使いにくいっ!!
と思うんだけど、フレームワークの思想が解かってくると、なるほど
シンプルだなーと感じれるようになると思うよ
俺も最初不満ばっかりだったし、特にCocoaの本なんかで良く見る、
「パワフルですばらしい言語」とか書いてあってキモイと思っていたなー
しかし、今では確かにパワフルで良い言語だと思っているw
689名称未設定:2007/03/09(金) 11:40:50 ID:RMZqPaQ/0
突然申し訳ありません。
目的:NSTextFieldなど単列の文字入力オブジェクトで、リターンキーを押されたときにメッセージを発する

NIBファイルでターゲット指定「NSTextField→NSObject」みたいなことをすると確かにリターンキーで
入力されるのですが、フォーカスが外れる時にまでメッセージが送られてしまいます。

NSButtonを置き、ボタンがリターンキーを捕捉する状態にし、そこから「NSButton→NSObject」
みたいなことをすると、今度はどのフィールドからのメッセージなのか捕捉できず困ってしまった…。

ブラウザの検索フィールドとかでリターンを押したときだけ動作するアクションを設定したい場合、
どのようにしたら良いものか…
690名称未設定:2007/03/09(金) 11:51:43 ID:9B5ffpal0
サブクラス作れや
691689:2007/03/09(金) 11:57:41 ID:RMZqPaQ/0
分からないながらもあれこれ試行錯誤してるところで…
サブクラスは自分も考えてる所です。
NSResponderでキーイベントそのものを捕まえるのか、NSTextFieldCellにキーを検出する
方法があるのか、調べておりまする…
692名称未設定:2007/03/09(金) 12:54:16 ID:6bgzPwLP0
>ブラウザの検索フィールドとかでリターンを押したときだけ動作するアクションを設定したい場合、
>どのようにしたら良いものか…

これをしたいのなら、Interface Builder で NSTextField を選択して、
Info インスペクタの attributes ペインで
Send Action On: のラジオボタンを Enter only にしとけばいいのでは。
デフォルトでは End editing になってるだろうから。
693689:2007/03/09(金) 12:57:53 ID:RMZqPaQ/0
>>692
おぉっ、なるほど確かに…ここに設定がありましたか…。目から鱗ですm(_ _)m

といいつつ、NSResponderに興味がわいて、どう使うのか勉学中(汗)
694名称未設定:2007/03/09(金) 17:21:54 ID:8/HsOUxp0
NSViewから、NSImageを作るには、どうすればいいのでしょうか。
今までは、-(NSData *)dataWithPDFInsideRect:(NSRect)rect;で、ViewをNSDataとして、得たものを、-(id)initWithData:(NSData *)data;でNSImageに移していたのですが、それだと、PrintOperationを何か走らせたときに、使えなくなってしまいます。
どなたか、教えてください。
695名称未設定:2007/03/09(金) 20:49:52 ID:jF3Ccsr20
viewにlockFocusしてから
-(id)initWithFocusedViewRect:(NSRect)rect
でbitmapRepを返してもらえばいいんじゃね。
PrintOperationが何なのか知らないので解決になるかどうかはわかりません。
696名称未設定:2007/03/09(金) 20:52:02 ID:jF3Ccsr20
NSBitmapImageRepのinitメソッドなんで返してもらうという表現は全く正しくないです。サーセン。
697名称未設定:2007/03/09(金) 23:52:40 ID:EhgKki8C0
クラスメソッドからインスタンスメソッドにインスタンスを投げると
警告が出るんですが、何でだめなんでしょうか??
698名称未設定:2007/03/09(金) 23:58:19 ID:RLdQYhBS0
インスタンスを投げる?
699名称未設定:2007/03/10(土) 02:27:59 ID:0TooNwKx0
>>697
いまひとつ要領をえないけど、
+ (void)love {
[self peace];
}
- (void) peace {
}
て事ならダメですよ。
クラスメソッドでのselfはクラスオブジェクトを指します。

他の理由かもしれないし、警告をよく読むのをお勧めします。
700697:2007/03/10(土) 07:51:21 ID:IwsEm+QX0

>クラスメソッドからインスタンスメソッドにインスタンスを投げると
>警告が出るんですが、何でだめなんでしょうか??

インスタンス>メッセージ の誤りでした。すいません。
ただ、>>699のように、同一クラス内でメッセージングしているわけでは
ありません。

あるクラスのクラスメソッドから、アウトレット先のテーブルビューに対して
reloadData:を投げたところ、
[警告: インスタンス変数"table"が、クラスメソッドからアクセスされました]
という警告が出て、ビルドすると [そのメソッドが見つかりません。]
というエラーが出ます。
701名称未設定:2007/03/10(土) 08:13:08 ID:lvU3y+Ii0
クラスにアウトレット先も何もあるもんかね。
702名称未設定:2007/03/10(土) 10:14:17 ID:0Czbrp8a0
NSString の中から、数値だけ取り出す良い方法ってありますか?
@"abc123de45f" みたいなのから、123 と 45 を取り出したいのですが。
703名称未設定:2007/03/10(土) 10:16:50 ID:0TooNwKx0
>>702
普通に NSScanner はどうですか?
704名称未設定:2007/03/11(日) 17:08:50 ID:amo1gJu00
NSProgressIndicator を初めて使おうとしてるんですがうまくいってません。

IB で接続して [progressIndicator startAnimation: self]; とし、
[progressIndicator setDoubleValue: (値)];
としてるのですが、アニメーションがまったく動きません。

[progressIndicator doubleValue] を見ると、値は正しく設定されています。

何か初期設定や他の設定が必要でしょうか。
705名称未設定:2007/03/11(日) 21:04:01 ID:G2bYuxK60
>>704
もしかして、Indicatorを散髪屋のくるくるみたいなスタイルにしていない?
IBで、「Indeterminate」のチェックを外してみ。
706名称未設定:2007/03/12(月) 00:18:19 ID:7EcCZ2T90
-(void)foo
{
  [progressIndicator startAnimation: self];
 すごく長い処理
  [progressIndicator stopAnimation: self];
}
これは回らない

-(void)threadTerminate
{
  [progressIndicator stopAnimation: self];
}

- (void)thread
{
 すごく長い処理
}

-(void)foo
{
  [progressIndicator startAnimation: self];
 threadを作る
}

こんな感じでスレッドを作ってやると回る
707名称未設定:2007/03/12(月) 19:20:58 ID:6TLvH3ki0
そこで
- [NSProgressIndicator setUsesThreadedAnimation:]
708704:2007/03/12(月) 22:34:28 ID:i8vZQeoH0
>>705-707
ありがとうございます。

とりあえず
http://developer.apple.com/qa/qa2006/qa1473.html
にあるように
[progressIndicator setDoubleValue: (値)];
[progressIndicator displayIfNeeded];
としたら動くようになりました。

状況としては、まさに >>706 の最初の例になっていて、
「すごく長い処理」のところに、ネットからデータをダウンロードする
処理が入っています。

ご指摘いただいた thread も試してみようと思います。
709名称未設定:2007/03/13(火) 19:18:46 ID:leNq9Zju0
NSSliderにコントローラーから値を設定してやるにはどうすればいいんでしょうか?
710名称未設定:2007/03/13(火) 19:35:39 ID:uDt07A4f0
「NSSlider クラスのリファレンスを見たが、値を設定するメソッドが見当たらない」
という質問だと思っていいでしょうか。
711名称未設定:2007/03/13(火) 20:43:49 ID:ZuF4J0VW0
ControlなんだからsetIntValueあたりだろ
・・・とドキュメントも見ずに言っておく。
712名称未設定:2007/03/13(火) 23:34:16 ID:leNq9Zju0
>>710,711
ありがとうございます。
713名称未設定:2007/03/15(木) 11:13:05 ID:2Maz7Hed0
サービスメニュー回りのプログラムをしています。

あるサービスメニューがEnableになっているかどうかを
NSShowsServicesMenuItem
という関数でしらべようとして、ディベロッパマニュアルを見ると
「Deprecated. This function simply returns YES」
って書いてあります。

どうやら使い物にならないみたいなのですが、
これの代用関数ってなにかあるのでしょうか?

なんでAppleはDeprecatedにしちゃったんだろう…?
714名称未設定:2007/03/15(木) 12:40:50 ID:OaaDIusa0
「キー値コーディング」

これは
「きー・あたい・こーでぃんぐ」と読むのですか?それとも
「きーち・こーでぃんぐ」?
715名称未設定:2007/03/15(木) 13:04:11 ID:x+SnB9Zj0
>>714
脳内で「きーばりゅーこーでぃんぐ」になってる。
716名称未設定:2007/03/15(木) 14:06:06 ID:PiGETzWH0
あるあるw
717名称未設定:2007/03/15(木) 16:46:27 ID:O4E+mAaF0
Mac OS Xではアプリケーション固有の設定ファイルとかは~/Library/Application Support/
以下にフォルダを作って使うのが標準的な方法だと思うんですが、アプリケーションの起動時に
このフォルダを作るタイミングには何か標準的なものってあるんでしょうか?今はメインになる
ウィンドウのawakeFromNibの中でやってるんですが、何種類かのウィンドウを使い分けるんで
できればウィンドウを開く前にやってしまいたいんです。main.mでやろうとしたらNSStringとか
がまだ初期化されてないみたいでうまく行きませんでした。CodeWarriorとPowerPlantだとLApplication
の派生クラスでそういうスタートアップ関数みたいなのがあったと思うんですけど、Cocoaだと
どうなんでしょうか?
718名称未設定:2007/03/15(木) 17:22:19 ID:VcmrFaXu0
>>717
applicationDidFinishLaunchingのnotificationを受けて作るのがよいのでは。

MainMenu.nibnの中に適当なクラス(仮にMyObject)を作ってインスタンス化。
MyObjectのawakeFromNibの中で自身をNSAppのdelegateに設定。
MyObjectでapplicationDidFinishLaunchingをインプリメントし、その中で設定ファイルの作成。
719名称未設定:2007/03/15(木) 17:27:19 ID:O4E+mAaF0
>>718
ありがとうございます。やってみます。
720名称未設定:2007/03/15(木) 17:41:01 ID:0KgooW9Z0
mkinoタンは「きーちこーでぃんぐ」、と読んでみたいだけど
「キー・あたい・コーディング」と読む方が自然のような気がする。
721名称未設定:2007/03/15(木) 18:00:43 ID:KtA4jLOm0
自然なのかなぁ?
722名称未設定:2007/03/15(木) 18:44:59 ID:PiGETzWH0
「きーち」だと「キーの値」ぽいしな。
血糖値とか能力値とかのノリで。
723名称未設定:2007/03/15(木) 18:46:56 ID:2PkJAz0M0
音読みで「チ」と読むべきだろ。英語は音読みしかないわけだし。
「アタイ」で違和感があるのは訓読みが混ざるからだ。
724名称未設定:2007/03/15(木) 19:05:22 ID:nVVmd4wC0
キー値コーディングとかくのがそもそも邪道
725名称未設定:2007/03/15(木) 19:14:11 ID:B8q/yI9B0
今度初Macを買おうか考えているんだけど、プレーンなC言語だけじゃ
OSX GUIアプリは作れないのか・・・

枯れたC言語で作っておいた自前のユーティリティ関数は再利用OK?
最低限GUI周りだけをObjCっていう戦法はとれないものか。
726名称未設定:2007/03/15(木) 19:21:40 ID:nVVmd4wC0
>>725
UI周りだけObjC Cocoaでやって中身をCで組むのも全然おkだし、
Cocoa使わずにCarbon使えばCだけでUI周りもできるよ。
727725:2007/03/15(木) 19:37:43 ID:B8q/yI9B0
>>726
サンクス!! Carbonなら俺でも始められそうだな。
仕事でUNIX/WindowsでC/C++を7年間も使い倒した俺だが、
ObjCのソースは初見でワケワカメだったし・・・

じゃあ俺、趣味としてMac買っても(・∀・)イイカナ??
728名称未設定:2007/03/15(木) 19:49:46 ID:VcbPO/mN0
>>727
ObjectiveC++という選択肢もあるし、
今からはじめるなら絶対Cocoaが美味しいよ
729名称未設定:2007/03/15(木) 19:57:26 ID:aiZhGZFP0
Objective-C なんて簡単な言語なんだから一日で憶えられる。

Cocoa Framework の使いかたになると話は別だが。
730名称未設定:2007/03/15(木) 20:00:52 ID:YDYvvHzo0
俺も10.5になったらやってみるつもり。
>>727さんも10.5が出てから買った方が良いと思うよ。
731名称未設定:2007/03/15(木) 20:03:31 ID:YDYvvHzo0
10.5はもうすぐ出るはずですよね?
732727:2007/03/15(木) 20:09:48 ID:B8q/yI9B0
>>730
うん、俺も今は10.5にwktk気分で注目している。
怒涛のソフトウェアエンジニアという眠れない仕事を退いて久しいけど
まだ人使いが過酷だった頃の鬼ボスの記憶が蘇って落ち着かない。
これがフラッシュバックか・・・

早くMacで気分一新、そして優雅に純粋な趣味として組んでみたい。
音楽も好きだし、ガレージバンドも楽しめそうだし♪
733名称未設定:2007/03/15(木) 20:43:44 ID:UxUYL3d20
>>725
迷わず買えよ、買えばわかるさ(Objective-Cが)
734名称未設定:2007/03/15(木) 22:33:17 ID:ubmr7RVJ0
Mac OS X Cocoaプログラミング
アーロン・ヒレガス (著), 村上 雅章 (著)
出版社: ピアソンエデュケーション (2002/06)
原著は既に改訂され更に今秋10.5対応の第三版が発刊予定

Objective-C Mac OS Xプログラミング
荻原 剛志 (著)
出版社: ソフトバンククリエイティブ (2006/4/7)
Objective‐C―MacOS Xプログラミング入門 広文社 (2001/06)の改訂版 10.4対応

Happy Macintosh Developing Time Second Edition ―はじめてさわる、はじめてわかる!!Xcodeに完全対応、Web Kitも解説
木下 誠 (著)
出版社: ビーエヌエヌ新社; 第2版版 (2004/06)
Happy Macintosh Developing Timeの改訂版 10.3対応

Happy Macintosh Developing Time Third Edition -Cocoaプログラマのための技術解説書
木下 誠 (著)
出版社: ビーエヌエヌ新社; Third Edition版 (2006/05)
Happy Macintosh Developing Time Second Editionの続編 10.4対応

Cocoaはやっぱり!―MacOS Xプログラミング入門
鶴薗 賢吾 (著)
出版社: 広文社 (2001/11) 10.1対応

Cocoa Fundamentals Guide Cocoa基礎ガイド
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/index.html

Objective-C プログラミング言語
http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/index.html

その他ADCドキュメント公式日本語訳・Cocoaセミナーの資料とムービー
http://developer.apple.com/jp/documentation/japanese.html
735名称未設定:2007/03/15(木) 22:33:39 ID:ubmr7RVJ0
736名称未設定:2007/03/15(木) 22:33:54 ID:ubmr7RVJ0
737名称未設定:2007/03/16(金) 00:12:25 ID:FROK32b90
>>727
逆だ。Carbonの方がきついぞ。

テキストエディタすら自分で作らなきゃならないのがCarbonだ。一応、TextEdit
というのがあるが、これは元々ダイアログのテキストフィールド用のものだし、
MLTEというのもあるが使い物にならない出来損ないだ。だから自分で作るしか
ない。プログラムの手順も複雑怪奇だし、最初から始めるとなると気が狂うと
思うよ。何しろ、入門しようにも適当なテキストすらもうないしな。

Cocoaならいろいろ部品も揃っていて楽だよ。
738727:2007/03/16(金) 00:30:20 ID:jmoOQu220
>>737
SunOS + SunView、Windows(C/非C++)をやってたが、
OSX + Carbonはそれに匹敵するくらい大変かぁ・・・

739名称未設定:2007/03/16(金) 00:40:57 ID:oMgjFF0p0
Cocoa Browser SN 2.8
http://numata.designed.jp/programming/cocoabrowser/

ウィンドウの位置やフォントサイズ等の設定が起動時に
読み込まれてないようなんですが、どこいじれば直りますか?
740名称未設定:2007/03/16(金) 11:00:46 ID:Xg3whySG0
>>739
MyAppController.mの中のapplicationOpenUntitledFileでMyDocumentを作ってshowWindowsで表示まで
していますが、この時点ではNSUserDefaultsから取得した設定を含むdictionaryが渡されていないですね。

その次のarrayForKeyで取得しているところでも中身は空なので保存自体がされていないかも。その少し
下の方でnewDocumentWithDefaultsのところがコメントアウトされているので、まだ実装途中というこ
とでは。
741名称未設定:2007/03/16(金) 12:25:42 ID:vBXh/iql0
ID:FROK32b90は初心者スレの荒らしなんだが
742名称未設定:2007/03/16(金) 13:17:22 ID:NMZFhOC/0
>>741
ウソをつくな。
743名称未設定:2007/03/16(金) 13:21:39 ID:rYo8YV4W0
初心者スレがどうのこうのはどうでもいいが、
CarbonがCocoaよりキツいのは確かだろ。
744名称未設定:2007/03/16(金) 13:33:52 ID:x7NyxeBH0
別人みたいだな
IDがかぶることはたまにある。
745名称未設定:2007/03/16(金) 15:51:55 ID:U3tKFJ3j0
IDかぶったのか本人なのかどうかは知らんが
そのIDが荒らしなのは嘘じゃないだろ。
746名称未設定:2007/03/16(金) 15:57:16 ID:NweclO9H0
嘘ではないが何の価値もない情報だ。
747名称未設定:2007/03/16(金) 23:35:19 ID:tRfT9/YL0
何の価値もない嘘よりは幾分マシかもしれない。
748名称未設定:2007/03/16(金) 23:47:43 ID:G1bLteIr0
>>713
>これの代用関数ってなにかあるのでしょうか?

オフィシャルにはないような気がするんだが、
世の中にはサービスメニューをいじれるようなアプリもあるので
それがどうやってるかを調べたら何かわかるかもしれない。

>なんでAppleはDeprecatedにしちゃったんだろう…?

ただの個人的な邪推だが、OPENSTEP から Mac OS X になったときに
サービス周りの詳細が変わって、そのときに放置されたのかと。
昔はおそらく pbs との DO で実現されていたと思うが、今は Carbon 等の
絡みで違うことをやっているのかな。shm っぽいかな?
そういや昔は make_services なんてコマンドもあったな。
749名称未設定:2007/03/17(土) 02:12:02 ID:NQ2bj5Bk0
Servicesって何処に登録されてくの?Libraryにフォルダがあったが、そこには入ってないソフトのメニューも勝手に追加されてる
Macはレジスタないのにそういう風にどこやらでたまってるものがあるのが不思議だ
「このアプリケーションで開く」の情報とか、いつ消えるんだろう
まさかどんどんゴミがたまってくようなOSじゃないよねえ
750名称未設定:2007/03/17(土) 08:38:16 ID:VJ65UGc00
アプリに内蔵されてる。アプリ消せばサービスも消える。
751名称未設定:2007/03/17(土) 11:43:54 ID:f3sFuujw0
NSTextFieldを監視する、ということをやりたいのです。

Send Action on End Editingですと、編集中はActionが飛びません。
これを1秒IdleだったらActionを飛ばすか、タイマーからActionメソッド
を呼び出すか、そういったことをやりたいです。しかし、このIdle検出とい
うのがどうやればいいか分からず、いま思いつく範囲ではこんな方法しか・・・

・NSControlTextDidChangeNotificationを登録
・編集したことを検出したら、値を記録
・タイマー呼び出し(repeat:no)
・中身が記録時と変わっていなかったらActionを呼び出し
・編集終了したらタイマー終了、Notification登録解除

どのような実装がよいのでしょうか。教えてください。
752名称未設定:2007/03/17(土) 12:10:33 ID:VJ65UGc00
textDidChangeでsetFireDateすればいいのでは?
753名称未設定:2007/03/17(土) 12:15:36 ID:FfSRQrUd0
>>751
・中身が記録時と変わっていなかったら
この時点で失敗する。

どんな実装が良いのかという以前に、
そんな妙な仕様の NSTextField を作るのは考え直した方が良いんじゃないかと思うが。
754名称未設定:2007/03/17(土) 12:57:22 ID:KjP/ZK8g0
>>752
とりあえず自力で実装してみましたが、確かにsetFireDateを
いじる方が簡単ですね。

>>753
入力中の値をリアルタイムに中身を評価したいというようなケースって
あると思います。

例えば、netmaskの値を入力していくと、bit数がリアルタイムに
更新されるとか、networkaddress と host addressが確認出来る
ようなUIなんてのが思いつきます。

自分はDelayを1.5sec入れたかったので、間にNSTimerを挟みました。
755名称未設定:2007/03/17(土) 15:31:25 ID:2C95Jf6J0
Core Data の一時属性って、predicate を使った検索には使えなかったりしますか?

Hoge という entity に一時属性の hogehoge というのがあって (string)、
[(Hoge の managedObject) valueForKey: @"hogehoge"] だと値が読めるのですが、

NSPredicate * predicate = [NSPredicate predicateWithFormat: @"hogehoge = %@", hogehogehoge];
という predicate で managedObjectContext から fetch しようとすると、

unresolved keypath: hogehoge

というエラーが出てしまいます。
756名称未設定:2007/03/17(土) 16:06:12 ID:MAQ9GN6L0
Cocoa+Javaで、NSArrayに入っているファイル名を
Stringで取り出したいのですが方法を教えていただきたいです。
757名称未設定:2007/03/17(土) 23:48:35 ID:gjkE8OHS0
NSPathUtilities.pathWithComponents
758名称未設定:2007/03/18(日) 07:29:18 ID:aiUNCONo0
>>757
ありがとうございます!そのクラスの存在を知らなく苦労してました。
759名称未設定:2007/03/18(日) 13:58:34 ID:A2AFJCGK0
>>751

NSFormatter の isPartialStringValid とかではあかんのん?
760名称未設定:2007/03/18(日) 20:57:22 ID:4JlTNhcy0
>>759
うーん、Timer使ったのは遅延書き込みを実装したかったから、
なんですよ。NSFormatterはフォーマットが決まっているもの
にはOKだけど、評価はリアルタイムのみですよね。
761名称未設定:2007/03/20(火) 21:38:33 ID:xEy7HpOR0
Nibファイルの中で複数のウィンドウを定義した場合、これらのウィンドウがアプリケーションの起動時に
作られる順番を指定することは可能でしょうか?
762名称未設定:2007/03/21(水) 17:45:11 ID:aDdENgwZ0
>>761
普通には指定する方法はないような。

ってゆうか、順番を指定したいと思う本当の理由が何かあるわけでしょ。
それを書いた方がいいと思われる。

http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSNibAwaking_Protocol/Reference/Reference.html

に書いてあるようなことは多少参考になるかな?
763名称未設定:2007/03/21(水) 18:42:56 ID:lmvsQ9El0
761です。

>>762
何種類かのウィンドウを起動時に開く時にアクティブになるウィンドウを指定したり
自動で作られるウィンドウメニュー内の順番とか指定したいなと思ったんです。
764名称未設定:2007/03/21(水) 20:05:19 ID:GfftQvze0
CoreDataで使用されているICUという
ライブラリは、CoreData以外で使用する
ことはできるんでしょうか?
765名称未設定:2007/03/21(水) 20:32:27 ID:KwJk7Vsh0
>>763
IBでウインドウの自動オープンをしないように設定して、
好きな順にorderFront:をどうぞ。

>>764
聞く前に試そうよ。
766764:2007/03/21(水) 21:42:47 ID:GfftQvze0
>>765
試し方が分からないです。どこにICUの.hファイルがあるかとかわからないし。
767名称未設定:2007/03/21(水) 21:51:52 ID:DCz5Fuk60
/usr/include
とかにあるんじゃない?確かめてないけど。
768名称未設定:2007/03/21(水) 22:08:07 ID:fvkylJ2a0
769764:2007/03/21(水) 22:18:05 ID:GfftQvze0
>>768
情報ありがとうございます。試してみます。
770名称未設定:2007/03/22(木) 04:05:03 ID:0mYS3ZUU0
KeyMap theKeys;
GetKeys(theKeys);

long key = theKeys[3]; ←エラーがでる
if (theKeys[3] == 0xXXXX) {}←エラーがでる

上記のようなキーボード状態の取得を行うとintelコンパイル時に
値の参照時にエラーがでてしまいます。
これを避ける方法がありましたら教えてください。

771名称未設定:2007/03/22(木) 05:48:04 ID:RVF4ACMc0
エラーメッセージも書かないでデバッグせよと。
772名称未設定:2007/03/22(木) 08:27:23 ID:OlRzuyh+0
>>770

#if defined(__BIG_ENDIAN__)
long key = theKeys[3];
#else
long key = CFSwapInt32(theKeys[3].bigEndianValue);
#endif
773名称未設定:2007/03/22(木) 12:37:12 ID:Ozw373l/0
ヒレガス改訂本の、邦訳マダー?
774770:2007/03/22(木) 15:07:10 ID:0mYS3ZUU0
ありがとうございます!!>772
775名称未設定:2007/03/22(木) 17:26:42 ID:9sVyO2YS0
776名称未設定:2007/03/22(木) 18:21:49 ID:wotnOtV60
アプリが手前になっていない場合でもマウスイベントやキーイベントを監視したいのですがどうしたら良いでしょう?
[NSApplication sendEvent:]をオーバーライドすればイベントが取れるようですが、
アプリケーションが背後に回ると何も呼ばれなくなってしまいます。
777名称未設定:2007/03/22(木) 20:12:33 ID:fkwhOJrW0
なんというキーロガー
778名称未設定:2007/03/22(木) 23:11:02 ID:7eQ4P4370
>>776
こんなのあったけど。
ttp://www.cocoadev.com/index.pl?KeyDownEvent
779名称未設定:2007/03/24(土) 04:29:49 ID:ztVCP3pp0
>>772
そういやGetKeys()の戻り値ってi386上で本当にビッグエンディアンかなあ?

確かにbigEndianValueなんて要素を持つ構造体にマップされてるけど。
とりあえず自分のコードはGetKeys()まわりは何もせずにi386上で動いてるんだよねー。
780名称未設定:2007/03/24(土) 07:20:50 ID:dTafv0Oo0
単にコンパイルが通っただけに5ペリカ。
781779:2007/03/24(土) 23:33:04 ID:4tor/lRS0
すいません、勘違いのようです。
大昔、ビット演算とかごにょごにょやって書いた記憶があったから、単純に
エンディアンが違ったら駄目かと安直に。

で思い出した。自分のコードは1バイト以下の値の演算で評価する書き方をして
いたんだった。ある意味i386上でもビッグエンディアンな戻り値を期待していると言える。
782776:2007/03/25(日) 05:32:01 ID:cv5Ozae60
>>778 情報ありがとうございます。そこにもあるように、Carbon EventのGetEventMonitorTargetに
InstallEventHandlerすれば、マウス・キーボードイベントが、アプリ手前でない時でも取れるはず
(ユニバーサルアクセスの「補助装置を仕様可能にする」にチェックが入っている必要あり)
・・・なんですが、NSApplicationだけではダメで、RunApplicationEventLoopを呼ばないと
キーボードイベントは取れませんでした。

で、Carbon EventにはRegisterEventHotKeyというのがあり、これで登録したショートカットを
横取りできます。こちらだとRunApplicationEventLoopしないでも有効でした。

ちなみにキーロガーでなく、特定のキー・マウス操作でスクリプト呼び出しとかするアプリを
作ろうとしてます。(そういうシェアウェアはいくつか試したもののどれも気に入らないので)
783名称未設定:2007/03/25(日) 14:46:29 ID:8xIXGWK80
同じウインドウレベルのウインドウを常に手前に表示させたい時はどうすれば良いのでしょう?
784名称未設定:2007/03/27(火) 18:10:32 ID:k1EMmtpQ0
USBデバイスが接続された時に自動的にアプリケーションを起動させるにはどのようにすれば良いのでしょうか?
iPodやデジカメをUSBポートに接続すると、iTunesやiPhotoが自動的に起動しますが、
それを自分のアプリケーションでも行いたいと思っています。

接続されたら起動したいデバイスと起動するアプリケーションのプロパティ?を
どこかに登録しておくのかな?と思ったのですが全然わかりません。
StartUpItems で監視アプリを起動して自前でポートを監視するというのも
大袈裟な気がしますし、何かAppleの推奨する方法というのはあるのでしょうか?

ここまで書いたら Cocoa の話なのかどうか怪しくなってきたけど、教えてください!
785名称未設定:2007/03/27(火) 21:34:27 ID:4pfa4sPw0
iPodは裏で監視するためのプロセスが動いてるんじゃなかったっけ。
786名称未設定:2007/03/28(水) 07:48:54 ID:N+KOld9H0
そんなの実現したら激しく迷惑かけそうだな。
起動したくないのに、勝手に起動項目に入れて、メディアがつながると自分のソフトを起動。
ちょっとしたウイルスソフトだな。

亜種でメディアに自分をコピーするやつとか出てきて増殖しそう。
FDに自分をコピーしまくって感染拡大しまくるウイルスを思い出した。
787名称未設定:2007/03/28(水) 11:30:33 ID:Wf9AL8PQ0
つまんねー奴だなぁ。頭ガチガチw
788名称未設定:2007/03/28(水) 14:37:56 ID:CdA/KJ860
>>784
監視するつーか、IOKitのコールバック受けるために常駐する
アプリ/エージェント/デーモンは必要。だと思う。
/Developer/Examples/IOKit/usbに参考になるコードがあるよ。
まあ何にしてもCocoaはあんまり関係ない。
789名称未設定:2007/03/28(水) 20:17:11 ID:ovCJ1dYA0
根本的な解決にはならんが
カメラ、というかたぶんDCIM(?)の形式のメディアがマウントされた場合に限ったら
イメージキャプチャ の環境設定で カメラを接続したときに起動する項目
にアプリを割り振ればそれでいいと思
790784:2007/03/29(木) 12:05:49 ID:qi1eiBF30
スレ違いな質問に答えてくれて皆さんありがとう。
やっぱり裏で動いていて、その方法はHardware&DriversのUSBに行き着くって感じですね。
最初そこに辿り着いたのですが、それってドライバとか作る話じゃないのかな?
と思って、そんな大袈裟な事をしなくても良いはず!と質問しました。
まずは/Developer/Examples/IOKit/usbで少し遊んでみます。
791名称未設定:2007/03/30(金) 03:44:58 ID:fVxkcbBg0
ココアというかオブジェクトCからMySQLやオラクルとかのデータベースにアクセスするのってどうするの?
ジャバベースでJNDI使って作るしかない?
792名称未設定:2007/03/30(金) 05:04:02 ID:iIE507Ch0
普通にできるだろ
793名称未設定:2007/03/30(金) 11:03:05 ID:7OCSqySR0
core dataでできんの?
794名称未設定:2007/03/30(金) 11:27:24 ID:fVxkcbBg0
ちょっとselectするコードくれ。
795名称未設定:2007/03/30(金) 11:54:56 ID:MP6T8yCT0
>>794
あげない。

libmysql とか使え。
796名称未設定:2007/03/30(金) 17:58:39 ID:8nrjfycL0
>>791
オブジェクトCじゃ無理だな。
797名称未設定:2007/03/30(金) 22:23:52 ID:6n6V64RC0
LeopardでCoreDataは拡張されるんだっけ?
798名称未設定:2007/03/31(土) 02:35:35 ID:8txh6t8O0
CoreTextってなんだろ。
799名称未設定:2007/03/31(土) 04:52:51 ID:ck9OplBk0
オブジェクトCの中から、オラクルやmysqlのライブラリをCで呼べば出来そうだが。
apiが公開されてるかは知らない。

アポーリモート対応アプリって作成可能?
api公開されてる?
リモコンでにちゃんねるブラウズできると便利?と一瞬思った。
osxで無理ならビスタ(MCE機能)で考え直す。orz
800名称未設定:2007/03/31(土) 06:59:03 ID:X/bY1ZOSO
Apple Remoteの仕様とかAPIとかは公開されてないけど、
どっかにハックしたやつがいたはず。
ぐぐればすぐに見つかると思うよ。
801名称未設定:2007/03/31(土) 08:29:42 ID:W2B1xfHe0
っていうか、MacOS Xにはiodbcが入っているんだから、それを使う
ようなコードを書いて、DB用のiodbcドライバ入れればいいんじゃないの?

MySQLのiodbcドライバにMacOS X用は用意されていないのかい?
802名称未設定:2007/03/31(土) 23:23:00 ID:26Jhr0AK0
>>790
遅レスだが、
調べてみるとどうもSystemUIServerという奴がいろいろ監視をしているみたいね。
こいつ思ったよりいろんなことしてて、個人的には興味深い。

ただ、情報がほとんど公開されてないので(デジカメとかには登録方法があるが)、
汎用的なものを作るならIOKit方面をいじって、自前で常駐ソフトを作るんだろうねえ。

基本、デバイスの notification を拾う API を使うだけだろうから、ドライバといっても
そんな低レベルな感じにはならないと思われる。
803NSOutlineViewの保存:2007/04/01(日) 22:51:08 ID:wIdq15hJ0
はじめまして。
C言語も解らないのにcocoaに挑戦している無謀者です。
(古いバージョンなのですが)Xcode1.2のExamples/AppKit/DragNDropOutlineViewを改造し、オリジナルアプリケーションを作ろうと頑張っています。
何度もビルドを繰り返し、そこそこのメソッドを実装することはできたのですが、NSOutlineViewの内容を保存することだけがどうしてもできません。
保存さえできれば一応完成なのですが…。
ソースコードの場所だけでも教えて頂ければ、参考にして完成できるかも知れないのですが…。
よろしくお願い致します。
804名称未設定:2007/04/02(月) 01:08:56 ID:1PK1pIdD0
中身の辞書を好きなように保存すればいいじゃない
805名称未設定:2007/04/02(月) 01:26:49 ID:leDUqowB0
このサンプルでいくと、データはSimpleNodeDataが持っているみたいだから
こいつにNSCodingプロトコルを実装してAppControllerで
[NSArchiver archiveRootObject:treeData toFile:(NSString *)path];
という感じかな
806NSOutlineViewの保存:2007/04/02(月) 06:14:21 ID:ctZyDDPI0
レスありがとうございます。
805>おっしゃる通り、SimpleNodeDataにNSCodingプロトコルを実装してarchiveしようとしたのですが、copyWithZone:というエラーが出てしまいまして…。

@implementation SimpleNodeData
- (id)initWithCoder:(NSCoder*)decoder{
name = [[decoder decodeObject] copy];
}

調べてみると、SimpleNodeDataがNSObjectのサブクラスではなく、TreeNodeDataのサブクラスなので、

- (id)copyWithZone:(NSZone*)zone

というメソッドを実装しなければならないみたいで、そこで行き詰まっています。

804>NSDictionaryですか…?う〜ん。
多分、個々のアイテムデータを持つSimpleNodeDataと、Treeデータを持つtreeData辺りを両方、archiveする必要があると考えているのですが…。
treeDataをNSDictionary形式に変換して保存…?
う〜ん。やっぱり、これって相当難しいですよね?
素人じゃ無理なのかなぁ…。
ソースさえあればなぁ…。(;_;
807名称未設定:2007/04/02(月) 09:46:23 ID:leDUqowB0
name = [[decoder decodeObject] retain];
では?
808名称未設定:2007/04/02(月) 11:27:24 ID:R1/okmA80
iodbcってodbcじゃん。ダサイ。

Apple Remote Source Codeってのがある。
809784:2007/04/02(月) 13:12:08 ID:AfvA7wGL0
>>802
SystemUIServerですか。知りませんでした。時間があるときに調べてみます。

結局、IOKitで常駐を作ってやりたいことは実現できました。
ドライバなんて凄いものではなく、ただUSBデバイスを登録してコールバックを待って、
コールバックが来たらLaunch Servicesで起動したいアプリを起動するだけ。
常駐させるのはlaunchdでUserAgentにすればOK。
810名称未設定:2007/04/02(月) 18:45:04 ID:oU2gYeQQ0
spotlightコメントを書き込みたいんだけど、Query系はあるようですが、
更新系がありません。そもそもcocoaで更新できるのでしょうか?
811名称未設定:2007/04/02(月) 19:02:33 ID:TiBBg2h80
spotlight の query も Cocoa じゃないんだけど。
812名称未設定:2007/04/02(月) 23:05:16 ID:00iBL1bn0
HMDTが会社になったようだ。
ttp://hmdt.jp/archives/2007_04.html#2007040201
813名称未設定:2007/04/02(月) 23:35:00 ID:N38/i1wn0
つかまだ法人化してなかったのか
814名称未設定:2007/04/02(月) 23:43:34 ID:Kqyvjszc0
有限会社になってたような気がしたが。
気のせいだったのか。
815名称未設定:2007/04/03(火) 00:37:49 ID:8XPnz5Lu0
そんなことよりIMが塞がれることの方が衝撃
816NSOutlineViewの保存:2007/04/03(火) 05:09:11 ID:NEXuDbNo0
やっとできました。お騒がせしました。
817名称未設定:2007/04/03(火) 13:54:49 ID:lMVEzVeB0
今はもう有限会社は作れません。
818名称未設定:2007/04/03(火) 18:47:48 ID:vBggfrkc0
それが何か?
819名称未設定:2007/04/03(火) 22:55:28 ID:UpLhcMXk0
Core Data で、entity ごとに configuration(構成)を変えて別々のファイルに
セーブしようとしていますが、セーブ時に

"Can't reassign an object to a different store once it has been saved"

というエラーメッセージが出てうまくいきません。

一旦セーブした後、別のストアへ移すようなことはしていないのですが、
特定の entity を特定のファイルにセーブするには、モデリングツールで
configuration の設定をするだけでは駄目なのでしょうか。
820名称未設定:2007/04/04(水) 01:08:48 ID:Ktb34NKb0
>>819
なんらかの理由であるオブジェクトが複数のストアに割り当てされるようになってしまっているのだと
推測したのですが再現できませんでした。

簡単なアプリケーションを作成して試してみましたが、正常に保存できました。
作成手順は次のとおりです。
1.Core Data Application テンプレートから新規プロジェクトを作成
2.モデルAとBを作成し、それぞれ別の構成に属するようにする
3.MainMenu.nibにモデルA、Bをドラッグアンドドロップしてテーブルを作成
4.AppDelegateのpersistentStoreCoordinatorを変更し、それぞれの構成のstoreを追加するようにする

2.で複数の構成に属するようにしてみたり、4.でconfiguration:にnilを指定してみたりしましたが
それでも動作してしまいました。
別の構成のエンティティを関連にすると"The model configuration used to open the store is
incompatible with the one that was used to create the store"という別のエラーがでました。
821名称未設定:2007/04/04(水) 02:32:27 ID:qp0Z01t90
Objective-Cで字句解析+構文解析にしたいのですが、C++で言う所のBoostのspiritのようなモノはCocoaには無いのでしょうか?
822名称未設定:2007/04/04(水) 09:15:57 ID:EqNblRgx0
lex, yacc(flex, bison)をそのまま使えばいいじゃん。Xcodeで直接扱えるのに。
823名称未設定:2007/04/04(水) 10:45:41 ID:gN5xvet50
ウィンドウにNSTableViewを配置してNSArrayControllerとCocoaバインディングしました。
これに大量のアイテムを追加する必要があり、ループの中でaddObjectで1つずつ追加して
いるのですが、1つ追加する度にNSTableViewの表示を更新したいのですが、ループの中で
ウィンドウのupdateやflushWindowを読んでもNSTableViewの表示は更新されませんでした。
どうやったら更新できるのでしょうか?
824名称未設定:2007/04/04(水) 10:50:00 ID:EqNblRgx0
reloadDataだろ。
825名称未設定:2007/04/04(水) 11:06:58 ID:gN5xvet50
reloadDataでもダメみたいです。ウィンドウのupdateやflushWindow、NSTaleViewのreloadData
いずれの場合もループをぬけると全部が一気に更新されます(この場合はどれも呼ばなくても同じ)が、
ループの中で逐一更新されるようにはなりません。
826名称未設定:2007/04/04(水) 11:11:41 ID:728B2G5L0
ただ単に描画が追いついてないとか?
827名称未設定:2007/04/04(水) 11:30:19 ID:hmKjKdaC0
俺だったらイベントループの外で別スレッドでやるけどな
828名称未設定:2007/04/04(水) 11:35:58 ID:j+vNQ2D/0
NSArrayControllerの変更がTableViewに通知されてないからじゃないかな
rearrangeObjectsかなんかを呼ぶんだったか・・・
一番手っ取り早いのはNSArrayControllerのcontentをセットし直す事なんだけどね
記憶が曖昧ですまん
829名称未設定:2007/04/04(水) 11:36:59 ID:EqNblRgx0
ループってループ内でイベント処理されてないってこと?
それならループが終わるまで再描画されないのは当たり前じゃないのか?
830名称未設定:2007/04/04(水) 13:44:46 ID:gaxL7tHQ0
>>829
>ループってループ内でイベント処理されてないってこと?

そうです。CodeWarriorとPowerPlantだとforループの中でもRefreshみたいなの(名前は忘れた)を呼ぶと
描画が更新できたので同じ事をやりたいと思ったんです。
831名称未設定:2007/04/04(水) 15:23:33 ID:NxWVMYZ10
>>830
reloadDataの後でNSTableViewにdisplayとかdisplayIfNeededを送ればいいのでは
reloadDataのところを読めば書いてあるけど、こいつは再描画が必要とマークするだけ
832名称未設定:2007/04/04(水) 15:32:38 ID:gaxL7tHQ0
>>831
ありがとうございました。できました。
結果的にはNSWindowまたはNSTableViewどちらかでdisplayだけを呼ぶことでOKでした。
833名称未設定:2007/04/04(水) 19:32:35 ID:kKUAAgCo0
すごい初歩的な話かもしれないんだけど、MainMenu.nibのアクションから他のnibを呼び出すのってどうすればいい?
834名称未設定:2007/04/04(水) 19:34:50 ID:728B2G5L0
>>833
こういうこと?

- (void)myMenuAction:(id)sender
{
[NSBundle loadNibNamed:@"MyNib" owner:self];
}
835名称未設定:2007/04/04(水) 19:50:27 ID:kKUAAgCo0
>>834
おおなるほど!ありがとーやってみるよ
836819:2007/04/04(水) 21:16:05 ID:zwljyYI90
>>820
いろいろありがとうございます。
私の方は、既存のデータモデルに新たに entity を加え、その加わった entity を別のストアに
保存しようとしています。この新しい entity は、既存のデータとは完全に独立しています。
(関連などは繋がっていない)

AppDelegate の中で addPersistentStoreWithType: configuration: URL: options: error:
で configuration と URL に今までのデータと別の値を入れて保存しようとしており、
アプリを初めて立ち上げたときには問題なく動作して目論見通り2つのファイルに
セーブされるのですが、次に立ち上げてセーブをすると >>819 のエラーが出てうまくいきません。

最初に書き出される2つのファイルは XML にして中身を見てみたのですが、
configuration 通りになっていて、両方のストアに混在しているようなことはありませんでした。

エラーメッセージ中の "an object" というのが、どの entity を指すのかでもわかれば、
手掛かりになると思うのですが‥
837名称未設定:2007/04/05(木) 00:06:30 ID:Nzuy44sx0
メニューアイテムをShared User Defaultの値(BOOL)にバインドしてるんですが、
アクションを接続しないとメニューがグレーで選択できないままになってしまいます
仕方ないので今空っぽのアクションを接続してごまかしてるんですが、
もっと良い方法とかないんでしょうか
838821:2007/04/05(木) 01:08:54 ID:hg1+y+k10
>>822
yaccやlexだと何でもかんでもグローバルに持つことになるじゃないですか。
それがイヤだったので何か無いのかなぁと思ったのです。
839名称未設定:2007/04/05(木) 09:48:57 ID:i8qNGweI0
>>383
じゃ、自分で書くしかないな。昔、再帰降下法で書いたことあるけど、デバッグが
うっとおしいと言うか、何と言うか・・・楽な方がいいと思うけどねぇ。
840名称未設定:2007/04/05(木) 16:45:28 ID:ajvOvmKi0
TabとかButtonとかをダブルクリックしたらタイトルの文字列を編集状態にできる、
ということをやりたいのですが(ちょうどIBで編集してる時のように)、
ダブルクリックを受け取ったらその文字の上にTextFieldを作って編集し終わったら
編集を反映させてTextFieldを消す、という方法しか思いつきません。
もっとスマートにボタンやタブのタイトルをユーザに編集させるにはどうしたらいいでしょうか?
841名称未設定:2007/04/05(木) 18:08:08 ID:fOWpzFR80
>>836
>エラーメッセージ中の "an object" というのが、どの entity を指すのかでもわかれば、

例外が発生しているんならデバッガでそこで止めてみるとか。
842名称未設定:2007/04/05(木) 19:00:16 ID:kAZz/TLh0
>>840
selectWithFrame:inView:editor:delegate:start:length:
詳しくは知らんけど、これが使えるかも。
843名称未設定:2007/04/05(木) 20:45:43 ID:iQC+/XNj0
WebCoreをコマンドラインツールから使いたいんですが、どのようにすればDOMHTMLDocumentが生成できるのかが分かりません。

NSURLRequestを作成して、NSURLConnectionでHTMLデータをとってきて、トークナイザかなにかでパースするんでしょうか?トークナイザがどれかも分からない状態です。

ご教示お願いします。
844名称未設定:2007/04/07(土) 15:32:51 ID:xYIgoWvH0
アプリケーションの中から、ブラウザを立ち上げて指定したウエブページを開く、
というのをやりたいのですが、やり方がわかりません。

やりたいことは、メニューから「ヘルプ」を選択すると、Safari が立ち上がって
ヘルプが書かれたページを開く、ということです。
845名称未設定:2007/04/07(土) 15:42:12 ID:hftQX+nO0
>>844

[[NSWorkspace sharedWorkspace] openURL:
 [NSURL URLWithString:@"http://www.2ch.net"]];
846844:2007/04/07(土) 16:40:24 ID:xYIgoWvH0
>>845
できました!
ありがとうございます。
847名称未設定:2007/04/08(日) 15:45:25 ID:bL9r5fxS0
IB で、右詰めに表示するよう設定したテーブル内に、NSAttributedString を
表示させたところ、左詰めで表示されるようになってしまいました。

右詰めで表示するには、どのようにすれば良いでしょうか。
848名称未設定:2007/04/08(日) 18:09:38 ID:UGp2Ugnc0
NSArrayの中で例えば"name"というキーに"hoge"という値を持つアイテムがあるかどうかを調べたい場合、
objectEnumeratorでNSEnumeratorをとってループでnextObjectを呼んで順にgetValueForKeyで調べる
という方法でいいんでしょうか?それともそれを1行ですませてくれるAPIがあるのでしょうか?なんかシ
ンプルな方法がありそうに思えてヘルプを調べてるんですけど見つかりません。NSPredicateを使うんでしょ
うか?
849名称未設定:2007/04/08(日) 18:29:04 ID:3MD4eLpb0
ループまわしてvalueForKey:使う方法でいいと思うよ。
その作業を何回もやるんならNSArrayのカテゴリにまとめちゃってもいいと思うし。
850名称未設定:2007/04/08(日) 19:18:54 ID:x4/h0cPH0

hogeが何のオブジェクトかにもよるけど

[[array valueForKey: @"name"] indexOfObject:@"hoge"]
851名称未設定:2007/04/08(日) 19:46:56 ID:uaCZB5Zo0
>>850
すご〜い、 NSArrayに対してvalueForKeyを呼ぶとこういうことができるんですね。
valueForKeyの使い方の勉強になりました。どうもありがとう。
852名称未設定:2007/04/09(月) 21:39:50 ID:VYamadHd0
>>847
NSAttributedStringが持っているスタイルが優先されるため。

NSParagraphStyle(NSMutableParagraphStyle)で右寄せを指定して、
それをNSAttributedStringにセットすればいいと思います。
853847:2007/04/09(月) 22:54:06 ID:UKkbIsk60
>>852
ありがとうございます。
できました。
854名称未設定:2007/04/10(火) 15:16:12 ID:h8hayMK10
NSTextViewのControl+Tabキーバインドを横取りして、
違う機能を割り当てることってできるんでしょうか?
855名称未設定:2007/04/11(水) 18:11:23 ID:YE+0OnrI0
>>854
NSTextView の textView:doCommandBySelector: delegate で。
856854:2007/04/11(水) 20:05:17 ID:06ZFjsGB0
>>855
ありがとうございます。
でもそのDelegateでControl+Tabは取れるんでしょうか?

結局、NSTextViewのサブクラス作って - (BOOL)resignFirstResponderに
if ([[[self window] currentEvent] modifierFlags] & NSControlKeyMask) {
  if ([[[[self window] currentEvent] charactersIgnoringModifiers] isEqualToString:@"\t"]) {
と書いちゃいました。
もっとスマートな方法がありそうな気もするんですけど。
857名称未設定:2007/04/12(木) 00:48:56 ID:V3D2JG8T0
Control+Tabってなにか関連づけられてたっけ?

で、仮にhoge:ってアクションと関連づけられてれば、
(BOOL)textView:(NSTextView *)textView doCommandBySelector:(SEL)sel

 if (sel == @selector(hoge:) {
  やりたい処理
  return YES;
 }
 return NO;
}
ただ関連づけは
~/Library/KeyBindings/DefaultKeyBinding.dict
を書き換えることでユーザーが好きに設定出来るから、
上に書いた方法はアクションの上書きにしか使えない、かな。
858名称未設定:2007/04/12(木) 00:52:04 ID:171Hik5J0
>>856
>結局、NSTextViewのサブクラス作って - (BOOL)resignFirstResponderに

ん? 逆になんでこれでいいのかよくわからん。
NSTextViewにフォーカスがある状況でControl+Tabを押したらファーストレスポンダが
切り替るような状況なのか? 標準だと transpose: のはずだが。
キーをカスタマイズしてある? そういう可能性も考慮するなら結局もっと「上の方」で
イベントを取らないといけないよう気が。
859854:2007/04/12(木) 09:41:35 ID:UYI/pEuy0
>>857
そのDelegateで「Control + Tab」を取れればとは思います。
でも NSLog(NSStringFromSelector(sel)); で確認しても取れてないです。

>>858
ttp://developer.apple.com/documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/chapter_6_section_5.html
NSTextViewの他に、たとえばNSTextFieldがwindow上にあるとして、
NSTextViewでは「Control + Tab」でファーストレスポンダー状態を
放棄するのではないんですか? 標準だと transpose: なんですか?
「上の方」でイベント取るってのはNSWindowのkeyDownで取るとかだと
思うのですが、それでは取れないんです。
860名称未設定:2007/04/13(金) 04:48:08 ID:vWmIBfdQ0
>>859
>NSTextViewの他に、たとえばNSTextFieldがwindow上にあるとして、
あー状況がわかった。これ重要な情報だぞ。
ま、俺も resignFirstResponder とか言いだした時点で気付くべきだったが。

Control+Tab に割り当てるという機能によるが、もし「resign を常にやめさせたい」とかだと delegate では無理かも。
編集されたテキストがあるときは textShouldEndEditing: が有効だが。

>NSWindowのkeyDownで取るとかだと
はあ? 罰として「レスポンダチェイン」百回繰り返し。
861名称未設定:2007/04/13(金) 12:38:40 ID:XU57GprI0
Cocoaプログラミングの無料セミナー開催
今月4月にCocoaプログラミングの無料セミナーの初級・中級・上級を東京初台
のアップルセミナールームで開催し ます。次期OS Leopardには、Objective-Cの
APIのみで提供される新機能がたくさ んあります。今後、Cocoaの習得はMac OS
ソフトの開発に必須となります。是非 この機会をご活用下さい。講師はHMDTの
木下誠さんです。
http://developer.apple.com/jp/rss/adcjapan.rss
862名称未設定:2007/04/13(金) 21:42:45 ID:cNk9+q2z0
NSTextField に NSArrayController の selection をバインドしてるとき、
NSArrayController の選択されてるオブジェクトの値をアップデートしても
NSTextField の値の方はアップデートされないのですが、
これがアップデートされるようにするにはどうしたらいいんでしょうか。
863名称未設定:2007/04/13(金) 22:02:05 ID:rOeItFvV0
>>861
行きたいけどめちゃくちゃ平日ですね、、
864名称未設定:2007/04/14(土) 00:30:03 ID:KUvSFhgt0
>>862
ちょうどバインディングに興味がでてきていたのでやってみた。
特に特別なことをしなくてもアップデートされるけど。
アップデートって具体的にどうしてますか?
865名称未設定:2007/04/14(土) 00:45:09 ID:uwP6NM7I0
>>862
ちゃんとsetValue:forKey:を使って値をセットしてる?
866名称未設定:2007/04/14(土) 08:26:59 ID:wRRSI3Bk0
ADCセミナーってウェブで動画も上がってる内容をまたやるのではないの?


ドキュメントアプリケーションで、子ウィンドウを指定位置に開くのってどこで指定するのだっけ?
IB(nib)って細かいことやろうとすると敷居が高い感じが。
867名称未設定:2007/04/14(土) 09:08:03 ID:g9I6ncgR0
>>866
同じ奴でしょ。セミナーの教材作るのって結構大変だから木下さんもそんなに新しいものつくれない
だろうし、Leopardが延期になったからそっちの方の話もできないだろうし
868862:2007/04/14(土) 10:24:23 ID:UGbaj6V40
>>864, 865
Core Data のアプリなんですが、NSArrayController に Entity を設定し、
表示したい ManagedObject を NSPredicate を使って fetch して
それに setValue: forKey で値を設定しています。

同じ NSArrayController を NSTableColumn に arrangedObjects の
Controller Key でバインドすると、setValue: forKey したときに
テーブルの方は即座に値がアップデートされるのですが、
selection の Controller Key でバインドされている NSTextField
の方はアップデートされません。

テーブルの方で別のオブジェクトを選択すると、そのときに
NSTextField の方もアップデートされるので、Controller Key の
"selection" が変わらないとアップデートされないのではないかという
気がしてます。

でも、NSArrayCotroller と NSTextField をバインドするには、
selection を使うしかない?とすると、どうすれば解決できるか
わかりません。
869名称未設定:2007/04/21(土) 21:28:58 ID:eam4AGs20
NSOpenGLViewのdrawRectで、絵はOpenGLで描画し手前の文字をCocoaで
書くようなことは出来るのでしょうか?
870名称未設定:2007/04/21(土) 21:46:47 ID:xfwvDoZh0
NSOpenGLViewに絵を描画させたあとに、
NSStringのdrawInRect:withAttributes:などを使えば良いんじゃない?
871869:2007/04/21(土) 22:02:30 ID:MtXfQECc0
>>870
試してみたのですが、そのままではCocoaの部分が描画されないようです。
もう少しチャレンジしてみます。(__)ペコリ
872869:2007/04/21(土) 23:14:21 ID:MtXfQECc0
やっぱりできなかった...orz
NSViewのサブクラスでOpenGLを使う必要があるのかなー
873名称未設定:2007/04/22(日) 00:32:24 ID:dnIIi03j0
OpenGL側で文字の描画も出来なかったっけ?
874名称未設定:2007/04/22(日) 00:36:34 ID:CY28InMn0
なんか、がんばったけどうまいこといかなかった記憶があるぞ。

どういう事をやりたいのかにもよるけど、
addSubviewして手前のviewに文字だけ書いた方が早いんじゃないかな。
875869:2007/04/22(日) 01:02:12 ID:g0f5/XY+0
>>873
OpenGLでCocoaの文字を表示するには、一旦イメージに文字を書いて
そのビットマップをテクスチャとして貼付ける必要があるので面倒なんですよね

>>874
addSubviewしてもダメだったです...orz
876名称未設定:2007/04/22(日) 01:13:03 ID:wjSdtDHp0
CGContextShowText使ってみるなら、
OpenGLViewからContextを取得して描画する方法はどうかな。

質問のような事はやったことがなくて、
GLViewでCoreImageとCoreGraphicsが扱えそうってのを
ちょっとテストして確認しただけだけど。
877名称未設定:2007/04/22(日) 03:04:14 ID:AmMR8Ab90
Quartzで書くのはなにかと面倒だべ

>>875
透明な childWindow をくっつけるとか (実際にやったことないけど)
878名称未設定:2007/04/22(日) 05:09:16 ID:8E+bp+UZ0
今週末の中級セミナーに参加される方います?
資料や話す内容はすでに公開されてるモノなんでしょうが、自分は参加してみようかなと
879869:2007/04/22(日) 10:42:59 ID:O8vxYvtz0
>>876
Quartzという選択肢がありましたね。試してみます。

>>877
重なり関係、移動、リサイズが面倒かもしれませんが、
Quartzがダメならいってみます

(__)ペコリ
880名称未設定:2007/04/22(日) 19:14:28 ID:7wMoL3LL0
long order = -1;
[[(NSOpenGLView*)view openGLContext] setValues:&order forParameter: NSOpenGLCPSurfaceOrder];

でいけると思う
881名称未設定:2007/04/22(日) 20:05:17 ID:IYMZHwg20
初歩的な質問なのですが、複数のボタンやビューなどがあって
最後にクリックしたものだけをハイライトさせるにはどうしたらよいでしょうか?
mouseDownのオーバーライドでクリックしたものをハイライトさせることはできたのですが、
他のものをクリックした時にハイライトを消す方法が分かりません。
Matrixでボタンを作った時のリストモードのような挙動をいろいろなボタンやビューでさせたいのですが
アプリ全体でmouseDownがあった時にボタンやビュー全部に対して何か処理をするのは
どうも賢くないと思いますし、何かいい方法はないでしょうか?
882名称未設定:2007/04/23(月) 02:17:38 ID:X295mOgc0
>>881
テキトーだが、ファーストレスポンダ関連で弄ればいいんじゃない?
http://homepage.mac.com/mkino2/cocoaProg/AppKit/NSResponder/NSResponder.html#becomeFirstResponder とか
883名称未設定:2007/04/23(月) 02:48:22 ID:6OmQH1Tw0
NSTableView に NSArrayController をバインディングし、行を追加したり削除したりしています。
行追加削除処理を行うと、NSTableView には一番最初に表示したデータ分の行数しかデータが表示されません。
データの追加削除処理は正しく行えています。
すごく初歩的な気がしますが、どうにも解決できません...。

実際           こうなって欲しい
3             3
2             2
1             1
空行           空行
        ↓
4の行を insertObject で先頭に追加、reloadData
        ↓
4             4
3             3
2             2
空行           1
        ↓
3の行を removeObjectAtIndex で削除、reloadData
        ↓
4             4
2             2
1             1
空行           空行
884名称未設定:2007/04/23(月) 04:21:03 ID:jjgsMmyb0
rearrangeObjects
885名称未設定:2007/04/23(月) 05:08:24 ID:ehrNuhU60
>>882
うーん、まだ解決しません。
もうしばらく悩んでみます、、。
886名称未設定:2007/04/23(月) 10:00:05 ID:mSitQ6WO0
>>881 >>885
あなたの思う「賢くない方法」でやってみれば?
そこから解決糸口が見えるかも・・・?
887883:2007/04/23(月) 14:23:20 ID:6OmQH1Tw0
>>884
reloadDataの後にNSArrayControllerに対してrearrangeObjectsしたら画面に正しく反映されました!
ありがとうございました、大感謝です。
888名称未設定:2007/04/24(火) 09:28:31 ID:DSdxIeH10
>>887
KVO準拠の方法でデータにアクセスしていますか?
NSArrayControllerに対して
- (void)insertObject:(id)object atArrangedObjectIndex:(unsigned int)index
- (void)removeObjectAtArrangedObjectIndex:(unsigned int)index
を使うか

モデルに対して
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key
- (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath
を使ってアクセスすれば、reloadDataもrearrangeObjectsもいらないはずです。
889883:2007/04/26(木) 03:08:11 ID:Nd7UFZwT0
>>888
ご指摘の通り、全くKVO準拠の方法ではない方法でした...。
insertObject、removeObjectAtArrangedObjectIndexでreloadData等なくても希望通りの動きになりました。
もう少しちゃんとリファレンスも読んでみることにします。
勉強になりました、ありがとうございました。
890名称未設定:2007/04/27(金) 17:24:53 ID:3yp98YE0O
セミナー受けてきたぜ
すでに動画が公開されていたとはいえ質問できるのはいいな
それにしても、アルミ筐体率高かった
891名称未設定:2007/04/28(土) 10:50:58 ID:oQsmM0Az0
Proなんて高くて買えません!><
892名称未設定:2007/04/29(日) 12:50:09 ID:RJRWaDls0
>>890

初心者クラスは、6割がMacで開発経験の無いプログラマとか。
893名称未設定:2007/04/29(日) 16:38:46 ID:gwS0H0mL0
初心者クラスでも基本的にプログラマばかりなのか
894名称未設定:2007/04/29(日) 20:18:27 ID:T00kOlR90
>>893
マックの開発セミナーじゃ最低限、他でプログラミングの心得が無いと
初心者としての参加なんて考えないだろう。
895名称未設定:2007/04/29(日) 21:59:58 ID:+chhhv370
初心者クラスでもCがわかることが最低条件だったはず
全く何も知らない人向けのセミナーはやらないのかな?
896名称未設定:2007/04/29(日) 22:26:05 ID:y0RHm+EE0
やる意味が分からない
897名称未設定:2007/04/29(日) 23:40:04 ID:T00kOlR90
その意味が分からない
898名称未設定:2007/04/29(日) 23:56:28 ID:2YtZBCzv0
897は895に対してだよな?
899名称未設定:2007/04/29(日) 23:57:42 ID:dYQipWOP0
>>895
>全く何も知らない人向けのセミナーはやらないのかな?
基本書の1冊読む気すらない奴、Appleのドキュメントすら読もうとしない奴になに喋っても無駄だと思う
900897:2007/04/30(月) 00:39:57 ID:gT7oJDV+0
>>898
チョット惜しい。
俺が「その意味が分からない」と書いたのは、895の2行目に対する896の流れを通して
話の線が見えなくなったからなんだが・・・もう床に就いて休んだ方がいいのかなぁ。 
901名称未設定:2007/04/30(月) 15:03:31 ID:bQiF4OXSO
上級編は「これはノートだ!」と言い張り、全員がMacPro持参!?

もう少し時間があるとさらに良いセミナーになるんだろうけど
それはともかく、皆で勉強するのはいいことだね
自分が気に留めなかった事を質問する人がいて、独習とは違った視点で見れたりできる

ってCocoaネタなくてスマン
902名称未設定:2007/05/01(火) 07:47:12 ID:eAiaJDn20
>>895

きのたんがそういう本出すと言ってたな。
銀座でセミナー+即売サイン会ってのはどうだい?
903名称未設定:2007/05/01(火) 10:54:13 ID:gnYW9r9L0
¥R を Key Equiv に割り当てた NSButton を、マウスでクリックするのと
リターンキーを押すのとで、プログラムの動作上何か違いはあるでしょうか。

マウスクリックでは想定通り動作するのですが、リターンキーを押すと
アプリケーションがクラッシュしてしまいます。
904名称未設定:2007/05/01(火) 13:14:09 ID:khrejRdW0
リターンはフォーカスされたボタンが押されてるのでは?
905903:2007/05/01(火) 14:08:42 ID:gnYW9r9L0
>>904
「フォーカスされたボタン」の意味が良く分からないのですが、
「¥R を Key Equiv に割り当てたボタン」とは違うボタンが
リターンキーに反応することがあるということでしょうか。
906名称未設定:2007/05/01(火) 23:21:38 ID:BD+LRp8E0
バインディングとCore Dataよりも良い設計のDataSourceとDelegateの方が
汎用性&再利用性が高いよね...
Cocoaスペシャリストのソースを見る機会があったんだけど、
同期やUndo、永続化もCoreData並みに用意されていて洗練されていた
こういうのをAppleが用意すれば良いのになぁとしみじみとおもう
907名称未設定:2007/05/02(水) 22:15:09 ID:azfEH4BV0
Core Dataって変更に弱いよね
Entityを変更してリリースしたらXmlの構造が変わっているのでエラー出るし...
HibernateみたいなO/Rマップならよかったのに...Cocoa-Javaが惜しまれます
908名称未設定:2007/05/02(水) 23:35:33 ID:TYnT0s/e0
>907
そこでCocoaHibernate作成ですよ
がんがれ
909名称未設定:2007/05/03(木) 01:14:26 ID:RDn2zkHA0
>>903
その「\R を Key Equiv に割り当てたボタン」がフォーカスされてるかどうかによるんじゃない?確かめてはいないけど。
もしNSTextFieldの編集中にEnterを押した場合に
特定のボタンを押したのと同じ効果が欲しいのなら、
そのためのコネクションがあったはず。名前は忘れた。
910名称未設定:2007/05/03(木) 01:20:45 ID:QMJ3wekM0
EOF?
911名称未設定:2007/05/03(木) 02:59:10 ID:fB94K5ZR0
昔はWO-ObjCが有ったけどねえ。
今は、Cocoa-ObjC-Javaでがんばるしか無いな。
つーかCoreDataじゃないまともなXMLライブラリ作ればおkな気がする。

しみじみNextstepって洗練されてたと思う。
912名称未設定:2007/05/03(木) 16:08:26 ID:I25qrew70
NSTableView で、下記のようにして NSTableColumn の幅とヘッダーのタイトルを
変えようとしてるのですが、各 NSTableColumn の幅は変わるのですが、
ヘッダー部分の幅とタイトルが変わってくれません。


NSTableView * tableView;
NSTableColumn * tableColumn;
int i;
for ( i = 0; i < [tableView tableColumns]; i++ )
{
tableColumn = [[tableView tableColumns] objectAtIndex: i];

[tableColumn setWidth: ( column width )];
[[tableColumn headerCell] setSteingValue: ( header title ) ];
}


ヘッダーまで含めて変えるには、どうすれば良いでしょうか。
913名称未設定:2007/05/03(木) 16:22:14 ID:1CTLaofR0
CocoaでDocument-based Applicationを作っているのですが、
EXC_BAD_ACCESSが出て止まってしまいます。
デバッガを見ると[NSCell _hasAttributedStringValue]のあたりで止まっています。

一般的にどういう状況でこういうことになるのでしょうか??
914名称未設定:2007/05/03(木) 17:11:47 ID:UNNgSerH0
>>912
まずforループの [tableView tableColumns] を修正しよう。

>>913
そのままの意味のような。
止まっているメソッドの上流は調べましたか?
915名称未設定:2007/05/03(木) 17:15:36 ID:UNNgSerH0
>>912
幅については、setMinWidth , setMaxWidth はどうなっていますか?
名前については setTitle は使ってみましたか?
916名称未設定:2007/05/03(木) 17:21:57 ID:bvcUL7VX0
>>912
[[tableView tableColumns] count] かな
917913:2007/05/03(木) 17:31:07 ID:1CTLaofR0
>>914
上流はアプリケーションのメインループ?みたいなところで
自分がコードを書いた部分ではないんですよね。。。

こういうときは最近加えたコードを少しずつコメントアウトして調べてくのが有効かな??
918912:2007/05/03(木) 17:42:29 ID:I25qrew70
あ、すみません。
コードの方は [[tableView tableColumns] count] になってます。(汗

>>915
setMinWidth, setMaxWidth には何もしていませんが、NSTableColumn の方は
想定通りに幅が代わり、ヘッダーは最初に立ち上げたときに NSTableColumn に
設定した幅になったままになります。

あと、setTitle というのはどのクラスに設定するものでしょうか。
919名称未設定:2007/05/03(木) 18:40:36 ID:UNNgSerH0
>>918
setTitle は NSCell にありますよ。

幅に関しては、私ならヘッダファイルで関係してそうなメソッドを探して片っ端から試してみますよ。
920名称未設定:2007/05/03(木) 18:54:36 ID:UNNgSerH0
>>918
ちょっと試してみましたが、ヘッダーの幅はちゃんと変わりますよ。
どこかでおかしくなっていると思います。
921912:2007/05/03(木) 19:06:55 ID:I25qrew70
どうもヘッダーの表示だけアップデートされていないようです。

コード内で幅を変えると、NSTableColumn は幅が変わり、ヘッダーは幅もタイトルも
そのままだったのですが、ヘッダーをクリックすると幅とタイトルが変わりました。

ヘッダーをアップデートするのに、何か処理は必要でしょうか。

[tableView display];
[tableView displayIfNeeded];

などではダメでした。
922名称未設定:2007/05/03(木) 19:29:03 ID:UNNgSerH0
>>921
あ、ほんとだ。幅を小さくすると変化しませんね。
これってバグなのかな?
アップデートには NSTableColumn の sizeToFit が使えるみたいです。
923名称未設定:2007/05/03(木) 19:44:22 ID:UNNgSerH0
>>917
上流がメインループという事はIB関係なのかな。
924913:2007/05/03(木) 22:00:50 ID:aEU9mj0U0
>>913>>917
自己レスですが、解決しました。

一時オブジェクトをretainせずにメソッドを抜けてて、
それにもかかわらずその後次の呼び出しでreleaseしてました。
つまりretainとreleaseの対応が合っていなかったです。

メモリ確保関連のバグは予想外のタイミングで落ちる、っていう印象がありますね。気をつけよう。
925912:2007/05/03(木) 23:23:19 ID:I25qrew70
>>922
テーブルの中身は master-detail インターフェイスの detail 側で、
NSArrayController に bind させているのですが、master 側の selection が変わると、
>>912 のソースで( count] は追加)ヘッダーまで含めてすべて想定通りに動きました。

master 側の selection は変えないで、同じ動作をさせる方法があればいいのですが。
926名称未設定:2007/05/04(金) 00:26:06 ID:biB/hgPk0
>>925
いろいろあると思いますが、NSArrayController の rearrangeObjects はどうですか?
テーブルのヘッダーにまで変化が及ぶかはわかりませんが。

それと、ちゃんとmin(max)Widthを設定したらヘッダーの幅は変わりました。
やはりどこか設定がおかしいのではないでしょうか。
927名称未設定:2007/05/04(金) 09:36:34 ID:PvtowjTL0
NSTreeControllerのselectionがやっとバインディングで使えるようになった。。。苦労したorz
みんなどうやって使い方を調べているの?
AppleのドキュメントだけじゃIBの使い方って全然解らないし。。。
928名称未設定:2007/05/04(金) 14:51:25 ID:YCFWdMzP0
メモリ回りの挙動が怪しいのはObjCの仕様。

IBで済んでるうちはまだ楽で、IBに無いものを自分で作ろうとすると急激にレベルが高くなるのもCocoaの欠点。
929名称未設定:2007/05/04(金) 15:03:48 ID:P20tNPLY0
Cocoa Binding で苦労してるのねえ... 状況によるけど実は target-action の方が
よかったりして。
930名称未設定:2007/05/04(金) 15:07:16 ID:P20tNPLY0
それか data source や delegate。
931名称未設定:2007/05/04(金) 15:09:04 ID:DCCMPjRJ0
そゆのガベージコレクション実装されると楽になる?
932名称未設定:2007/05/05(土) 08:57:46 ID:jxbBd/t90
>> 928
> IBで済んでるうちはまだ楽で、IBに無いものを自分で作ろうとすると急激にレベルが高くなるのもCocoaの欠点。

フレームワークは、そういうもん。どうしても提供されてないものを
作ろうとすると、面倒になるよ。
933名称未設定:2007/05/05(土) 11:44:12 ID:gNUP7cM30
IBって定型的なコーディングを省略するためのツールだから、IBに無いものを作らなきゃいけないのは当たり前なんだけどね。

>メモリ回りの挙動が怪しいのはObjCの仕様。
言語の仕様というわけじゃなくて、C++とかから来た人が、Obj-C(+その上にあるCocoa)のメモリ管理を理解するのに若干発想の転換を必要とする、ぐらいじゃないかな。
934名称未設定:2007/05/05(土) 18:24:49 ID:q59ZSf/B0
ObjCのメモリ回りの仕様ってCと同じでしょうが。
935名称未設定:2007/05/05(土) 18:29:55 ID:jxbBd/t90
>> 934
autoreleaseのことをいっているんじゃない?
リファレンスカウントでもないし、スタックにオブジェクトを確保するわけでもないし。
C++やってた人にはわかりにくいというのは、わからないでもない。
936名称未設定:2007/05/06(日) 23:25:00 ID:hdfrSGIc0
回数覚えてないと、過剰にリリースしてアボーンだからね。orz

定型的なアプリに不満で、自作したいからプログラムやるって動機は多いと思うけどねえ。
937名称未設定:2007/05/07(月) 00:17:19 ID:YcdsWcX70
C++とかガベージコレクトとか全然知らないんですが、
たとえばObjective-Cで言うところのretain、relaseみたいな事は
どうやってやるんですか?
938名称未設定:2007/05/07(月) 01:29:45 ID:UODvj1gT0
>>936
>回数覚えてないと、

回数を覚えるんじゃない、retain と (auto)releaseのバランスを取るんだ。

しかし、プログラムでカッコの対応をチェックするぐらい簡単に retain と release の
バランスをチェックできればいいんだろうなあとは思う。
939名称未設定:2007/05/07(月) 01:40:08 ID:UODvj1gT0
>>937
そういうのをしたくないからガベージコレクトなのでは?
940名称未設定:2007/05/07(月) 11:05:25 ID:mJBl6dip0
> 回数覚えてないと、過剰にリリースしてアボーン

それはメモリまわりの作法を正しく理解してないだけだろ。
941名称未設定:2007/05/07(月) 13:05:59 ID:VMC1T3Pu0
Core DataやバインディングはなぜD&Dに対応していないんだろうね
せっかくエンティティに継承関係があるんだから、D&Dをオブジェクト指向で
実現できそうなのに・・・
942名称未設定:2007/05/07(月) 13:08:08 ID:Uvqucy/k0
>>940
同意。
そういう人は、全部autoreleaseにすればいいと思う。
パフォーマンスの問題があるけど、そういう人は関係ないと思うし。
943名称未設定:2007/05/07(月) 14:09:24 ID:Icr6KfFg0
何も考えずに全部をautoreleaseしたらとんでもないことになるぞ。

retainとreleaseはなるべく同じスコープでペアで使えばいいだけの話だ。
C++ではreleaseし忘れみたいな単純なバグを避けるためにstack base objectとか
auto_ptrとかあるけど、これだって万能ってわけじゃない。
944名称未設定:2007/05/07(月) 16:50:27 ID:p0jqMaWl0
ていうか、retain/releaseはObjCの言語仕様とは関係ないんだってば
945名称未設定:2007/05/07(月) 18:38:15 ID:VMC1T3Pu0
>>944
NSObjectを使わないObjCって...
946名称未設定:2007/05/07(月) 18:48:55 ID:oPNrofLO0
autorelease使えないよ。
インクリメントしてるだけだから、複雑な処理の場合には、いつまでもリリースされずにメモリ食いまくり。
947名称未設定:2007/05/07(月) 19:49:23 ID:Uvqucy/k0
>>946
autoreleaseを使えっていうのは半分冗談です。
メモリ食いはNSAutoreleasePoolで対処できるけどね。
948名称未設定:2007/05/09(水) 11:38:25 ID:jsw1JMvK0
>>946
>autorelease使えないよ。
>インクリメントしてるだけだから、複雑な処理の場合には、いつまでもリリースされずにメモリ食いまくり。

循環参照していないだろうか?この場合、リファレンスカウンタでは開放できないくなっちゃいます。

また、大きくメモリを消費する処理には、それ用のNSAutoreleasePool を用意しておけばいい。
949名称未設定:2007/05/09(水) 12:54:42 ID:18iNnjUF0
ついでに突っ込むとautoreleaseはデクリメント(のことだよな?)してないぞ
950名称未設定:2007/05/11(金) 00:39:29 ID:S5BefFFq0
見えないけどインクリメントされてたはず。
過度にリリースすると落ちるのが証拠。
951名称未設定:2007/05/11(金) 16:49:14 ID:AUdZh5Gs0
>>950
インクリメントは「増やす」、減らすのはデクリメント
正確に言うとautoreleaseした時点ではリファレンスカウントは減らなくて
ただAutoreleasePoolに登録されるだけ
で、AutoreleasePoolが解放される時に、登録されたオブジェクト全てに対して
releaseを呼び出す、という形になっている
はず

まあautorelease=デクリメントで大体合ってるけどね
952名称未設定:2007/05/11(金) 17:14:21 ID:9AVlIKsJ0
GCの意味が分からん
捨てちゃいけないもん捨てちゃったらどうするんだ
953名称未設定:2007/05/11(金) 17:41:37 ID:S5BefFFq0
もちろんエラーでOSもろとも落ちるよ。
だからC言語って危険。
954名称未設定:2007/05/11(金) 18:03:59 ID:oXeq4Vqt0
あなたたち、本気で言ってるの?
955名称未設定:2007/05/11(金) 19:10:40 ID:I4NhRwky0
捨てちゃいけないものを捨てるようなヤバいGCなんてないよ。
C言語とGCは何の関係もないし。
956名称未設定:2007/05/11(金) 22:39:41 ID:n2Vzjy3X0
GCは楽チンで超便利。
GCのおかげで背が伸びて彼女が出来ました。
957名称未設定:2007/05/11(金) 22:58:55 ID:1RRhddDN0
C言語用の某 GC ライブラリの mac 版は
静的領域を破壊してくれるバグがあってハマった
958名称未設定:2007/05/12(土) 00:41:12 ID:0DAftqx50
「必要なくなった」ってどやって判断すんの?
またいつ必要になるか分からんじゃん!
959名称未設定:2007/05/12(土) 00:54:30 ID:XQ40pFCM0
やあ、あなたは片付けられない症候群の人ですね。
960名称未設定:2007/05/12(土) 01:09:18 ID:vgDhCNpj0
>>957
そこで「某」と書くのは理由があるの?
961名称未設定:2007/05/12(土) 02:58:12 ID:aUw7jLTh0
わざわざ正式名を出す理由がないから
962名称未設定:2007/05/12(土) 09:02:39 ID:d1tsLHVh0
まあ、メモリ管理は無理してでも覚えたほうが良いよ
ついでにC++を一緒に覚えるとなお良い
963名称未設定:2007/05/12(土) 09:08:25 ID:BrtsGvua0
>>958
ネタかい?
どこからもアクセスできなくなったら「必要なくなった」ってことだろ。
まあ実際はそんなに単純ではないがな。
964名称未設定:2007/05/12(土) 10:51:55 ID:1nuw6i340
テーブルビューで行を選択すると、その行の色が反転して背景が青になりますが、
選択しても色が変わらない(表示が全く変わらない)ようにすることはできますか。
(選択できなくする、というのでもいいですが)

もう1つ、テーブルビューのある列のヘッダをクリックすると、その列がソートされて
そのヘッダの背景の色が青くなりますが、ここも、クリックしてソートはしても、
ヘッダの背景の色はそのまま変わらない、というようにすることはできますか。

要するに、テーブル上で何か操作しても、見た目がまったく変わらないように
したいのです。
965名称未設定:2007/05/12(土) 11:14:43 ID:DftWHHom0
>>962
C++なんて憶えなくていいよ
966名称未設定:2007/05/12(土) 11:19:35 ID:iIMSf5JT0
>>964
>(選択できなくする、というのでもいいですが)

-(BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;

>クリックしてソートはしても、
>ヘッダの背景の色はそのまま変わらない、というようにすることはできますか。

できるが、ソートの処理は自分で書く必要がある。
967名称未設定:2007/05/12(土) 15:51:41 ID:zX70/krq0
クリックしてソートした(された)後でヘッダビューのハイライトを消せば?
行の選択も同様に。
968名称未設定:2007/05/12(土) 15:54:02 ID:zX70/krq0
または、
ttp://mattgemmell.com/source/
ttp://mattgemmell.com/files/source/itablecolumnheader_screenshot.png
を参考にヘッダを自前で描くとか。
969964:2007/05/13(日) 15:51:31 ID:+UFxOVrc0
>>966-968
できました。ありがとうございました。

ついでながら、
NSTableColumn に、コードから attributes や formatter を設定するには、
どのようにすればできるでしょうか。

InterfaceBuilder で「左詰め」「右詰め」、数字や日付のフォーマットを
NSTableColumn に設定するのと同じことを、コード上でやりたいのですが。
970名称未設定:2007/05/13(日) 18:52:57 ID:fwGlIQEx0
>> 952
GCは、オブジェクトが他のオブジェクトから参照されなくなったら、オブジェクトが解放される。
ただ、それだけ。
retain/(auto)releaseと違うのは、こういう参照カウントやオブジェクトのマーキングを
システムがやってくれるわけだ。オブジェクトが解放されるタイミングは、システムが
勝手にやるから、なーんにも気にする必要はありません。

便利だろう?
971名称未設定:2007/05/13(日) 19:39:35 ID:zMxgkGBh0
http://www.big.or.jp/~crane/cocoa/1000_webKit/noProgBrowser/index.html
を見ながら同じようなものをMacOS10.4.9/Xcode2.2.1で作ろうとしたのですが、WebKitを使ったアプリを実行すると、以下のログを出して止まってしまいます。

[Session started at 2007-05-13 19:38:32 +0900.]
2007-05-13 19:38:34.210 MiniBrowser[4080] An uncaught exception was raised
2007-05-13 19:38:34.210 MiniBrowser[4080] *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)
2007-05-13 19:38:34.210 MiniBrowser[4080] *** Uncaught exception: <NSInvalidUnarchiveOperationException> *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)

MiniBrowser はシグナル 5(SIGTRAP)により終了しました。

超初心者ですが解決策を教えていただけないでしょうか。
972名称未設定:2007/05/13(日) 19:54:25 ID:0ntCk5BN0
Webkit.frameworkをプロジェクトに追加した?
973名称未設定:2007/05/13(日) 21:28:00 ID:zMxgkGBh0
>>972
プロジェクトにWebKit.frameworkを追加した際、「デネーショングループのフォルダに項目をコピー」してしまったのが原因でした。
助かりました。ありがとうございます。
974名称未設定:2007/05/13(日) 21:59:17 ID:habiHiaf0
java bridgeについて、教えてください。

[NSJavaVirtualMachine defaultVirtualMachine];
id arrayList=[[NSClassFromString(@"java.util.ArrayList") alloc] init];
[arrayList add:@"stingValue"];
NSLog(@"value 1=%@",[arrayList get:0]);

上記の様なコードで、結果を得る事はできましたが、
public なコンストラクタが無い場合は、どうすればいいのでしょうか。
例えば、Charset#forName(String charsetName)みたいな場合です。
975名称未設定:2007/05/16(水) 16:18:52 ID:5XpwjZah0
Mac の API って Unicode 扱える?
UTF-8? 16?
976名称未設定:2007/05/16(水) 17:17:33 ID:XnRywkSm0
どっちもおけ。えんでぃあんも。
977名称未設定:2007/05/16(水) 17:50:37 ID:5XpwjZah0
おお、すごいね。
978名称未設定:2007/05/16(水) 18:44:47 ID:RUegA9bD0
「MacのAPI」が何を指すのかにもよるだろ。
Toolbo(ry
979名称未設定:2007/05/16(水) 19:02:58 ID:bn17HlFy0
時々はText Encoding Converterのことも思い出してあげてください。
980名称未設定:2007/05/16(水) 19:30:51 ID:gBJZ6oQq0
>>978
ATSUIやFile ManagerやUnicode UtilitiesのUnicodeサポートが無いと
GUIレイヤは動けないよ。
あと徐々にICUも使う様になってるから、これもUnicode APIの一部だ。
981名称未設定:2007/05/16(水) 23:27:40 ID:bnwwfg1l0
ディレクトリの中身を全部調べてバイト数を出したいのですが、
サブフォルダの中身までの全てのNSDataを返すようなことって
無理なんでしょうか?
982名称未設定:2007/05/17(木) 00:35:04 ID:zmeb2Yaq0
手間を厭わなければ可能なんじゃないかね
983名称未設定:2007/05/17(木) 02:00:21 ID:KspWSed10
バイト数調べるのにいちいちNSData作ることないじゃん
984名称未設定:2007/05/17(木) 07:53:49 ID:7vBb1wYu0
リソースの画像ファイルや音声ファイルなどを隠蔽して
ユーザーがアクセスできないようにするにはどうしたらいいでしょう?
985名称未設定:2007/05/17(木) 09:18:42 ID:4YfC39v6O
ユーザのレベルによる。
986名称未設定:2007/05/17(木) 10:32:22 ID:o9IsuCCQ0
リソースマネージャリソースにすれば今どきのユーザには開けまい
987984:2007/05/17(木) 10:40:34 ID:czqOaVhJ0
とりあえずパッケージを開いた時にファイルが取り出せない様に、と考えていました。
リソースマネージャリソースぐぐってみます。
988名称未設定:2007/05/17(木) 10:55:48 ID:HX67BV0m0
パスワード付きのZIPとか。
989名称未設定:2007/05/17(木) 11:12:51 ID:lSSaEaVj0
ZIPなんてヤワなパスワード付けたら簡単に破られるし、起動も遅くなる。
リソースってのはいいかもしれないな。IntelMacだとClassic環境がないから
ResEditは使えないし、Resorcererがないと中を見ることが出来ない。
カスタムリソース作るのも簡単だしな。
990名称未設定:2007/05/17(木) 12:01:14 ID:fgoaspiG0
Cocotronってどうよ?
991名称未設定:2007/05/17(木) 14:58:28 ID:kOYOmMk4O
何ヶ月か前に全く同じレスを見た
992名称未設定:2007/05/17(木) 17:40:32 ID:w4V8jFQv0
でも実際のところ、>>987みたいなケースに備えて
リソースの暗号化みたいな機能があると嬉しいかな。
中身はAES暗号化されていて、loadするときに鍵が必要だとか。

もともとフレームワーク自体がもっさりしてるから、復号化のオーバーヘッドとか
そんなに気にならんと思うし。
993名称未設定
Carbon rsrcにするぐらいなら、Mach-Oのセグメントに入れるとか。