5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :名称未設定:2006/10/22(日) 12:13:22 ID:RsZTQ6BQ0
初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。

前スレ
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
これとか
http://andymatuschak.org/articles/2006/08/27/clues-to-objective-c-2-0

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
http://hetima.com/pblog/article.php?id=118とかかな

35 :32: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;
};
-------------------------------------------------------------------------------


49 :48: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"


51 :48: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 にしておくと自動的にコンパイラがやってくれるはずだけど。

55 :48: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を使わなくちゃ。

59 :56: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
objc_msgSend() 関数を使うのが簡単だと思う。
ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/9objc_runtime_reference/chapter_9_section_9.html

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 になってから、
パフォーマンス制限がなくなったのが素晴らしい。

88 :86: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 読め

103 :94: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がデフォルトハンドリングを提供していないだけ。
サブクラスつくればいいだけだし大した手間ではないのでは?

107 :94: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 上でファーストレスポンダが「変化した」のを
キャッチするには、どういった方法があるでしょうか。

130 :122: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上級者。

139 :129: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

これで理解できるか?

154 :144: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で
アクション作ってるんじゃないよね?

156 :144:2006/12/02(土) 16:53:49 ID:9T+Irg/B0
>>155
すみません。もう少し自分で追求してみます。


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

そういうものかと思っていましたorz
とりあえず、152-153で普通にやってみます。

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

あと一つ疑問なのですが、別のメソッドに変数の内容を渡す場合は、
引数として渡してあげれば良いと思うのですが、同一クラスの
複数のメソッドで変数を共有できないでしょうか。
変数が多くなってくるとselfにメッセージを
送って引数で渡すのが非効率的だと思うのですが。
よろしくお願いします。


158 :144: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
クラス名が違うんだったら、問題無いでしょ。


172 :170: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になります。

177 :170: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
上級編、登場。
http://developer.apple.com/jp/documentation/japanese.html#CocoaSeminar2

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
上級編落とせるようになってた

202 :199: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

205 :177: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
以下ワーニングの話題禁止。

207 :177: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で開いてみれ

244 :236: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だろ
よく知らんけど

247 :236: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も対応してくれてるね。

私はアンスコが気持ち悪いから絶対やらんけれど。

252 :236: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の言ってるのはそう言うこと、だと思われる。

256 :236:2006/12/19(火) 22:49:27 ID:USDXPh+I0
>>234-254の回答してくださった皆様、いろいろと
どうもありがとうございました。

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

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


257 :236:2006/12/19(火) 22:54:26 ID:USDXPh+I0
>>255
だんだん分かってきました。ありがとうございます。

258 :名称未設定:2006/12/19(火) 23:54:59 ID:ZCa/ob+e0
インスタンス変数はallocかinitで0初期化されるんじゃなかったけか?

259 :248: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];

なんか真面目そうな人なので一応お答え。もう去ったかもしれないけど。

260 :248: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

262 :236: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見たいな物なのかなー。




266 :265: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 (必要があれば描画)

272 :265: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のオブジェクトをコードで生成すればいいのでは

274 :270: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];
で事足りると思うんだけどなぁ。

277 :270: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];
を加えるとどうでしょう?


279 :270: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 が全部読み込まれたことを知る方法ってありますか?


282 :270:2006/12/28(木) 20:42:20 ID:5zlbm+bL0
すみません。事故解決しました。

>>278のRunLoopがヒントになり、冷静に考え直したところ、
シートを表示中に書き換えようとしていたと気づきました。
単純ミスでした。助言をくださった方々、ありがとうございました。

283 :名称未設定:2006/12/28(木) 21:26:29 ID:xghedo0N0
>>281
AppDelegateのmanagedObjectContextを読めばわかるよ

284 :281:2006/12/28(木) 22:26:09 ID:6mTdw5KB0
>> 283
すみません、managedObjectContext を読むと何がわかるのでしょうか。

やりたいことは、アプリを立ち上げて data が読み込まれた後で、
Core Data の一時属性を生成することです。


285 :283: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データを加工することで
目的の動作を実装することができるのではないでしょうか?


286 :281: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)になってる?

307 :305:2006/12/31(日) 12:55:15 ID:+mX5Oh9B0
>>306
すみません、これはどこを見ればわかるのでしょうか。

「ターゲット」「ビルド」「SDK パス」であれば、
/Developer/SDKs/MacOSX10.4u.sdk
になっています。


308 :305: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でもできる。

334 :330: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個できあがるだけと思われ。
それでもいいならいんじゃね?
オブジェクト指向の観点からは間違い。

337 :330: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が呼ばれる。


という感じだったはず。

360 :357:2007/01/08(月) 18:13:47 ID:vJdJwfnV0
>>358 ォクス

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

init の中で、nib をロードする行より後ろに書いた処理が、awakeFromNib が
呼ばれたときに認識されてなかったんで焦りますた

361 :357: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
訂正
パッケージのアーカイプを表示

パッケージの内容を表示

371 :364: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
http://homepage.mac.com/mkino2/backnumber/2001_02.html
14日の記事

374 :名称未設定:2007/01/09(火) 22:03:53 ID:ctWYUA740
>>373
おぉ、ありがとうございました。やはりCocoaで実現する方法があったんですね。
でも、これ非公開機能なんですね(何故??)。

HMDTはどうやってこれを調べたんでしょうね?どこを探すの???

375 :名称未設定:2007/01/09(火) 22:12:33 ID:chh5XqBB0
こういうのとか
http://journal.mycom.co.jp/column/objc/001/

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
>>379
http://itpro.nikkeibp.co.jp/article/USNEWS/20070110/258323/

残念

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がフレームワークを公開していたと思うけど。

392 :388: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
>>393
改行コードは正しい?
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/crlf.html

396 :393: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
みたいなことをやらせるとかかな。

400 :HK: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: を実装して食べてしまえばいいと思うし。

408 :265: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カムバックーー!!!だね

411 :409:2007/01/18(木) 20:48:43 ID:DeT/IsIi0
だよねー。
CoreDataがP2Pでネットワーク対応とかなら色々と活用範囲が広がるんだけどなー
自力実装だとクラサーの方が楽だし

412 :265: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 のサブクラスで
そのように処理しています。

421 :418:2007/01/22(月) 11:46:11 ID:5zx0n9WC0
>>419
それも考えたのですが、NSScrollViewを使わずに単独でも扱えるカスタムビューを
作りたかったので。

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

最近のiPhotoではスクロール時に、撮影日がリアルタイムで表示されるのですが、
あんな風にスクロール時にリアルタイムで反応できれば良さそうなんですが…。

422 :418: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: をつかってくだされ

425 :423:2007/01/22(月) 20:37:38 ID:AkhlHIkA0
>>424
NSDocumentControllerのnoteNewRecentDocumentURLで
できました。
ありがとうございます。

426 :名称未設定:2007/01/23(火) 21:37:48 ID:1zj09Vp90
http://hmdt.jpが変なんですが?

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さんはもう……。

435 :mkino: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
何時頃を"最近"と言うのかは分からんが。
ずいぶん前からあるぞ。

448 :446: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?
それとももっと簡単な方法ある?

449 :446: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
を使うのが一番手っ取り早いと思いますよ。


455 :446:2007/01/28(日) 02:42:40 ID:VyIprSyj0
>>448
なるほど。ありがとう。

456 :446: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さんにも個人的体験があってのその発言なんだろうけどね。
</ちらしの裏>


480 :476: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してた。

510 :501: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
自分で探すしか。
エルゴとか募集してなかったっけ。

565 :563: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
>>563
http://cocoadev.jobcoin.com/

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
>>579-581
ttp://journal.mycom.co.jp/column/osx/212/
ttp://journal.mycom.co.jp/column/osx/215/
まだ実用性はかなり低そう。

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、みたいな感じ。

610 :600: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なら樹海で見かけた。

635 :629: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
>>638
http://numata.designed.jp/programming/cocoamemo/index__files/a05d7d35b3ac8318a26589d89aaa686f-7.html


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文字列を(内部表現が固定化
するような)リテラルとして書くのを許したくない。

とかそんなんじゃないかなぁ。

666 :665: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の日本部門(一応あるよね?)の力が弱いんだろうね

678 :HK: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
サブクラス作れや

691 :689: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 になってるだろうから。

693 :689: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はクラスオブジェクトを指します。

他の理由かもしれないし、警告をよく読むのをお勧めします。

700 :697: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:]

708 :704: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周りもできるよ。

727 :725: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はもうすぐ出るはずですよね?

732 :727: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
OOMORI.com
http://www.oomori.com/cocodesu/index.html
Cocoa Referenceの日本語概説 サンプルコード有り

Cocoa Break!
http://park15.wakwak.com/~concordia/cocoa_break/
ADCドキュメントの個人翻訳サイト

Cocoaはやっぱり!
http://www1.big.or.jp/~crane/cocoa/

HDMT
http://hmdt.jp/
http://homepage.mac.com/mkino2/index.html

Macintosh Developer Online
http://msyk.net/mdonline/msgbox/
http://msyk.net/cserver/mdo.html

ココア生活
http://www.miyakun.com/cocoa/

Nito's Page
http://wwwa.dcns.ne.jp/~nito/

Objective-C入門
http://wisdom.sakura.ne.jp/programming/objc/index.html

Objective-C入門 Mac OSX編
http://www.oklab.org/program/objective-c_osx.html
http://www.oklab.org/program/objective-c_linux.html

736 :名称未設定:2007/03/15(木) 22:33:54 ID:ubmr7RVJ0
Mac OS X Dev-jp Mailing List のLOG公開
http://www.tech-arts.co.jp/macosx/macosx-dev-jp/log.html

特定非営利活動法人MOSA
http://www.mosa.gr.jp/

Cocoaでいこう! Macらしく
http://www.remus.dti.ne.jp/~yoshiki/cocoa/ed1/

XCodeを使ってみよう
http://www.tsg.ne.jp/text/2004/joho/xcode.html

Macプロ裏ミング日記
http://www.ottimo.co.jp/koike/

Objective-Cメモ
http://www.gaku.net/ukki/Objective-C%E3%83%A1%E3%83%A2

Cocoa2
http://www.officek.jp/skyg/kdoc/dev/cocoa2.shtml

737 :名称未設定:2007/03/16(金) 00:12:25 ID:FROK32b90
>>727
逆だ。Carbonの方がきついぞ。

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

Cocoaならいろいろ部品も揃っていて楽だよ。

738 :727: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
聞く前に試そうよ。

766 :764: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
>ttp://aarone.org/cocoaicu/

769 :764: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
ヒレガス改訂本の、邦訳マダー?

774 :770:2007/03/22(木) 15:07:10 ID:0mYS3ZUU0
ありがとうございます!!>772


775 :名称未設定:2007/03/22(木) 17:26:42 ID:9sVyO2YS0
>>773
出版社にメールしれ
http://www.pearsoned.co.jp/hed/contactus.html
http://www.pearsoned.co.jp/hed/search/onlinecatalog.html?id=282

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

216 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)