2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 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
面倒とか言う奴も、適当なローカライズする奴も
プログラムなんてやめちまえ。

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

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

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)