Cocoaはさっぱり!!! version.X(10)

このエントリーをはてなブックマークに追加
1Cocoa
前スレが終了したみたいなので立てました。
過去ログとかよくわからないのでフォローお願いします。
2名称未設定:2008/05/20(火) 22:43:11 ID:sG8g16K80
前スレ

Cocoaはさっぱり!!! version.9
http://pc11.2ch.net/test/read.cgi/mac/1201106820/
3名称未設定:2008/05/20(火) 22:57:38 ID:8Odxygdm0
間違ってても(゚ε゚)キニシナイ!!

Cocoaはさっぱり!!! version.8
http://pc11.2ch.net/test/read.cgi/mac/1179498292/
Cocoaはさっぱり!!! version.7
http://pc11.2ch.net/test/read.cgi/mac/1161486802/
Cocoaはさっぱり!!! version.6
http://pc11.2ch.net/test/read.cgi/mac/1146391229/
Cocoaはさっぱり!!! version.5
http://pc11.2ch.net/test/read.cgi/mac/1124986925/
Cocoaはさっぱり!!! version.4
http://pc11.2ch.net/test/read.cgi/mac/1091927026/
Cocoaはさっぱり!!! Version.3
http://pc5.2ch.net/test/read.cgi/mac/1063295248/
Cocoaはさっぱり!version:2
http://pc11.2ch.net/test/read.cgi/mac/1036923528/
Cocoaはさっぱり!
http://pc11.2ch.net/test/read.cgi/mac/1007632025/
4名称未設定:2008/05/20(火) 23:10:29 ID:7Hvy2BoK0
>>1
乙。
5名称未設定:2008/05/20(火) 23:12:32 ID:7Hvy2BoK0
関連スレも貼っとこう

Macでプログラミング{8}
http://pc11.2ch.net/test/read.cgi/mac/1195385771/

MacOS XをUnixとして使ってる人の為のスレ その13
http://pc11.2ch.net/test/read.cgi/mac/1190016804/

Cocoaはさっぱり!!! version.9
http://pc11.2ch.net/test/read.cgi/mac/1201106820/

Xcode part6
http://pc11.2ch.net/test/read.cgi/mac/1201693264/

【マック】Macintoshプログラミング質問箱
http://pc11.2ch.net/test/read.cgi/tech/1113058054/

Mac OS Xでの開発環境はどれがイイ?
http://pc11.2ch.net/test/read.cgi/tech/1163314891/
6名称未設定:2008/05/20(火) 23:23:40 ID:RwxhciDA0
ObjectiveC++最高ぉ
7名称未設定:2008/05/20(火) 23:30:39 ID:tYSiPPVw0
現実
ttp://slashdot.jp/developers/article.pl?sid=08/04/06/2313251

プログラミング言語別求人件数(アメリカ)

Java 16479件
C++ 8080件
C# 7780件
JavaScript 6749件
Perl 5710件
PHP 2641件
Python 1408件
COBOL 1207件
Ruby 769件
Objective-C 38件 ←←←←
Lisp 33件
8名称未設定:2008/05/20(火) 23:37:49 ID:KHEABemo0
これも関連スレに入れてあげてください
Objective-C [ObjC part:3];
http://pc11.2ch.net/test/read.cgi/tech/1186543111/
9名称未設定:2008/05/20(火) 23:50:51 ID:HRwZ9j3i0
>>7
Java がトップとは、当たり前のような、そうでないような…
10名称未設定:2008/05/21(水) 00:08:18 ID:rWpwWuzp0
え、当たり前以外の何物でもなくね?
11名称未設定:2008/05/21(水) 09:23:41 ID:f3o28oAX0
そもそも今MacOSX用アプリを開発してる会社が何社あるのやら・・・。
12名称未設定:2008/05/21(水) 10:22:01 ID:Y93RS+ry0
アメリカには一杯あるよ
日本にはほとんどないけど ...
13名称未設定:2008/05/21(水) 21:18:40 ID:21cJALCV0
HMDTが募集してんじゃんw
14名称未設定:2008/05/21(水) 22:13:00 ID:L3QcPzgd0
>>7
俺、Lispやろうかな。へたれPGの俺は求人件数よりも求人倍率の低さ
で採用されるかもしれないから。
15名称未設定:2008/05/22(木) 00:54:28 ID:pDh7HLnh0
それってさらに
Emacs Lisp
Common Lisp
Scheme
とかに細分化されてるだろうからなぁ
一つに絞りたがっても意味ないよ

煽りじゃなく色々やった方がいいよ
得意分野として特定の言語を伸ばすのはアリだけど、特性の違う2、3の言語にまたがっといた方がいい
折角Macportsで手軽に色々入れられるんだし
16名称未設定:2008/05/22(木) 19:23:46 ID:F0xUDbhN0
ようつべを利用したいのですが、サンプルプロジェクトによくある
GData.frameworkというのはどうすれば手に入れられるのでしょうか?
17名称未設定:2008/05/22(木) 19:48:31 ID:46WSZxhf0
ヒレガス本第3版今届イタ━━━━(゚∀゚)━━━━!!!!
Garbage Collection も Core Animation も載ってるね
つーか、やっぱり Leopard に対応するために、当初の予定より
出版が遅れたんだろうな‥
18名称未設定:2008/05/22(木) 19:51:27 ID:QT31KVFx0
そういえば、Leopardも遅れたな。
19名称未設定:2008/05/22(木) 20:02:40 ID:O70xzo5x0
>>17
第2版と比べて
どれくらい変わってます?
目次でいいので教えて。
2017:2008/05/22(木) 20:23:52 ID:46WSZxhf0
>>19
Chapter 名の変化で比較するとこんな感じ

+ 追加(第3版のみ)
- 削除(第2版のみ)
→ 変更
他は同じ

+ Memory Management
+ Target/Action
Bindings and NSController → Key-Value Coding, Key-Value Observing
+ NSArrayController
+ Basic Core Data
Responders and Keyboard Events → Keyboard Events
Working with Fonts and NSAttributedString → Drawing Text with Attributes
+ Web Services
- Creating Interface Builder Paletts
- AppleScript
+ View Swapping
+ Core Data Relationships
+ Garbage Collection
+ Core Animation
Cocoa and OpenGL → A Simple Cocoa/OpenGL Application
+ NSTask
- Creating Frameworks
- GNUstep
2119:2008/05/22(木) 21:11:01 ID:O70xzo5x0
>>20
ありがとう!
22名称未設定:2008/05/22(木) 22:56:09 ID:3rHyH/v/0
ページ数も増えてるよね>第3版
23名称未設定:2008/05/22(木) 23:11:40 ID:u2zk9cyj0
>>16
ググれ。
つーか、googleに聞け。
つーか、googleを調べろ。
2417:2008/05/22(木) 23:41:56 ID:46WSZxhf0
>>22
第2版 450ページ
第3版 433ページ
25名称未設定:2008/05/23(金) 00:17:04 ID:T833at980
>>23
Googleとは小一時間格闘して敗北したんですけど、
objective-c用?のをダウンロードできるところが無さそうでした。
(っていうか、そもそもそういうものなのかもわからず)

ソースを落としてコンパイルするのですかね?
26名称未設定:2008/05/23(金) 00:29:38 ID:o+/m2vgU0
いや、ググったら二秒で出てくると思うが ...
http://www.google.com/search?q=GData.framework
の二つ目に
http://code.google.com/p/gdata-objectivec-client/
があるとおもうんだけど、あなたの目は節穴?
27名称未設定:2008/05/23(金) 02:24:54 ID:j99xmi9d0
縦横比を維持しつつリサイズされるQTMovieViewはどのようにしたら作れるのでしょうか。
http://brpg.hp.infoseek.co.jp/qttunes/
これのメインウィンドウの左下フレームのような感じのものです。
28名称未設定:2008/05/23(金) 02:48:48 ID:3AyFrRZN0
>>27
attributesにPreserves Aspect Ratioってチェックがあるけど。
29名称未設定:2008/05/23(金) 03:01:23 ID:j99xmi9d0
>>28
ありがとうございます。助かりました。
30名称未設定:2008/05/23(金) 04:21:31 ID:dXEXmQ0i0
>>27
こういうのってなんで作ってるんだろうと思う
ターゲットはいるのかな、趣味なのかな
31名称未設定:2008/05/23(金) 04:25:01 ID:IL6J9Zwh0
>>30
ゆくゆくはiTunesよりも高機能に育てる過程の一つとか。
32名称未設定:2008/05/23(金) 09:58:56 ID:cwPsB5600
シンプルに連続再生して垂れ流ししたい
iTunesが重い
iTunesが扱えないフォーマットが扱える(QuickTimeで再生出来れば)
Cocoaプログラミングの勉強

などです。
33名称未設定:2008/05/23(金) 22:33:32 ID:T833at980
>>26
ああ、お恥ずかしい限りで。
そのページは何度も見ていたはずなのですが(^^;
なんというか、「GData.Framework」という文字ばかり探してました。
DLしてビルドしたら(エラーになりましたけど)GData.Frameworkフォルダが生成されたので
これを使えば良いのだろうと思って次に進みます。
34名称未設定:2008/05/23(金) 22:51:17 ID:jKCdJQha0
Foundationは思想かなにかですか?
35名称未設定:2008/05/24(土) 01:12:15 ID:DcLAwtro0
>>32
iTunesが扱えないフォーマット、に関してはすごく同意する
ようするに他のフリーソフトに関してもしがらみがないってある種強みだよね
36名称未設定:2008/05/24(土) 01:22:23 ID:LruzwE630
現在、NSOutlineViewの使い方を勉強中です。
で、サンプルプロジェクトやネット上での解説ページを見ていたところ、

return (item == nil) ? YES : ([item numberOfChildren] != -1);

の様な表記をよくみかけました。
これはどのように解釈すれば良いのでしょうか。
37名称未設定:2008/05/24(土) 01:55:20 ID:gZp6b3Ai0
>>36
itemがrootなら、YESを返す。
itemが内包数0のフォルダ(num = 0)ではなく、ファイルなのでexpandしないようにする。

つーか、その質問だけではちょっと意味不明だよ。
FileSystemItemのアレについて質問しているのだろうけど。
3836:2008/05/24(土) 03:01:01 ID:NtDdGehO0
>>37
申し訳ありません。
ID変わったけど>36です。

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return (item == nil) ? YES : ([item numberOfChildren] != -1);
}

そして質問の仕方も抽象的でした。申し訳ありません。
仰るとおりFileSystemItemのアレなのですが、
具体的には「? YES :」の部分の解釈の仕方、ということです。
とりあえず、頂いた答えとサンプルコードを再度見返してあれこれ考えてみたのですが

return a ? b :c;
となっていた場合、aを評価した結果がYESならbを、NOならcを返す、という理解でよろしいでしょうか。

Cocoaにはあまり関係していませんでしたね。。。すいませんでした。
39名称未設定:2008/05/24(土) 03:26:59 ID:gZp6b3Ai0
>>38
> となっていた場合、aを評価した結果がYESならbを、NOならcを返す、という理解でよろしいでしょうか。
うん。
4036:2008/05/24(土) 03:28:15 ID:NtDdGehO0
>>38
ありがとうございました。
41名称未設定:2008/05/25(日) 17:58:40 ID:lLZMSYBY0
>>35
wmvとかflvとか、コンテナmovにしちゃえばいいのに。
全部まとめて管理できる所に意味があると思う。
42名称未設定:2008/05/27(火) 23:52:33 ID:CZYQD03h0
萩原さんの「詳解 Objective-C 2.0」
もう手に入れた人居ます?

買いなのかな?
43名称未設定:2008/05/28(水) 09:09:00 ID:L3/IqKQ00
44名称未設定:2008/05/28(水) 12:55:17 ID:opb4iFeH0
アマゾンで、ヒレガスさん3+萩原さん2.0=9,321円、萩原さん2.0は明日到着
45名称未設定:2008/05/28(水) 21:49:31 ID:VttZwart0
>>42
>買いなのかな?

ttp://hmdt.jp/
46名称未設定:2008/05/29(木) 00:53:38 ID:WGFKGrSC0
>>42
まだぱらぱらめくった程度だけど
おととしに出た「Objective-C Mac OS Xプログラミング」の
バージョンアップといった感じ。章の構成や内容は同じものが多いです。
前の本を持っていないなら、買って損はしないと思うよ。

4742:2008/05/29(木) 08:33:18 ID:rVgTXt350
>>46

前の本も
前の前の本も
持ってるだけに
悩むな〜

今日出勤前に本屋に寄って
少し眺めてから決めます。
48名称未設定:2008/05/30(金) 00:33:33 ID:PlwTpTkX0
Cocoaと言うよりObjective-Cの質問?なのですが、いいですか?

現在Cで記述したプログラムがあります。
データの最大数は不定なので、可変でデータを保持したかったのですが、面倒だったので、
データ領域を大きめに確保して、固定長の配列として処理しています。
データは配列の番号でインデックスされ、歯抜けになっても新たなデータが来ると若い順に
埋めていきます。

ObjCに移植するにあたって、NSMutableArrayに置き換えようと思ったのですが、NSMutable
Arrayは要素が消されると自動的に配列を詰める、とのことで、配列番号での索引が利かなく
なるようです。

このような場合、データ数を可変で確保でき、且つ、配列番号での索引ができるいい方法が
ありますか?
49名称未設定:2008/05/30(金) 00:40:51 ID:xrC+L8bu0
>>48
別に Obj-C は C の拡張なので、すでに配列で出来てる箇所を
NSArray に変える必要がないとおもうんですが ...

どうしても Cocoa にかえたければ、NSDictionary つかって、数字じゃなくて文字列でタグをつければしまいだとおもいます。
50名称未設定:2008/05/30(金) 00:47:59 ID:CkhV8SZM0
>>48
要素を削除するときにその位置にあるオブジェクトを取り除くのでなく、
値をNSNullに変更するようにすれば、元の処理と同じようにできると思います。
元のCのコードでもNULLにするなどしていますよね?
51名称未設定:2008/05/30(金) 23:32:12 ID:L1G/osgq0
>>47
>持ってるだけに
>悩むな〜

今日尼から届いた。1.0→2.0の変化詳しく50ページほど増量。
ま、前版もってても買いじゃね、とおもた
52名称未設定:2008/05/31(土) 00:41:36 ID:9zILcVHo0
>>49
折角良さげなものがあるので、固定長配列を可変長に変えたかった、というのが主な理由です。

>>50
なるほど、考えてみれば別に取り除かなくてもいいんですもんね。有り難うございました。
5346:2008/05/31(土) 01:28:09 ID:m3HKOXME0
>>47
10.5の新しいトピックを中心に1/3くらいまで読み進めました。
32/64bit、ガーベジコレクションで注意が必要なところなど、
細かいとこが丁寧にフォローされてる。
てゆーか、罠多すぎ>ガベコレ

・10.5以降でプログラムを書かない
・あとで買えなくても泣かない
というのでなけりゃ、買いかと。

54名称未設定:2008/05/31(土) 12:29:28 ID:WjiDQvAu0
名古屋大須の三洋堂で買ってきた。まだ2冊あったぞ。昨日の話だけど。
55名称未設定:2008/05/31(土) 13:03:56 ID:MFBihJHB0
今Amazonから届いた
けど読む暇がない
56名称未設定:2008/05/31(土) 16:52:17 ID:EZpALD+x0
>あとで買えなくても泣かない
これが一番問題になるなw
57名称未設定:2008/05/31(土) 22:53:52 ID:r05FKlJl0
IM制御をしようとしてます。
前スレ 915 を参考にして、ターミナル上で、ことえり日本語入力時に

int main() {
TISInputSourceRef tis = TISCopyCurrentASCIICapableKeyboardInputSource();
TISSelectInputSource(tis);
CFRelease(tis);
}

を実行すると、見た目(メニューバーのとこ)は英字になるのに
いざ入力しようとすると日本語のままなんですが、
うまくいく方法ありますか?
58名称未設定:2008/06/01(日) 11:09:53 ID:bmGuDI3g0
>>57
うちではそれでちゃんと動く気がする
(ことえり、egbridge とも)
5957:2008/06/02(月) 00:17:15 ID:5l7yqjBi0
>>58
ども。
一旦、ターミナルを非アクティブにして、もう一度アクティブにすると
入力も英字になるんですけど...

そういう処理を入れりゃいいのか。。
60名称未設定:2008/06/02(月) 05:46:08 ID:U2iAatA00
>>59
それしなくてもうちは英字入力に切り替わるけど?
日本語変換中の文字が残っている場合のこと?その状態でどうやってプログラムを走らせればいいか良くわからんけど ...
6157:2008/06/02(月) 15:42:09 ID:5l7yqjBi0
>>60

1、ターミナル上でIM制御プログラムを走らせる。
2、cmd+spaceでひらがな入力にする。
3、「あああ」と入力
4、c-pで、コマンド履歴をだしてそっからプログラムを走らせる。

3で日本語変換中の文字が残っていても残っていなくても、
変換確定済でも未確定でも
見た目(メニューバーのとこ)は英字入力になるが、
いざ入力すると、日本語(ひらがな)が入力される。

という感じです。
10.5.2
i686-apple-darwin9-gcc-4.0.1
zsh 4.3.4 (i386-apple-darwin9.0)
62名称未設定:2008/06/02(月) 23:49:54 ID:U2iAatA00
>>61
うちでは再現しないよ ... 謎。
メニューバーも英字になって、入力してもちゃんと英字になります。
ためしてみたけど、bash/zsh のちがいでもなさそう。
IM はなにをつかってる? キーボードは英語キーボードなのかな。
こちらは日本語キーボードなので。それぐらいしか違いが見当たらない。
63名称未設定:2008/06/03(火) 01:33:09 ID:wMSlazAP0
Interface Builder 3で、UserDefaultsと"ThreadURL"キーとWebViewの"mainFrameURL"をバインディングしたいのですが操作方法がわかりません。
WebViewのバインディングのインスペクタを見てみると、"Editable","Hidden","ToolTip"しかバインディングできる項目が無く、"mainFrameURL"をバインディングできません。
WebViewをMyClassにデリゲートして、ソースからバインディングすればどうにかなりそうな気はするのですが、InterfaceBuiderだけでする方法は無いのでしょうか。

あと、IB3では、
http://www.big.or.jp/~crane/cocoa/1100_binding/01_whats/index.html
のようにテキストフィールドとWebViewを直接つなぐことは出来なくなったのでしょうか。
64名称未設定:2008/06/03(火) 01:34:22 ID:wMSlazAP0
>>63
訂正
×UserDefaultsと"ThreadURL"キー
○Shared User Defaults Controllerの"ThreadURL"キー
65名称未設定:2008/06/03(火) 06:10:10 ID:pp+RRbGE0
あるViewの上にテンプレートのようなViewを置きたいと思ってます。

下のViewは通常通り動くものが出来上がっていて、その上にImageViewをのせて
そのViewに
- (void)mouseDown:(NSEvent *)theEvent {
[[self nextResponder] mouseDown:theEvent];
}
- (void)mouseUp:(NSEvent *)theEvent {
[[self nextResponder] mouseUp:theEvent];
}
とか各種イベントをスルーするようにすれば下に行くものだと思っていたらう
まく下のViewにイベントが渡って行きませんでした。何か根本的な考え違いが
あるのでしょうか?

66名称未設定:2008/06/03(火) 07:40:43 ID:IEedy5rj0
superviewに渡すもんじゃない?
67名称未設定:2008/06/03(火) 08:03:37 ID:91xa2rp50
何をしたいか分からんけど、
下のviewの描画をオーバーライドすればいいんじゃね?

- (void)drawRect:(NSRect)rect {
[super drawRect:rect];
//テンプレ描画
}
68名称未設定:2008/06/03(火) 08:10:05 ID:pp+RRbGE0
>>66 >>67
上に乗っているViewは下のViewのsubViewではありません。描画上重なっている
だけで、上のテンプレート表示は下のViewより大きくなる場合があります。

イメージのオブジェクトがいくつかあって、その上に定規のステンシルがオー
バーレイで乗っている状況です。この状態で定規は動かさず、下のオブジェク
トの操作がしたい訳です。
69名称未設定:2008/06/03(火) 08:49:49 ID:oXsq6zVd0
>>63
う〜ん、たしかにかなり変わってるね。
IB3 でも、単純に URL の中身を表示させたかったら、WebView の takeUTLfrom: というアクションを NSTextField のターゲットにしておくという方法があるけど。
70名称未設定:2008/06/03(火) 12:58:41 ID:aw4+EDm70
弟がスーパーハカーを目指してるらしく、まずCから始めようと思ってるらしい
1からC言語を勉強するサイトってどこがいいかな。書籍はamazonで購入して発送待ち
目当てはMacやiPhoneで使う自作アプリだからObjective-Cをやりたいんだと思うけど
このままでは俺の3日間しかない黄金週間が潰されてしまうので助けてください
71名称未設定:2008/06/03(火) 13:08:46 ID:XD4GWoXw0
その黄金週間までに、スーパーハカーへの道を閉ざすというのも手だ。
72名称未設定:2008/06/03(火) 22:56:02 ID:kOTQ+iAx0
>>68
ViewにとってのnextResponderはsuperViewだよ。
だから、下のViewとsubViewの関係にないなら、イベントを中継するコードを手動で書かないとダメかもね。
つまり、マウスダウンした座標から、下のどのViewの上にいるのかを計算して、そのViewのmouseDown:メソッドを直接呼び出すみたいな感じ。
73名称未設定:2008/06/04(水) 00:09:16 ID:p9a2L9Dk0
acceptsFirstResponderでNOを返すんじゃだめだっけ?
これはキーイベントだけだったかな…
74名称未設定:2008/06/04(水) 00:09:50 ID:T5rsQU4g0
>>72
なるほど、下にオブジェクトがそこそこ沢山あるので結構複雑になりますね。
単に「イベントはスルーするけど描画はするレイヤ」を上に置きたいためだけ
なのに、、、
ウィンドウを上において[window2 setIgnoresMouseEvents:YES];しておいて
このウィンドウに描画してやるとうまく行くかと思ったけど、このウィンド
ウをクリックした瞬間に下のウィンドウが上にでてきた←あたりまえ
もう少し考えてみます。
75名称未設定:2008/06/04(水) 00:47:24 ID:T5rsQU4g0
>>73
- (BOOL)acceptsFirstResponder {
return NO;
}
- (BOOL)becomeFirstResponder {
return NO;
}
- (BOOL)resignFirstResponder {
return NO;
}
やってみました。残念ながらオーバーレイの
- (void)mouseDown:(NSEvent *)theEvent {
に処理が飛んできました。

76名称未設定:2008/06/04(水) 04:43:59 ID:l7IMH3zH0
おれだったら、superviewにわたして、superviewからsubviewを全部チェックして適合するviewを探すかな。
7757:2008/06/04(水) 09:51:22 ID:FsqvQyEC0
>>62
IMはことえり
MacBook CoreDuoのUSキーボード

anthyでも試してみたけど、入力するとやっぱりひらがな。。

他にintelマシンないし、Cocoaはさっぱりなんで、AppleScriptで逃げます..
ありがとう。
78名称未設定:2008/06/04(水) 13:23:44 ID:PLLPbHtE0
Xcode 3.1/IB3です
iTunesのように、閉じても"ウィンドウ"メニューから再び表示できるウィンドウはどのようにしたら作れるのでしょうか。
79名称未設定:2008/06/04(水) 14:33:09 ID:aQgm8y1m0
IBで"Dispose When Close"をoff
ウインドウメニューにアイテム追加。
アクションを oderFront: とかその辺。
80名称未設定:2008/06/04(水) 14:56:02 ID:KlJQ+yiW0
OS 10.5だと、iCalは起動してなくてもDockのアイコンをカスタムにしてますがこれどうやってるんでしょう?
-[NSApplication setApplicationIconImage:]の拡張っぽいものは見つかりませんが
81名称未設定:2008/06/04(水) 14:58:34 ID:2RtF4pPv0
NSFastEnumerationプロトコル実装させようと奮闘してるんだけど、
for ... inループの途中でbreakさせるとそのループが何度回ったかを
知る方法ってないのかな?
NSEnumerator使うと、
NSEnumerator *e = [a objectEnumerator];
x = [e nextObject];
y = [e nextObject];
for( z in e ){
. //何らかの処理
. if( xxx )
. break;
}
w = [e nextObject];
s = [e nextObject];
なんて文でもしっかり順番合うけど、なんか隠し機能でもあるのかな?
82名称未設定:2008/06/04(水) 15:05:01 ID:PLLPbHtE0
>>79
"Dispose When Close"が見つからないのですが、Release when Closedのことで良いのでしょうか。

メニューアイテムを追加して、orderFlontにつなぐ方法は、IB2/Tigerのときは問題なく動いたのですが、IB3/Leopardでやるとアプリが起動時にフリーズします。

makeKeyandOrderFlontにつなぐと、つないだメニューは消えてしまうのですが、ウィンドウメニュー一番下のウィンドウ名の項目が閉じても残るようになります。
この方法でもウィンドウを再度開くことができることはできるのですが、ウィンドウを開いているとき、そのウィンドウを示す項目がウィンドウメニューに2つ表示されてしまうことになります。
また、閉じたときも項目がぽっかり消えてしまうのでなんか違和感があります。
83名称未設定:2008/06/04(水) 15:45:21 ID:aQgm8y1m0
>>82
おお。それそれ。

>とアプリが起動時にフリーズします。
うちでは問題ないけどな。なんかあるのかな?

>ウィンドウメニューに2つ表示されてしまうことになります。
-[NSWindow setExcludedFromWindowsMenu:]
これ。
84名称未設定:2008/06/04(水) 20:21:25 ID:xLFIAeEO0
>>80
Info.plist に
<key>DockExtra</key>
<string>iCalDockExtra.bundle</string>
ってあって,Dockがこれを呼び出してると思う。
85名称未設定:2008/06/04(水) 21:03:50 ID:FtD8O2Sd0
>>81
基本的にNSFastEnumerationが何回ループしたのか、ベースとなっている配列オブジェクト側で知るすべは無いように思います。
そのサンプルコードがうまく動作しているのは、NSEnumeratorをベースとしているからだと思います。
NSFastEnumerationは一気に16回ぐらいループできますが、NSEnumeratorの場合は1回づつ回してるんじゃないですかね。
特に調べた訳ではないですが。
86名称未設定:2008/06/04(水) 21:09:23 ID:0ZiY20sM0
>>81
ttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_7_section_1.html#//apple_ref/doc/uid/TP30001163-CH18-SW1


For collections or enumerators that have a well-defined order―such as NSArray or NSEnumerator
instance derived from an array―the enumeration proceeds in that order, so simply counting iterations
will give you the proper index into the collection if you need it.

NSArray *array = /* assume this exists */;
NSInteger index = 0;
BOOL ok = NO;

for (id element in array) {
if (/* some test for element */) {
ok = YES;
break;
}
index++;
}

if (ok) {
NSLog(@"Test passed by element at index %d", index");
}
87名称未設定:2008/06/04(水) 21:28:03 ID:PLLPbHtE0
>>83
ありがとうございますm(_ _)m
8887:2008/06/04(水) 21:54:41 ID:PLLPbHtE0
File's Ownerの
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

[MainWindow setExcludedFromWindowsMenu: YES];
をしたところ、ウィンドウのメニュー項目が自動生成(?)されることはなくなりました。

しかし、makeKeyandOrderFrontに繋いだメニュー項目があると、ウィンドウを閉じたときエラーになります。

環境は、Mac OS 10.5.3(9D34)/Xcode 3.1(iphone_sdk_9m2173a)/Mac Book(現行モデル・竹)です。

コンソールには、以下のエラーが出力されます。
GNU gdb 6.3.50-20050815 (Apple version gdb-956) (Wed Apr 30 05:08:47 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".プログラムは読み込まれました。
sharedlibrary apply-load-rules all
Attaching to program: `/Users/admin/Developer/ClickJapanCocoaReporter/build/Release/ClickJapanCocoaReporter.app/Contents/MacOS/ClickJapanCocoaReporter', process 54373.
(gdb)
89名称未設定:2008/06/04(水) 21:54:51 ID:FtD8O2Sd0
>>74
NSWindowのサブクラスを作って、-displayか-displayIfNeededあたりをオーバーライドすれば、Viewの再描画処理に割り込めるんじゃないかな?
もし、うまく割り込めたら、すべてのViewの再描画が完了した直後に、
[[window contentsView] lockFocus] か [NSGraphicsContext setCurrentContext: [window graphicsContext]]で
グラフィクスコンテキストを設定して、すべてのViewの上に画像を上描きできます。
手前に、ViewやWindowを重ねてる訳じゃないので、イベントを取られる事はないはず。

90名称未設定:2008/06/04(水) 22:06:28 ID:mSrg2YBE0
91名称未設定:2008/06/04(水) 22:07:39 ID:mSrg2YBE0
>>88
gc つかってる?それなら window が解放されてしまってるんでないかと思うけど ...
9287:2008/06/04(水) 22:25:26 ID:PLLPbHtE0
>>91
ガベージコレクション?
どのようにしたら解放しないようにできるのでしょうか…

ウィンドウの設定はこんな感じになっています。
http://wktk.vip2ch.com/vipper81014.png
93名称未設定:2008/06/04(水) 22:30:53 ID:mSrg2YBE0
>>92
ガベージコレクションつかってると、nib のトップレベルに単においてあるオブジェクトは誰にも強く参照されてないから、GC が気が付いたとたんに削除しちゃうよ。
File's Owner の delegate にコントローラオブジェクトをつないであるなら、
さらにコントローラオブジェクトに outlet をつくってそこに window をつないでおかないといけません。

http://developer.apple.com/documentation/Cocoa/Conceptual/GarbageCollection/Articles/gcEssentials.html
の nib files の項、
http://journal.mycom.co.jp/column/objc/099/index.html
のまんなかあたりとか参照。
94名称未設定:2008/06/04(水) 22:31:08 ID:p9a2L9Dk0
Release When Closedはチェック「しない」って話じゃなかったか
9587:2008/06/04(水) 22:40:26 ID:PLLPbHtE0
>>93
[MainWindow setExcludedFromWindowsMenu: YES];
をするためにコントローラオブジェクトのアウトレットにMainWindowを繋いでいるんですが…

@interface NSApplicationDelegate : NSObject {
IBOutlet id Send2chView;
__strong IBOutlet id MainWindow;
}

ためしに__strongをつけてみましたが効果無しでした(´・ω・`)
96名称未設定:2008/06/04(水) 22:40:34 ID:YuPHi7F30
>91
どうだろう?
最初の5行を考えると、
主要nibファイル - NSMainNibFile -のFile's Ownerなんだと思う。
MainWindowはそのインスタンス変数。
で、[MainWindow setExcludedFromWindowsMenu: YES];でちゃんと動くってことは、
IBで MainWindowにちゃんと接続できてるんだと思うんだよね。
てことは、主要nibファイルのFile'sOwnerが解放されるってあり得ないから、
そのインスタンス変数がgcで解放されるなんてあり得ないと思うんだけど。

まあ、状況的にはMainWindowが解放されてるには違いないんだけど。

とはいっても、常人には理解不能な摩訶不思議な事をやってる可能性もあるんだよね。
ソースコード一式どかーんと見せてくれたら、みんな寄ってたかって直してくれると思うよ。

あと、
>88
それエラーじゃないから。
9787:2008/06/04(水) 22:42:01 ID:PLLPbHtE0
>>94
orz
Release When Closedのチェックを外したらいけましたorzorz
98名称未設定:2008/06/04(水) 22:45:07 ID:YuPHi7F30
あう。
リロードしてから書き込むべきだった。
しかもそれ一番始めに言ったじゃん。w
99名称未設定:2008/06/04(水) 23:15:26 ID:WH5iIvoT0
>>84,90
ありがとうございます。
まだprivateなAPIのようですね。
100名称未設定:2008/06/05(木) 03:28:08 ID:Iy8p9dIO0
PragmaticBookshelfからRubyCocoaの本出るみたいだね
びっくりした
101名称未設定:2008/06/05(木) 03:28:39 ID:Iy8p9dIO0
102名称未設定:2008/06/05(木) 06:38:16 ID:N70IRzNR0
>>89
これ、挑戦してみます。

とりあえず、NSFloatingWindowLevelの透明ウィンドウを作って、setIgnoresMouseEvents
したものを描画したいウィンドウに自動追従する形で実装してみました。
移動したとき付いてくるのがちょっと遅れるのが気になる、、、
103名称未設定:2008/06/06(金) 18:58:26 ID:/nwOtou00
GetP2PDBクラスからCore Dataを使いたいと思っているのですが、
IBOutlet id *ADI;をFile's Ownerのデリゲートオブジェクトに接続した上、
context = [ADI managedObjectContext];
object = [NSEntityDescription insertNewObjectForEntityName:@"P2PDB" inManagedObjectContext:context];
をしたところ、
2008-06-06 18:38:38.231 Yaezakura[1703:10b] *** +[NSEntityDescription insertNewObjectForEntityName:inManagedObjectContext:]: unrecognized selector sent to class 0xa08caf40
と出てしまいます。
もともとCocoa Applicationとして作り始め、YaezakuraDelegate.mの中身だけ
CoreDataアプリケーションのデリゲートクラスのものから引っ張ってきました。applicationShouldTerminateだけはコピーしていません。
xdatamodelファイルは、File>New File…"Yaezakura.xcdatamodel"という名前で追加しました。
デリゲートクラスのソースに、xcdatamodelのファイル名を指定するところが見つからないので、もしかして、xcdatamodelのファイル名は規定されているとかでしょうか。
104名称未設定:2008/06/06(金) 19:04:13 ID:K898eDqK0
とりあえず
+[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]
ね。
Forが一個足りない。
補完機能を使うかコピペしましょう。
105名称未設定:2008/06/06(金) 19:08:43 ID:/nwOtou00
>>104
ありがとうございます。
http://journal.mycom.co.jp/special/2005/cocoamvc/010.html
からコピってました。
確かに、For、抜けてるorz
記事より補完機能ですか…
10681:2008/06/06(金) 23:24:48 ID:DnNWuDyX0
>>85
> ベースとなっている配列オブジェクト側で知るすべは無いように思います。
NSFastEnumerationState構造体に空きスペースは充分あるんだから
情報を入れてほしいと思う今日この頃・・・

>>86
やはりそれしかなさそうですね。
ループ周りのコードをスッキリさせたかったんですが、残念です。
107名称未設定:2008/06/07(土) 03:06:06 ID:czfM+cV40
乱暴にコード減らしてみた
NSArray *array = /* assume this exists */;
NSInteger index = [array count] -1;

for (id element in array) {
if (/* some test for element */) {
index = [array indexOfObject:element];
break;
}
}

if (index != 0) {
NSLog(@"Test passed by element at index %d", index");
}

無茶したw
実際に何回ループしたかカウントしてないしね。
108名称未設定:2008/06/07(土) 05:36:42 ID:oLB88PWk0
ヒレガス本第3版のPDF買ってみたけど
AdobeDigitalEditionという電子書籍ビュワー
入れないと見られないし、コピペも出来なので
$35の値段のわりに微妙だった。
109名称未設定:2008/06/07(土) 08:19:56 ID:lneVQl2h0
それはひどい
経験を共有してくれてありがとう
110名称未設定:2008/06/07(土) 14:51:12 ID:bqgf91t00
>>106
NSFastEnumerationプロトコルを実装してる配列オブジェクト側からは、NSFastEnumerationState構造体に自由に情報を格納することができます。
問題となっているのは、そのNSFastEnumerationState構造体を他の場所から参照できないことだと思います。
111名称未設定:2008/06/07(土) 16:29:39 ID:TibeL3oq0
複数のNSButtonやNSTextFieldが集まって一つの機能を持った物。仮にこれをモジュー
ルと呼びますが、このモジュールを部品として、IBで他のウインドウ上に配置でき
るようにしたいのですが、スマートにする方法ってあるでしょうか?

とりあえず今実現しているやり方はこうです:

・モジュールを表すカスタムビューを作る。モジュールを利用する側のウインドウ
上にはこのビューを配置する。

・モジュール専用のnibファイルを用意して、その中にモジュールで使用するコント
ロール類を並べ、モジュール内部のふるまいを実現するコントローラのインスタ
ンスも作っておく。

・カスタムビューは自分がロードされたら上記nibファイルをロードする。

・モジュールを利用する側はカスタムビューとだけやり取りする。モジュール内部
には触れないようにする。(モジュール用nibて使っているOutletが表に見えない
ようにする)

これでうまくは行ってますが、なんかスマートじゃない気がします。
また理想的にはモジュールのパラメータ類もIB上で設定できるようにしたい・・。

となると、究極的にはIBのプラグインを作ればいいんでしょうけど、配布したり他
のアプリで使えるようなものでもないので、それはちょっと大げさかな、と。
112名称未設定:2008/06/07(土) 16:35:31 ID:TwyUwYCb0
>それはちょっと大げさかな、と。
面倒くさいとかやり方わからないの間違いでしょ。

あなたの実現したいものはibplugin以外の何者でもないじゃん。
113名称未設定:2008/06/07(土) 18:43:39 ID:TibeL3oq0
>>112

実のところibpluginも途中まで進めてましたが、ターゲットOSが
10.5以上でないとだめなようなので(今回は開発も実行も10.4)
他のやり方を探してるわけです。

「パラメータをIBで設定」なんかは無理だとしても、
複数のコントロールを一つにまとめて同じプロジェクト内で
使いまわす程度の事って、最新版のOS・・と言うほど
高度な話とは思えませんし、珍しい要求でもないですよね?

だから、今までは皆さんどうやっていたのか、
何か定番みたいな方法があるのでは?
と気になったから書いたんですが。
114名称未設定:2008/06/07(土) 18:48:34 ID:TwyUwYCb0
>>113
じゃあ、IBPaletteでしょ?
115名称未設定:2008/06/07(土) 19:21:17 ID:T3VD/+310
116名称未設定:2008/06/07(土) 19:35:40 ID:VBQ7XzHf0
ttp://jp.techcrunch.com/archives/20080605280-north-launches-its-online-keynote-280-slides/
>AppleのiPhoneチームとiTunesチーム出身者2人が−退社してY Combinatorと手を組んで−スタートアップを始めるとどうなるか?
元Apple社員らしい。GUIアプリみたいなものを作るなら、JavaScriptよりもObjective-Cってこと?
117名称未設定:2008/06/07(土) 20:20:20 ID:N0VOrekx0
俺のdel.icio.usのsubscriptionsがObjective-Jでいっぱいなんだが
118名称未設定:2008/06/07(土) 22:50:58 ID:VBQ7XzHf0
>>117
本当だ。
119名称未設定:2008/06/10(火) 11:53:52 ID:v6XJxThv0
Xcode3.1 ベータ6を使ったCocoa Applicationの開発をして、友人にテストのためできあがったものをビルド構成Releaseでビルドして渡したのですが、起動しないと言われてしまいました。
ここでは私のプログラムした内容は正しかった、と仮定した上で質問があります。友人の環境はPPC G4, G5で10.4のはずなので、プロジェクトの設定のディプロイメントターゲットを10.4にしたのですが、デフォルトの設定から変更しなければならない項目は他にありますか?
120名称未設定:2008/06/10(火) 12:03:43 ID:8XOktTUG0
コンソールに出力されたものの内容を送ってもらう。
121名称未設定:2008/06/10(火) 12:25:46 ID:ZtjOgx420
>>119
新規プロジェクトでCocoaApplicationを選択、「プロジェクト設定を編集」の
「すべての構成のベースSDK」で「Mac OS X 10.4」を選択、Releaseをビルド
してG4 10.4.11に持っていったら普通に起動してウィンドウが出ました。

プロジェクトの設定が悪いのか、自分のプログラムが悪いのか、それとも
ツールがβ版だからなのか、という切り分けをした方がいいと思いますけど。
122名称未設定:2008/06/10(火) 14:51:37 ID:UgSK0RIy0
・PPC のコードが含まれていない
・友人のマックにはないフレームワークを使っているのに
 アプリに入れ忘れている

とか
123名称未設定:2008/06/10(火) 14:52:35 ID:NdfOdpVf0
>119です。みなさんありがとうございます。
ベースSDKの設定の可能性が高いようです。今外なので確かめられませんが。
>121の方が言っているとおりもちろんそうすべきと思いますが、
自分の環境では問題なく動いていたため、
プログラミングミスはないものと仮定しました。
また、先日はベータ5を使って成功していたこと(ベータなので理由にはなりませんが)と、
私が一番自信がなかった部分がプロジェクト設定だったため
そこに絞った質問にした次第です。
細かい説明を省いてしまい申し訳ありません。
124名称未設定:2008/06/10(火) 19:29:34 ID:M+lv1G8s0
122さんも書いてるけど、ディプロイメントターゲットだけでなく、アーキテクチャもよく確認を。
32bit Universal Binaryね
125名称未設定:2008/06/10(火) 20:26:50 ID:zi/2SxUe0
プログラムのミスうんぬんじゃなくてコンソール見て起動しない原因探せって意味だろうが
起動どころか開けないのなら配布する時に気付くだろうし
126名称未設定:2008/06/10(火) 20:56:17 ID:UzQ8SNX80
ビルド構成DebugのままでReleaseにし忘れてるとかはないか
127名称未設定:2008/06/10(火) 21:21:06 ID:tXsfQ9xo0
ここで公開すればいいじゃん。
よっぽど早くけりがつくよ。
128名称未設定:2008/06/10(火) 22:29:17 ID:RnNeIuj80
特定の時間になったら音を鳴らすアプリを作っているのですが
主音量を上げるメソッドってないんでしょうか?
129名称未設定:2008/06/11(水) 00:30:49 ID:+Muj4NnA0
勝手に音量を上げるとはウザいアプリだな。
130名称未設定:2008/06/11(水) 01:02:21 ID:BuT1Yz540
できるだろうけどCocoaじゃ無理じゃねーかな
131名称未設定:2008/06/11(水) 12:23:53 ID:7YtizGAL0
132名称未設定:2008/06/11(水) 16:35:05 ID:raOc4tIo0
>119です。
>>122 すいません、書き込んだとき気付きませんでした。
結論から言うと、設定ミスとプログラミングミスでした。
アーキテクチャはあっていました。
ベースSDKの設定、もしくはアクティブSDKの設定を変更し、
それでも起動しないためログを送ってもらったところ、
setImageScaling:が悪さをしていることが判明しました。
ビルド時にエラーが出なかったため、10.4ではメソッド自体が
無視されるものと勘違いしていました。
IBとコード内のImageScalingに関連している箇所を修正したところ
無事に起動しました。
お手数おかけしました。ありがとうございました。
133名称未設定:2008/06/11(水) 17:27:22 ID:7YtizGAL0
>>128
#include <CoreAudio/CoreAudio.h>
void setVolume(Float32 theVolume/*0-1.0*/) {
AudioDeviceID mAudioDeviceID;
UInt32 i, numberChannels, outSize =sizeof(AudioDeviceID);
AudioBufferList *mAudioBufferList;
AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &outSize, &mAudioDeviceID);
AudioDeviceGetPropertyInfo(mAudioDeviceID, kAudioPropertyWildcardChannel, false, kAudioDevicePropertyStreamConfiguration, &outSize, NULL);
mAudioBufferList = malloc(outSize);
AudioDeviceGetProperty(mAudioDeviceID, kAudioPropertyWildcardChannel, false, kAudioDevicePropertyStreamConfiguration, &outSize, mAudioBufferList);
numberChannels = mAudioBufferList->mBuffers[0].mNumberChannels; free(mAudioBufferList);
for (i=0; i<=numberChannels; i++) {
Boolean isWritable = false;
if (noErr != AudioDeviceGetPropertyInfo(mAudioDeviceID, i, false, kAudioDevicePropertyVolumeScalar, NULL, &isWritable)) continue;
if (isWritable == FALSE) continue;
AudioDeviceSetProperty(mAudioDeviceID, NULL, i, FALSE, kAudioDevicePropertyVolumeScalar, sizeof(Float32), &theVolume);
}
}
134128:2008/06/11(水) 23:17:21 ID:VSIeQFLB0
>130
確かにw 環境設定で制御できるようにしますw

>131
>133
できました! ありがとうございました!
135名称未設定:2008/06/11(水) 23:23:57 ID:lty4nRSj0
>>132
結局プログラムミスもあったのか
性格的に向いてないよ
136名称未設定:2008/06/12(木) 04:36:35 ID:gv1qz7ju0
>>132
設定はよかったんじゃないの?
10.5以降にしかないメソッドを普通に使って、何もしてなかったということではないのかな?
137名称未設定:2008/06/14(土) 13:13:47 ID:BS7eOK3p0
10.6はQuickTimeに大ナタを振るのか。
こりゃ、のたれ死にするアプリが続出する予感。
138名称未設定:2008/06/14(土) 17:03:06 ID:r3BUjdUn0
>>137
??
kwsk
139名称未設定:2008/06/14(土) 18:15:22 ID:chqMToVQ0
なんで開発してるのにWWDCの情報追っかけてないの?
140名称未設定:2008/06/14(土) 18:44:58 ID:FubexbBn0
>>137

んなこと言って無いが。QuickTime X、理解した?
141名称未設定:2008/06/15(日) 00:47:11 ID:Cygey6F/0
Quicktime「X」だなんて、いかにも
過去のレガシーAPIをバッサリいきそうな感じじゃない?
142名称未設定:2008/06/15(日) 03:35:28 ID:UNwFe1i20
>>140
大鉈ふるうんだと理解したけど。。??
143名称未設定:2008/06/15(日) 08:19:09 ID:XnhWKJTp0
http://hmdt.jp/archives/2008_06.html#2008061104
↑という事じゃないのか?
144名称未設定:2008/06/15(日) 09:58:09 ID:oSH6UPle0
いきなり旧APIが使えなくなる訳じゃないだろうね、普通。

っていうか、もうQTKitを使っているアプリならば、互換性の問題を
避けて楽にQuickTime Xが使えるようになるってことだと思う。

現状、QTKitの下のQuickTimeはレガシーAPIの固まり。QTがあんまりにも
あちこちで使われているものだから、上位Frameworkを用意してあげないと
ベースをすげ替えるのが困難だということですね。

・・・でも、QTKitって旧APIに相当する機能の大半を、今だに提供できて
いないんだが、ホントにこれですげ替え出来るのかね?
145名称未設定:2008/06/15(日) 10:29:43 ID:XnhWKJTp0
>>144
12^2オメ

と云うのはさておき、提供出来てない部分は切り捨てられる可能性がある、と云うことでは?
まあ何がサポートされていないのかは知らないので自身は無いが。
146名称未設定:2008/06/15(日) 13:45:34 ID:ylVUqXAE0
VR とか 3D とか MIDI とか Text とか使ってる人いるんかいな?
この辺が切り捨てられるんじゃ
147名称未設定:2008/06/15(日) 14:07:25 ID:wTLy4n/p0
メディアスキンとかね。
MIDIとTextは需要あると思う。
148名称未設定:2008/06/15(日) 14:08:32 ID:qeeMQ1ni0
VR はアップルの製品ページのギャラリー自体に使われてるので ...
149名称未設定:2008/06/15(日) 14:19:47 ID:wTLy4n/p0
もう今iPodぐらいしかVR使ってないんじゃん。
150名称未設定:2008/06/15(日) 14:38:33 ID:259xwVUM0
でも、来年初めにリリース&切り捨てなら、
今から「作り替えてくれ」なんてアナウンスしても遅すぎじゃない?
151名称未設定:2008/06/15(日) 14:46:39 ID:DgXC+pk00
>>149
Apple の公式にある VR のこと?
Mac Pro,MacBook Pro,iMac,MacBook,MacBook Air
Time Capsule,AirMac Extreme,Wireless Keyboard,Mighty Mouse
iPod classic,iPod nano,iPod shuffle,iPod touch,iPhone
ざっと調べただけだけどこれらのページにはあったよ。
Mac mini と AirMac Express には無いっぽい。
あと日本のページの MacBook の VR はリンク切れになってる。
152名称未設定:2008/06/15(日) 14:53:05 ID:wTLy4n/p0
>>151
あーあったw
iMac見たけど思わぬとこにあったわ
切り捨てはともかく、推奨しないってのはさんざん言ってきたような
移行期間は修了したってことじゃないかな
153名称未設定:2008/06/15(日) 14:58:22 ID:DgXC+pk00
普通はデザインのところにあると思うよなw
154名称未設定:2008/06/15(日) 18:15:00 ID:OFFyy1VM0
155名称未設定:2008/06/15(日) 20:53:59 ID:zzsH9bZe0
すみません初心者ですが質問です。
NSTableViewに自前のNSArrayの内容を表示するにはどうすればよいでしょうか。
ttp://hmdt.jp/cocoaProg/AppKit/NSTableView/NSTableView.html
の最初の例を試してみるとちゃんと表示されたため、
awakeFromNibで自前のNSArrayを作る処理を足して、
NSTableViewにsetDataSourceしてみたのですが、コンソールに
Illegal NSTableView data source
<NSArrayの内容がずらずら表示>
Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row:
と実装済みなのに出てしまいます。

多分、途轍もなく初歩的な部分でつまづいているように思えるのですが、
どなたかソースを見て頂けないでしょうか。
ttp://www.uploda.org/uporg1483347.txt.html
156名称未設定:2008/06/15(日) 21:10:50 ID:ylVUqXAE0
[tableView setDataSource:self];
ってやってみ。あと、
NSArray *datasrc;
の実体は何処にあるんだ?
とか色々妙な点があるので入門書を一冊買って読んだ方がいい。
157名称未設定:2008/06/15(日) 22:07:18 ID:S0ISsK4N0
setDataSourceに与える引数は,
numberOfRowsInTableView:と
tableView:objectValueForTableColumn:row:
がインプリメントされてる「クラス(のインスタンス)」
じゃなかった?
158名称未設定:2008/06/15(日) 22:18:30 ID:jWHLIZ5t0
プログラマは何もする事が無い。
QuickTime Xによる最適化された再生は重いH.264等で必要な一部のみ。
QTKitの再生以外を行うAPIはLeopardと同様に動作する。
159155:2008/06/15(日) 22:35:19 ID:zzsH9bZe0
>>156
エラーメッセージの意味が理解できました。
ありがとうございます。
>NSArray *datasrc;
>の実体は何処にあるんだ?
もうこの時点で意味が分からないので、ちょっと旅に出てきます。
現状、NSTableViewへのバインド数が画面表示分の行数を超えると、
datasrcにオブジェクトが1つしかなくなってしまって、エラーになるのも
多分この辺が原因な気もしますし。
PyObjCで作った時はあんなに簡単だったのに…orz

>>157
ということなんですね。エラーメッセージ通りの意味でした。
160名称未設定:2008/06/15(日) 22:46:31 ID:PLDEhANR0
なんだ。じゃぁ、Component Managerとかにがっつり手を入れてくるわけ
じゃないのか。残念。

想像するに、decompressorComponentTypeに代わる新規コンポーネント
タイプを定義して処理体系を分離するような感じか?
CoreVideo Pipelineにあうような実装変更とみた。

QT7でSoundManagerなStandardCompressionSubTypeSoundから、
CoreAudioなStandardCompressionSubTypeAudioにすげ替えたような
感じと想像。

これなら互換性は確保出来るだろうけど・・・

どうせなら、InterleavedとかInterlacedとかPlanarYUVとかの扱いにくさは
改良してほしいなぁ。
161名称未設定:2008/06/15(日) 23:22:42 ID:jWHLIZ5t0
64bit化は、次の課題。3rd partyのcomponentの変更も必要だから。
32bitエンジンとのプロセス間通信じゃBDの再生に支障を来すから、と見た。
162155:2008/06/15(日) 23:30:07 ID:zzsH9bZe0
>>156,157
頭を切り替えようとプロジェクトをいったん削除して、
CocoaDevやら何やらのサンプルを眺めながら、
ゼロから組み直して進めたら拍子抜けするほど簡単に出来ました。
ありがとうございました。報告まで。
163名称未設定:2008/06/16(月) 00:56:27 ID:pextnS8l0
質問です 0S10.5.3です

DivXプレイヤー2.2のコンテキストメニューからデスクトップを選択したときの様に
したいんですけど、どうすればいいですか?
こんな感じです
(1)壁紙の代わりに動画が再生されています(メニューはDivX)
(2)デスクトップに置いてあるアイコンは選択できるし、アイコンやデスクトップをクリックすれば
メニューはFinderになります、壁紙が動画になっただけのような感じです
(3)Exposeですべてのウインドウを並べると普通のウインドウのように選択できます、選択した後は(1)の状態に戻ります

自作ウインドウに対しsetLevelでkCGDesktopWindowLevelを設定すればできるかと思ったんですが無理でした
アイコンの下に描画されたがアイコン、デスクトップをクリックしたら自作ウインドウのクリックと認識される
(3)の動作でウインドウとして並ばない

このsetLevelした自作ウインドウを表示しDivXをデスクトップにしたら、DivXは自作ウインドウより前面のレベルに描画される
自作ウインドウはDivXに隠れているが、クリックイベントは受け取れる

(3)はとりあえず置いとくして、描画だけ壁紙の代わりに描画しているのか
イベントを背面のウインドウにスルーしているのかとか考えましたがどちらもやり方の検討がつきません
以上何かアドバイス、意見など頂けませんか?
DivXがcocoaかどうかは、ちょっとわかりません
164名称未設定:2008/06/16(月) 01:30:03 ID:GXm3y6CT0
全然Cocoaはさっぱりなスレじゃ無い件
165名称未設定:2008/06/16(月) 06:58:19 ID:AaY9TCm60
>>163
[windou setIgnoresMouseEvents:YES]

でどうだろう?
166名称未設定:2008/06/16(月) 16:06:11 ID:xUL8HFRI0
LSUIElement = 1以外の方法で、
dockにアイコンを表示させなくする方法って無いですか?
メニューバーは出したいのです。
167名称未設定:2008/06/16(月) 16:58:53 ID:nLvA84dY0
SetSystemUIMode
168名称未設定:2008/06/16(月) 19:44:48 ID:J90ThS3S0
>>165
ありがとう、それでばっちりでした
169名称未設定:2008/06/16(月) 20:07:44 ID:HnijONm20
>>165
>>163じゃないけどトンクス
170名称未設定:2008/06/17(火) 01:32:10 ID:ypgNmm+l0
インスタンスの流儀について今ひとつ無理解なものからの質問です。

あるデータを共有するためのクラスDataを作成しました。
DataをIBでインスタンスにし、
IBでインスタンスに出来る他のクラスからの参照は
他のクラスでIBOutletを作成してDataへ接続して利用しました。
良く分からないのは、IBでインスタンスにせず、
プログラム上でインスタンスにするクラスからDataへの参照方法です。

知識的にはNSNibやNSApplicationのリファレンスを読んでみても
この件に関してさっぱり糸口が見えないレベルであります。
171名称未設定:2008/06/17(火) 01:38:54 ID:MxqL1SlJ0
IBOutletでDataインスタンスの参照を持ってるクラスが
インスタンス化したやつに参照教えてあげればいいじゃん
172名称未設定:2008/06/17(火) 02:01:40 ID:2Z6DpQEF0
allocしたやつがdataを返してあげればいいじゃn
173名称未設定:2008/06/17(火) 06:24:25 ID:HIrcziuV0
Dataって名前だとモデルなのかな?
IBでモデルをインスタンス化するのは珍しい気がする。
174166:2008/06/17(火) 09:42:36 ID:jcIXFWOX0
>>167
SetSystemUIModeだとメニューバーまで消えちゃいませんか?
SetSystemUIMode(kUIModeAllHidden,kUIOptionDisableAppleMenu);
SetSystemUIMode(kUIModeContentHidden,kUIOptionDisableAppleMenu);
は試してみたんですが、期待する様な動作じゃありませんでした。
175名称未設定:2008/06/17(火) 11:57:37 ID:ROOb9CQQ0
>>174
>>166メニューバーは出したくないんだろ?
176名称未設定:2008/06/17(火) 11:59:09 ID:99O8N3c20
>>174
普通 Dock に出ないアプリのときはメニューバーの右側にアイコンをだすしかないと思います。
177170:2008/06/17(火) 12:42:15 ID:ypgNmm+l0
>171
なるほど、私自身が確実に糸口(IBOutlet)つけたものが
あるのだから、そこから手繰るわけですね。
この発想はありませんでした、ありがとうございました。

>172
確かにおっしゃる通りで、例えば、ここら
http://cocoawithlove.com/2008/03/cocoa-application-startup.html
辺り等を読んでどこらへんで何がallocするのかを検討したのですが
今の私の知識では理解出来ませんでした。
引き続き調べてみます、ありがとうございました。

>173
(まだ術語的にうまく操れてる自信はありませんが)
おっしゃる通りMVCのM(モデル)の部分です。
最初、[NSApp delegate]で参照出来ないかと考えたのですが、
今の自分の知識では手法が分からず、取り敢えずその線は
あきらめて今回のIBでインスタンス化でやってみた次第であります。
流儀として珍しい系統であるとすると、今後何か支障を
来す事もあるかもしれません。他の実装方法も検討してみます。
コメントありがとうございました。
178166:2008/06/17(火) 13:12:05 ID:jcIXFWOX0
>>175
いえ、dockのアイコンを非表示にしたいだけです。
>>174
うーん。なるほどそうですか・・・。わかりました。
179名称未設定:2008/06/17(火) 13:18:42 ID:99O8N3c20
>>178
というか Dock のアイコン非表示、メニューバーだけ、というソフトにほかからどうやって切り替えるの?Dock から消したら Cmd-Tab でも切り替わらないだろうし ...
180166:2008/06/17(火) 15:52:08 ID:jcIXFWOX0
>>179
今、親ソフトから立ち上げる子アプリをバンドルの形で作ってて、
そっちはdockに出したく無いんですよ。でもメニューバーだけは子アプリを方を表示させたいんです。
181名称未設定:2008/06/17(火) 19:02:28 ID:AF6fQ7/I0
そんな部分にこだわらなくても利用者は気にしないよ。
こういうのを「床屋のオナニー」っていうんだっけ?
182名称未設定:2008/06/17(火) 21:57:22 ID:MxqL1SlJ0
そういうのはMenuExtraみたいな形にした方がいい気がする
183名称未設定:2008/06/17(火) 22:46:04 ID:I13n1WLn0
>>180無駄だろ
184名称未設定:2008/06/18(水) 00:02:46 ID:AeC8SojL0
>>180
そんな動作するソフトって他にある?
ユーザーを混乱させるだけだとおもうけど ...
185名称未設定:2008/06/18(水) 00:40:19 ID:0sjtBJ8F0
>>180
>そっちはdockに出したく無いんですよ

184じゃないが突飛な感じがするな
もう少し晒してくれれば誰かからいいアイデアでるかも
186名称未設定:2008/06/18(水) 03:14:27 ID:aZaN0e+W0
こういった批判の中からブレイクスルーするんですね、わかります。
187名称未設定:2008/06/18(水) 06:18:33 ID:ZpPcOH0s0
dockに出ないのなら子アプリにする必要すら無いと思うが。
188名称未設定:2008/06/18(水) 19:25:38 ID:JmkHn0ES0
丸ウェアを作りたいんだよ。
189名称未設定:2008/06/18(水) 20:42:19 ID:0lBcXg5v0
軍艦みたいだな
190名称未設定:2008/06/19(木) 07:19:02 ID:qttkZF1A0
>>188
やっぱりか。
191名称未設定:2008/06/19(木) 10:28:55 ID:dkzo9Jj60
アプリのアイコンを透過にすればいいんじゃね?
192名称未設定:2008/06/19(木) 10:33:02 ID:rhMGRNu40
ドックに隙間が空きますよ。あと下に起動中の印の黒三角(Tiger以前)か青白点(Leopard)がでます
193名称未設定:2008/06/19(木) 10:38:42 ID:tLwYtAlr0
166のやりたいことはLSUIElementでできるんだけどな
もちろんそれだけじゃ駄目なんだけど
でも決定的なのは無駄だってことだな
194170:2008/06/19(木) 12:25:14 ID:g1/Z810+0
色々調べてみたところ、IBでインスタンスを作成するのでなく、
シングルトンインスタンスの作成
http://developer.apple.com/jp/Documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html
を利用して、今のところ期待した動作を得られているようです。
コメントしてくれた方々、ありがとうございました。
195名称未設定:2008/06/19(木) 19:15:54 ID:LJCPJwrL0
わかった。
Finderのアイコンにすれば、どんくさいユーザーは欺けるかと。
196名称未設定:2008/06/19(木) 20:00:26 ID:IN6Id/OS0
最近Cocoaやり始めた初心者です・

NSStringオブジェクトからC文字列を取り出すcStringメソッドなのですが
10.4 SDKでは問題ないんですけど
10.5 SDKだとdeprecatedのワーニングがでてくるんです。
とりあえず使えるからいいんですが、これに変わるメソッドとかあるのでしょうか?
197196:2008/06/19(木) 20:15:22 ID:IN6Id/OS0
自己レスです

cstringを

cStringUsingEncoding:NSUTF8StringEncoding

に変えてうまくいきました。スイマセン。。
198名称未設定:2008/06/19(木) 21:47:50 ID:CZER9Tmm0
table view のヘッダをクリックしたときに、
ソートとかせず何も反応しないようにするには
どうすればいいですか?
199名称未設定:2008/06/19(木) 21:50:53 ID:cR2hfrj80
ソートしないように設定、、
バインド使ってるか否かで方法が違うけど
200198:2008/06/19(木) 22:01:03 ID:CZER9Tmm0
バインディングしてます

[tableColumn bind: toObject: withKeyPath: options:];

でバインディングを設定した後に、

[tableHeaderCell setAction: nil];

というのを入れてみましたが、相変わらずソートしてしまいます。
201名称未設定:2008/06/19(木) 23:49:46 ID:IjZx3q/K0
AppleのサンプルコードのRoundTransparentWindowはNSWindowを透明にして
NSViewの一部分を透明にすることで、透明部分のマウスイベントがスルーされる様ですが
NSViewでOpenGLを使って描画すると
GLint opq = 0;
[openGLContext setValues:&opq forParameter:NSOpenGLCPSurfaceOpacity];
で透明にはなるんですが、透明部分でもマウスイベントがスルーされません
透明部分のマウスイベントはスルーしたいのですが
マウスイベントで透明部分かどうか判定し>>72の様に下のViewを検索して通知するしか無いでしょうか?

イメージはこんな感じで
ttp://www.watch.impress.co.jp/pc/docs/2002/0508/wwdc0141.jpg
動作はサンプルコードのRoundTransparentWindowみたいに色のついてるところだけ反応したい
202名称未設定:2008/06/20(金) 13:01:44 ID:NyIbt5u40
IB 2.0では、新規Nibの作成時にテンプレートの言語を選べたのですが、IB 3.0ではどこで選択できるのでしょうか。
203名称未設定:2008/06/20(金) 23:04:43 ID:emu6E9Wh0
よく分からんが、File -> Write Class Fileで言語は選択できるな。
初心者なもんで見当違いのことを言ってたらすまん。
204名称未設定:2008/06/21(土) 06:15:41 ID:G0KE6qM/0
夜中12時をまたいでアプリが走っているときに、
日付が変わった瞬間を知る良い方法ってありますか?

NSTimer でひたすら時刻を取り続ければできますが、
残りの24時間の間は無駄な動作になるので、
日付が変わった瞬間に notification を受け取るようなのが
やりたいです。
205名称未設定:2008/06/21(土) 06:49:08 ID:N9gnbwgv0
>>204
NSTimerは時間指定で呼び出す事も出来るけど。
206204:2008/06/21(土) 06:58:24 ID:G0KE6qM/0
>>205 d
NSTimer て、今までインターバル測るのにしか使ってなかった‥ orz
207名称未設定:2008/06/21(土) 07:00:12 ID:LClgiSkx0
runloopで時間指定って出来なかったっけ?

それ以外だと、xNix的な考え方と組み合わせるのは?
cronサービスでnotificationを飛ばすようなやつをくむとか。
シェルスクリプトからatコマンドを使うイメージ。
208名称未設定:2008/06/21(土) 11:32:35 ID:C54+0kUw0
Cocoaバインディングがさっぱり・・・
ややこしいなあ
209名称未設定:2008/06/21(土) 12:32:29 ID:kIEVYzos0
>>208
どこがわからんの?IB でバインドする変数名を指定するだけだと思うけど。
(すくなくとも第一歩は。)
210名称未設定:2008/06/21(土) 12:40:53 ID:C54+0kUw0
ああ、、そか、バインド先とkeyとパスを指定するくらいなんだ。。
沢山項目があるのでこんがらがってた。。


211名称未設定:2008/06/21(土) 16:47:43 ID:aJQoGXKZ0
KVOがむずかしすぐる、、、
特定のインスタンス監視して変化があったら特定のメソッド叩いて欲しいだけの
時にやらなきゃいけないことが山盛りで理解しきれてない。
NSTimerぐらい簡単に設定できればいいのに、、
212名称未設定:2008/06/21(土) 17:39:34 ID:m9NZ2CO10
>>211
ターゲット・アクションでいいんじゃね?
213名称未設定:2008/06/22(日) 00:02:38 ID:DwFjZeXi0
>>211
なにが難しいの?山盛りではないよね。
observeValueForKeyPath:ofObject:change:context:
を実装して、
addObserver:forKeyPath:options:context:
で登録するだけだと思うんだが...
一、二、沢山の未開民族以前の、二つの時点で沢山のひとですか?
214名称未設定:2008/06/22(日) 07:09:03 ID:sXHrp8O60
テキストフィールド2つだけの
cocoaバインディングのサンプルないかな
215名称未設定:2008/06/22(日) 07:36:43 ID:DwFjZeXi0
それだけなら、なんか NSString* text; を中に持つオブジェクトをつくって、nib のなかにインスタンス化して、ふたつのテキストフィールドをそのオブジェクトの text にバインドするだけだけど ...
216名称未設定:2008/06/22(日) 10:49:12 ID:N0VcqJNZ0
個人的に思うのだが、Bindingの動作メカニズムをちゃんと理解していないと落とし穴が結構ある。
で、ちゃんと理解するにはKVOのメカニズムを理解していなきゃならない。
それにはObserverパターンとKVCの理解が必要で、さらに言えばそもそもObj-Cの実装が分かっていた方がいい。
それはつまりオブジェクト指向言語はどうやって作るのか?ってことで、それをCで考えるくらいの力があれば…
Bindingを使いこなせるんじゃないかと思う。

っていうのは言い過ぎだとしても、「もう一段深いところ」を理解していると楽になること多いです。
217名称未設定:2008/06/22(日) 11:39:09 ID:sXHrp8O60
アセンブラからやり直します。。
218名称未設定:2008/06/22(日) 11:47:18 ID:RhCPffZv0
219名称未設定:2008/06/22(日) 11:58:13 ID:sXHrp8O60
>218
超さんくす!!
220202:2008/06/22(日) 13:20:35 ID:0Fs+nSDs0
>>203
すみません。プログラミング言語ではなく日本語/英語/中国語などの言語です。
221名称未設定:2008/06/23(月) 00:11:09 ID:FKweipuD0
interface builder3.0が糞な件について

研究室でObjective-Cを使ってプログラミングを書けって言われたんだけど、
何この糞みたいにめんどくさい開発ツールは。

なんでわざわざオブジェクトとコードのコネクションを手動で接続しなくちゃいけないわけ?
Visul Studioをちょっとは学べよ。
あんなのダブルクリックで済むんだぞ。

あーむかつく。
なんでこんなん使ってやらなあかんねん。
ふざけんな。研究費削っとんちゃうぞ!!!!!!!!!
222名称未設定:2008/06/23(月) 00:17:12 ID:2/CWbUXB0
>>221
マルチポスト乙
厶板のObj-Cスレに返事が書いてあるからそっちをみてやってくれよ
223名称未設定:2008/06/23(月) 00:17:55 ID:I4ASgrpV0
慣れだ慣れ 考え方ちゃうからな
IBに限らずCocoa慣れるとMSにも言いたい事が出て来たりする

で、結局みんなEmacs+GCCに戻るのさ
ねーよ
224202:2008/06/23(月) 01:29:22 ID:xvOwn1gf0
>>221
MVCアーキテクチャは慣れるまできついかもなぁ
ただ慣れたら離れられなくなる。
というか、俺の場合Cocoaに慣れて初めて俺のプログラムがいかにオブジェクト指向じゃなかったか気づいた。
自分のプロブラムを見直すチャンスって考え方もあるんじゃないかな
VBやったことないが基礎となる理論はしっかりしてるんだろうか。
ってスレ違いだなスマソ
225名称未設定:2008/06/23(月) 04:04:59 ID:bpjMPdrC0
マルチポストをマルポって呼ぶスレに認定することにしました
226名称未設定:2008/06/23(月) 08:46:19 ID:ZbmJMWrp0
すいませんまた初心者なんですが。。

File's OwnerとFirst Responderってこれはなんですか?
チュートリアルでも、たまにこれに向かってコネクトしてる場面があるんですが
なんのためにやっているのかの説明が無いのでなんだかぼんやり。
227名称未設定:2008/06/23(月) 09:14:14 ID:2/CWbUXB0
File's Owner は、nib を「開いた人」です。
MainMenu.nib は自動的に開かれて、開いた人は NSApplication (のインスタンス)になってます。
だから、MainMenu.nib の File's Owner につなぐってことは、NSApplication につなぐことになります。NSApp の delegate につなぎたいときとかにつかいます。

First Responder っていうのは、プログラム実行中にキー入力をうけつけているオブジェクトをさす抽象的なターゲットだとおもってください。
メニューバーの「文字を大きくする」メニューのターゲットを、特定のウインドウの特定のオブジェクトとかにつないでしまうと、いつもそのオブジェクトが呼ばれることになりますが、
場合場合に応じて前面のオブジェクトに命令したかったりするでしょ。
228名称未設定:2008/06/23(月) 09:29:53 ID:ZbmJMWrp0
>227
ありがとうございます!
なるほどそうだったんですか・・

cocoaアプリの構造知らぬままやってました。。
229名称未設定:2008/06/23(月) 15:39:38 ID:nJQGDEyG0
>>227
おまいの説明はすこぶる分かり易い。
230名称未設定:2008/06/23(月) 15:45:03 ID:9YeEOx5D0
>>229
俺も同じ事思ってた。
ID: ZbmJMWrp0 はいい人に出会えた。
231名称未設定:2008/06/23(月) 19:30:38 ID:gNpGWa+A0
ヒレガスよりわかりやすいな
232名称未設定:2008/06/25(水) 18:15:44 ID:WYDyD/990
>>227
神。説明が分かりやすい上に文体がしっくりくる。Cocoaの本書いてちょw
233名称未設定:2008/06/25(水) 18:57:58 ID:3DmRzNhv0
もし、友達に貸したエロ本がまた貸しされて、
さらにまた貸しされて・・・

もうあなたの手で処分出来なくなった場合、
これをメモリーリークと言います。
234名称未設定:2008/06/25(水) 20:50:44 ID:FELUv7Tr0
>>233
違うんじゃない?
235名称未設定:2008/06/25(水) 21:35:13 ID:7oMlqkxh0
>>227
File's Ownerは、その言葉どおり、nib開いた人ではなく、オーナー(所有者)だと思います。
ADCのドキュメントによれば、MainMenu.nibを開いているのは、NSApplicationじゃないし。
まあ、たいていは、開いた人がそのままオーナーになりますが。

First Responderは、マウスでクリックされたりして、フォーカスの当たってるオブジェクトのことです。
First Responderが必ずしもキー入力を受け付ける訳ではありません。

236名称未設定:2008/06/25(水) 21:44:11 ID:c0QFEsb40
>>235
正確に書く事と分かり易い事とは違うわけだが。
とっかかりとしては十分な説明だと思う。
237名称未設定:2008/06/25(水) 22:16:45 ID:J5cC1xD40
NSTextViewの中の文字列で
たとえば2行目の左から3文字目から5文字目を
"ABC"で上書きする場合どうすればいいのでしょうか。。
238名称未設定:2008/06/25(水) 22:24:26 ID:QvvFgoa30
NSTextを継承してるんだから
- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString
なんかを使えばいいんじゃないの?
239名称未設定:2008/06/25(水) 22:48:50 ID:J5cC1xD40
>238
ありがとうございます!試してみます!
240名称未設定:2008/06/26(木) 00:28:58 ID:QkkYa/qW0
オーナーとかの話しで思ったのですが、
MyObjectがインスタンスhogeを持っていた場合、
@interface MyObject:NSObject {
id hoge;
}
@end

@implementation MyObject
-(id)hoge {
return hoge;
}
@end
とアクセッサメソッドを用意してやることでIB上でMyObjectにバインドすることができるようになります。
これはMyObjectがhogeを持っているからですよね。
では他のオブジェクトと共有して使用されるグローバル変数の場合どうなるのでしょう。
241名称未設定:2008/06/26(木) 00:32:49 ID:QkkYa/qW0
@interface MyObject:NSObject {
}
@end


id hoge;

@implementation MyObject
-(id)hoge {
return hoge;
}
@end

とした場合バインディングはエラーが起きてしまいました。
hogeはMyObjectが持ってるんじゃないからそりゃそうかと思いましたが、
それなら誰が持っているのでしょう。
NSApplication?NSUserDefault?File's Owner?
それぞれに無理矢理バインドしてみましたがうまくいきませんでした。
アクセッサメソッで変数を返す時にグローバル変数の値を代入してやるしかないのでしょうか?
242名称未設定:2008/06/26(木) 00:38:33 ID:QkkYa/qW0
ああああすみません、
エラー文にセッターがないって出てたんで言われた通りにセッターつけたら解決しました。
プロパティ使っとけってことですね。試す前から書き込んだ自分が馬鹿でした。お騒がせしました。
243名称未設定:2008/06/26(木) 10:37:58 ID:DcE/JQ790
NSViewとかをNibに定義しないで、コードから直接
alloc&initWithFrameとかした場合、awakeFromNibは
呼び出されませんよね。
このメソッドも呼び出すべきですか?
244名称未設定:2008/06/26(木) 11:18:59 ID:nOuF1tC50
それって呼ばれるの?
ログ吐いて確認してみたら?
245名称未設定:2008/06/26(木) 20:00:15 ID:8BlZMsUG0
>>243
-awakeFromNibはNib使わないんなら気にしなくておk
246名称未設定:2008/06/26(木) 22:05:41 ID:DcE/JQ790
>>244-245
なんか勘違いしてたみたいで、呼ぶ必要ないですね。
ありがと。
247名称未設定:2008/06/27(金) 02:48:34 ID:rkAsU+Fv0
既存クラスにメソッド追加してやるのはカテゴリでいいですけど、
インスタンス変数を追加しようと思ったらサブクラス化しかないですか?
サブクラス化するとIB上に置いてあるControlを全部変更しないといけないのでどうにか方法はないかと考えています
248名称未設定:2008/06/27(金) 06:48:39 ID:5wCaEvMQ0
>>247
ポージング(poseAsClass)でいけるかも。

ttp://journal.mycom.co.jp/column/objc/012/index.html
249名称未設定:2008/06/27(金) 06:50:53 ID:5wCaEvMQ0
あ、ごめん。だめやった。インスタンス変数追加できないんやった。
250名称未設定:2008/06/27(金) 07:44:23 ID:QT0InZ8U0
posingでinstance追加できたらのっとりでなんでもできちゃいそうだね。
それはそれで面白そうだけど何か問題があるからできないようになってるのかな。
251名称未設定:2008/06/27(金) 08:25:43 ID:cVkbRC280
>247
漏れもちょうどいまそれ悩んでた。

とりあえずそのクラスに組み込んじゃったけど、やっぱしっくりこないや
252名称未設定:2008/06/27(金) 09:03:28 ID:YYux+Wek0
posingはLeopardからdeprecatedに指定されてる。
253名称未設定:2008/06/27(金) 09:20:29 ID:zgdyeD0/0
>>247
既存クラスも自作だったら、既存クラスの名前のほうをかえて、
サブクラスのほうのなまえをもとのものにしておくという方法が。
254名称未設定:2008/06/27(金) 10:21:22 ID:O3k3c+Fk0
>>252
知らなかった。すでに64ビットアプリだとサポートされてないし。
255名称未設定:2008/06/27(金) 11:31:15 ID:OEVIo/Co0
中継クラスみたいなものを用意するってのは駄目なの?
setter と getter を書いて中継するとか。

あと、Bindingにしておけば、selectionが中継クラスになるから、
実際のターゲットクラスが変更になってもnibの変更は最小限ですむよ。
256名称未設定:2008/06/27(金) 12:00:47 ID:zgdyeD0/0
>>254
でもいろいろと別の runtime 関数が用意されてて、class の乗っ取り自体は 64 bit でも自在にできるよ。
257名称未設定:2008/06/27(金) 16:00:37 ID:YYux+Wek0
特にプラグインは危険だな。アプリ上の任意のクラスを簡単に乗っ取れるから。
自分で作ったプログラム用のプラグインを使ってブルートフォースアタックを
かけたら簡単にシリアル番号をボロボロ抜き出せた。笑うしかないね。
258名称未設定:2008/06/27(金) 20:03:42 ID:pVLES8St0
まあこの辺がiPhone SDKでダウンローダブルなプラグイン禁止の理由なんだろうね。
FireFoxが移植出来ない、一番の原因。相変わらずCNETは表面的だ。
http://japan.cnet.com/news/media/story/0,2000056023,20376076,00.htm
259名称未設定:2008/06/27(金) 20:24:09 ID:5dK6eRfR0
>>247
バインディングの実装と同じように手段を取ってみては?

バインディングした場合、NSView側でバインド先のオブジェクトとキーパスの情報を保存しなければならない。
でも、MacOSX10.3でバインドが追加されたとき、NSViewにインスタンス変数が増えたりはしなかった。
たぶんNSBinderというヘルパークラスが、NSViewに代わって、その辺の情報を保存してるっぽい。

260名称未設定:2008/06/27(金) 20:42:37 ID:NSFBdoqf0
>>259
あれってポージングで実装してるんじゃなかったの?
261247:2008/06/27(金) 22:32:56 ID:W9Mj7Of10
いろいろと意見ありがとうございます。
poseAsClassが10.5でdeprecatedになって、木下さんがどこかの記事で代替えの方法を解説してたと思うのですが。
>>259
バインドを使用すると結局たくさん線をつなぐことになりそうなのでスマートではなさそうな気がします、、。
262名称未設定:2008/06/27(金) 22:39:03 ID:cN+Ohq8K0
ポージングの代わりはメソッド交換でってアップルが言ってた。
263名称未設定:2008/06/27(金) 22:40:13 ID:5dK6eRfR0
>> 261
いや。バインドを使うんじゃなくて、バインドと同じ仕組みを応用すると言っています。

ところで、ポージングって、インスタンス変数の追加はできるの?
ttp://journal.mycom.co.jp/column/objc/012/index.html
264名称未設定:2008/06/27(金) 22:53:14 ID:W9Mj7Of10
ポージングでは無理そうです。
>>259を読んでおっしゃることは理解しました。
265名称未設定:2008/06/27(金) 23:30:52 ID:5dK6eRfR0
>>264
いちおう、詳しく説明すると。
まず、カテゴリー使ってNSViewにgetterとsetterを追加する。
- (id)hoge{ return [Helper getValueWithOwner:self]; }
- (void)setHoge:(id)value { [Helper setValue:value withOwner:self]; }
で、Helperクラス側に値を格納する。
static NSMutableDictionary* dict;
+ (id)getValueWithOwner:(id)owner{ return [dict valueForKey:owner]; }
+ (void)setValue:(id)value withOwner:(id)owner { [dict setValue:value forKey:owner]; }
こんな感じ。
266名称未設定:2008/06/28(土) 00:52:34 ID:MqHAm5mY0
>>262
MethodReplacementってやつか。
267名称未設定:2008/06/28(土) 01:54:47 ID:0eKOBZUW0
268名称未設定:2008/06/28(土) 14:28:41 ID:KIP7kd9A0
メソッドの+と-って何ですか?
269名称未設定:2008/06/28(土) 14:31:27 ID:iKOABDQ+0
クラスメソッドとインスタンスメソッド
270名称未設定:2008/06/28(土) 14:42:57 ID:kuOvaWBW0
クラス名 *A = [クラス名 xxx]; でインスタンスを作れるのが、 +
それ以外が -
であってるかな?
271名称未設定:2008/06/28(土) 14:50:17 ID:3jJ6jb9L0
>>268,270
頼むからObjective-C Programing Languageぐらい読んでからCocoaプログラミング始めてくれ。
今は日本語版もあるんだから。
272名称未設定:2008/06/28(土) 14:52:52 ID:KXgNszZw0
むしろ頼むからプログラミング始めないでくれ
273名称未設定:2008/06/28(土) 15:03:54 ID:Pk2Ye7oi0
むしろ神解説できたらいいのにね
分かりやすい解説シリーズキボン
274名称未設定:2008/06/28(土) 15:12:15 ID:ICsN/hVj0
クラスとインスタンスってのはプッチ○プリンの入れ物と...

めんどくせ。
275名称未設定:2008/06/28(土) 15:21:45 ID:oynXjVSX0
クラス=風俗
インスタンス=風俗嬢
276名称未設定:2008/06/28(土) 15:32:53 ID:iKOABDQ+0
そういう方向で言うとアレか。
クラスメソッド:
 デリヘル ヘルス嬢 = [デリヘル 呼び出し];

インスタンスメソッド:
 [ヘルス嬢 xxx];
277名称未設定:2008/06/28(土) 15:46:52 ID:u+ckHd7H0
ゆとりのためにゲームで説明すると
ソルジャーから派生して枝分かれしたナイト、ウィッチ、プリーストといったジョブ(クラス)のキャラ達(インスタンス達)がいたとして、
10人ぐらいのパーティだと複数人同じジョブ(クラス)の人がいるんだけど
それぞれが持ってる、戦う、防御、逃げるなんかの戦闘コマンド(インスタンスメソッド)はもとのジョブ(親クラス)から継承したコマンドで、
ウィッチのサンダーとかファイア、プリーストのヒーリングなんかはジョブ固有のコマンド(インスタンスメソッド)なわけ。
んで特殊アイテム戦いのドラムを使ってナイト全員が2回行動になったりするのがナイトのジョブコマンド(クラスメソッド)、
前衛後衛入れ替えとかで全員場所入れ替えすんのがソルジャーのジョブコマンド(親クラスのクラスメソッド)。
278名称未設定:2008/06/28(土) 15:52:27 ID:u+ckHd7H0
あー、これだとクラスメソッドについて正しく説明できてないな、、
279名称未設定:2008/06/28(土) 15:52:55 ID:P5MKK7iV0
TOとFFとDQが混じってる…?
280名称未設定:2008/06/28(土) 16:16:12 ID:ICsN/hVj0
インスタンスメソッド:
 [ヘルス嬢 チェンジ]; // raise Exception if call 3 times.

こうですか><
分かりません><
281名称未設定:2008/06/28(土) 16:16:34 ID:u+ckHd7H0
オウガバトルベースのつもりが混じってますね、、
上の流れだとalloc系のクラスメソッドをどう説明すれば良いか
282名称未設定:2008/06/28(土) 17:27:39 ID:3jJ6jb9L0
そもそも、クラスもインスタンスも、メッセージを受け取れる「オブジェクト」であるという点では違いはないんだ。
しかし例えば画面上の無数のウインドウがあったとき、それらは全て別々のオブジェクトであるのだが、
その動作を規定しているのは共通のコードなわけだ。それが「クラス」。
対してウインドウの位置や中身などは全て別物だ。その情報を保持するのが「インスタンス」。
よくタイヤキの型(クラス)とタイヤキ(インスタンス)に例えられるな。型はおなじでも出来たタイヤキの中身は変えられる。
俺はクラスはイデアだと思ってるけど。

じゃあ動作を規定すると言ったけど、ウインドウにメッセージを送るときそれを受け取るのはインスタンスだ。
インスタンスが受け取るメッセージ(に対する動作)を規定するのが「インスタンスメソッド」だ。
クラスもオブジェクトである以上、クラスが受け取るメッセージもある。それを規定するのは「クラスメソッド」になる。
で、これを実際にObj-Cで書くときには、クラスメソッドの定義には「+」、インスタンスメソッドの定義には「-」をつけてる。

クラスメソッドの用途は確かにそのクラスのインスタンスを作るものが多い。allocを始めとして。
ただしそれに限るものでもない。全インスタンスに共通な性質を設定するアクセサだって作れるし。
283名称未設定:2008/06/28(土) 17:39:16 ID:3jJ6jb9L0
ちなみに、クラスとインスタンスはどちらもオブジェクトである…んだが、Obj-Cの場合はさらにこう言える。
「クラスオブジェクトはNSObjectクラスのインスタンスとして扱える」
つまり例えば、クラスをNSArrayにつっこむということは普通に出来る。ていうか俺もやる。例えば
[anMutableArray addObject:[NSString class]];
とするとNSStringクラスがオブジェクトとしてanMutableArrayに追加される。

ということで、-と+、インスタンスメソッドとクラスメソッドは
一つのファイルの中で2種類のオブジェクトの動作を定義する必要があるから、存在するとも言える。
284名称未設定:2008/06/28(土) 18:03:52 ID:u+ckHd7H0
すげええクラスとかまんまArrayに入れたりできるんですか!
ちなみにどういった用途で使うんでしょう?
便利な使い方が想像できないです、、
285名称未設定:2008/06/28(土) 19:19:37 ID:wWVbcxHq0
クラスで
外部から呼べるのが-
内部でしか呼ばないのが+

という理解でよろしいですか?
286名称未設定:2008/06/28(土) 19:35:34 ID:3jJ6jb9L0
>>284
コンパイル時にはどういうクラスを何個使うか分からないとき…かな。別にNSArrayに限らず、NSDictionaryでもいいし
Class型やid型に入れてもいい。

>>285
内部と外部の意味がよく分からん。
[[NSString alloc] init]; のallocはクラスメソッドで、initはインスタンスメソッドだが、この文に内部も外部もないだろ。
どちらもオブジェクトにメッセージを送っているにすぎない。呼べる呼べないで言えば、
[NSString init]はできないしNSString *aStringに対して[aString alloc]はできない。それだけ。
287名称未設定:2008/06/28(土) 19:38:06 ID:3jJ6jb9L0
ってNSStringクラスはNSObjectのインスタンスとしても扱える訳だから、[NSString init]は呼べるか。
多分意味はないし、実際に試したことはないけど。
288名称未設定:2008/06/28(土) 19:43:10 ID:yHYqfuzX0
>>285
クラスとインスタンスの関係は理解してる?

クラスって云うのは、いわば機械の設計図みた様なもので、材料とかその分量とか作る手順が書かれてる。インスタンスはその設計図を基に作った現物。

でまあ、+がついてるの = クラスメソッド が レシピについての操作。材料の分量を変更するとか、材料を準備するのもこれに入ってる。
要は、クラスに対する操作な。

で、現物を使ってテレビ点けたり、部屋冷やしたりする様な作業が-のついたインスタンスメソッド。例外的に用意した材料を加工するのもこれに当たる。

例えば、まあこんな感じかな。

// 疑似コード
パイ' = [パイのレシピ 材料の準備]
パイ = [パイ' 調理]

ここで、『材料の準備』はレシピについて行われてるから、クラスメソッドの呼出し。で、この後の調理は材料=ほぼ現物に対して行われてるから、インスタンスメソッド。一々こうかいてるのは面倒だから、

パイ = [[パイのレシピ 材料の準備] 調理]
みたいな感じで呼べる。


……こんな感じでおk?
289名称未設定:2008/06/28(土) 22:02:07 ID:r6CxQJy60
>>283, >>287
classはid型だけど、NSObjectのサブクラスとかじゃないよ。

290名称未設定:2008/06/28(土) 22:14:41 ID:5Bx5r4xK0
ここの盛り上がりに比べてiPhoneアプリ製作スレの中身の無さといったら
291名称未設定:2008/06/28(土) 22:31:29 ID:oyobADpU0
デリヘル嬢と本番するにはどんなメソッドを呼んだらいいの?
292名称未設定:2008/06/28(土) 22:42:08 ID:yHYqfuzX0
>>291
[[デルヘル嬢 alloc] init]
293名称未設定:2008/06/28(土) 22:42:48 ID:ZeRWvCBY0
release
294名称未設定:2008/06/28(土) 23:01:21 ID:5Bx5r4xK0
デリヘル嬢 デリ嬢 = [[デリヘル嬢 new] retain];
[デリ嬢 setMoney:1万];
[self setSkin:[Skin skin]];
[デリ嬢 play:self];
[self 射精];
[デリ嬢 release];
書いてて死にたくなってきたわ
以後建設的な話しを
295名称未設定:2008/06/28(土) 23:22:14 ID:EmOAb5fu0
処理中にキャンセルボタンでキャンセルさせたいのですが、
どうすればよいのですか?
処理はfor文とかで回してるのですが。
296名称未設定:2008/06/28(土) 23:27:19 ID:3jJ6jb9L0
>>289
失礼。正確には、
「NSObjectのサブクラスのクラスオブジェクトは、NSObjectのインスタンスメソッドを持つとして扱える」かな。
えーと例えば、
[NSString isKindOfClass:[NSObject class]] とするとYESが返ってくる。
クラスオブジェクトに対してrespondsToSelector:やperformSelector:が効くのもこのおかげだと思う。
297名称未設定:2008/06/28(土) 23:43:35 ID:+zEqA0Er0
298名称未設定:2008/06/28(土) 23:48:33 ID:oynXjVSX0
>>295
ボタンが押されたforループから抜ければいいじゃん
299名称未設定:2008/06/29(日) 00:38:06 ID:XlViJVqL0
ループを別スレッドに分ける。
300名称未設定:2008/06/29(日) 02:11:05 ID:ywkudbmZ0
>>294
leakしてる
301名称未設定:2008/06/29(日) 02:40:08 ID:QGzHDlD00
使用後のゴムが小学校の校庭に落ちていたのを思い出した。
ちゃんと処分しろよな。
302名称未設定:2008/06/29(日) 03:10:56 ID:t568XiuI0
AVMovie* movie = [[AVLibrary sharedLibrary] objectForKey:@"InranJoshiKose"];

[self watchMovie:movie];
[self playWith:self];

[[AVLibrary sharedLibrary] removeObjectForKey:@"InranJoshiKose"];

[self sleep];
303名称未設定:2008/06/29(日) 05:58:26 ID:azI+MvI70
>>295
forループでなくて、runLoopにて処理させるってのもある。
performSelector:withObject:afterDelay:を待ち0で指定。
次のrunloopで動く。

これだと、ループのなかでGUIの更新とかイベント処理とか
全部出来るからべんりだお
304名称未設定:2008/06/29(日) 06:27:34 ID:GLTNi95n0
CoreAnimationで明示的なアニメーションをさせているのですが
アニメーションが終了するとレイヤーが開始時の状態に戻ってしまいます。
終了時の状態をキープさせるにはどうすれば良いのでしょうか?
305304:2008/06/29(日) 09:43:32 ID:GLTNi95n0
自己レスです

CABasicAnimation* animation;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;

でいけました。kCAFillModeForwardsが何なのかよく分かっていませんが。
306名称未設定:2008/06/29(日) 10:33:07 ID:G8HUtWbV0
NSTextViewを2つ左右に配置して、改行数も同じなテキストを表示してるんですが
この2つのTextViewの垂直スクロールを同期(ホイール、スクロールバー操作時)させるにはどうしたらいいのでしょうか。。
307名称未設定:2008/06/29(日) 10:39:31 ID:4W+71IXB0
>>306
NSScroller用のValueを誰かに持たせて両方にbindする。


と、何も試さずに言ってみる。
308名称未設定:2008/06/29(日) 11:40:38 ID:U0RClpmA0
>>306
ドキュメントで SynchroScroll を「全文検索」する。

309名称未設定:2008/06/29(日) 14:13:09 ID:BWFM2zTG0
すみません。
2つのNSSplitViewで片方のNSSplitViewのディバイダーを動かした時に
もう片方のNSSplitViewのディバイダーをシンクロさせる方法はありますでしょうか?
310名称未設定:2008/06/30(月) 18:37:03 ID:LJd79rmJ0
HMDTの2nd読んでるんだけど
cocoaバインディングのとこで

バインディング用のNSObjectControllerにある "content"というアウトレット
これってIndentify Inspectorにはでてこないんですが
(Connectionsにはでてくる)
具体的になにをやってるんでしょうか??
311310:2008/06/30(月) 19:36:45 ID:LJd79rmJ0
これってIndentify Inspectorにはでてこないんですが

でてきてます。

すいません勘違い。。

312名称未設定:2008/07/02(水) 00:28:07 ID:BE+n65l+0
Cocoaセミナーの資料、Leoaprd対応前のヤツどこかで入手できないでしょうか?
もしくは誰かどこかにアップして頂けると嬉しいのですが・・・
中級編と上級編を
313名称未設定:2008/07/02(水) 09:26:55 ID:TLvP2d9t0
>>312
あきらめてレパードをかいましょう。1万円の投資はいみがあります。
なるべくAppleの提供しているとおりするのが混乱が起きなくて良いです。
Apple はどんどん過去を切り捨てる会社だからプログラムしようとおもったら仕方がないです。
314名称未設定:2008/07/02(水) 10:22:32 ID:7uYmBryr0
Leoaprd使ってるんですが都合上、メイン環境はまだDeveloperTools2.5なんで...

で、自己解決ですが色々ググってたらありました。
http://hmdt-web.net/Cocoa/
315名称未設定:2008/07/02(水) 10:24:05 ID:TLvP2d9t0
それはすいません。どういう都合なのか興味深いんですが。
316名称未設定:2008/07/02(水) 11:01:19 ID:6x1NISwO0
>>314じゃないが、自分もメイン環境はTiger。
仕事で使うアプリがTiger用…っていうかLeopardに移行して余計なトラブルを起こしたくない
といった都合。
317名称未設定:2008/07/02(水) 11:40:09 ID:7uYmBryr0
僕も仕事とか、トラブルを避けたいってのがあります。

それと、自分の知識が、まだ段階的に、OS 10.3〜10.4の新しいAPI勉強中、というぐらいなので
(そんなんで仕事すんなって話ですが)、Xcode3への移行も含めた10.5の勉強は後回しにしたいのです。
318名称未設定:2008/07/02(水) 12:22:08 ID:TLvP2d9t0
>>317
なるほど。でも XCode 3.1 (iPhone SDK についてるやつ)は全然機能豊富でいいよ。XCode でも Tiger 用のソフト作れるから、XCode だけは 3.1 にしてもいいんじゃないかな...

まあ Interface Builder の仕組みとかわかってないと、見た目が案外変わってるから混乱するかもしれないけど。
319名称未設定:2008/07/04(金) 17:15:58 ID:kZM2vvAg0
CoreAnimationについて質問です。
CoreAnimationを使うと位置や不透明度を指定するだけで中間フレームが補完されますが
アニメーションさせずに位置などを変更する方法は無いのでしょうか?
320名称未設定:2008/07/04(金) 17:26:12 ID:BBNuNSR70
>>319

コードを共通にしたいなら、Durationを0にするのが簡単。
321名称未設定:2008/07/04(金) 19:15:07 ID:KXtWY3ng0
CoreAnimation使わなきゃいいだろw
なんのためのAnimation機能だよ
322319:2008/07/04(金) 20:12:49 ID:hXaLDE1k0
自己解決。トランザクション設定でいけました。

>CoreAnimation使わなきゃいいだろw
>なんのためのAnimation機能だよ
一瞬だけ無効にしたい事は結構あると思うけど。
323名称未設定:2008/07/05(土) 23:17:33 ID:bbZv5NPd0
age
324名称未設定:2008/07/07(月) 17:54:09 ID:kroflgcW0
思いっ切り余談なんだけど、新し物好きとか見てると、
なんか3日に1回は0.1バージョンアップしてトップページに
載せて貰って、DLを稼ごうとしてるアプリがない?

いやまあ、別にいいんだけどさ。
新し物好きの人とか大変そうだなあと。
325名称未設定:2008/07/07(月) 18:45:38 ID:pUa99p1P0
新し物好きの人はどうでもいいんだが、
あまり改良点が少ないと、わざわざダウンロードしてくれた人に申し訳ない。

自分なら改良点が5個くらい溜まるまで+0.1は控えるな。
そうすると新バージョンの公開は大体1年に2回くらいになる。
バグフィックスは1個だけでも+0.0.1するけどな。
326名称未設定:2008/07/07(月) 22:35:04 ID:+XUVksz/0
>>324
新し物好きの人はそれで稼いでるんだからいいんじゃない?
ユーザーとしてはバージョンアップ歓迎だし。
327名称未設定:2008/07/08(火) 08:23:22 ID:AK0ZWKsw0
ソフトのとこクリックすると
新しもの好きにお金がはいるシステムだったんだ?
328名称未設定:2008/07/08(火) 11:44:46 ID:hfpgV8/00
直リンだし別に金は入らないかと。
329名称未設定:2008/07/09(水) 00:43:24 ID:zn8zpXSM0
バナー掲載料
330名称未設定:2008/07/09(水) 22:25:40 ID:cjjoVqS60
現在のマウスポインタがビュー内の特定の領域内にあるかどうかを判定したいんですが
QuickDrawでいうところのRegionはCocoaではなんと呼ぶんでしょうか?
331名称未設定:2008/07/09(水) 22:29:36 ID:sdo/FFS+0
知らん
NSMouseInRectでググれ
332名称未設定:2008/07/09(水) 22:32:23 ID:6VjgO1TE0
>>330
俺も昔は気になってたが、不定形はNSBezierPath使って判定してる

CGRegionだっけ?そんなのもあったような
333名称未設定:2008/07/09(水) 22:40:03 ID:cjjoVqS60
>>332
なるほど、NSBezierPathで領域を作って、containsPointで判断すればいいんですね
ありがとうございました
334名称未設定:2008/07/12(土) 23:55:07 ID:stdBe7cl0
sage禁止
335名称未設定:2008/07/13(日) 11:37:30 ID:HJA7K/r+0
NSString で、例えば "2ch" みたいに、ダブルクォーテーション付きで
文字を表示させたいときは、

NSString * string = @"( ? )";

で、 ( ? ) のところにどう記述すればいいでしょうか。
336名称未設定:2008/07/13(日) 11:39:09 ID:h5XyjEmR0
@" ¥" ¥" "
というふうにバックスラッシュ ¥ をつけます。
2ch に書き込むとバックスラッシュと円記号がごっちゃになる気がするけど ...
337名称未設定:2008/07/13(日) 11:39:52 ID:h5XyjEmR0
やっぱり円記号になった ...
XCode で日本語キーボードなら、Opt-円記号でやるとでる、/ と傾きが反対向きのスラッシュをつかってください。
338335:2008/07/13(日) 11:45:34 ID:HJA7K/r+0
>>336=337
できました!
ありがとう
339名称未設定:2008/07/13(日) 11:53:54 ID:9BVhVzTm0
まめ知識
NSString *AAA = @"aa";
NSString *BBB = AA @"bb";

とかくと、コンパイラで自動で結合されて
NSString *BBB = @"aabb";
と同義になる
340名称未設定:2008/07/13(日) 13:14:40 ID:u+yV8IfN0
>>339
> NSString *BBB = AA @"bb";

AAA@"bb";
かな?
341名称未設定:2008/07/13(日) 13:26:45 ID:NHNxxr7S0
間にスペースとか改行とかを入れると、ばしっとつながる。
(コンパイラでの接続なので定数オブジェクトに限られるけど)

NSString *strings = @"aaaa¥n"
@"bbbb¥n" @"cccc¥n";

#define SomeString @"index.htm"

NSString *TheURL = @"http:/aaa.com/" SomeString @"#anchor";

みたいな感じで、定義分と組み合わせると、条件によって文字を交換とかできる。
342名称未設定:2008/07/13(日) 13:43:48 ID:u+yV8IfN0
へえ、知らなかった。
面白いね、ありがとう。
343名称未設定:2008/07/13(日) 14:11:00 ID:iD5vJJHB0
age
344名称未設定:2008/07/13(日) 14:18:31 ID:Y1Ak5AxY0
Cの文字列リテラル連結と同じ要領だな
345名称未設定:2008/07/13(日) 22:30:18 ID:rN/PKW4q0
iCalみたいに、起動してないアプリのアイコンを書き換えるにはどうすればいいんですか?
346名称未設定:2008/07/13(日) 22:39:15 ID:ZrJCFMn30
[[NSWorkSpace sharedWorkspace] setIcon: SomeIcon forFile: fullPath options: nil];
とかでファイルのアイコンを書き換える。みたいなのかな
347名称未設定:2008/07/13(日) 22:41:23 ID:u+yV8IfN0
348名称未設定:2008/07/14(月) 10:09:46 ID:nTc4Tt9A0
HMDT 3rd 本を読んでいるところです。
core data のサンプルで、3ペインのMailアプリケーションのようなサンプルがあります。
左のテーブルにMailbox、右上のテーブルにMailboxに含まれるMailのリスト、その下にメールの内容が表示されるものです。
このサンプルを使って、Mailboxを作成、Mailを複数追加。
その後、Mailをリストから削除すると、
~/LIbrary/Application Support/Mail/Mail.xml
の中に削除したMailの部分だけ残るようになってしまいます。
Mailboxごと削除してもその部分だけ残ります。
自分でデータ削除用のコードを書かなければならないのでしょうか?
それとも設定をミスってる?

環境は、Tiger + Xcode2.5 です。
ヒントだけでもお願いします。
349名称未設定:2008/07/14(月) 11:30:23 ID:uGWsnIyx0
>自分でデータ削除用のコードを書かなければならないのでしょうか?
うん。というかハードディスク余ってるんだから、別に消さなくても ...
350名称未設定:2008/07/14(月) 12:20:57 ID:kfMtczJR0
>の中に削除したMailの部分だけ残るようになってしまいます。
削除していないMailは消えてるの??

コアデータは(デフオだと)アプリを終了しないとXMLに書き込まれないよ。
あと、削除といってもフラグを立ててるだけかもしれないし。
351名称未設定:2008/07/14(月) 13:02:28 ID:nTc4Tt9A0
ありがとうございます。
>>349 さん
追加と削除を繰り返すだけでデータが増えていないのに、ファイルサイズが大きくなっていくのが気持ち悪かったので...

>>350 さん
>削除していないMailは消えてるの??
書き方が分かりにくかったでしょうか。
削除したMailがxmlファイルにはずっと残ってしまうという状態です。
例えば
アプリを起動 > Mailboxを1つ作成 > Mailを2件登録 > Mailを1件削除 > Mailboxを削除 > アプリ終了
で、確認すると削除したMailだけ残っています。
上の例で、Mailboxを削除しなければ、MailboxとMail2件が残っています。
削除ボタンはMail用のArrayControllerのremoveアクションに繋がっています。
Mailboxを削除するボタンもMailbox用ArrayControllerのremoveアクションに繋がってますが、Mailboxは追加や削除を繰り返してもきちんと削除されます。
352名称未設定:2008/07/14(月) 13:49:19 ID:iCe9YYmu0
>>351
見当違いかもしれないけれど、MailboxのrelationshipからだけMailを削除しているだけではないですか?

Deletes Objects on Remove オプションはどうなっていますか?

353名称未設定:2008/07/14(月) 13:59:47 ID:nTc4Tt9A0
>>351 さん
ありがとうございます。
Deletes Objects on Remove オプションがOFFになってました。
ONにすれば削除されますね。
お恥ずかしい限りです...

と言う事で解決致しました。
レス頂いた皆様、ありがとうございました。
354名称未設定:2008/07/14(月) 14:01:06 ID:nTc4Tt9A0
アンカー間違えました。
351でなく >>352 です。
355名称未設定:2008/07/18(金) 12:43:58 ID:EhXln+vS0
そういや、気がついたらxibになってたけど、awakeFromXibにはならないのか。
356名称未設定:2008/07/18(金) 19:06:01 ID:Lq/H4W2N0
xibはビルドするとnibになるよ。
357名称未設定:2008/07/19(土) 00:17:13 ID:OkWOTiQ/0
awakeFromDeb
358名称未設定:2008/07/19(土) 11:34:30 ID:yEZ0hIqg0
何でもかんでも初期処理をawakeFromNibに書いて特に不具合もないのですが、
initWithなんたらに書いた方がいいんですかね?

昔はawakeFromNibがなかったからinitWithなんたらで書いてた、
なんて記事を見た記憶もあるのですが。
359名称未設定:2008/07/19(土) 12:53:13 ID:N9OU6Tmk0
>>358
initWith... は nib から目覚めたときには呼ばれないよ。
initWith... は IB でオブジェクトをつくったときに呼ばれていることになってる。

nib につくっておいてない、自分でプログラム内でつくるオブジェクトは initWith を alloc] initWIth... ] でつくりますが。
360名称未設定:2008/07/19(土) 13:20:13 ID:c4RN+gO80
361名称未設定:2008/07/20(日) 00:04:28 ID:OkWOTiQ/0
そうそう、awakeFromNibはクラスの実装内容によっては複数回呼ばれるんだよね
362名称未設定:2008/07/20(日) 01:07:49 ID:7BP6qNun0
>>358
Viewだとnibに置いた場合はinitWithCoder:が呼ばれる。
俺はnib以外で使う場合も考えて、共通の初期化メソッドを作っておいてinitWithFrame:とinitWithCoder:から呼んでる。
アウトレットを使って何かする必要があるときはawakeFromNibも使う。
363名称未設定:2008/07/20(日) 11:04:14 ID:3L2wlaQd0
便乗して質問

initWithCoder で渡される coder って、具体的に何で、
誰から渡されてるんでしょうか。

デカいデータを必要になったときだけ読み込みたくて、
initWithCoder の中でそのデータだけは decode せず、
後から明示的に decode させるようにしたいんですが。
364名称未設定:2008/07/20(日) 11:41:21 ID:7BP6qNun0
>>363
「Archives and Serializations Programming Guide for Cocoa」を読むと分かると思う。
ただしでかいデータを遅延読み込みなんてのはそもそもcoderに頼むべきことじゃない。
何故ならcoderがどうやって、どんな形式でファイルを保存しているかを気にしなくていいのがこの方式の利点だから。

やるとしたら、そのでかいデータは別のオブジェクトにして、そのキーだけを保存すればいい。
ファイルに保存したいなら、別ファイルにするか、バンドルを使えばいい。
365名称未設定:2008/07/25(金) 12:33:10 ID:mF3swvCE0
Youtube APIを使用してYoutube Player/Downloaderを作成しているのですが、
ダウンロード機能のAPIはなく、サイトページを受信してリンクの文字列を抜き出して
うんぬんしか方法はないのでしょうか?

抜き出しスクリプトを探すとperl、php、pythonのスクリプトはあるのですが、
objective-cで処理してるのがなさそうです。(正規表現が弱いからできないのかな?)
366名称未設定:2008/07/25(金) 12:36:08 ID:cN0vq8T+0
まあ正規表現使わなくても NSScanner でごにょごにょやれば出来ると思いますが。面倒だけど。
NSTask で perl かなんか呼んだほうがかんたんかも。
367名称未設定:2008/07/25(金) 15:35:45 ID:QoefX31z0
NSXML関連は?
368名称未設定:2008/07/25(金) 18:05:01 ID:AYy3UwPY0
基本的な質問です
CocoaはRPGのようなゲームを作るのに向いていますか?
Macでゲーム開発するのはObj-Cでokでしょうか?
369名称未設定:2008/07/25(金) 18:27:36 ID:AHiEGlWW0
>>368
Core AnimationとかOpenGLとかも使えるしObj-Cでおk
370名称未設定:2008/07/25(金) 19:45:44 ID:hr980FSd0
>>368
そのゲームのスペックや内容にもよりますが、Cocoaはゲーム用のフレームワークじゃないからね。
Cocoaを使わないなら、ObjCを使うメリット半減って感じがするし。
もし、パフォーマンスを追求することになるなら、逆にObjCは不向きな気もします。

371名称未設定:2008/07/25(金) 20:08:20 ID:AYy3UwPY0
アドバイスありがとうございます
RPGツクールをやっていてちょっと高度な事がやってみたくなった
程度のものですので、内容としてはまったく低レベルなものです
ドラクエみたいなのをイメージしています。他に同じような事をやってる方のサイトでも
あれば良いのですが、内容なのでまずは全体像をつかむ所から勉強してみようと思います
372名称未設定:2008/07/25(金) 20:13:53 ID:Rns0Tosq0
373名称未設定:2008/07/25(金) 23:24:46 ID:cN0vq8T+0
ゲームをつくるときは OpenGL でやるのが普通なんじゃないでしょうか。
でも、そもそもゲームの画面を表示するウインドウを表示したりとかいうあたりは
Obj-C と Cocoa でやらないといけないと思います。
(まあ Carbon +C でやってもいいけど、資料も少ないし、かえって大変だとおもう)
374名称未設定:2008/07/25(金) 23:52:01 ID:K08YB9VO0
アクションゲームには不向きだと思うけど、CoreAnimationってそれなりにゲームに使えそうな気がするんだよね。特に、ビジュアルノベルゲームとか。Core Animationのサンプルにカードゲームはあった気がする。
375名称未設定:2008/07/26(土) 00:39:11 ID:5uCYidXZ0
>>370
まぁ、同じオブジェクトに同じメソッドを繰り返し呼ぶ場合には、
MethodForSelectorで関数ポインタを取得してそこから呼び出せば
速度が向上したりする。メソッドではなく関数で処理したらいい部分とかは
関数で組んでやるといいのかもね。
376名称未設定:2008/07/26(土) 01:23:05 ID:HVS8eIt00
Pangeaがゲーム開発者向けのプログラミングガイドを公開してる。
あんまCocoaって感じじゃないけど
ttp://www.pangeasoft.net/book/index.html
377名称未設定:2008/07/26(土) 02:12:35 ID:UyOrFXTo0
Obj-CはCも混ぜて書けるんだから、速度出したいところではどうにでもなるだろう。
378名称未設定:2008/07/26(土) 16:15:53 ID:Hv7t3I4z0
Cocoa / Objective-C がゲームに不向きとは思えません。
Doom が NEXTSTEP で開発されたことを思い出して欲しいです。
むしろ今の環境の方がマシンパワーが上がっていて有利に思えます。
379名称未設定:2008/07/26(土) 17:17:50 ID:pdFJtDbq0
>>365
>>366の言うようにNSTaskからLL言語を呼ぶのは楽でいいと思う。
俺も自分用の手抜きアプリとかは基本的な処理はRubyに投げてる。

正規表現なら個人的にcocoaonigurumaがおすすめ。
http://limechat.net/cocoaoniguruma/index_ja.html
380名称未設定:2008/07/26(土) 19:06:22 ID:7j8Urm4Q0
あと有名どころでは OgreKit ってのがあるよな。
http://www8.ocn.ne.jp/~sonoisa/OgreKit/

あとはRegexKit/Regex Kit Lite とか。
381名称未設定:2008/07/26(土) 20:36:32 ID:MNwjOzXJ0
CoreMIDIをつかったアプリケーションのプログラミングをしたいのですが、何か良い参考資料はないでしょうか
ADCの中を見ていても、CoreAudio関連の詳細な資料が見つけられないので困っています
とりあえず、当面の目標は、システムエクスクルージブなどのMIDIデータをMIDIに流すだけのプログラムで
外部MIDI音源の音色エディットなどに使えるものを作ろうとしているのですが
MIDIエンドポイントにデータを渡す方法からして、どこをどう調べれば良いのかわかりません
環境はMacOS X 10.4.11,Xcode2.5です

ちなみに、私自身のプログラミングスキルは、大学時代にC言語のコンソールアプリケーションをいくつか作った事がある程度で
オブジェクト指向プログラミングは先週始めたばかりです
古本屋で見つけたXcode2入門という本で一通りXcodeとInterfaceBuilderの使い方は覚えました
382名称未設定:2008/07/26(土) 20:46:29 ID:AdlohJ0J0
>>381
ttp://www.stripe-net.jp/cocoa/products/midiwind2/index.html
ここに、MIDIプレイヤーのソースコードがあるよ。
383名称未設定:2008/07/26(土) 21:09:06 ID:MNwjOzXJ0
>>382
ありがとうございます
読んでみます
384名称未設定:2008/07/26(土) 21:29:04 ID:xAyOBL3b0
385名称未設定:2008/07/27(日) 00:14:58 ID:vnIR5zO10
質問です。
SDKのOpenGLのサンプル
/Developer/Examples/OpenGL/Cocoa/CocoaGL
で、C++のコードを追加しようと思い、
Foo.cpp, Foo.h
を追加して、
空のクラスを追加したのですが、コンパイルエラーが2000個近く出てしまいました。

どういう原因が考えられるでしょうか。

新規プロジェクトでCocoaアプリケーションやiPhoneのプロジェクトを作成した場合は、同様の事がうまくいくのですが・・・。
386名称未設定:2008/07/27(日) 00:26:56 ID:CKmeY8Xx0
387名称未設定:2008/07/27(日) 00:50:25 ID:0wQFrli+0
>>385
コンパイルエラーの内容が少しでも分からないと、何もアドバイスできないのだが。

388名称未設定:2008/07/27(日) 00:52:35 ID:QkLCg1mE0
>>385
根本的な解決にならんかもしれんが拡張子をcppからmmに変える
389名称未設定:2008/07/27(日) 00:54:50 ID:CKmeY8Xx0
>>385
C++のコードを追加したとあるけれど、新しくクラスを追加という事は
ココアのクラスの中にC++のコードを組み込んだという事でしょうか。
もしそうであるなら、拡張子をmにしてみるとか。
390名称未設定:2008/07/27(日) 01:04:35 ID:vnIR5zO10
みなさん、レスありがとうございます。
>>387さん
ごもっともです。すみません。ただ、2000個近くあるので、どれをどう説明すればいいか・・・

>>388さん
試してみます。ただ、マルチプラットフォームにしたいコードをC++で書いていて、それをCocoaから利用したいという想定なので・・・。

>>389さん
いえ、単に.cppと.hをプロジェクトに追加しただけです。Cocoaのクラスに直接干渉させるようなことはしていません。
追加した.cppをビルドの対象から外すと、問題なくビルドが通ります。
391名称未設定:2008/07/27(日) 01:25:55 ID:G0AeuOUq0
ビルドのオプションじゃない
392名称未設定:2008/07/27(日) 01:34:32 ID:QkLCg1mE0
>385
新規ファイル追加でtest.pchを作る
test.pch
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

ビルドオプションの
GCC4.0 languageの項目
Prefix Headerの項目をダブルクリックして入力されているのを削除し
test.pchを入力する
で、ビルドする

書いてて内容が良くわかってないから
Developerからコピーしてからやってみて
393名称未設定:2008/07/27(日) 01:58:17 ID:0Z6SChht0
>ごもっともです。すみません。ただ、2000個近くあるので、どれをどう説明すればいいか・・・
まずいちばん最初から5つぐらいのエラーを教えてください。
後ろのほうのエラーは単に前のほうのエラーでコンパイラが混乱して
変なことをいってるだけのことが多いです。
394392:2008/07/27(日) 01:58:29 ID:QkLCg1mE0
サンプルコードのPrefix Headerに$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h
が書いてあってcppファイルの時でもObjective-cのコードが関係してきてコンパイルエラーが出てるっぽい
そのパスを削除するだけでビルドできる様になったが、Prefix Headerはコンパイル時間を高速化するだけで
無くても問題なし?
395名称未設定:2008/07/27(日) 07:59:45 ID:dQ9C+Nti0
「全角で書いてました」とかだったら大笑い
396名称未設定:2008/07/27(日) 09:24:26 ID:mkJjDbWC0
>>393
たんにC++コードに誤りがあるってことはないよね?
397名称未設定:2008/07/27(日) 10:57:21 ID:DcKmiVLG0
>>394
>無くても問題なし?

なし。というかエラーがでなくなることがまずは重要。
もしその推測が正しいなら、ビルドの設定でコンパイラのデフォルトの言語を
Objective-C++にしてもいいかもしれない。
398名称未設定:2008/07/27(日) 11:41:37 ID:C9Bb+G9B0
手元にXcodeの2.5しかないんだけど、3.0には「Objective-CでC++デフォルトコンストラクタ/デストラクタを呼び出す」は
あったっけ?これにチェックが入ってないとC++のコードで大量にエラーが出ると思うんだけど。
399名称未設定:2008/07/27(日) 12:04:55 ID:XmdTpJa10
3.1で Info パネルにそれに相当する項目があからさまにあるかは知らないけど、
何にせよ -fobjc-call-cxx-cdtors を指定すればいいです。
あと、べつにそのオプションをチェックしなくても、C++の文脈で
default constructor / destructor が呼ばれなくなるわけじゃなくて、
そのオプションは、Obj-C のクラス内にメンバ変数として
C++ のクラスのインスタンスを置いたときに、
alloc init 時にそれらのコンストラクタを
呼ばせるためのオプションなので、滅多に関係ない気がします。
というか @class 内に C++ のクラスのポインタで無いインスタンスを置くなと。
400名称未設定:2008/07/27(日) 16:18:25 ID:n359+EOk0
さっき書き込んだのに反映されなかったのでもう一回。

NSTableViewで選択されたアイテムを表示する時に、
ハイライトじゃなくて下線で提示してあげるようにしたいんですが、
どうしたらいいでしょうか?
具体例あげるとこんな感じです。
ttp://www.h5.dion.ne.jp/~akt/afxss/afxss_b1.png
(現在選択されているアイテムが下線、選択済みアイテムがハイライトされてるやつ)
401名称未設定:2008/07/27(日) 16:27:53 ID:MVJct1Bk0
似たようなプログラムを組んだ事がある。確か…
NSTableViewのサブクラスを作って、
- (void)drawRect:(NSRect)frameRect;
をオーバーライド。選択しているときに下線を引くようにする感じだったかな。
選択しているときのデフォルトの色が反映されたりちょっと苦労した記憶あり。
402390:2008/07/27(日) 17:36:13 ID:vnIR5zO10
>>392さん
>>394さん
ご指示の方法でこちらでもうまく行きました。ありがとうございます!
その他の方々も、助けていただいてどうもありがとうございました。
精進します。
403400:2008/07/27(日) 18:32:55 ID:n359+EOk0
>> 401
オプションとかで切り替えられるわけじゃなくて、
ハイライトさせてるメソッドをオーバーライドして、
そこで自分でセルの内部にdrawLine()するんですね。
助かりました。どうもありがとうございます。
404名称未設定:2008/07/27(日) 18:51:41 ID:hII6V1eF0
提示してあげるようにしたい
405名称未設定:2008/07/29(火) 13:56:26 ID:yPUrLNpI0
Xcode 3.1です。

ツールバーのデリゲートで、
- (NSArray *) toolbarDefaultItemIdentifiers : (NSToolbar *) toolbar {
return [ NSArray arrayWithObjects :
NSToolbarPrintItemIdentifier,
NSToolbarPrintItemIdentifier,
nil
];
}

と設定しているにも関わらず、デフォルトセットに"カスタマイズ"等のツールバー項目が表示されてしまうのですが、なにか他に設定すべき箇所があるのでしょうか。

http://wktk.vip2ch.com/vipper91279.png
406名称未設定:2008/07/29(火) 15:28:44 ID:a9APv9gE0
>>405
もう3.1の話をしても良いんだっけ?
407名称未設定:2008/07/29(火) 16:42:26 ID:+WtQKlmJ0
3.1はリリースされてる
408名称未設定:2008/07/29(火) 16:50:05 ID:ufYnqxk40
>>405
IBで何か設定していませんか?
delegateで設定したものと、IBで設定したものの和が表示されますよ。
409名称未設定:2008/07/29(火) 17:52:26 ID:yPUrLNpI0
>>408
NSToolbarのインスタンスはIBにて作成しています。
どこに設定があるのでしょうか…
410名称未設定:2008/07/29(火) 18:45:42 ID:yPUrLNpI0
NSToolbarはIB使わず作った方がいいのかな…
もう限界orz
411名称未設定:2008/07/29(火) 18:56:17 ID:yPUrLNpI0
IBでもとから入っていたNSToolbarItemをいったん抹消した後LibraryからD&Dしたら解決しました。

なんだろこの仕様…
3時間の苦労…
412名称未設定:2008/07/29(火) 19:10:24 ID:zz+wWVx50
たまにタコな動きするからクリーンとかIBを手動で保存とか
コネクションし直しとか、あまりXcodeを信用しないほうがいいよ。
413名称未設定:2008/07/29(火) 20:53:04 ID:gygQrOlO0
クリーンはよく分かる
IBの変更の反映ってちょっと遅いもんね
414名称未設定:2008/07/30(水) 12:42:42 ID:iYUCSHAp0
あーもうコード書くの面倒臭くなってきた。
アップルの自社製品のUIはやたらと凝ってるし
それに似てないとみんな「○○みたいには出来ないんですか?」と
納得しないし。
415名称未設定:2008/07/30(水) 13:25:04 ID:FLlKvH4q0
IBはCmd-0でアウトライン表示にするとレイヤー選択するの楽。
416名称未設定:2008/07/30(水) 19:41:26 ID:pk8mMrnG0
すいません、お尋ねしたい事があるのですが・・・

FoundationやAppKitには、Windowsで言うところの「GetTickCount()」のような内部カウントを取得する関数って無いんでしょうか?
色々と探してみたのですが、どうにも見つからなくて・・・・・・
417名称未設定:2008/07/30(水) 19:45:42 ID:ze87ztrh0
普通にBSD系関数使えば?
418名称未設定:2008/07/30(水) 20:59:44 ID:0xFujw9p0
>>414
似せて作る要望がそんなに強いのか…。
機能がまずは大事だろうし、気が向いたらビジュアルを作り込む
位の心意気でいいと思うよ。肩の力を抜こう
419名称未設定:2008/07/30(水) 21:03:37 ID:PepTTP7Q0
mach_time.h
420名称未設定:2008/07/30(水) 21:08:54 ID:R/hoyucI0
ソフトを使う人はプログラマじゃないのでUIも非常に大事だと思いますよ
あとMacを普段触ってる人ならOSXライクなUIにすることでおのずと操作性も上がると思います
421名称未設定:2008/07/30(水) 21:46:53 ID:K7PGsPzy0
>>416
使い方も精度もよくわからんけどNSDateとかどうでしょう
NSDate *date1 = [NSDate date];
〜〜
時間のかかる処理
〜〜
NSDate *date2 = [NSDate date];
NSTimeInterval time = [date2 timeIntervalSinceDate: date1];
NSTimeIntervalはdoubleのtypedefです。


ところで別の質問ですが
[NSString stringWith...]の戻り値はautoreleaseされてると思うんですが、
autoreleaseされてる、されていないの区別はどうやってつけるんですか?
たとえば上の[NSDate date]はどっちになるんでしょうか。
422名称未設定:2008/07/30(水) 22:27:43 ID:PepTTP7Q0
>>421
返ってくるオブジェクトが、シングルトンでないかぎりautoreleseされてると思う。

423名称未設定:2008/07/30(水) 22:32:37 ID:elk3Szvx0
>>421
autoreleaseされているかどうかよりも
自分でreleaseする必要があるかどうか、という考え方のほうがCocoa的だと思います。

名前がnew/allocではじまる、もしくはcopyを含む(copy/mutbleCopyなど)メソッドで
オブジェクトを得たとき 以 外 はオーナーシップが発生しない(と期待される)ので
[NSDate date]の戻り値は自分でretainしない限りreleaseする必要がありません。

ttp://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Tasks/MemoryManagementRules.html
424名称未設定:2008/07/30(水) 23:19:27 ID:qC4aLLnW0
自作のFrameworkに含まれるMyButtonとかMyObjectとかを、
Frameworkを利用したい別プロジェクトのIB上でボタンとかオブジェクトに割り当てて置いておくことってできないのでしょうか?
425421:2008/07/30(水) 23:33:25 ID:K7PGsPzy0
>>422
>>423
なるほど勉強になります。
ヒレガス本を見てたらP59にreleaseに関する規則が書いてありました。
古いせいかnewではじまるものは書いて無かった。Xcodeですらないし。

>>421のNSTimeIntervalなんですがドキュメントにはsub-millisecondという単語が出てくるんで
精度はサブミリ秒なんでしょうが、サブミリ秒が10ミリ秒なのか、100ミリ秒なのかその他かは解らんです。
426名称未設定:2008/07/31(木) 00:39:45 ID:LTCTNNkm0
>>421
NSAutoreleasePool *pool;

NSSring *test = [NSString stringWithString: @"a"];
printf("%d¥n", [test retaincount]);
[pool release];
printf("%d¥n", [test retaincount]);

[pool release];
ではautoreleaseで仮開放されたオブジェクトが開放される。
これでautoreleaseされている事を数値として確認できるはず
427名称未設定:2008/07/31(木) 00:51:04 ID:kJOPwvi90
>>426
それでは、[pool release] で test が release されていた場合に、
次の [test retainCount] でクラッシュする可能性がありますぜ。
せめて NSString* test= [[NSString stringWithString:@"a"] retain];
ぐらいしておかないと。

あと、NSString* は激しく最適化されてるから、
test で何がかえってくるか定かでないよね。
NSConstantString である @"a" が、
retain autorelease されて返ってきても、
retain も autorelease もされずに返ってきても文句は言えない ...
428名称未設定:2008/07/31(木) 00:57:12 ID:LTCTNNkm0
>>427
おおそうであった。指摘ありがとう
NSAutoreleasePoolを使う事で一時的オブジェクトである事を確認できる事を考えてて
コーディングが甘くなってたわ。いかんいかん
429416:2008/07/31(木) 11:52:05 ID:HINI5QGu0
>>417
>>419
>>421

皆様、遅くなりましたが、ありがとうございます。
BSD、mach_time.h、NSDateなどのキーワードを散りばめて検索してみたら、色々なページが見つかりました。

ttp://developer.apple.com/jp/qa/qa2004/qa1398.html
ttp://numata.designed.jp/?Diary%2F2008-01-18
ttp://blog.cocoa-study.com/?eid=71951&target=commentform
ttp://kzk9.net/column/time.html

まさに知りたい情報で感動しました!
これからコード書いて、色々と試してみます。
430名称未設定:2008/07/31(木) 19:12:12 ID:jV7NgTse0
copyWithZoneって何ですか?
これを入れたら落ちなくなるおまじないだと思ってるのですがw
431名称未設定:2008/07/31(木) 19:14:27 ID:RPCi2OoE0
じゃあ、そうなんじゃね?
432名称未設定:2008/07/31(木) 19:25:16 ID:ykkdbxuS0
たまには上げるかな。

>>430
- (id)copyl;
- (id)copyWithZone: (NSZone*)theZone;
copyというのは、自分のオブジェクトが持っているインスタンスをまるまる
複写して所有権付きで呼び出し主に渡すというもの。
copyWithZoneてのは、メモリゾーンを指定して同様の事をするもの。
落ちなくなるおまじないってわけでもない。

呼び出したらretainが一回入ってるので所有権に注意。
433名称未設定:2008/07/31(木) 20:49:52 ID:HcoTC4VH0
>>424
もちろんできます。
434名称未設定:2008/07/31(木) 21:04:07 ID:52Jq8wko0
そういやIB3のライブラリに独自GUI部品追加するのってどうやるんだろ
IB2ではNIBプラグインかなにか入れてた気がするがあれはもう使えんよな
435名称未設定:2008/07/31(木) 21:12:34 ID:NGJ8irep0
>>433
自己解決しました、どうも
436名称未設定:2008/07/31(木) 21:28:55 ID:HcoTC4VH0
>>434
ibplugin に変わりました。
Cocoa Bindings使いまくり。
437名称未設定:2008/07/31(木) 23:31:16 ID:XcF0aGMT0
>>431-432
なんとなくわかりました。
ありがとうございました。
438名称未設定:2008/08/01(金) 00:46:32 ID:OOXSlUhh0
>>437
質問の背景がよくわかりませんが、例えばNSTableColumnの
dataCellはデータの増減によってコピーされます。
copyは実際はcopyWithZone:NULLが送信されています。

一例としてSample programのSourceViewのImageAndTextCellの
- (id)copyWithZone:(NSZone*)zoneをコメントアウトすれば、
super classにcopyWithZone:が送信されるため
imageが存在しないので、クラッシュするのは当然のことです。
439名称未設定:2008/08/01(金) 08:11:32 ID:fh38Gufg0
>>438
>Sample program
突然何の sample program の話をしてるの?
440名称未設定:2008/08/01(金) 09:33:55 ID:WJ5RtYj10
読み取れ
441名称未設定:2008/08/01(金) 15:30:22 ID:BstKir2w0
Xcode3.1でソースの一番下までスクロールした状態でコード補完させると、勝手に上へ数行スクロールするようになりました。
原因わかる人教えてくれ。

Xcodeスレは1000目前にしてDAT落ちしたね。
442名称未設定:2008/08/01(金) 19:35:17 ID:HAWlbAH/0
xcodeスレ落ちた
だれか次スレおね
443名称未設定:2008/08/01(金) 22:37:42 ID:E0l24OCW0
>>442
いらないでしょ
444名称未設定:2008/08/02(土) 00:45:45 ID:flpSDaAS0
そんなに分類する必要ないでしょ
Carbonスレも最近立ってるけど、Mac開発全般1スレだけで良さげ
445名称未設定:2008/08/02(土) 19:18:50 ID:DWJNDgjK0
質問です
NSResponderの
- (BOOL)performKeyEquivalent:(NSEvent *)anEvent メソッドを上書きしてキーを押したときのNSEventの中身を調べていました。
シフトやオプションを押しながらキーを押すと当然modifireFlagsの値は変わるのですが、
なぜかウィンドウのcontentViewをクリックした後とタイトルバーをクリックした後でも値が変わってしまいます。
Modifier FlagsのMaskについてもドキュメントを参照したのですが、なぜこの2通りのときで値が変わるのか、modifireFlagsに何が入ってているのか分かりませんでした。
どういったことでこの違いが起きているのでしょうか?

サンプルプロジェクトを上げたのでよろしければ見てください。
http://mac.hitobashira.org/up/src/maka0081.zip
446名称未設定:2008/08/02(土) 19:56:25 ID:z2jGhNS/0
確かに、1 << 8 値が変わるな。
447名称未設定:2008/08/02(土) 20:45:44 ID:DWJNDgjK0
内部的な何かの処理のなのでしょうか。
とりあえずその部分を無視しようと以下を追加しました。

NSString *key = [theEvent charactersIgnoringModifiers];
NSUInteger flag = [anEvent modifierFlags];
if (flag & 1 << 8) mask -= 1 << 8;
if ([[self keyEquivalent] isEqualToString:key] && [self keyEquivalentModifierMask] == mask) {
return YES;
}

正しく動作はしますが、やり方としてはこのような感じで合ってるのでしょうか?
そもそも
0x100 16進数
256 10進数
1 << 8 ???
って感じで最後のがよく理解できてない状態ですが、、。
448421:2008/08/02(土) 20:46:57 ID:wMjpltPb0
>>445
ちっとも進展してないが、とりあえず報告
OS X10.5.4
Macbook Pro
トラックパッドの下のボタンを使ってクリック
T1:ViewをクリックしてからShift+Option+アルファベット 655650
T2:タイトルバーをクリックしてからShift+Option+アルファベット 655394

で、USBで接続しているワコム[ペンタブ/マウス]を使うと再現せず
W1:ViewをクリックしてからShift+Option+アルファベット 655650か655394
W2:タイトルバーをクリックしてからShift+Option+アルファベット 655650か655394
数値はトラックパッドで行った時のが引き継がれる模様
T1のあとならW1,W2共に655650でした
もちろんwacom[ペンタブ/マウス]でも普通の操作はできる

で、NEC製の普通のマウスで同様にするとトラックパッドと同じ結果
単にワコムのペンタブとマウスが特殊なのが解っただけでしたw
449名称未設定:2008/08/02(土) 20:51:25 ID:DWJNDgjK0
if (flag & 1 << 8) mask -= 1 << 8;
をしなくても
[self keyEquivalentModifierMask] == mask
の演算子をいじるだけで同じ働きができたりしないでしょうか?
450名称未設定:2008/08/02(土) 20:53:41 ID:DWJNDgjK0
>>448
調査ありがとうございます。
じっくり読ませていただきます。
451名称未設定:2008/08/02(土) 21:02:34 ID:wMjpltPb0
>>448
名前が残ってた
>>450
多分何も関係ないからさらっと流しといてください
452名称未設定:2008/08/02(土) 21:18:52 ID:nCOEhJZL0
>>447
マスクなんだから
if ([[self keyEquivalent] isEqualToString:key] && ([self keyEquivalentModifierMask] & mask)) {
とすればよいと思いますが?
Testing for Event Type and Modifier Flags
http://developer.apple.com/documentation/Cocoa/Conceptual/EventOverview/EventHandlingBasics/chapter_4_section_5.html#//apple_ref/doc/uid/10000060i-CH5-SW16
453名称未設定:2008/08/02(土) 21:44:03 ID:DWJNDgjK0
>>451
読んでみたところペンタブだと現象が起きないということですね。
>>452
試してもらえば分かると思いますが、それではうまくいかなかったのです。
サンプルプロジェクトに書いたように
if (flag & NSShiftKeyMask)
if (flag & NSCommandKeyMask)
で一つ一つのflagの有無はチェックできるのですが、
if ([self keyEquivalentModifierMask] & flag)
では
[self keyEquivalentModifierMask]が設定されてないと常にNOを返してしまうようです。

ちなみに>>447のコードのmaskのとこはflagでした、すいません。
454名称未設定:2008/08/02(土) 21:53:02 ID:VyG5QnCh0
>>453
マスクとビット演算のこと分かってないんじゃないかな。
if ([self keyEquivalentModifierMask] & flag) で[self keyEquivalentModifierMask]が0だったらNOなのは当然でしょ。
455名称未設定:2008/08/02(土) 21:59:40 ID:wMjpltPb0
>>453
結局何をしたいのか具体的に書いてみてはいかがでしょうか
わかってないのは自分だけ?
456名称未設定:2008/08/02(土) 22:00:20 ID:DWJNDgjK0
>>454
すいません、正直ビット演算はまだ理解が浅いですが、
上記の例で当然0になるという点は理解しています。
「返してしまうようです」という書き方は不適切でした、すいません。
>>447の例を最適なコードにするにはどうしたら良いでしょうか?
457名称未設定:2008/08/02(土) 22:05:27 ID:wMjpltPb0
>>456
自分には難しそうです、何かわかればまた書きます
458名称未設定:2008/08/02(土) 22:13:04 ID:VyG5QnCh0
>>456
いやそもそも何をしたいのかがさっぱり分からん。
単に修飾キーを判定したいだけならこんなごちゃごちゃ書く必要ないじゃん。
459名称未設定:2008/08/02(土) 22:51:20 ID:DWJNDgjK0
ことの発端は>>445です。
修飾キーの判定には先に挙げたような
if (flag & NSShiftKeyMask)
といったものが使えます。
しかし特定の修飾キーに関してではなく、ここでのselfにあたるオブジェクトに設定された修飾キーと同じかどうか(もしくは全て含むかどうか)を判定しようとしたところ、
Modifire Flagsのドキュメントに載っていない 1 << 8 という値が飛んできて、しかもそれが特定の条件化で来たり来なかったりといったところで、どうしようかとなったわけです。
条件が分かればそこをチェックしてFlagの判定に組み込めばいいのですが、
ここまでの流れはそのFlagをどう無視するかというものでした。
例えば、
if (flag & NSShiftKeyMask)
if (flag & NSCommandKeyMask)
などすべて列挙していって、ドキュメントに書かれていない例外的なFlagを無視することもできます。
これは>>447の方法よりコードの信頼性は高いと思いますが、非常にアナログな手法で、もっとスマートにフラグの判定をできないかと思った次第です。
460名称未設定:2008/08/02(土) 23:10:55 ID:VyG5QnCh0
>>459
今一よく分からんが、「selfにあたるオブジェクトに設定された修飾キーと同じかどうか(もしくは全て含むかどうか)を判定」
すればいいのね?だったら>>447
if ([self keyEquivalentModifierMask] & [anEvent modifierFlags]) {
return YES;
}
でいいじゃん。あ、上のコードは修飾キーだけの判定ね。
461名称未設定:2008/08/02(土) 23:33:50 ID:VyG5QnCh0
>>460
間違えた。全ての修飾キーが一致しないとダメなんだったか。>>460だとどれか一つ一致すればYESになるね。
([self keyEquivalentModifierMask] == [self keyEquivalentModifierMask] & [anEvent modifierFlags])
でどうかしら。
462名称未設定:2008/08/02(土) 23:38:24 ID:LU27e+rr0
>>461
== のが & より優先度が高いから括弧がいると思う


参考までに例外的なフラグを削除するなら
flag = flag & NSDeviceIndependentModifierFlagsMask;
で出来ると思う
OS X 10.4以上で動くはず
463名称未設定:2008/08/02(土) 23:46:05 ID:DWJNDgjK0
やはりうまくいきません、、
またサンプルプロジェクト上げてみます。
良かったから動作を確認してください。
http://mac.hitobashira.org/up/src/maka0083.zip
実際に正しくkeyEquivalentとkeyEquivalentModifierMaskが設定されているのはIBでRunしてみて確かめてみてください。
464名称未設定:2008/08/02(土) 23:47:24 ID:DWJNDgjK0
NSDeviceIndependentModifierFlagsMaskチャレンジしてみます。
465名称未設定:2008/08/02(土) 23:55:12 ID:DWJNDgjK0
flags = flags & NSDeviceIndependentModifierFlagsMask;
をしてから
if ([self keyEquivalentModifierMask] == flags)
すれば完璧に動作しました!
NSButtonの場合ですが、まとめるとこうです。

- (BOOL)performKeyEquivalent:(NSEvent *)anEvent {

if ([anEvent type] == NSKeyDown) {
NSString *key = [anEvent charactersIgnoringModifiers];
NSUInteger flags = [anEvent modifierFlags];

flags = flags & NSDeviceIndependentModifierFlagsMask;

if ([[self keyEquivalent] isEqualToString:key] && [self keyEquivalentModifierMask] == flags) {
[self performClick:nil];
return YES;
}
else {
return NO;
}
}

return [super performKeyEquivalent:anEvent];
}

感激です、みなさまありがとうございます!
466名称未設定:2008/08/03(日) 00:00:38 ID:wEE2HMGo0
>>465
それは良かった。
けど>>463のプロジェクト、俺の環境だと修飾キー関係なくて[self keyEquivalent]がそもそも空文字列だ…
467名称未設定:2008/08/03(日) 00:03:42 ID:pibjA2T20
なぜでしょう、、
IBのバージョンとかかも知れません。プロジェクトファイルはXcode3.1とIB3.1で作りました。
IBでkeyEquivalentを設定しなおしてみてはどうでしょうか?
468名称未設定:2008/08/03(日) 00:17:44 ID:wEE2HMGo0
>>467
ごめん一番左上のボタンの動作をデバッグで拾ってただけだった。
で、>>461+>>462だと、修飾キーが一つも合ってないときに修飾キー無しのボタンがヒットするのね。
確かにこの使い方には>>465の方がいいかも。
469名称未設定:2008/08/04(月) 20:55:09 ID:wOXqnMoB0
時々、QuickTimeの「MPEG-4の書き出し」に似たウィンドウをQuickTime以外のアプリでも見かけるのですが、QTKit等から呼び出し可能なのでしょうか。
もし呼び出す関数をご存知の方いましたら教えていただけるとうれしいです。
470名称未設定:2008/08/04(月) 21:15:01 ID:/6xN6LzP0
471名称未設定:2008/08/05(火) 16:13:50 ID:z6ApOwxE0
>>470
ありがとうございます。
472名称未設定:2008/08/05(火) 22:21:42 ID:hNnXXyWp0
バインディングの勉強をしています。

IBで、ArrayControllerと、Window、その上に1列のTableViewと「+」Button、「-」Buttonを配置します。
TableViewのColumumのvalueを、ArrayControllerのarrangedObjectsの適当なModel Key Path名にバインドします。
「+」ButtonをArrayControllerのadd:アクションに繋げます。
「-」ButtonをArrayControllerのremove:アクションに繋げます。

これで、編集可能なTableViewができたのですが、「+」Buttonで行を追加したとき、
追加された行は選択状態にはなりますが、編集状態にはなりません。
編集状態にするには何をすべきでしょう?

Xcode2.5/Interface Builder2.5.6
473名称未設定:2008/08/05(火) 22:47:50 ID:b3PgxnPw0
>>472
+ボタンとArrayControllerの間にお手製のコントローラを挟んで、(or ArrayControllerをサブクラス化して)
その中で- [NSTableView editColumn:row:withEvent:select:]を呼んであげる。
474名称未設定:2008/08/06(水) 13:40:02 ID:Qhr+d9FS0
>>473
やはりIBだけでは無理なんですね。とりあえず以下のようにしたらできました。

@interface MyTableController : NSArrayController{
IBOutlet NSTableView* _tableView;
}
@end
@implementation MyTableController
// たった今追加&選択されたのを編集状態に
- (void)editSelected:(id)sender{
  int r = [_tableView selectedRow];
  if( (0 <= r) && (r < [_tableView numberOfRows]) ){
    [_tableView editColumn:0 row:r withEvent:nil select:YES];
  }
}
- (void)add:(id)sender{
  [super add:sender]; //本来の処理
  // 次のイベントループ?で編集状態にする
  [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)0.0
    target:self selector:@selector(editSelected:) userInfo:nil repeats:NO];
}
@end

Timerで一度間を置かないと成功しませんでした。これは、add:自体はモデル(arrangedObjects)に
1要素追加しただけで、TableViewが新規行を認識するのはそれより後だから、だと認識しています。
で、add:→TableViewが新規行を選択→編集状態にする の順でやるのが自然な流れかと思います。

TableViewのDelegateかNotificationでもできそうですが、バインディング的にはKVOでやるべき
なのかな〜?とか推測してますが理解不十分でよく分からん状態です。
何であれ上の方法ではちょっと不確実のようにも思えるのでもうちょっと追求してみます。

とりあえずはレスありがとうございました。
475名称未設定:2008/08/06(水) 17:11:45 ID:/qnHPC400
PanelにTableViewを表示させてフォーカスがTableViewのままの状態で
Panelを閉じて、Panelをreleaseすると落ちてしまうんだけど(release when
closedは当然OFF)、これを回避出来る方法ってない?
476名称未設定:2008/08/06(水) 17:44:27 ID:nt4PhBNc0
それでは落ちない
別のとこに原因がある
477名称未設定:2008/08/06(水) 17:54:53 ID:+eUHJTWc0
>>475
release後にpanelに配置したviewにアクセスしておらぬか?
478名称未設定:2008/08/06(水) 18:02:41 ID:/qnHPC400
>>477
手順としては

XXXPanel *panel = nil;
@try {
panel = [[XXXPanel alloc] initWith...];

...
...

// OKで値を取り出してclose
// CancelはPanelをcloseするだけ

}
@finally {
if (panel)
[panel release];
}

とやってるので、Panelをcloseした後にreleaseしてるんだけど・・・
479475=478:2008/08/06(水) 18:07:39 ID:/qnHPC400
さらに補足すると
他のアイテム(例えばテキストフィールド)にフォーカスがある時は問題ないけど
TableViewにフォーカスがある時はcloseしてreleaseすると落ちてしまう。
う〜〜〜〜ん・・・わからん。
480475=478:2008/08/06(水) 18:15:13 ID:/qnHPC400
スレ汚しすまん。

落ちるというのは不正確だった。アプリ単独で起動した場合は落ちるわけでは
ないのだけど、Xcodeから起動して、上の動作をさせると必ずgdbに落ちてしまう
わけ。問題ないんだろうか?
481名称未設定:2008/08/06(水) 19:14:06 ID:KUMdV5hV0
Xcode 3.1/Mac OS 10.5.4(intel)です。
[NSToolbarのインスタンス items];で、"現在ツールバーに表示されている"NSToolbarItemの配列が取得できますが、
ツールバーに現在表示されているアイテムだけでなく、「ツールバーのカスタマイズ」より追加登録可能なアイテムを含めたNSToolbarItemの配列を取得するには、どうすれば良いのでしょうか。
482名称未設定:2008/08/06(水) 20:23:43 ID:rahF98Ee0
>>478
そのテーブルのバインディング関係じゃない??
XXXPanel がリリースされてるのに、バインディングがまだいきているとか
483名称未設定:2008/08/06(水) 20:38:30 ID:3rQXNAm80
だいたいこの手のトラブルはショボいミスの場合が多いので、
質問者は連投して「俺はミスっていない」な意識を高める方向に向かわず
もう一度、基本的なことを見直してみよう。
484472,474:2008/08/06(水) 20:55:07 ID:Qhr+d9FS0
誰も気にしてないと思いますが一応報告を
>>474の方法はやはりダメでした。+ボタン連打したりするだけでもう変な動きになります。とりあえず以下のようにKVOでやったらうまく行ってそうです。

@interface MyTableController : NSArrayController{
  IBOutlet NSTableView* _tableView;
}
@implementation MyTableController
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
  static int beforeRowCount = 0;
  // arrangedObjects に変化があった
  if( keyPath != nil && [keyPath isEqualToString:@"arrangedObjects"] ){
    // 新規行(row)が追加された
    int rowCount = [_tableView numberOfRows];
    if( rowCount > beforeRowCount ){
      // 選択されている(=新規の)行を編集状態にする
      int editRow = [_tableView selectedRow];
      if( (0 <= editRow) && (editRow < rowCount) && (0 < [_tableView numberOfColumns]) ){
        [_tableView editColumn:0 row:editRow withEvent:nil select:YES];
      }
    }
    // 次回のために保持
    beforeRowCount = rowCount;
  }
}
- (void)awakeFromNib{
  [self addObserver:self forKeyPath:@"arrangedObjects" options:0 context:NULL];
}
@end
485475=478:2008/08/06(水) 22:22:43 ID:HSfKqTVZ0
>>482
いや、バインディグは使ってないよ。昔ながらのアウトレット。
dataSourceとdelegateしか繋いでいない。
そもそも何でTableViewにフォーカスがある時だけgdbに落ちるのかが不明。
486名称未設定:2008/08/06(水) 22:28:21 ID:zXFgswAj0
>>485
落ちる時のコンソールに多分重要なヒントがあると思う
487名称未設定:2008/08/06(水) 23:07:33 ID:OhKiyj2A0
だから、そういう時は環境変数で
NSZombieEnabled=YES
だってば。
488名称未設定:2008/08/07(木) 06:45:41 ID:ui9Vt5Jh0 BE:45163627-2BP(193)
>>484
>>474 みたいに NSArrayController をサブクラス化して、_tableView を持たせて、
-add: ではなく-addObject: をオーバーライドしてみては?

- (void)addObject:(id)object
{
    [super addObject:object];
    [_tableView editColumn:0 row:[_tableView selectedRow] withEvent:nil select:YES];
}

-add: は結局 -addObject: を呼ぶので。
当方のソフトでは、これだけで(Timer なしで)うまく動いているようです。
489名称未設定:2008/08/07(木) 09:28:04 ID:xPWZJ9zS0
すっごく適当でいうけど、
performSelector一発でなおる症状だったりしない?
遅延実行って結構効果あるよ
490名称未設定:2008/08/07(木) 09:30:22 ID:xPWZJ9zS0
ごめん、performSelector:withObject:afterDelay: ね
491名称未設定:2008/08/07(木) 11:44:51 ID:yEGuwUG30
CALayerに対するマウスイベントってどうやったら取得できますか?
mouseDown:みたいなメソッドがないみたいなんですが。
492472,474,484:2008/08/07(木) 15:43:33 ID:mxgwQ2up0
>>488 確かにそれでうまく動いてます。
>-add: は結局 -addObject: を呼ぶので。
あれ?でも、>>474ではadd:の直後はselectedRowが更新されてなかったのに、
addObject:の後はselectedRowが更新されてるんだなー、と思いArrayControllerのサブクラスで

- (void)add:(id)sender
{
NSLog( @"CALLED %s", __func__ );
[super add:sender];
NSLog(@"%s selectedRow=%i", __func__, [_tableView selectedRow] );
}
- (void)addObject:(id)object
{
NSLog( @"CALLED %s", __func__ );
[super addObject:object];
NSLog(@"%s selectedRow=%i", __func__, [_tableView selectedRow] );
}

としてみたところ、以下のようなログでした(Tableが空の状態でadd:を呼んだ場合)
CALLED -[SCTableController add:]
-[SCTableController add:] selectedRow=-1
CALLED -[SCTableController addObject:]
-[SCTableController addObject:] selectedRow=0

これからすると、add:は"中で"でなく"後で"addObject:を呼んでるんですね。
この辺の動き、リファレンスに明記されてないので将来的に変わらないのかちょっと不安ですが、
これが一番良い方法と思いますので使ってみます。ありがとうございました。

※ ちなみに、addObject:は"中で"insertObject:atArrangedObjectIndex:を呼んでいるので、
[_tableView editColumn〜]はオーバーライドしたinsertObject:~の中でやればinsert:にも対応できました。
493名称未設定:2008/08/07(木) 20:23:39 ID:CLgEx8bF0
>>491
マウスイベントなどは、NSView側で受けるしかありません。
そのあと、CALayerクラスのconvertPoint:fromLayer:とか、hitTest:とか、containsPoint:とかを使って、どのレイヤーでマウスダウンが発生したか調べてください。
494名称未設定:2008/08/07(木) 21:40:24 ID:nTPSYr960
できる限りageて質問してねっ♪
495名称未設定:2008/08/07(木) 21:41:32 ID:342M26uQ0
よっしゃ
496名称未設定:2008/08/07(木) 22:47:33 ID:yEGuwUG30
>>493
マジっすか…ありがとうございます
497名称未設定:2008/08/08(金) 01:16:25 ID:AB93afjr0
>>481は無理なのかなぁ…うぅむ
498名称未設定:2008/08/08(金) 01:23:04 ID:ldE4dOQI0
>>497
俺は古い人間なので、ツールバーはIBじゃなくてdelegate使って作ってる。
その方法だとデフォルトのアイテムも、カスタマイズで追加可能なアイテムも、選択可能なアイテムも全てコードで指定するので
そもそも>>481のようなことをする必要がない。
499475=478:2008/08/08(金) 13:23:11 ID:2adz4Skg0
>>486, 487
Xcode 3のデバッガは使いにくくなった上にデバッガ自体が落ちてダメでした。
パネルを閉じてもTableViewが生きているような・・・

結局、パネルのreleaseは@finally{}ブロックでやらずに、パネルのrelease when
closedにチェックを入れたらデバッガに落ちることはなくなりました。閉じたら
すぐにreleaseしなければいけない?
500名称未設定:2008/08/08(金) 14:01:30 ID:TM2xaHNC0
ObjCでsuperクラスのsuperクラスを取得する場合は、どうすればよいのでしょうか?
[[super super] xxxx] という感じの事をしたいのです。
superクラスがxxxxのメソッドを間違った形で上書きしているので
どうにかしてその親のメソッドを呼びたいのです。
501名称未設定:2008/08/08(金) 14:17:40 ID:gpx4Jprm0
ぜんぜん全く推奨しないけど、

@implementation SuperClass (overwride)
-xxxx { return [super xxxx]; }
@end

か、だめなら
+(void)initialize;
あたりで
Class sc = [super class];
Class ssc = sc->super_class;
Method sm = class_getInstanceMethod(sc, @selector(xxxx));
Method ssm = class_getInstanceMethod(ssc, @selector(xxxx));

sm->method_imp = ssm->method_imp;
とするか。
502名称未設定:2008/08/08(金) 14:24:54 ID:TM2xaHNC0
おおっありがとうございます。
早速試してみます。
503名称未設定:2008/08/08(金) 14:40:30 ID:OmgHIQjD0
そんなのできるんですか、、
知らなかったから同じような状況の時、目的のクラスの機能を全部実装してたorz
504名称未設定:2008/08/08(金) 20:23:36 ID:AB93afjr0
>>498
Tigerのときみたいにソースで実装するしかないのかな…
IBでNSToolbar作ると、Identifierがランダムな文字列になるので、
Identifierを知るために
テストランして、ツールバーカスタマイズして、全部のツールバー表示した状態で
for(int i=0;i<[[MyToolbar items] count];i++){
NSLog([[[MyToolbar items] objectAtIndex:i] label]);
NSLog([[[NyToolbar items] objectAtIndex:i] itemIdentifier]);
}
をするというめんどくさいことやっている。
どうにかIdentifierだけでも手に入れられる関数があればいいんだが…
505名称未設定:2008/08/08(金) 20:24:12 ID:AB93afjr0
訂正
全部のツールバー>全部のツールバーアイテム
506名称未設定:2008/08/08(金) 21:01:33 ID:OmgHIQjD0
あのさ、IBにあるデフォルトに[[toolbar items] count]したら7ってでたんだけどさ、
これって追加可能な全部のツールバーアイテムじゃないのか
507名称未設定:2008/08/08(金) 21:07:30 ID:OmgHIQjD0
あのさ、IBにあるデフォルトのToolBarに
です
508名称未設定:2008/08/08(金) 23:19:29 ID:uUlYMw0W0
>>507
「あのさ」は必須なわけねw
509名称未設定:2008/08/09(土) 01:24:58 ID:L1OiMG2b0
>>506
ツールバーカスタマイズして表示項目減らしてためしてみればわかると思うよ
510名称未設定:2008/08/09(土) 01:52:31 ID:L1OiMG2b0
511名称未設定:2008/08/09(土) 13:29:19 ID:8bEhkL+N0
>>507
- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
使った事がないけど、この辺のインスタンスメソッドで引っぱりだせないかな
512名称未設定:2008/08/09(土) 13:36:24 ID:UXDEXFyx0
>>511
それはデリゲートメソッドです
513名称未設定:2008/08/09(土) 13:40:08 ID:mdpOZT3D0
>>512
NIBで作った時にはその辺も作られてるなら、動作するかもしれんがどうなのだろう。
514名称未設定:2008/08/09(土) 15:53:44 ID:UXDEXFyx0
>>513
IBでNSToolbarを作って試してみたが、delegateは設定されてなかった。
515名称未設定:2008/08/09(土) 15:57:51 ID:L1OiMG2b0
>>511
デリゲートメソッドの意味わかってる?
516名称未設定:2008/08/09(土) 16:01:10 ID:L1OiMG2b0
ごめん。>>515はなかったことに
517名称未設定:2008/08/10(日) 01:33:59 ID:JedI4tyI0
Xcode 3.1です。
@implementation MainClass
-(IBAction)connection:(id)sender{
NSLog(@"connection");
NSSocketPort *sock=[[NSSocketPort alloc] initRemoteWithTCPPort:80 host:@"192.168.0.2"];
NSFileHandle *socketHandle = [[NSFileHandle alloc] initWithFileDescriptor: [sock socket]
closeOnDealloc: YES];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(receiveMessage:)
name: NSFileHandleConnectionAcceptedNotification
object: socketHandle];
[socketHandle acceptConnectionInBackgroundAndNotify];
}
- (void)receiveMessage: (NSNotification*)notification {
NSLog(@"receiveMessage:");

// check error
NSNumber *pUNIXError = [ NSNumber numberWithInt:0 ];
pUNIXError = [[notification userInfo] objectForKey:@"NSFileHandleError"];

if( ![ pUNIXError intValue ] ){

NSData* data=[[[notification userInfo] objectForKey:NSFileHandleNotificationFileHandleItem] readDataToEndOfFile];
NSString* string = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
NSLog(string);
}else{
NSLog([NSString stringWithFormat:@"SocketError:%d",[ pUNIXError intValue ]]);
}
}
これで、「SocketError:9」が出てしまうのですが、考えられる原因は何でしょうか。
Safariでhttp://192.168.0.2にアクセスすると問題なくページが表示されます
518名称未設定:2008/08/10(日) 02:18:51 ID:l/HlxMYs0
9 ってことは EBADF だよね。↓ここらへんが気になるところだけど。

initRemoteWithTCPPort:host:
...
Discussion
A connection is not opened to the remote host until data is sent.
519名称未設定:2008/08/10(日) 06:00:14 ID:JedI4tyI0
>>518
>A connection is not opened to the remote host until data is sent.
データを送るまでコネクションが開かないんですかorz
大変そうなのでBSD Socket使います。
520名称未設定:2008/08/10(日) 15:59:36 ID:0HgkgHJ00
IBで

メニューA
 サブメニューB
 サブメニューC

で、メニューAにアクションを繋げない場合、
バインディングでメニューAのenabledを設定しても上手く効いてくれません。
(どこかにアクションを繋げると効くため、なにもしないアクションを作って繋げてる)

そんなもんなんですかね?
521名称未設定:2008/08/10(日) 16:24:26 ID:7bJ1GIwG0
>>520
メニューはちょっと特殊でターゲットとアクションが有効でない時には
非アクティブになるという特徴がありますね。それが効いてるのかも
522名称未設定:2008/08/10(日) 18:08:43 ID:Kamu+JT80
なんですけど、>>520の場合でサブメニューにはターゲットアクションを繋いで
enabledも設定しているので、サブメニューが全てdisabledの場合は
メニューAもdisabledになってくれるのが理想なんですが。
523名称未設定:2008/08/10(日) 20:24:07 ID:oKYJ5JZD0
>>520
MenuのAttributes InspectorのAuto Enables Itemsのチェック外せば良さそうな気がするけど、これだと全部のアイテムをバインディングすることになりそうだな。
524名称未設定:2008/08/11(月) 16:58:09 ID:zNOsZ4Ot0
画像作成についての質問です。
ARGB各8bitのplanarな配列をNSBitmapImageRepの
initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:
に渡して画像を作ろうとしています。
「白っぽい」色のアルファ値によるグラデーションを作ると、
アルファ値が255から下がるにつれてすぐさまRGBの各値が同じに
揃っていき、「白っぽい」でなく「白」(実際255より小さい
値なので灰色ですが)になってしまいます。
暗い部分にいくにつれて表示されている色のRGBの各値が小さくなるので、
「白」(灰色)に近づいていくのは原理的にわかるのですが、
表示されている色の各RGBの値が均等に下がっていくのではなく、
大雑把ですが(R,G,B)の変化が
(255,255,200)→(230,230,200)→(200,200,200)→(180,180,180)
のようにまず大きい値だけが小さくなっているようです。
配列を直接NSBitmapImageRepに与えずに、
配列の内容をsetColor:atX:yで一点一点塗っていくと期待している
「白っぽい」色のグラデーションになっているので、
配列を直接与える際に何か注意すべき点があるのでしょうか。
525524:2008/08/11(月) 18:39:45 ID:zNOsZ4Ot0
524の件、自己解決しました。bitmapFormat:に渡す
NSAlphaNonpremultipliedBitmapFormat
を|したつもりが||してました…、大反省…。
526名称未設定:2008/08/13(水) 14:51:00 ID:RefZrw740
aviファイルからQTTimeオブジェクトを作ると、
- (QTTime) durationの位置にcurrentTimeがあったときに、
- (void) playを呼ぶと最初から再生しようとするみたいなんですが、
currentTimeがムービー長さの最後にあるときはplayを呼んでもそのまま停止にできませんか。
ループしてるのかなと思ってsetMovieAttributes:でQTMovieLoopsAttributeにNOを設定してもだめでした。
527名称未設定:2008/08/13(水) 17:38:03 ID:8sa2ROU+0
QTView subclassすれば?
528名称未設定:2008/08/13(水) 19:53:13 ID:0D3wt/zD0
サブクラス作ってplayメソッドオーバーライドして
カレントタイムがデュレーションならstopで行けるんじゃね?

ちなみにavi以外でもなると思う。
529名称未設定:2008/08/13(水) 21:03:47 ID:TPb3TJ9I0
@selector( method ) と
@selector( method: )
の違いを教えてください。


530名称未設定:2008/08/13(水) 21:05:27 ID:sc0254TI0
-(id)method



-(id) method: (id)args

の違いと同義。
531名称未設定:2008/08/13(水) 21:10:05 ID:TPb3TJ9I0
即答サンクス
532名称未設定:2008/08/14(木) 00:40:48 ID:I3mEPq/b0
iPhoneの電話番号入力みたいに数字の桁が増えると
自動的に文字を小さくするようにしたいのですがTextFieldだと無理でしょうか
設定方法よろしくお願いします。
533名称未設定:2008/08/14(木) 10:02:12 ID:X6pdong60
サブクラスを作ってdrawInteriorFrame内で文字長に応じてフォントサイズを指定したattributedstringを作成して描く。

携帯なんで綴りがあってないかも。
534526:2008/08/14(木) 10:10:06 ID:9goEo+k30
>>528
やっぱりcurrentTimeとdurationの比較で制御するしかないですかね。
わかりました。
535名称未設定:2008/08/14(木) 12:40:22 ID:I3mEPq/b0
WebKitを使ってGUIを持つテキストブラウザを作成する事はできますでしょうか
もしよろしければその設定方法をお教え願います。
536名称未設定:2008/08/14(木) 13:10:56 ID:zjeFy/WK0
すみませぬ、目的がはっきり見えてこないのでもう少し詳しく情報を。
537名称未設定:2008/08/14(木) 13:13:47 ID:I3mEPq/b0
w3mやlynxの様にテキストしかロードしないようにしたいのです。
デスクトップでもテキストブラウザを使いたいと思うので。
よろしくお願いします。
538名称未設定:2008/08/14(木) 13:38:01 ID:zjeFy/WK0
>>537
単純にテキストだけをダウンロードして表示するというのれあれば…
ターミナルでcurl -i http://~~~
などとやったりするけども、それと似たような事をしたいというのであれば
NSURLConnectionでサイトから文字データとして取得、それをそのまま
NSTextFieldに書き込み、等とするといいのかもしれません。

…という目的じゃなかったらすまぬ
539名称未設定:2008/08/14(木) 13:40:36 ID:b1/NXUz70
css でごまかせそうな予感。
540名称未設定:2008/08/14(木) 13:52:28 ID:I3mEPq/b0
w3mをGUIアプリケーションに移植するような感じの
アプリケーションを作りたいのです。
ボタンとかはGUIだが表示はw3mの様な感じに成っているような
541名称未設定:2008/08/14(木) 16:59:32 ID:4Q7QDSpl0
>>540
Cocoaはやっぱり! 出張版
CocoaアプリケーションからUNIXコマンドを呼び出して非同期で処理結果を受け取る方法を解説。 ( NSTask )
http://www.big.or.jp/~crane/cocoa/9000_mdo/MDOnline_2002.01.pdf

w3mをラップしてみたら??
542名称未設定:2008/08/14(木) 17:30:27 ID:I3mEPq/b0
>>541
これは面白い。
他の技術にも使えそうですね!!
543名称未設定:2008/08/14(木) 17:34:05 ID:zjeFy/WK0
おぉ、その手の事に興味がおありなら、NSWorkspaceとかも一緒に勉強してみるといいかもしれんね。
544名称未設定:2008/08/14(木) 18:39:29 ID:bvi8a3UW0
NSTableViewに、

NSPoint aStartPoint = NSMakePoint(0.0, 0.0);
NSPoint anEndPoint = NSMakePoint(100.0, 200.0);
[self lockFocus];

NSBezierPath *aHighlightPath = [NSBezierPath bezierPath];
[aHighlightPath moveToPoint:aStartPoint];
[aHighlightPath lineToPoint:anEndPoint];
[aHighlightPath setLineWidth:2.0];
[[NSColor blackColor] set];
[aHighlightPath stroke];

[self unlockFocus];
したら、マウスが上にあってアクティブなセルにしか描画されなかったんで、
他のセルも再描画してやったらいいだろうと思って、
[self drawRow:1 clipRect:[self bounds]];
してみたけど変化ありませんでした。
どうやってやるのが正しいんでしょうか?
545名称未設定:2008/08/14(木) 20:29:20 ID:zjeFy/WK0
NSTableViewに
- (void)setNeedsDisplay:(BOOL)flag;
のメッセージを送ってみるとかどうでしょう。

546544:2008/08/14(木) 22:21:37 ID:bvi8a3UW0
>>545
おおお、できました(・∀・)
助かりました。ありがとーございます。
547542:2008/08/14(木) 22:49:24 ID:I3mEPq/b0
NSTaskを使おうと思ったのですが、もうなんか文法とかで突っかかり
まくり凄くへこみました。
CocoaはさっぱりどころかObjective-Cがさっぱりな状態。
Objective-Cからやり直してきます。
548名称未設定:2008/08/14(木) 22:59:42 ID:0uVgcEUw0
別ブロセス起動時のargmentにはchar * しか渡せないでしょうか?
NSArrayやNSDictionaryをいったんchar * にして別プロセスに渡して、別プロセスの
int main (int argc, const char * argv[]) {
}
の中でまたargv[1]とかargv[2]からNSArrayやNSDictionaryに戻すようなトリッキーな変換方法はないでしょうか?
549名称未設定:2008/08/14(木) 23:02:58 ID:zjeFy/WK0
別プロセスにオブジェクトを渡すのに、確かNSpipeなるものが使えたと思う。
ちょっと使い方が凝ってたのでまだ勉強していない所だけれども…
550名称未設定:2008/08/14(木) 23:37:54 ID:0uVgcEUw0
NSPipeは別プロセスからの出力と認識していましたが、入力もできるのでしょうか?
NSConnecionも検討していたのですが、上記の件はPropertyListを使う事でできました。
今日一日飯も食わずこれで悩んでたのでこんな単純なことで解決して吊りたい気分です。
551名称未設定:2008/08/14(木) 23:51:09 ID:zjeFy/WK0
あ、オブジェクトのやり取りの話しでしたな…
NSPipeで行けると思ったけれど、NSConnecionの方がオブジェクトのやり取り
そのものを扱ってるのでこちらがいいかと思う。
552名称未設定:2008/08/15(金) 07:55:44 ID:hUu6QEsI0
>>548
NSProcessInfoのargumentsを使うと
起動時の引数をNSStringの配列で取得できます。

数値とか文字列のような単純なオブジェクトでないものを別プロセスと
やりとりするなら分散オブジェクトが簡単だと思います。
553名称未設定:2008/08/15(金) 11:42:06 ID:4CEn4cp00
おおーこれは素晴らしいものを教えていただきました。
今後のためにも分散オブジェクト勉強してみます。
554名称未設定:2008/08/15(金) 14:56:24 ID:5Ul2UCXT0
いままでCocoaをRubyCocoaで使っていましたが
Appleの解説サイトでも説明はObjectiv-Cで基本書いてあるので
Objective-Cを勉強したいと思うのですが、どのへんまでかけるように
なればCocoaに手を出せば良いのでしょうか?
Objective-Cで何でもかけるようにならないとCocoaは手を出してはいけない
のでしょうか?
よろしくお願いします。
555名称未設定:2008/08/15(金) 15:00:45 ID:AY1CyHVW0
>>554
興味を持ったら手を出してOKだと思う。自分もそうだった
556名称未設定:2008/08/15(金) 15:28:35 ID:5Ul2UCXT0
>>555
そうですかありがとうございます。
興味は有るのですがObjective-Cでなにもかけないんですよね・・
例えばallocってのがなんだ?みたいな感じでして
557名称未設定:2008/08/15(金) 15:34:32 ID:AY1CyHVW0
>>556
そのレベルでもOK w
自分も#importって何じゃ、インスタンスオブジェクトって何じゃ?
一番最初のソースって一体どこに書けばいいんじゃ?
とか最初は本気で悩んだもんだ

とりあえず、簡単なサンプルプログラムを見て勉強したり
HMDTなどの書籍等を読んでみるのもいいかも。mixiなどのコミュニティーとか
相談してみるのもいいかもしれんし(あ、最近更新してなかった…w)

ある程度分かってくると、詳解Objective-C 2.0あたりもいいけど、まずは
基本的な所からがいいと思う。NIBで自作オブジェクトをインスタンス化して
そのIBOutletとかIBActionの接続あたりを理解できると、そこあたりが
足がかりにできるかもしれん
558名称未設定:2008/08/15(金) 15:43:40 ID:5Ul2UCXT0
なるほど
わかりました。何か入門に成るサイトを探してサンプルプログラムを
みてみます。ありがとうございました。
559名称未設定:2008/08/15(金) 16:50:42 ID:OQNRRDxF0
Obj-C 1.0 だが、ADC Japan に HMDT 木下さんが講師で年に数回?やってる
Cocoa セミナーのムービーがあるよ。自分はこれで流れをつかんだ。
配布資料は Obj-C 2.0 に対応している。

ADC Japan(ココの真ん中くらい)
ttp://developer.apple.com/jp/documentation/japanese.html
560名称未設定:2008/08/15(金) 16:56:04 ID:Cd5tTLaK0
qtmovieの任意の時間のフレームをciimageに変換したいんだけど、
NSImageをqtmovieから取得して、それをimagerepに展開してCIImageに変換するってやってんですけど。
NSBitmapImageRepを使うと物凄く時間がかかってる気がするなあ。
もうちょっと高速化できるアイデアって無いもんでしょうか。
561名称未設定:2008/08/15(金) 17:30:28 ID:14zwALNR0
再生中のQTMovieからカレントタイムでイメージを作成するのは遅くなるよ。
表示中のサイズが大きいと、そのサイズからイメージを作成しようとするから
メモリもバンバン食うし。
562名称未設定:2008/08/15(金) 18:53:31 ID:4G4XJIgf0
基本的にはMovieをInactiveにした状態で取り出すと処理が軽い、らしい。
だから、同じムービーのインスタンスを二つ作るとかどうよ。
563名称未設定:2008/08/16(土) 00:55:19 ID:3kV+xRqE0
Cocoaの話題でなくて恐縮ですが、CoreFoundation系のものって
CFStringRef string;
みたいに宣言しただけでは中身はNULLで、
string = "abc";
みたいにするとすでにRetainされていて、いらなくなったら
CFRelease(stringRef);
で必ず解放してやらなければならない。
CFStringRef otherStringRef = stringRef;
とした場合は stringRefだけを解放して、otherStringRefは何もしなくてOK。
と、このような認識であってますか?
もう一点、
CoreFoundationにはautorelaseがないのですが、
メソッドで返した値はメソッドで呼び出した方で解放する、ということで良いでしょうか?
Cocoaは分かるのですが、CoreFoundationはさっぱり!です。
564名称未設定:2008/08/16(土) 01:04:52 ID:6LGW69YZ0
>>563
基本的に = で代入するだけではretain release動作は自動ではされないはずなので、
その認識で大丈夫だとは思う…。
("abc"が定数として挙動していなければ)
565名称未設定:2008/08/16(土) 01:08:02 ID:dit8Fbpn0
566名称未設定:2008/08/16(土) 02:27:31 ID:q2f7W2rr0
>>563
string = "abc";
これはCFSTR("abc")じゃないでしょうか?
567名称未設定:2008/08/16(土) 04:55:25 ID:3kV+xRqE0
>>564
ありがとうございます。
>>565
ありがとうございます、読んでみます。
>>566
おっしゃる通りです、書いてから気付きました、、

CoreFoundationにしかない機能の一部をCocoaにラップしたframeworkを作っていて
メソッドでautoreleaseされたオブジェクトを返すにはどうしたらよいのか?
NSString * とCFStringRef とでキャストを利用した場合、
実体が返されるのか新たにキャストされた実体が作られて返されるのか?その時retain releaseはどうなっているか?
など疑問が湧いてきましたが、とりあえず後日>>565のドキュメントを読んでみます。
もう朝だ、、
568名称未設定:2008/08/16(土) 10:13:18 ID:37xdHDFf0
>>567
そういう用途ならautorelease使えるよ。
CFStringRef string = うんたらかんたら;
[(NSString *)string autorelease];
return (NSString *)string;
みたいにキャストしてCocoaのオブジェクトとして扱える。
キャストしただけでCocoaのオブジェクトとして使えるってことはつまり、CFString構造体こそNSStringの実体なんだけどね。
569名称未設定:2008/08/16(土) 13:31:42 ID:dit8Fbpn0
GCを考慮するなら

return (NSString *)[ NSMakeCollectable(string) autorelease ];

にするべき
570名称未設定:2008/08/16(土) 18:16:23 ID:ujCYt6R20
質問です。どの辺りが問題なのかよく分からないので関係のあるメソッドの中身を全部張ります。
長いソースでスレ汚ししてすみません。

*2のところで-(void) appendString:(NSString *)aStringしてるんですが、
連結されずに元々入っていた文字列のままになってしまっています。
*1のところで[array objectAtIndex:9]の代わりに@"あああ"とか入れるときちんと連結されます。
また、parsedStringはnilとかじゃなくて元々意図した文字列(lsの結果)が入っているので原因がよくわかりません。
何が問題なんでしょうか?ご教示ください。

NSMutableArray *list = [[NSMutableArray alloc] init];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/ls"];
NSArray *array = [NSArray arrayWithObjects:@"-AlFcT", currentDirectory, nil];
[task setArguments:array];

NSPipe *outPipe = [[NSPipe alloc] init];
[task setStandardOutput: outPipe];
[outPipe release];
[task launch];
NSData *data = [[outPipe fileHandleForReading] readDataToEndOfFile];
[task waitUntilExit];
int status = [task terminationStatus];
[task release];
571名称未設定:2008/08/16(土) 18:17:28 ID:ujCYt6R20
続きです
if(status == 0){
NSString *aString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
NSString *bString;
NSMutableString* parsedString;
NSRange range, subrange;
int length;
length = [aString length];
range = NSMakeRange(0, length);
[list addObject: @".."];
// total * の部分をスキップする
subrange = [aString lineRangeForRange:
NSMakeRange(range.location, 0)];
range.location = NSMaxRange(subrange);
range.length -= subrange.length;
while(range.length > 0) {
subrange = [aString lineRangeForRange:
NSMakeRange(range.location, 0)];
bString = [aString substringWithRange:subrange];
range.location = NSMaxRange(subrange);
range.length -= subrange.length;
NSArray *array = [self split:bString delimiter:@" "];
parsedString = [NSMutableString stringWithString: [array objectAtIndex:9]]; //*1
[parsedString appendString: [array objectAtIndex:8]]; //*2
NSLog(parsedString);
[list addObject: parsedString];
}
}
572名称未設定:2008/08/16(土) 18:25:19 ID:Ix4Ieu5n0
>>570
項目と項目の間がスペース一つではないのかもしれないですね。
試しに
NSLog(array);
を埋め込んでおくと原因が分かるかもしれない。

そして最後にこれも必要と思う。
[list release];
[aString release];
573名称未設定:2008/08/16(土) 19:20:10 ID:L8m/lz+K0
>>570
1.デバッガ使え
2.何故lsを使う必要があるのか分からない
3.何故NSScannerを使わないのか分からない
4.split:delimiter:の処理内容が分からない、ていうかcomponentsSeparatedByString:使えばよくね?
5.やりたいことを教えてくれたら俺が書くわ
574570:2008/08/16(土) 19:28:17 ID:ujCYt6R20
>>572
>NSLog(array);
それはやってみましたが、きちんと文字列が入っていました。
releaseに関しては失念していました。普段c#しか使わないので...

>>573
NSScanner, componentsSeparatedByStringについては存在を知りませんでした。
どうもありがとうございます。調べてみます。

やりたいことに関してですが、ファイラーを作っていて、以下の内容を取得したかったのでlsを使ってみました。
1. ディレクトリ内のファイル/フォルダの一覧
2. 作成日時
3. 種類(ディレクトリ, 実行ファイル, その他のファイル, ソフトリンク, ハードリンク)
4. パーミッション
575名称未設定:2008/08/16(土) 19:33:24 ID:7DkApg2H0
>>570,571,574
相当に適当に組んでみた。これを改変して意図するものができるかもしれん。

ttp://nullpo.vip2ch.com/upload.cgi?mode=dl&file=21239
DLP: cocoa
576名称未設定:2008/08/16(土) 20:08:29 ID:/aHVNfmz0
>>575
おお、早速誰か書いてくれた…ってそれほぼCじゃねーかw
というわけで俺も書いてみた。豪語しておいて稚拙ですまんが。if(status == 0){ 以下のだけ書くね。
ちなみにlsの出力の意味は知らん。

if(status == 0){
NSString *aString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];

NSArray *lsOutputLines = [aString componentsSeparatedByString:@"\n"];
NSEnumerator *lsOutputLineEnumerator = [lsOutputLines objectEnumerator];
NSString *lsOutputLine;

lsOutputLine = [lsOutputLineEnumerator nextObject]; // Skip first line

while (lsOutputLine = [lsOutputLineEnumerator nextObject]) {
NSScanner *lsOutputScanner = [NSScanner scannerWithString:lsOutputLine];
NSCharacterSet *whitespaceCharacterSet = [NSCharacterSet whitespaceCharacterSet];

NSString *item;
NSMutableArray *items= [NSMutableArray array];
while (![lsOutputScanner isAtEnd]) {
if ([lsOutputScanner scanUpToCharactersFromSet:whitespaceCharacterSet intoString:&item])
[items addObject:item];
}

if ([items count] > 9) {
NSMutableString* parsedString = [[[items objectAtIndex:9] mutableCopy] autorelease];
[parsedString appendString:[items objectAtIndex:8]];
NSLog(parsedString);
}
}
}
577570:2008/08/16(土) 20:09:27 ID:ujCYt6R20
>>575
わざわざ組んでいただいてどうもありがとうございます。
後で自分の書き込みを読み返してみて、デバッグの手伝いをお願いしてるみたいな感じで申し訳ないし、
そうなってしまってたらすれ違いだしで(´・ω・`)でしたが、みなさん親切な方で嬉しいです。
もうちょっと考えてから書き込むことにします。ありがとうございました。
578570:2008/08/16(土) 20:10:44 ID:ujCYt6R20
>>576
あ、入れ違いになってしまいました。
どうもありがとうございます。参考にさせていただきます(`・ω・´)
579名称未設定:2008/08/16(土) 20:19:25 ID:7DkApg2H0
>>576
あっはっはw

>>577
いいってことよ。
俺にとっちゃ意図を定めたときに頭の中にコードが浮かんで、それを打ち込む瞬間が
パズルを解いてるみたいで、どんなゲームをやるより楽しい。

580名称未設定:2008/08/16(土) 20:31:19 ID:xXXJwvxN0
NSTableViewのカラムをNSArrayControllerのカラムにバインディングした状態で、
NSArrayControllerに対してselectPrevious:、selectNext:を実行した場合、(もしくは上下
カーソルキーで選択行を変更した場合)NSTableViewの行の選択も追従するのですが、

10.4なら
選択された行がvisibleになるようにスクロールする。

10.5なら
スクロールせず選択された行だけが変わっていく。

となります。

NSTableViewのdelegateで
-(void)tableViewSelectionDidChange:(NSNotification *)aNotification
{
[self scrollRowToVisible:[self selectedRow]];
}
と記述しても10.5ではスクロールしません。
そもそも仕様が変わったのか調べているのですが、該当記事がなさそうです。
なにかよい対処方法はありませんでしょうか?
581名称未設定:2008/08/16(土) 20:34:23 ID:7DkApg2H0
>>580
>NSTableViewのdelegateで
とのことなので、
[self scrollRowToVisible:[self selectedRow]];

[該当テーブル scrollRowToVisible:[該当テーブル selectedRow]];
とするとうまく行くかも
582名称未設定:2008/08/16(土) 20:37:58 ID:oyh036pp0
>>574
> やりたいことに関してですが、ファイラーを作っていて、以下の内容を取得したかったのでlsを使ってみました。

なぜ、NSFileWrapperを使わないんですか?

583名称未設定:2008/08/16(土) 21:31:24 ID:qw2SgueW0
元ファイルとハードリンクって区別不可能じゃね?
584名称未設定:2008/08/16(土) 22:25:35 ID:oyh036pp0
たしかに、どちらも「本体」だからね。
2つのファイルが、ハードリンクしたものなのかどうかは、ノード番号で分かるけどね。

585名称未設定:2008/08/16(土) 22:37:10 ID:0tW9+cNm0
>>581
回答ありがとうございます。
>NSTableViewのdelegateで
すみません記述を間違えました。
NSTableViewのサブクラスで [super setDelegate:self];をかましています。

当方10.4/Xcode2.5なので10.5での動作確認がいまいち不安なのですが、
(友人宅の10.5で挙動がおかしかった)まあ、あまり気にしない事にします。

586570, 574:2008/08/17(日) 00:12:22 ID:TK3LS8h70
>> 582
> NSFileWrapper
すみません。単なる勉強不足です。
教えてくださってありがとうございます。

このスレの上の方でNSTaskを使う話が出ていて、
そういやMacってBSDだから、コマンド呼べばいろいろできそうだな。
お、lsとmvとcpでファイラーの基本機能ほとんどできるんじゃね?
ていうかCUIで全部できるはずだからこれでできないわけないよな。
ほとんどシェルのノリで書けばいい。余計なプログラミングしなくていいやー(・∀・)カコイイ
ってノリでどんどん書き始めたので、その辺りのクラス/メソッドをよく調べてませんでした。
もうちょっと調べてみることにします(・A・)バカマルダシカコワルイ
587名称未設定:2008/08/17(日) 01:05:11 ID:EgIgwGXn0
>>586
ドンマイ!今回の工夫はいつか生きるさ
588名称未設定:2008/08/17(日) 01:18:35 ID:iKet9At70
あえてls,mv,cpで作ってみるのも面白いと思うけど。
別に真っ当(?)な方法で作らなきゃいけないというわけじゃないでしょ。

ところで>>582はNSFileWrapeprじゃなくてNSFileManager?
589名称未設定:2008/08/18(月) 15:22:49 ID:3+6wulaW0
Macのプログラマ向けの案系が多く掲載されている、
受注サイトがあったら教えてもらえませんか?
590名称未設定:2008/08/18(月) 20:12:59 ID:V7XyMSEu0
>>568
土日明けて亀レスですが有益な情報ありがとうございます。
591名称未設定:2008/08/18(月) 21:12:35 ID:vAqeF/Jn0
>589
そんなのみたことない
592名称未設定:2008/08/19(火) 15:14:40 ID:nkUn3TvL0
xcode 3.1です。
NSDate型の*x、
int型のy
がある状態で、xからy秒経過した後の時刻をNSDateで取得したいのですが、どのようにしたら良いでしょうか。
593名称未設定:2008/08/19(火) 15:58:39 ID:kzjnsRzA0
>>592
- (id)addTimeInterval:(NSTimeInterval)seconds
594名称未設定:2008/08/19(火) 17:20:56 ID:nkUn3TvL0
>>593
ありがとうございます。
595名称未設定:2008/08/20(水) 23:24:37 ID:2x16Koxv0
NSCalendar, NSDateComponentsについて質問があります。

インスタンス変数としてNSDate *theDateを設定、NSDatePickerとバインドして
NSDateComponentsの各プロパティを表示する実験をしました。
NSCalendar *calendar = [NSCalendar currentCalendar];

NSUInteger unitFlags = NSEraCalendarUnit |NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit |
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit |
NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit;

NSDateComponents *comps = [calendar components:unitFlags fromDate:[self theDate]];
.......
[self setWeek:[comps week]];
......
theDateを年末の53週に相当する日に設定するとNSDateComponentsのweekが
53ではなく1になることに気づきました。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSRange range = [calendar maximumRangeOfUnit:NSWeekCalendarUnit];
NSLog(@"maximumRangeOfUnit:NSWeekCalendarUnit = %@", NSStringFromRange(range));
を実行すると、{1, 53}が返ってきますし、setWeek:で53を設定できるので、weekの値が52まで
ということはないと思います。

これはバグなのでしょうか?それとも当方だけの問題でしょうか?
596名称未設定:2008/08/22(金) 19:32:23 ID:m7irX9zu0
Finderからのドラッグ&ドロップで、オリジナルのviewのうえに
画像を貼付けたいのですが、viewの上にドロップした時のマウスカーソルの
位置を取得できなくて困っています。
 そういう位置はどうやって取得できるのでしょうか?
597名称未設定:2008/08/23(土) 00:03:22 ID:i795TmKu0
>>596
[[NSApp currentEvent] locationInWindow] は使えませんか?
598名称未設定:2008/08/23(土) 07:35:48 ID:UYIKiWXA0
早速の返信ありがとうございます。
しかし、ご指摘いただいた[NSApp currentEvent]を使ってマウスの位置情報の入ったNSEventを取り出してみるというのを、試したのですがうまくいきませんでした。

説明が足りず申し訳有りません。以下にソースコードをそのままペーストします。
ほとんど、どこかで拾ってきたサンプルコードのつぎはぎですが、、

eventCheckというのをつくって、[NSApp currentEvent]でわたされたイベントの中身を
デバッガで見てみたのですが、この時点でマウスの位置情報がx=0,y=0になっています。
pathはNSStringで、画像の位置情報です。
MyNCは、自分で作ったクラスです。

-(BOOL)performDragOperation: (id) sender
{
MyDocument *document = [[[self window] windowController] document];
MyNC *DragNC =[[MyNC alloc] init];
//イベントから、マウスの位置をゲットしたかったが、まだやり方がよくわからない。
NSEvent *eventCheck =[NSApp currentEvent];
NSPoint testOfEvent =[eventCheck locationInWindow];
NSPoint pos =[self convertPoint:testOfEvent fromView:nil];
//???
[DragNC setTest:path];
[DragNC setImage:[ [NSImage alloc] initWithContentsOfFile:path] ];
[DragNC setBasepoint:pos];
[DragNC rectOfImage];
[document addFromView:DragNC];
return YES;
}
599名称未設定:2008/08/23(土) 08:34:53 ID:WscyKynU0
600名称未設定:2008/08/23(土) 09:45:05 ID:UYIKiWXA0
すごく早い返信ありがとうございます。
アドレスにあったCocoa Event-Handling Guide をよんで、NSWindowのメソッドのmouseLocationOutsideOfEventStream
が使えるのではないかと思って、試した所うまくいきました

599さん、ならびに597さんありがとう。

-(BOOL)performDragOperation: (id) sender
{
NSWindow *testWindow =[self window];
NSPoint mousePoint =[testWindow mouseLocationOutsideOfEventStream];

//これで、mousePointにマウスカーソルの位置がはいりました(^^)
//以下ソースコード略
601名称未設定:2008/08/23(土) 15:40:16 ID:leuBXtDM0
ageですね
602名称未設定:2008/08/24(日) 17:22:44 ID:TmR2Twjv0
>>595
年の最終週は、きっちり終わってないときは翌年のweek 1と同一視することにしているのかも。
(その方が、年をまたいで週をカウントしていく時とか矛盾が出にくいかな)
12/31がきっちり土曜で終わる1994年、2005年等では53が出る。
603名称未設定:2008/08/24(日) 18:10:42 ID:51aC4O130
>>595
ttp://www.probabilityof.com/iso/8601v2000.pdf

ISO8601 v2000 4.3.2.2 のNOTE4に

> NOTE 4 The rule for determining the first calendar week is equivalent with the rule
>“the first calendar week is the week which includes January 4”.

という記述があります。
604名称未設定:2008/08/24(日) 18:18:18 ID:SM8lJL4p0
http://developer.apple.com/samplecode/SimpleCalendar/index.html
にあるApple公式のサンプルをビルドしようとしたら、
#import <CalendarStore/CalendarStore.h>
の行で「error:CalendarStore/CalendarStore.h:no such file or directory」
というエラーが出ました。
当方の環境はLeopard, Xcode ver.3.1なのですが、
何か特殊な設定をしないとビルドできないのでしょうか?
605名称未設定:2008/08/24(日) 18:36:36 ID:LevVSdjT0
>>604
***.xcodeprojの本窓、「グループとファイル」の中にある「Frameworks」のところで右クリック
「追加→既存のフレームワーク…」
/Developer/SDKs/MacOSX*****.sdk/System/Library/Frameworks/
の階層の中から「CalendarStore.framework」を選択し、追加する。

こちらXcode2.2のため、そのフレームワークがなかったけれど、あればそれでうまく行くはず
606名称未設定:2008/08/24(日) 20:15:01 ID:KAJx2qMD0
そういやLeopardでXcoee2.xて行けるんですかね?
607名称未設定:2008/08/24(日) 20:52:46 ID:OIWNP41V0
>>602,603
595です。返信ありがとうございました。

バグであるにせよ、仕様であるにせよ、yearとweekからdateを算出する時には
注意する必要がありますね。

if ([comps month] == 12 && [comps week] == 1){
[comps setWeek:53];
}

のようなコードで回避可能ではありますが。

今週、先週といったNSPredicateを作成するコードを書いていて気づいたことです。
どうもありがとうございました。
608604:2008/08/24(日) 21:46:39 ID:SM8lJL4p0
>> 605
お返事ありがとうございます。
ただ、今見てみたら「グループとファイル」の中の、Frameworks/Other Frameworksという階層の中に、
既にCalendarStore.frameworkがありました。
ファイルをクリックしてみたら中にCalendarStore.hというファイルがあるようなので、
これを読んでくれれば動くと思うのですが、どうもこのframeworkを無視しているようです。
609604, 608:2008/08/24(日) 21:59:32 ID:SM8lJL4p0
あ、Releaseビルドに変更したら、やたら沢山警告が出ていますが(内容はDebug時のエラーと同じ)
とりあえずコンパイル通って実行もできました。
Debug設定ではビルドできないんですか?
610名称未設定:2008/08/24(日) 22:11:53 ID:OIWNP41V0
>>609
それで正常動作しますか?
-eventPredicateWithStartDate:endDate:calendars:はNSPredicateではなくて
CalCalendarStoreのメソッドだし、
-saveEvent:span:error:のerrorが抜けています。

http://www.cocoabuilder.com/archive/message/cocoa/2007/12/4/194398
611名称未設定:2008/08/24(日) 22:22:23 ID:oDeSyiM50
IBでNSMenuItemにショートカットキー(例cmd+])を設定して
実行させてショートカットキーを連打すると使用メモリーがガンガン上がってくのですが、
こんなもんなんですかね?
ちなみにメニューを開いて実行させても使用メモリーは増えないのですが。

10.4.11 Xcode 2.5
612604, 608, 609:2008/08/24(日) 22:40:07 ID:SM8lJL4p0
>> 610
カレンダーの表示はできたんですが、編集ができませんでした。
NSPredicateをCalCalendarStoreに変更したらアルファベットの文字列は編集できるんですが、
日本語がまじるとエラーが出ます。

2008-08-24 22:30:21.608 SimpleCalendar[25050:10b] oldDate=2008-08-09 00:00:00 +0900
2008-08-24 22:30:21.608 SimpleCalendar[25050:10b] *** -[__NSCFDate dayOfCommonEra]: unrecognized selector sent to instance 0x25228940
2008-08-24 22:30:21.609 SimpleCalendar[25050:10b] *** -[__NSCFDate dayOfCommonEra]: unrecognized selector sent to instance 0x25228940

このサイトのコードを鵜呑みにしたらダメなんですね。
もう少しCalCalendarStoreについて調べてみます。
ありがとうございます。
613名称未設定:2008/08/24(日) 22:55:22 ID:CnjDKOKp0
>>608
あ、いあ…
その階層にあるというだけでは駄目で、それをxcodeprojの中に登録しないといけない。
さらにはCalendarStore.frameworkの右の所にチェック(読み込ませる)を入れる必要があるけど
そこまでやってますかな?
614名称未設定:2008/08/24(日) 23:00:26 ID:CnjDKOKp0
>>608
読み違えた…
>その階層にあるというだけでは駄目で、それをxcodeprojの中に登録しないといけない。
は無視して。
あとはチェックが入っているかどうかと、あとはもしかすると
コマンド+iで「ターゲットSDKを利用したクロス開発」で指定したSDKと、
ロードしたFrameWorkでバージョンのズレがあるとうまく行かなかったような記憶も…
615608:2008/08/24(日) 23:24:26 ID:SM8lJL4p0
私の環境ではXcodeのグループとファイルの中の、
/SimpleCalnedar/Frameworks/Other Frameworks/CalendarStore.framework
の右にはチェックボックスは見あたりません(´・ω・`)
「情報を見る」の中の「ターゲット」内にプロジェクト名とチェックボックスがありますがこれのことでしょうか?
でもこれにはもともとチェックが入っていました。
Xcodeに対するframeworkの追加についてもう一度調べ直してみます。
お手数かけてすみません。
616HK:2008/08/25(月) 00:55:49 ID:sH5wW6Cs0
>>604
Cocoa Break! というサイトをやってる者です。
サイトのソースの部分で、ビルドの前の注意を書いてます。
「ビルドするには、いくつかの場所で NSPredicate を CalCalendarStore に変更する必要がある。
他の警告は引数 error:nil を追加する。」
Mac OS X v10.5、3.0 段階ではこれで問題なくピルドできました。
とりあえず警告ゼロってだけですけど。
説明をするために細かく動作を見ることはしてないんで…。
617名称未設定:2008/08/25(月) 01:03:48 ID:0vm6OJHX0
俺もカーボンブレイク!作ろうかな
618HK:2008/08/25(月) 01:14:38 ID:sH5wW6Cs0
追記ですが、サイトを見てもらえればわかるように、
サンプルはたまにエラーが出てビルドできないものがあります。
スクリーンショットが掲載されているものは、ビルドまでは完了してます。
とはいえ、10.4 でビルドできるものは 10.4 で確認してますが…。
また、それとは別ですが、Moriarity など OS X の古いバージョンのサンプルは、
10.5 では動作しなくなっている場合もあるので、
サンプルコードを参考にする時は注意が必要です。
619名称未設定:2008/08/25(月) 09:56:26 ID:jTkDE9uv0
>>607
>if ([comps month] == 12 && [comps week] == 1){
> [comps setWeek:53];
>}
>のようなコードで回避可能ではありますが。
いや多分、必ず53週あるという認識が、ISO8601的には間違っている。
しかしNSCalendar,NSDateComponents等を調べると、ISO8601はサポートしていなさそうですね。
NSCalendarのminimumDaysInFirstWeek(デフォルトは1)で、第1週を決めるようになっているみたい。
以下確認したコード。
--
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *oneDayComps = [[NSDateComponents alloc] init];
[oneDayComps setDay:1];
NSMutableArray *days = [NSMutableArray array], *weeks = [NSMutableArray array];
for (NSInteger minimumDaysInFirstWeek = 1; minimumDaysInFirstWeek< 7; minimumDaysInFirstWeek++) {
[calendar setMinimumDaysInFirstWeek:minimumDaysInFirstWeek];
NSLog(@"minimumDaysInFirstWeek:%d",[calendar minimumDaysInFirstWeek]);
for (NSInteger year = 2000; year < 2011; year++) {
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:year]; [comps setWeek:52]; [comps setWeekday:7];
NSDate *date = [calendar dateFromComponents:comps];
for (NSInteger i = 0; i < 9; i++) {
comps = [calendar components:(NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:date];
[days addObject:[NSString stringWithFormat:@"%2d",[comps day]]];
[weeks addObject:[NSString stringWithFormat:@"%2d",[comps week]]];
date = [calendar dateByAddingComponents:oneDayComps toDate:date options:0];
}
NSLog(@"%4d",year); NSLog(@" day:%@",[days componentsJoinedByString:@","]); NSLog(@" week:%@",[weeks componentsJoinedByString:@","]);
[days removeAllObjects];
[weeks removeAllObjects];
}
}
620604, 608:2008/08/25(月) 11:21:47 ID:OWKKkKb+0
>> HKさん
サイト拝見しました。訂正の必要なサンプルにはコメントをつけてくださってるんですね。
すばらしいサイトを作ってくださってありがとうございます。
Cocoaの勉強に利用させていただきます。
621名称未設定:2008/08/25(月) 20:37:27 ID:83D/x5lc0
Moriarityは一応ビルドできて、動いた。

当方 Leo Xcode3.1
622名称未設定:2008/08/26(火) 10:32:05 ID:CiwPWnRl0
ttp://lists.apple.com/index.html
Appleのメーリングリストの検索がおかしくなってないでしょうか?
何を検索しても何もひっかからない状態になってしまってますがうちだけでしょうか;
623名称未設定:2008/08/26(火) 11:39:06 ID:jgEO9m2Z0
>>619
>NSCalendarのminimumDaysInFirstWeek(デフォルトは1)で、第1週を決めるようになっているみたい。

そんな風になってるんだ。面白い。

ところで細かいことだけど、これって素のccじゃ通らないよね?
自分のとこはXcode 3.1を入れているけどデフォのccではfor内の変数宣言でエラーになります。
もしかして環境によってはObjCもC99がデフォになるのかなと思って。
624475=478:2008/08/26(火) 13:08:14 ID:Ag+iSJqi0
for文って条件式のところで変数の宣言をしてるとこ?
拡張子をmmにしてObjective-C++にしてんじゃないの?
625名称未設定:2008/08/26(火) 16:10:29 ID:2IRoqpso0
1)I.BでNSMenuのインスタンスをMenuA、MenuBと2つ作る。
2)NSMenuのサブクラスMyMenuを作り、MenuA、MenuBのカスタムクラスに設定する。

この場合、サブクラスMyMenu内でMenuA、MenuBのどちらなのかを判定したいのですが
可能でしょうか?

メニューアイテムはMenuA、MenuBともに同じ、アクションのターゲットは
別にしたいのです。(MyMenu内でターゲット先のメソッドを呼ぶ)

MyMenuからみて自分のインスタンス名(MenuA or MenuB)が取得できればいけそうな気がしますが、
インスタンス名の取得方法、もしくは他のよい方法があれば教示ください。

よろしくお願いいたします。
626名称未設定:2008/08/26(火) 16:49:45 ID:kPx+BItI0
たぶん、すっごく勘違いしてる。
けど、通常は tag を設定する。
627名称未設定:2008/08/26(火) 18:26:20 ID:tnusyOvp0
説明不足ですみません。

仰せの通り通常はタグを設定して判別するのですが、
I.BでNSMenuにはタグが設定出来なかったので困っている次第です。
628名称未設定:2008/08/26(火) 18:45:23 ID:kPx+BItI0
あ、やっと大体意味が分かった。
アプローチが間違ってる。
- (void)menuNeedsUpdate:(NSMenu*)menu;
- (BOOL)menu:(NSMenu*)menu updateItem:(NSMenuItem*)item atIndex:(NSInteger)index shouldCan
cel:(BOOL)shouldCancel;
- (BOOL)menuHasKeyEquivalent:(NSMenu*)menu forEvent:(NSEvent*)event target:(id*)target act
ion:(SEL*)action;
この辺かな。
629名称未設定:2008/08/26(火) 22:27:36 ID:TlM0EGE00
Xcode 3.1でDocument-based Applicationを作っています。
MyDocumentクラスのmyStringをTextViewのAttributed StringにIBでbindingしているのですが、
自作のメソッドを実行するときに、myStringにTextViewの内容を反映させるにはどのようにしたらよいのでしょうか。
630名称未設定:2008/08/26(火) 23:24:47 ID:zAbcxQXm0
myString=[TextView stringValue]ではダメ?

myString<->TextViewの双方向にバインディングするNSValueTransformerのクラスを書いて
バインディングの設定画面のvalueTransformerに定義するとか。
631名称未設定:2008/08/26(火) 23:46:31 ID:TlM0EGE00
>>630
なるほど、バインディングは双方向ではなく片方向ずつなんですか。
myString=[TextView stringValue];
でやることにします。ありがとうございます。
632名称未設定:2008/08/27(水) 01:08:05 ID:HG7wkgv10
>>629
myStringがNSStringならば、attributedStringにはbindできません。
NSStringをbindするならvalueとbindしなくてはいけません。
そのためには、Multiple fonts allowedをoffにする必要があります。

そうした上で、setMyString:やsetValue:forKey@"myString"を実行すればKVO(NSKeyValueObserving)が働きます。
bindingについて解説しているサイトや書籍を参照することをお勧めします。
633名称未設定:2008/08/27(水) 01:20:18 ID:HG7wkgv10
>>629
632です。ちょっと勘違いですね。
myStringにTextViewの内容を反映させるにはコントローラにcommitEditingを送信します。


634名称未設定:2008/08/27(水) 02:22:49 ID:wf34hNXG0
>>633
ありがとうございます。別途Controllerを作ってやる必要があるんですか。なるほど。
635名称未設定:2008/08/27(水) 02:40:39 ID:3tAcl1TP0
>>634
頼むからドキュメントとサンプルちゃんと見てくれ。
人に聞くのはそれからだ。
636名称未設定:2008/08/27(水) 11:45:40 ID:prT6DVto0
アプリが大きくなってきてメインのクラスの記述が非常に多くエディットしにくい状態です。
一つのクラスを複数ファイルへ分けて記述することは可能でしょうか?可能ならどのようにすれば良いでしょうか?
637名称未設定:2008/08/27(水) 11:49:21 ID:wuThmqJw0
>>636
カテゴリー
638名称未設定:2008/08/27(水) 11:53:24 ID:prT6DVto0
ああ!なるほど
カテゴリって既存クラスの拡張ってイメージありましたけど、
確かに自作のクラスでも同じですよね、ありがとうございます。
639名称未設定:2008/08/27(水) 13:13:04 ID:h/VQOtmq0
コンパイラにとって自作のクラスと既存のクラスって区別できないんじゃないかな
640名称未設定:2008/08/27(水) 19:33:03 ID:x9/18bUo0
>>636
そのメインのクラスが、どんなものなのか知らないけど、
リファクタリングしたら、複数のクラスに分かれたりはしないかい?

641名称未設定:2008/08/27(水) 19:55:05 ID:UdEkpoZd0
>>636
させる仕事の役割をきちんと分類し、それを別オブジェクトにするもよし、カテゴリで分割するも良し
カテゴリで分けた場合、
main+Private.h、main+Private.m
などとファイルをわけるといいです。
642名称未設定:2008/08/30(土) 20:49:35 ID:hzRge4tB0
objective cでクロージャが使えるようになるらしいって、本当ですか?
643名称未設定:2008/09/01(月) 00:08:41 ID:CKjm/P3D0
2年くらい前には10.5のObjectiveC 2.0で導入されるという噂がありました。
それのことじゃないでしょうか。
644名称未設定:2008/09/01(月) 20:06:07 ID:k3tEwtc60
POCで使えなかったっけ?
645名称未設定:2008/09/01(月) 23:09:28 ID:CKjm/P3D0
>>644
そうみたい。
ttp://users.pandora.be/stes/block98/index.html
Smalltalkっぽいスタイル?

646名称未設定:2008/09/02(火) 18:40:20 ID:1UJh/BMk0
llvm-gccかclangが対応してくれます(きっと)。
647名称未設定:2008/09/02(火) 20:56:45 ID:VUOngefQ0
たのしいCocoaプログラミング[Leopard対応版]で
Hello World表示もできなかった
648名称未設定:2008/09/02(火) 21:24:30 ID:fo5slvFb0
>>647
さっぱりすぎワロタw
649名称未設定:2008/09/02(火) 22:38:58 ID:agEX2R6R0
>>646
ほんとうにclangが来てるwww
ttp://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002670.html

gccへ提案してたのは前にあったらしいんだけど、こっちが先か。
確かにgccよりclangのほうが構文いじりやすいだろうし。

650名称未設定:2008/09/03(水) 14:24:51 ID:102AMvOI0
>>647
どういうこと?

HMDTのサイトはよく参照するけど、本の方は出来良くないという印象。
651名称未設定:2008/09/03(水) 14:39:37 ID:iULcM77e0
>650
単なる「私は馬鹿です」宣言でしょ。

Cocoa的Hello Worldは
XcodeでCocoa Applicationテンプレートからプロジェクト作って、
MainMenu.nibを開いてWindow上のテキストフィールドに
「Hello World」って入れて、保存して、
Xcodeに戻ってビルドと実行すればいいだけ。
652名称未設定:2008/09/03(水) 14:42:37 ID:t13feepc0
NSLog(@"Hello World");
これが動かないのか?
653名称未設定:2008/09/03(水) 15:02:10 ID:iULcM77e0
stderr に出力するHello Worldはあんまり見ないよね。
しかも余計な出力付くし。
それがしたいなら printf("Hello world");の方が良いと思う。
654名称未設定:2008/09/03(水) 15:33:47 ID:+g6j8XH20
Foundation的に書いてみると、

[[NSFileHandle fileHandleWithStandardOutput] writeData: [@"Hello, World\n" dataUsingEncoding: NSASCIIStringEncoding]];

ながいな。
655名称未設定:2008/09/03(水) 21:01:18 ID:/rdLXYXb0
>>650
>HMDTのサイトはよく参照するけど、本の方は出来良くないという印象。
たのしいCocoa読んでみたけど、あれはプログラミング自体が初心者な人は
かなり置いてきぼりになる内容だと思った。多分>>647はそういう人。

>>651
言い過ぎ。

たのココ的HelloWorldはCocoaセミナー初級編と一緒だった。
1.AppControllerクラスを作る。
2.テキストフィールドのアウトレットと、sayHelloメソッドを宣言
3.IBでインタフェース作成、接続
4.XcodeでsayHelloメソッドの実装
5.ビルドと実行


>>647
Cocoaセミナーと内容一緒だから、あわせて見ておくのを勧める。
旧バージョンだが基本は同じだし、違うところは本を参考にすればいい。
ttp://developer.apple.com/jp/documentation/japanese.html
656名称未設定:2008/09/03(水) 22:06:03 ID:cOJMtB+R0
そういえばヒレガス本第3版邦訳まだかな
657名称未設定:2008/09/03(水) 22:14:05 ID:qucRX3eD0
アプリのメインのクラスをAppControllerって名前にするのたぶん彼の流儀なんだけど
国内ですげー広まってる気がするw
Appleのサンプル見るとメインのクラスはプロジェクトの名前とかだよね?
658名称未設定:2008/09/03(水) 22:21:59 ID:BhsIDDum0
>>657
おれの流儀はXXAppDelegateだぜ。XXの部分はプロジェクト毎にサフィックスを決める。

プログラムを作る時にはサフィックスのXXを決めるのに一番時間がかかる(w
659名称未設定:2008/09/03(水) 23:09:33 ID:S2My4fpG0
× suffix
○ prefix
660名称未設定:2008/09/03(水) 23:29:06 ID:q20130QRP
Core Dataなアプリだと、
プロジェクト作成時に自動的に
"プロジェクト名_AppDelegate"ができるから、
それをメインのコントローラとして弄ればいいのか
661名称未設定:2008/09/04(木) 06:48:05 ID:phG/aT9q0
>>658
メインのクラスはだいたいNSApplicationのデリゲートを受けるかも知れないけど、
デリゲート使用しない時もあるよね
まぁ細かいとこだけど俺も名前決めに時間かかる、他のクラスとかでも
662名称未設定:2008/09/04(木) 10:36:29 ID:gMkAqZ6m0
>>656
漏れも、ヒレガス本は心待ちにしている。
663名称未設定:2008/09/04(木) 10:50:12 ID:pQ8weQW+0
質問です。どうにもIB上のBindingとControllerが良く分からないので、
HMDTの黒表紙を買おうかと思案中です。そこでお聞きしたいのですが、
本の内容で、よく理解できるような解説はあるのでしょうか?
お持ちの方、よろしくお願いします。
664663:2008/09/04(木) 11:07:05 ID:pQ8weQW+0
思案してても仕方が無いので、やっぱ買う事にします。
日記になってしまって済みません。
665名称未設定:2008/09/04(木) 13:29:39 ID:WdpeVM9o0
>>657
NEXTSTEPのころのいろんなソースはだいたい
"プロジェクト名の略称Controller" って命名だった気がするよ

例えば UltraNature っていうプロジェクトだったら UNController とかね

>>664
2ch へのポストなど所詮みなの日記だもの
気にすることはないと思うよ

ちなみに何を読んだりどこまで自分でやって binding と controller がわからなかったのか
によってその本がためになるか変わるかも
666名称未設定:2008/09/04(木) 20:48:22 ID:pQuggfDa0
ヒレガス3rdの邦訳?

出るなら買うけど
出る予定なんてないんでしょ?
667名称未設定:2008/09/04(木) 21:08:09 ID:AE37cJ/00
>>666
>出る予定なんてないんでしょ?

ま、ないんじゃね。あれだけ図がついてりゃ訳なんて不要でわ
668名称未設定:2008/09/05(金) 09:28:01 ID:Y7BbIuNw0
まだ古い日本語版本屋に並んでるけど、さすがにもう・・・。地味に売れてたと
思うんで、いい加減新版出して欲しいものだ。英語版も買ったけど、やはり
時間がかかるわ、眠くなるわで、効率が悪い。
669名称未設定:2008/09/05(金) 15:45:38 ID:70Xyj+YO0
Xcode 3.1
LSUIElement=1の、メニューバー(ステータスバー?)アプリを作成しています。
メニューバーのアイコンのメニューからopenPanel等を開くと、openPanelがアクティブにならないのですが、自動でアクティブにするにはどのようにしたら良いのでしょうか。
670名称未設定:2008/09/05(金) 15:51:32 ID:3OZbGjxI0
-(IBAction)makeKeyAndOrderFront:(id)sender;
671名称未設定:2008/09/05(金) 15:59:01 ID:70Xyj+YO0
>>670
NSWindowをアクティブにするときはそれでいけるかもしれないですが、NSOpenPanelをアクティブにするのにはどのようにしたら…
あと、- (void)orderFrontStandardAboutPanel:(id)senderで表示したAboutパネルもアクティブになりません。
672名称未設定:2008/09/05(金) 16:10:02 ID:70Xyj+YO0
なんか邪道ですが、openPanelを開く前に
NSAppleScript *AS=[[NSAppleScript alloc] initWithSource:[NSString stringWithString: @"tell application ¥"アプリ名¥"¥nactivate¥nend tell"]];
を行うことでうまくいきました。
もっとスマートな方法はないのかな…
673名称未設定:2008/09/05(金) 16:15:24 ID:70Xyj+YO0
>>672
[AS executeAndReturnError:nil];
を書き忘れ。
674名称未設定:2008/09/05(金) 16:18:16 ID:rvDtJprx0
それそのまんまのメソッドがあるわけだが……
675名称未設定:2008/09/05(金) 16:28:04 ID:70Xyj+YO0
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
でいけました…
676名称未設定:2008/09/05(金) 16:28:36 ID:3OZbGjxI0
クラス階層
677名称未設定:2008/09/06(土) 17:24:41 ID:pbA83sM10
ドラッグ&ドロップ中にコマンドキーなどが押されたら、
ドラッグ中のアイコンを変更できますかね?

ドラッグ開始時の自作アイコン表示とドロップ時の
キー押下判定は実装できたのですが。
678名称未設定:2008/09/07(日) 11:52:19 ID:K5MfR1iP0
>>677
うーん。自前でイベントループを作って、自前でドラッグ処理を書く以外に、方法が思いつかない。
679名称未設定:2008/09/07(日) 12:50:58 ID:YlD2TZRv0
すみません、質問です。
ファイルのダウンローダーを作成していて、保存ファイル名に自動でタイトルなどを付加しているのですが、
ファイル名に"/"が含まれている場合、ダウンロードに失敗します。

// デスクトップのパス
NSString *path = [@"~/Desktop" stringByExpandingTildeInPath];

// ファイル名を付加
NSString *fileName = @"xx / xx.txt";
path = [path stringByAppendingPathComponent: fileName];

// download は NSURLDownload
// "/"が含まれていると失敗する
[download setDestination:path allowOverwrite:NO];


fileNameを"/" -> "-"に置換すればOKですが、なんか格好悪い、
"/" -> ":" に置換してもFinder上では"-"で表示されます。

Finder上で"/"は入力できるので(内部的には":"なのですかね)
なにか良い方法はありませんでしょうか?

お手数ですがよろしくお願いします。

680名称未設定:2008/09/07(日) 12:54:11 ID:WGY8NPzr0
ファイル名に/を使わないようにすればいいんじゃないか
681名称未設定:2008/09/07(日) 13:21:02 ID:6VPpG5Yl0
¥/
682名称未設定:2008/09/07(日) 20:12:21 ID:yQpTS6OD0
>>681
ありがとうございます。
NSMutableStringに入れて置換をかけてみましたが、
"バックスラッシュ+/"ではワーニングが出ました。
683名称未設定:2008/09/08(月) 09:02:43 ID:1EifQ6YV0
>>682
普通に/を:に置換するだけじゃだめなん?
684名称未設定:2008/09/08(月) 22:18:36 ID:VBoZ6EQN0
試してないしひどく適当なこと書いてるが「/」って単純にパスの区切りとして
扱われてるだけなんじゃね?デスクトップ上に「foo」ってフォルダ作っといて

NSString *fileName = @"foo/bar.txt";

ってしてやっても失敗する?
685名称未設定:2008/09/09(火) 00:14:56 ID:IkrehLLo0
使おうとしているAPIで/はディレクトリの区切り記号だから
"xx/hoge.txt"をダウンロードしようとすれば
xxというディレクトリがないなら失敗するのは当然。

ファイル名として/を使いたければ,:がFinder上では/に見える。
ただ,古いAPIだと:が区切りになっていたので
自動的に別の文字に置き換えられる可能性もある。
一度別の名前でダウンロードしてから希望の名前に
リネームをかけるというのではダメ?

でもダウンロードしてくるファイル名に/が含まれる
ことなんてあるの?
686名称未設定:2008/09/09(火) 10:11:47 ID:V/uZJd3h0
凄く基本的な質問です
以前からメモに// もしくは/* */ でコメントアウトを使用していたのですが
#pragma mark もビルド時には完全に無視されると考えてよいでしょうか?
687名称未設定:2008/09/09(火) 17:46:39 ID:tjWw4zqq0
ソースコードからNSButtonを生成して自作ビューの上に表示させたいんだけど、つまづいてます。

NSButton *aButton;

aButton = [[NSButton alloc] init];
[aButton setTitle:categoryName];
[aButton setTarget:categoryController];
[aButton setAction:@selector(loadFromCategory:)];
[aButton setBezelStyle:NSRecessedBezelStyle];
[aButton setHidden:NO];
[self addSubview:aButton];
[aButton setFrameOrigin:NSMakePoint(200, 200)];

ダメ出しお願いします。
688名称未設定:2008/09/09(火) 17:49:59 ID:eVGJsD0p0
何がどうダメになるんだい?
689名称未設定:2008/09/09(火) 17:57:24 ID:tjWw4zqq0
あー、肝心なところを書き忘れてた。。
ボタンが表示されないんですよ。
690名称未設定:2008/09/09(火) 18:06:04 ID:CHK+3i9f0
指定イニシャライザはinitWithFrame:だね。
691名称未設定:2008/09/09(火) 18:18:31 ID:tjWw4zqq0
最初からもっと詳しく書けば良かったね。NSViewのサブクラス(CategoryView)を作っていました。
それをコントロールするクラス(categoryController)内の文字列がつまった配列を読み込んで、
その数だけボタンを生成したかったんです。

@implementation CategoryView
- (id)initWithFrame:(NSRect)frameRect {
if(self = [super initWithFrame:frameRect]) {
}
return self;
}
- (void)drawRect:(NSRect)aRect {
if(prevArray == categoryController.articleList) {
return;
}
for(NSButton *removeButton in [self subviews]) {
[removeButton removeFromSuperviewWithoutNeedingDisplay];
}
for(NSString *categoryName in categoryController.articleList) {
NSButton *aButton = [[NSButton alloc] init];
[aButton setTitle:categoryName];
[aButton setTarget:categoryController];
[aButton setAction:@selector(loadFromCategory:)];
[aButton setBezelStyle:NSRecessedBezelStyle];
[aButton setHidden:NO];
[self addSubview:aButton];
[aButton setFrameOrigin:NSMakePoint(200, 200)];
}
prevArray = categoryController.articleList;
}
@end
692名称未設定:2008/09/09(火) 18:25:40 ID:y/3nMAT/0
>>691
長々コピペする前に1つ上のレスを見れば良かったね。
693名称未設定:2008/09/09(火) 19:27:16 ID:tjWw4zqq0
>>690
ありがとー
694名称未設定:2008/09/09(火) 22:15:47 ID:5CcqCsPV0
>>691
・とりあえず、drawRect:内で、subViewを追加している所がダメだ。subViewは前もって追加しておかなければならない。
・ボタンの数量が変わるということは、それに合わせて自身のViewサイズも変えなきゃダメじゃないの?
・どうしても、drawRect:のタイミングでしかボタンの数量が決定しないなら、NSButtonCellを使うとよいかもしれない。
・最終的に何を作りたいのか知らないけど、ボタンを並べるだけなら、NSMatrixを使ってみたら?

695名称未設定:2008/09/10(水) 01:56:04 ID:JdO1QrgE0
タスクバーはまだですか?
696名称未設定:2008/09/10(水) 22:59:36 ID:erl+1Dgh0
IBでUILabel のフォントサイズを変更しても、なんか画面上でうまく反映されてない気がするんですが気のせいですかね。
最初に配置したとたんはちゃんと追従するのに、一度フォーカス外しちゃうと駄目なきがしますが、いまいちよく判ってないかも。
697名称未設定:2008/09/10(水) 23:48:34 ID:iCA9fuIC0
AutoSizeなんとかみたいなん入ってないですか?
FitToだっけか何か
698名称未設定:2008/09/11(木) 08:31:58 ID:VW8cs/5N0
>>697
IBの話?Layout>Size to fit の事かな。
699名称未設定:2008/09/11(木) 23:15:45 ID:hstXwgpC0
たのcocoのHelloWorldでさっそくつまづいた。なんとか解決したけど。

.hファイルを編集するとあるが、どこにも「編集後に保存する」とは書いてないじゃないか。アイコンが灰色になってる意味すらわからなかったorz。
700名称未設定:2008/09/12(金) 00:15:46 ID:g6XUsCdX0
>>699
あ、それおれも一瞬つまづいた。
わかってしまえばなんてことないんだけどね。
701名称未設定:2008/09/12(金) 00:42:34 ID:giTvRlty0
ソースファイルを保存してないとそれはメモリ上にしかなくて
コンパイラが参照するディスクに保存してあるソースファイルは前のものだというのは
別に Cocoa に限った話じゃなくてコンパイラを使うプログラミングなら全部共通の常識だと思うのだが
702名称未設定:2008/09/12(金) 01:00:38 ID:aLiSGFXa0
君らはパソコンで文章とか絵とか書いても保存しないのか。
703名称未設定:2008/09/12(金) 01:04:35 ID:cm2FlxP60
>>701
いや、>>699はビルド時のことじゃないと思うよ。ビルド時には保存しますか?って聞かれるし。
多分Interface BuilderのほうにIBOutletとかが反映されるのが保存後ってとこじゃないかな。
たのcocoは買ってないけど、俺もXcode 3.xになってちょっと戸惑った。
704名称未設定:2008/09/12(金) 07:29:43 ID:R3vW2eSc0
>703
ずばりその通りです。
「アクションとアウトレットの接続」が何度やっても接続できなかった。
705名称未設定:2008/09/12(金) 10:05:16 ID:kIdPh2bR0
Xcode 3.xはIBで変更してもビルド時に保存するか聞いてこないってこと?
それはちょっと嫌だなあ。まだ2.xなもんで。
706名称未設定:2008/09/12(金) 10:26:27 ID:blJgYNL40
じゃなくて、関連付けられたXcodeのプロジェクト内のファイルが変更されたら
勝手に見に行って追加削除されたIBAction IBOutletを自動的に同期するんだよ。
707名称未設定:2008/09/12(金) 16:10:14 ID:TZxbpOjR0
勝手に保存される方が気持ち悪くない?
708名称未設定:2008/09/12(金) 19:15:18 ID:Vsc3ghHA0
Xcodeのリファクタリングで、nibのoutletとかも、リプレースしてくれるのが嬉しい。
709名称未設定:2008/09/12(金) 20:48:14 ID:Oj5mxfWI0
>>701
ということを知らない初心者向けの本の話をしてるんですが。
710名称未設定:2008/09/12(金) 22:11:37 ID:eLlq91pJ0
なるほど。
「ファイルとは何か。」
「保存すると何が起こる?」
ぐらいから始めないと何らかのクレームがつく訳か。
711名称未設定:2008/09/12(金) 22:30:14 ID:rysqu+9T0
>>710

そうじゃないだろ……。IBとXcode3.xがどういう連携を取っているかと云うのが詳しく説明されてないのが元凶で、編集した内容が保存しなくてもメモリを介して共有されると勘違いしてしまったって事だろ。


まあ、その誤解の仕方にも些か無理があるが……。
712名称未設定:2008/09/12(金) 23:18:43 ID:Oj5mxfWI0
>>710
大丈夫ですか?
713名称未設定:2008/09/12(金) 23:29:05 ID:cm2FlxP60
ていうか未だに2.xな人が多いのかな?この誤解されっぷりは。
714名称未設定:2008/09/12(金) 23:56:30 ID:5MYImlaK0
開発は3.0でやってるよ。3.1に上げると古いCarbonのAPIが使えなくなるから。
今のところ64bit必要ないし。
715名称未設定:2008/09/13(土) 00:22:50 ID:HlQcU5id0
>3.1に上げると古いCarbonのAPIが使えなくなるから。
それは初耳... SDK を古い奴に設定かえてもだめなの?
716名称未設定:2008/09/13(土) 00:47:17 ID:U/Et2gQU0
ライブラリに古いCarbonのAPIがないからリンク出来んという話だったと思う。
717名称未設定:2008/09/13(土) 07:33:10 ID:RcIrvjqx0
うむー初耳だらけ。
3.1でCarbonいじってる。古いAPIを使っててコンパイラからdeprecatedを連呼されるが
連呼されるだけで一応コンパイルできてる。いい加減Cocoaで書き直そうと思ってるけどそれは
置いといてw
ライブラリがなかったら既存のバイナリも走らないし。
718名称未設定:2008/09/13(土) 08:00:02 ID:HlQcU5id0
XCode 3.1.1 が来てるよ。
719名称未設定:2008/09/13(土) 10:24:10 ID:LE/mlm6F0
実際AppleはいつまでCarbonを長らえさせる気なんだろうな?
Snow Leopardで切ってしまうのは少々過激な気もするし(PowerPCは切られるっぽいが)。
720名称未設定:2008/09/13(土) 10:42:12 ID:AGky0g5f0
CocoaとCarbonが全然基盤の異なる環境で、CarbonはOS 9との互換性のために残してある…
などと考えているならそれは間違いだと言っておく。
721名称未設定:2008/09/13(土) 10:49:37 ID:LE/mlm6F0
>>720
それは分かってる。
両者混在可能だしiTunesとかFinderとか純正でもCarbon要素が多いソフトもあることだから。
722名称未設定:2008/09/13(土) 11:27:59 ID:aVqvEgPV0
最悪、Carbon.framework及び関連Frameworkをぶっこ抜いてきて、内蔵しちゃう。
723名称未設定:2008/09/13(土) 11:39:14 ID:CsYE4bq/0
最近のCocoaはスタック見てもCarbon呼んでないお。
CarbonからCoreServieに移ったのはあるけど。
724名称未設定:2008/09/13(土) 12:06:38 ID:aVqvEgPV0
SetSystemUIMode(kUIModeAllHidden, kUIOptionAutoShowMenuBar);
これだけのためにCarbon使ってる。
これぐらいはCocoaに付けてくれ。 DockもAuoShowするようにして。
725名称未設定:2008/09/14(日) 14:12:32 ID:095CqlGt0
NSTableColumnにNSImageViewを組み込み、
NSImageViewにローカルパスではなくURLから画像を取得する場合、
非同期で取得、表示させるにはどうするばよろしいでしょうか?
726名称未設定:2008/09/14(日) 14:31:19 ID:hXVHKg6D0
非同期で取得したいならNSURLDownloadで
727名称未設定:2008/09/14(日) 14:47:35 ID:095CqlGt0
NSURLDownloadで一旦ローカルに保存せずに
直接NSImageを作成することは出来るのですか?

それらしい方法があればよいのですが。
728名称未設定:2008/09/14(日) 15:02:12 ID:/Z2RSCRo0
どの部分が分からないのか分からない
取得?非同期?表示?
729名称未設定:2008/09/14(日) 15:08:23 ID:p8KzSniT0
NSURLConnection
730名称未設定:2008/09/14(日) 15:32:55 ID:AYWcGIb70
NSURLConnectionで非同期で画像をNSDataとして取得して、
それをもとにNSImageを生成してNSImageViewに設定
731名称未設定:2008/09/14(日) 15:38:26 ID:p1p/oAlk0
現在はNSImageのfileContentOfURLでNSImageを作成しているのですが、
取得に時間がかかると固まったようになるのです。

テーブルカラムで一気に数行を表示させると、しばらく
ハングアップしたような状態になるのを
避けるにはどうすればよいかと。

お手数ですがお知恵をいただければと。
732名称未設定:2008/09/14(日) 15:49:38 ID:6NIJPt3y0
>>731
>>730じゃだめなん?
733名称未設定:2008/09/14(日) 16:02:55 ID:cIfGvRb00
>>731
/Developer/Examples/PubSub/NewMusic/
のコードを見れば、>>730の実例がありますよ。
734名称未設定:2008/09/14(日) 16:21:15 ID:p1p/oAlk0
みなさまありがとうございます。
家に帰ってからチャレンジしてみます。
735名称未設定:2008/09/14(日) 16:56:06 ID:/Z2RSCRo0
普通にメインスレッド以外で読み込めば良いのでは?
736名称未設定:2008/09/14(日) 23:21:50 ID:MZtdcUbF0
age
737名称未設定:2008/09/15(月) 00:47:43 ID:23PGzCcT0
格闘すること4時間、ようやく非同期で画像表示ができました。
みなさま本当にありがとうございました。
738名称未設定:2008/09/15(月) 10:05:56 ID:gN/nGyHB0
>>737
>みなさま本当にありがとうございました。

老婆心だがどうやったらできたかも書いとくといいぞ。
他の人の参考になるかもしれん品
739名称未設定:2008/09/15(月) 10:43:43 ID:1fLwojEv0
相談したら解決法を書くのが礼儀かと
740名称未設定:2008/09/15(月) 12:18:29 ID:23PGzCcT0
ですね。失礼しました。
>>730さんの指摘の通りNSURLConnectionで非同期で画像をNSDataとして取得して画像を作成しました。

以下、主要なコード部分です。

- (void)getImage:(NSString *)imageURL
{
// リクエスト作成
NSMutableURLRequest *request = [NSMutableURLRequest imageURL
urlcachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30];
[request setHTTPMethod:@"GET"];

// コネクション開始
[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
// データを受信したら imageData_に溜め込む
if(!imageData_) imageData_ = [[NSMutableData data] retain];
[imageData_ appendData:data];
}

-( void )connectionDidFinishLoading:(NSURLConnection*)connection
{
// 受信が完了したら画像を作成する
image_ = [[NSImage alloc] initWithData:imageData_];
}
741名称未設定:2008/09/15(月) 16:21:54 ID:yHVGCdW40
すみません、また質問です。
NSStringで参照渡しをするにはどうすればよいのでしょうか?
下記のコードだと、ログには空白で出てしまいます。

NSString *str1 = @"";
NSString *str2 = @"";
[self getString:str1 str2:str2];
NSLog(@"str1=%@, str2=%@", str1, str2);

- (void)getString:(NSString*)str1 str2:(NSString*)str2
{
str1 = @"aaa";
str2 = @"bbb";
}

なんか基本的なことですみません。
742名称未設定:2008/09/15(月) 16:53:15 ID:oR3oM3f30
NSString *str1;
NSString *str2;
[self getString:&str1 str2:&str2];
NSLog(@"str1=%@, str2=%@",str1,str2);
[str1 release];
[str2 release];

-(void)getString:(NSString**)str1 str2:(NSString**)str2{
*str1 = [@"aaa" retain];
*str2 = [@"bbb" retain];
}

こんな感じか
743名称未設定:2008/09/15(月) 17:01:20 ID:mcKY8VJv0
本題からは外れるが、そのメソッド名でownershipを渡してしまうのはどうかと思う。
744名称未設定:2008/09/15(月) 17:20:08 ID:A7RLo79t0
文字列定数って解放されんの?
745名称未設定:2008/09/15(月) 17:37:27 ID:1fLwojEv0
>>743
[@"aaa" retain]するならcopyStringで
[@"aaa" autorelease]ならgetStringってこと?

そもそも返り値が複数の場合ってNSArrayとかNSDictionaryにしてやるイメージがあるけど、どうなんでしょ
746名称未設定:2008/09/15(月) 17:45:44 ID:nEj7kIm/0
「replacing NaN with 0.」というエラー(ウォーニン?)の対処方法を教えてください。詳細はこうです。

http://hmdt.jp/coral/index.htmlのcoral.appを改造しました
コマンドで
./coral http://www.apple.com/jp/ipodnano/ -o ~/Desktop/test.pdf -p
とすると,問題なく終了しますが,
当のHMDTサイトだと,上記のエラーが16行出力されます。
./coral http://hmdt.jp/coral -o ~/Desktop/test.pdf -p

改造の趣旨は,PDFの出力をページごとにすることです。
(「PDFとして保存...」と同じことをコマンドラインからできるように)
いわゆるhtmltopdfとかHTMLDOCみたいで日本語可なものです。
このあとパッチを記載します。
747名称未設定:2008/09/15(月) 17:47:00 ID:nEj7kIm/0
$ cat main.patch
*** main.m.orig 2007-06-02 18:05:48.000000000 +0900
--- main.m 2008-09-13 16:13:54.000000000 +0900
***************
*** 38,43 ****
--- 38,44 ----
int COOutputSizeHeight = 0;
BOOL COIsVerboseMode = NO;
BOOL COIsDialogMode = NO;
+ BOOL COIsPagenateMode = NO;
float COTimerTime = 0.0;

NSArray* COFormats = nil;
***************
*** 51,56 ****
--- 52,58 ----
fprintf(stderr, " -f/--format <format> Specify output file format\n");
fprintf(stderr, " -h/--help Print this help\n");
fprintf(stderr, " -o/--output <file> Specify output file name\n");
+ fprintf(stderr, " -p/--pagenate Output a pagenated file\n");
fprintf(stderr, " -s/--screen <width height> Specify rendering screen size\n");
fprintf(stderr, " -S/--SIZE <ratio> | <width height> Specify output image size\n");
fprintf(stderr, " -d/--dialog Use print dialog\n");
***************

748747:2008/09/15(月) 17:58:21 ID:nEj7kIm/0
*** 245,250 ****
--- 247,261 ----
continue;
}

+ // Pagenate option
+ if ([tmp isEqualToString:@"-p"] ||
+ [tmp isEqualToString:@"--pagenate"])
+ {
+ // Set pagenate mode
+ COIsPagenateMode = YES;
+ continue;
+ }
+
// Verbose option
if ([tmp isEqualToString:@"-v"] ||
[tmp isEqualToString:@"--verbose"])

もう一つパッチがありますが,連続投稿できないので,しばらくお待ちを
749名称未設定:2008/09/15(月) 18:01:08 ID:oR3oM3f30
>>745
質問の内容に合うように回答してみたが、
自分なら >>742 みたいなことはしない。
750747:2008/09/15(月) 18:01:15 ID:nEj7kIm/0
$ cat COController.patch
*** COController.m.orig 2007-06-02 18:11:17.000000000 +0900
--- COController.m 2008-09-15 16:05:25.000000000 +0900
***************
*** 39,44 ****
--- 39,45 ----
extern int COOutputSizeHeight;
extern BOOL COIsVerboseMode;
extern BOOL COIsDialogMode;
+ extern BOOL COIsPagenateMode;
extern float COTimerTime;

extern NSArray* COFormats;
***************
*** 290,301 ****
path = [[NSFileManager defaultManager] currentDirectoryPath];
path = [path stringByAppendingPathComponent:COOutputFileName];
}
! if (![data writeToFile:path atomically:YES]) {
! // Error
! fprintf(stderr, "coral: Failed to save data\n");
! [self _quit];
! return;
! }

// Quit application
[self _quit];
751747:2008/09/15(月) 18:04:59 ID:nEj7kIm/0
--- 291,335 ----
path = [[NSFileManager defaultManager] currentDirectoryPath];
path = [path stringByAppendingPathComponent:COOutputFileName];
}
! if (COIsPagenateMode) {
! // For pagenate mode
! // fprintf(stderr, "coral: Pagenate Mode\n");
! // Create print info
! NSPrintInfo* printInfo;
! printInfo = [[NSPrintInfo alloc] init];
! [printInfo autorelease];
! [printInfo setHorizontalPagination:NSFitPagination];
! [printInfo setVerticallyCentered:NO];
! [printInfo setVerticalPagination: NSAutoPagination];
! [printInfo setJobDisposition:NSPrintSaveJob];
! [[printInfo dictionary] setObject:path forKey:NSPrintSavePath];
!
! // Load print panel
! COPrintPanelController* printPanelController;
! printPanelController = [[COPrintPanelController alloc] init];
! [printPanelController setWebView:_webView];
!
! // Active itself
! [NSApp activateIgnoringOtherApps:NO];
!
! // Run print operation
! NSPrintOperation* operation;
! operation = [NSPrintOperation

752名称未設定:2008/09/15(月) 18:08:19 ID:1fLwojEv0
>>749
ですよね
そして本人がいないという
753名称未設定:2008/09/15(月) 18:11:07 ID:nEj7kIm/0
! printOperationWithView:[[[_webView mainFrame] frameView] documentView] printInfo:printInfo];
! [operation setAccessoryView:[printPanelController view]];
! [operation setShowPanels:NO];
! [operation runOperation];
!
! [printPanelController release];
! }
! else {
! if (![data writeToFile:path atomically:YES]) {
! // Error
! fprintf(stderr, "coral: Failed to save data\n");
! [self _quit];
! return;
! }
! }

// Quit application
[self _quit];

以上です。
754名称未設定:2008/09/15(月) 19:08:29 ID:yHVGCdW40
>> 741です。
>>742 - 745 >>749
ありがとうございます。おかげさまでできました。
(NSString**)にして代入は*にすればいいんですね。
NSArrayやNSDictionaryの考えましたが、面倒くさいというか、
参照渡しができるはずだと思ったもので。

メソッド名はあまり規約は考えていません。(汗)


755名称未設定:2008/09/18(木) 00:36:35 ID:P7aTv+8m0
- (void)drawRect:(NSRect)rect {
[super drawRect:rect];
[[NSColor whiteColor] set];
NSFrameRect(rect);
}
と書くのと

static NSColor *_white;

+ (void)initialize {
_whiteColor = [[NSColor whiteColor] retain];
}

- (void)drawRect:(NSRect)rect {
[super drawRect:rect];
[_whiteColor set];
NSFrameRect(rect);
}
と書くのでは
後者の方がパフォーマンス良いのでしょうか?
[NSColor hogeColor];
というのはその都度NSColorを生成していると考え方であってますか?
実際にはパフォーマンスというか、書き方としてどちらが正しいのか知りたいです。
756名称未設定:2008/09/18(木) 01:11:02 ID:M4ahfae1P
NSColorの内部で後者みたいなことがすでに行われているんじゃないかなぁ。
引数なしで呼び出せる色は代表的な色ばかりだし。
知らずに答えてるので、実際は知らない。
757名称未設定:2008/09/18(木) 01:17:09 ID:P7aTv+8m0
やっぱ内部的にやってんですかねぇ。
ここ見て気になったんです。
ttp://hmdt.jp/cocoaProg/AppKit/NSTableView/NSTableView.html#section05

ここで使われてる
+ (NSColor *)colorWithCalibratedWhite:(CGFloat)white alpha:(CGFloat)alpha
の方なんかはなんとなく保持しておいたほうが良いような気がしますが、
おっしゃるようにwhiteColorなどの代表的な色ってどうなんでしょうね。
758名称未設定:2008/09/18(木) 02:56:51 ID:s+En6PJ+0
NSMutableArray *array=[NSMutableArray array];
while([array count]<10000)
[array addObject:[NSColor whiteColor]];

とかやってみてObjectAllocとかでいちいちオブジェクトが生成されているかチェックすれば?
arrayに入っているオブジェクトのポインタを比較するだけでもわかるかな?
759名称未設定:2008/09/18(木) 03:20:51 ID:moZQjecs0
InterfaceBuilderで設置したボタンを、ある変数の値によって
表示したり消したり(操作も無効に)させたいのですが
どうすればよいでしょうか。
こういう場合ソースコードからボタンを作らないといけないんですかね?
760名称未設定:2008/09/18(木) 03:49:01 ID:s+En6PJ+0
ボタンのisHiddenにバインドするだけでいけるでしょ
761名称未設定:2008/09/18(木) 05:27:34 ID:moZQjecs0
>>760
どうもです。それでやってみます。
762名称未設定:2008/09/18(木) 12:11:19 ID:P7aTv+8m0
>>758
作ったarrayをretainしてアクティビティモニタで確かめてみたんですが、
whiteColorやgrayColorなどはメモリ使用量が全然増えず、
colorWithDeviceRed:1 green:1 blue:1 alpha:1
などだとメモリ使用量が増えました。
ObjectAllocを理解してないのですが、試してみたところ前者はあまり反応が無いのに対して後者はAllocateされまくってるようでした。
brownColorやpurpleColorなどシステムや標準のアプリに使われてない色でテストしてみると分かりやすく
初回呼び出し時のみAllocateされてされているようでした。
どうやらこれらはNSCachedRGBColorというカテゴリらしく勝手にうまいことやってくれてるようですね。
763名称未設定:2008/09/18(木) 13:26:26 ID:Zp1Zi8dY0
>>746
俺にはいちいちこのパッチを当ててテストするパワーはないが、

とりあえずデバッガにかけてisnan()あたりでブレークするかやってみるとか?
764名称未設定:2008/09/19(金) 01:58:22 ID:I8I+Mir80
Objective-Cって拡張子cppなC++で書かれた関数って呼び出しできないの?
なんか参照できないみたいなエラーでる


765名称未設定:2008/09/19(金) 02:09:25 ID:wgE41EU70
エラーの内容が曖昧だけどObj-C++なら混ぜられる。
拡張子はmm。
766名称未設定:2008/09/19(金) 10:40:19 ID:hXEJrUVN0
CからC++の関数を呼ぶ時と同じ。
extern "C"でぐぐれ。
767名称未設定:2008/09/19(金) 15:34:56 ID:guHg/OSE0
fp = fopen( "test00.bmp" , "rb" );

でファイルtest00.bmpがあるにもかかわらず
失敗するのですが、ファイル指定方法間違ってるのでしょうか?
768名称未設定:2008/09/19(金) 15:43:50 ID:Z5XmRcRR0
”何処に”有るのか分からない。
769名称未設定:2008/09/19(金) 16:03:15 ID:guHg/OSE0
読んでもだめなら書いてみるってことで
ファイル書き込んだら、ユーザーのディレクトリ直下にファイルが生成されました。

そこにデータを置いたら読み込めました。

実行時カレントディレクトリがおかしかったみたいです。

わけわからん
770名称未設定:2008/09/19(金) 16:14:16 ID:XMT3wHyR0
>>769
ワーキングディレクトリにファイルがあればパスを指定しなくてもいいが、
普通はパスも含めて指定するものだ。お前の方がわけわからんよ。
771名称未設定:2008/09/19(金) 16:44:22 ID:+88FPv300
>>769
わけわかってから先に進んだ方がいいよ
772名称未設定:2008/09/19(金) 20:26:50 ID:kkVdyAHJ0
>>769
NSBundle使うなら、それくらい適当な指示でも探してきてくれるんだが。
773名称未設定:2008/09/19(金) 20:33:14 ID:zh18Biru0
fopen を使う意味が分からん
774名称未設定:2008/09/20(土) 00:52:56 ID:QCGx6Cy40
なんかフルボッコされてる><。
>fopenを使う意味
ウィンドウズで書いてたプログラムをそのまま移植してみたんです><
Mac使用暦3日ですいません。
Mac使いこなしてから出直してきます。
775名称未設定:2008/09/20(土) 01:11:31 ID:6P09LMLz0
>>774
がんばって
776名称未設定:2008/09/20(土) 01:12:40 ID:2Q6+WcPN0
Cの標準ライブラリでソフト作るんならスレ違いだと思うよ。
777名称未設定:2008/09/20(土) 02:51:56 ID:y/ouZ/EC0
>>774
Macでプログラミング{9}
http://pc11.2ch.net/test/read.cgi/mac/1216824430/

【マック】Macintoshプログラミング質問箱
http://pc11.2ch.net/test/read.cgi/tech/1113058054/

の方がC言語標準でソフト作るのには向いているかも。
ただしどちらも適度に過疎っているのでそこが問題か。
778名称未設定:2008/09/20(土) 04:40:03 ID:TXb4ST/Q0
http://wktk.vip2ch.com/vipper103088.png
FinderやMail等で使用されている↑のUIを使いたいのですが、
どなたか方法ご存知のかたいないでしょうか。
779名称未設定:2008/09/20(土) 05:19:39 ID:cXIvNawZ0
Recessed Buttonじゃない??
780名称未設定:2008/09/20(土) 05:29:36 ID:TXb4ST/Q0
>>779
ありがとうございます。Recessed Buttonありました!
あとは背景かぁ…
この背景のすこしカーブしているような感じはどうやってるんだろ。
オリジナル画像?
781名称未設定:2008/09/20(土) 07:27:15 ID:JW0iPyXCP
.appのパッケージを見ると、ボタンのふちとか画像つかってるのがわかるよ
782名称未設定:2008/09/20(土) 13:28:58 ID:hXrkeK7L0
正式に売るアプリならパッケージの中の画像パクって使ってはいけないってうちの社の方針なんだけど、(Apple製のアプリでも)
やっぱ売り物に使うとまずいのかな?詳しい人いませんか?
783名称未設定:2008/09/20(土) 14:17:29 ID:rgm2k6nl0
何だって?
784名称未設定:2008/09/20(土) 14:28:35 ID:ULascG860
>>782
Appleに問い合わせろ。

俺はダメだと思うけど、判断するのはAppleだからな。
785名称未設定:2008/09/20(土) 15:56:12 ID:LLE/vX/80
NSString *mailPath = [[NSWorkspace sharedWorkspace] fullPathForApplication:@"mail"];
if(!mailPath) return nil;

NSBundle mailBundle = [NSBundle bundleWithPath:mailPath];
if(!mailBundle) return nil;

NSString *imagePath = [mailBundle pathForImageResource:@"hoge"];
if(!imagePath) return nil;

return [[[NSImage alloc] initByReferencingFile:imagePath] autorelease];


盗んでないもん!
786名称未設定:2008/09/20(土) 16:12:30 ID:pqLJOpdL0
質問です。
NSDictionaryのインスタンスに登録したオブジェクトの参照カウンタは
NSDictionaryのインスタンスのdealloc時にreleaseされるのでしょうか?
787名称未設定:2008/09/20(土) 16:14:08 ID:pqLJOpdL0
それともdealloc時にremoveAllObjectsを呼ぶ必要がありますか?
788名称未設定:2008/09/20(土) 16:21:10 ID:uslRtMKV0
ない
789名称未設定:2008/09/20(土) 16:27:12 ID:pqLJOpdL0
どうもありがとう!
すっきりしました。

× NSDictionary
○ NSMutableDictionary
790名称未設定:2008/09/20(土) 16:36:49 ID:TXb4ST/Q0
>>781
やっぱり画像ですか…

>>785
おぉ、その手がw
ありがとうございます。
791名称未設定:2008/09/20(土) 16:37:14 ID:hXrkeK7L0
>>785
俺もそんな感じ
792名称未設定:2008/09/20(土) 17:12:02 ID:RYHkLcyT0
しかしそれでは参照元が消えたら壊滅。
心を込めて1ドットずつ写せば問題なし。
793名称未設定:2008/09/20(土) 17:12:43 ID:a7bWHByb0
他のメーラー使ってる人の中には
Mailを削除した人も居るんでない?
794名称未設定:2008/09/20(土) 20:59:21 ID:hXrkeK7L0
まぁMailアプリは一例だろうけど
勝手に標準アプリを消すようなクライアントはあまりいないだろう
795名称未設定:2008/09/21(日) 02:55:13 ID:U0GaFiaU0
小さな画像に著作権は無かったような
796名称未設定:2008/09/21(日) 19:06:34 ID:00WHdogq0
Appleとしても同じアイコン使ってくれた方が統一されて
うれしいと思うんだけどな。
というか、商用アプリでリソースパクりは山ほどあるだろ。
797名称未設定:2008/09/21(日) 19:34:22 ID:f0YS1Y1Y0
798名称未設定:2008/09/21(日) 19:35:41 ID:9pFmn9NQ0
商売第一のヤツにオリジナリティの道を説くだけ無駄
799名称未設定:2008/09/21(日) 19:44:26 ID:1Y9VMPly0
>>797
UIはOS X、アイディアは→ttp://hmdt.jp/icart/index.html
800名称未設定:2008/09/21(日) 19:57:32 ID:nOczMaxO0
>>797
こういう会社はやだな
801名称未設定:2008/09/21(日) 20:33:16 ID:9pFmn9NQ0
こういうヤな会社でも売れれば勝ちだからな。
こういうヤな会社に負けないにはどうすべきか考えないとな。
802名称未設定:2008/09/21(日) 21:12:36 ID:ZjTwY0rm0
うわ、ここまでやっちゃうか。
えげつないなあ
803名称未設定:2008/09/21(日) 21:17:46 ID:eybcE3Lo0
どうせここまでやるならCocoaで開発しちゃえよ……。
804名称未設定:2008/09/21(日) 21:19:46 ID:nY6XTthc0
>>796
そういや、Appleから警告を受けたY'z Dockはリソースもパクってたな。
それがなきゃ警告はなかったかも?
805名称未設定:2008/09/21(日) 21:28:04 ID:nOczMaxO0
>>801
1行目>>そういう考え方もやだな
806名称未設定:2008/09/22(月) 00:20:34 ID:+KhZs1Nw0
iTunesみたいなUIをつくりたいんだがドキュメントのどこみればいいか分かりません。
だれか教えて下さい。

ちなみにつくりたいiTunesみたいなUIとは、
左ペインの部分です。
807名称未設定:2008/09/22(月) 00:44:33 ID:Zw418t180
>>806
ツリーかな?
808名称未設定:2008/09/22(月) 00:46:31 ID:+hiVdtXuP
>>806
http://park15.wakwak.com/~concordia/cocoa_break/dev/src/ADCSamples/index.html
のSourceViewが参考になるのでは。
NSTreeControllerを使ってるので、ちょっと敷居が高いかもしれないけど。
809名称未設定:2008/09/22(月) 01:02:34 ID:AYeTay2Z0
810名称未設定:2008/09/22(月) 11:17:41 ID:jh2DSqbR0
みんな親切だね
811名称未設定:2008/09/22(月) 16:43:21 ID:YwUHAmLG0
>>804
ま、あれはwidnows用だしね。
Mac用で同じリソース使ってくれたら統一感出してくれてありがとう
の一言だと思うけど。

ま、あくまでも憶測w
812名称未設定:2008/09/22(月) 18:05:30 ID:AYeTay2Z0
NSURLの、
relativeStringとabsoluteStringの違いがよくわからないのですが、
具体的にどのようなときに違いが現れるのでしょうか。
813名称未設定:2008/09/22(月) 18:38:52 ID:gvOmEYnc0
+[NSURL URLWithString:relativeToURL:]
-[NSURL initWithString:relativeToURL:]
を使ったとき意外は一緒です。
814名称未設定:2008/09/22(月) 18:50:38 ID:AYeTay2Z0
>>813
ありがとうございます。
815名称未設定:2008/09/23(火) 12:51:58 ID:DvYJX4re0
806です

>>807,808,809
ありがとうございます
816名称未設定:2008/09/23(火) 17:58:23 ID:KUSPWosD0
>>696 同じとこでつまずいた…orz

UILabelのフォントサイズを18以上にすると追従して大きくなるけど、そこから小さくできない。

うーむ
817名称未設定:2008/09/23(火) 19:16:28 ID:g/RzbGfr0
Dock上の特定のアイコンの座標を取得する方法ってあるんでしょうか?
Stackみたいにちょうどアイコンの上にウィンドウが開くようなUIを作りたいのですが・・・。
818名称未設定:2008/09/23(火) 22:47:20 ID:7MN5oJ1o0
プロパティで
@property (readWrite, retain, nonatomic) NSObject *object;
とした場合
self.object = nil;

[object release];
もしくは
[self.object release];
と同義でしょうか?
819名称未設定:2008/09/24(水) 00:22:02 ID:aStVeHik0
久しぶりにプログラムいじってるんですが、quartzのCGLayerRef(スクリーン
外)にCocoaのメソッド使って描画してます。
CGLayerRefからNSContextつくって、それをsetCurrentContextで設定して
描画を行い、NSViewの次のdrawRect:の段階で画面上に描画しています。

10.4ではうまくいっていたんですが、10.5にすると、このメソッド以降描画がさ
れなくなります。

CurrentContextがCGLayerRefになったままなのかと疑い、以前のCurrentContext
を一次退避させて、描画が終わった段階で元に戻すと正常に描画されるように
なったんですが、これは正しい解決方法なんでしょうか。

どなたかアドバイスして頂ければ幸いです。
820名称未設定:2008/09/24(水) 19:26:25 ID:jwopSb5h0
Xcode 3.1です。
-(IBAction)openBrowser:(id)sender{
NSWindowController* wc=[[NSWindowController alloc] initWithWindowNibName:@"Browser"];
[wc showWindow:self];
[[wc window] makeKeyAndOrderFront:self];
}
新しく作成したウィンドウがアクティブにしたいのですが、上のソースでは表示されるもののアクティブになりませんでした。
ウィンドウをアクティブにするにはmakeKeyAndOrderFront以外にも何か必要なんでしょうか。
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
を追加してみたりもしてみましたが効果無しでした。
821名称未設定:2008/09/24(水) 19:59:35 ID:EW93wwHW0
>>820
基本的な確認だけども。
そのNSWindowControllerは読み込んでるNibの中でFile's Ownerになっている?
そのアウトレットがちゃんと目的のWindowに繋がってる?
822名称未設定:2008/09/24(水) 21:02:40 ID:jwopSb5h0
>>821
ありがとうございます。windowをアウトレットで繋いだらうまくいきました。
823名称未設定:2008/09/24(水) 21:27:01 ID:iIaK2s1u0
824名称未設定:2008/09/24(水) 21:55:28 ID:/GxHzA8A0
>>823
んはーありがとうございます。
ちなみに上記コードでreleaseした後に
self.source = hoge; で再設定しようとすると落ちました。
retainCountが0だからってnilではないんですね。
825名称未設定:2008/09/25(木) 07:07:20 ID:lA2ZC0x+0
iPhotoを起動するときにoptionキーを押しながら起動すると
ライブラリの選択が行えるわけですが、
同じように自前のアプリケーションでも起動時のキー判定を行うには
どうしたらいいんでしょうか。
826名称未設定:2008/09/25(木) 07:34:41 ID:bTE/wwXK0
NSLog([[NSString alloc] initWithData:[[[NSString alloc] initWithString:@"=http%3A%2F%2F"] dataUsingEncoding:NSShiftJISStringEncoding] encoding:NSShiftJISStringEncoding]);
を実行してみると、
=http0X1.D1A1091104A28P-658-0.000000-1.992821
と表示されてしまうのですが、
「%3A%2F%2F」を含むNSDataを「0X1.D1A1091104A28P-658-0.000000-1.992821」ではなく「%3A%2F%2F」にする方法は無いのでしょうか。
initWithDataだけでなく、stringWithContentsOfFile:encoding:error:を試してもだめでした。
827名称未設定:2008/09/25(木) 10:03:12 ID:pGcOup570
>825
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/bathyscaphe/bathyscaphe/application/source/manager/DatabaseManager-Notifications.m?rev=1.9&view=auto
の一番下の
- (void)applicationWillTerminate:(NSNotification *)notification
でやってる。

これをApplication DelegateのapplicationWillFinishLaunchingあたりで。
GetKeys()はCarbonかCoreServiceに入ってたと思う。
828名称未設定:2008/09/25(木) 10:09:07 ID:uj5o01Zl0
>>826
そもそもhttp%3A%2F%2Fがいけないと思うよ。
http://にしないと
デコードするメソッドはググれば見つかると思う。
829名称未設定:2008/09/25(木) 11:05:14 ID:sKStzvQr0
>>828
そういう問題じゃないでしょ

>>826
NSLog(@"%@", [[NSString alloc]...);

NSLog の第一引数は format を指定するためのもの。典型的な security hole の原因だわ。
830名称未設定:2008/09/25(木) 11:13:32 ID:pGcOup570
>826
NSString *hoge = /* NSLogの中身 */;
NSLog(@"%@", hoge); // 第一引数に直接指定しない。
だと、どうですか?

NSLogの第一引数に直接指定してるのが問題です。
NSLogの第一引数はprintfとほぼ同じformat文字列ですので、
NSLogが%を解決しようとしてぶっ飛んでるんだと思います。

変換自体はそれでちゃんと出来ているはずです。
831名称未設定:2008/09/25(木) 13:08:06 ID:4oC2NP4f0
>>826
あと、NSShiftJISStringEncoding で決めうちするのはよくないよ。
URL は ShiftJIS のばあいもあれば、 EUC の場合もあるし、
最近は Unicode もふえてるから、ちゃんとその URL を含む頁の
コードを判定してからやりましょう。
832名称未設定:2008/09/25(木) 13:33:02 ID:q/UtwYK70
便乗ですみませんが、どうやって取得前に文字コードを判別できるのですか?
833名称未設定:2008/09/25(木) 13:58:05 ID:bTE/wwXK0
>>829-830
ありがとうございます。うまくいきました。
formatを扱う時は気をつけます。

>>831
今回やろうとしていることの場合、NSString化するデータが日本語を含まないとわかっているため、NSShiftJISEncodeで決めうちしています。

>>832
http://blogs.dion.ne.jp/fujidana/archives/4169016.html
これぐらいしかわからない…
もっといい方法あれば良いんだが
834名称未設定:2008/09/25(木) 15:46:00 ID:sKStzvQr0
>>833
日本語を含まないことがわかっているのであれば NSASCIIStringEncoding にするべきでは

>>831
URL は %xx を decode しないなら文字コードは関係ないでしょ
835名称未設定:2008/09/25(木) 16:11:06 ID:cN/guz5p0
>>819
そうだよ。
10.4で問題がなかったのはたまたまでしょうね。
836名称未設定:2008/09/26(金) 22:02:33 ID:cU/wlxV80
>>835
遅くなりましたが、レスありがとうございます。

ひとまず安心しました。
DrawRect:が呼ばれる辺りでNSContextも再設定されると思ってたので意外です。
837名称未設定:2008/09/27(土) 17:38:47 ID:PUMQQB4h0
NSViewをpdfにして(「PDFとして保存...」)プリントパネルを出さずに,保存したいと考えてます。
その際,プリントパネルでレイアウトのページ数/枚を2とか4とか設定するのと同様のことを
コードの中で設定したいのだがうまくいきません。
NSPagesAcross(横方向),NSPagesDown(縦方向)に整数をセットすればいい筈なのですが,
うまくいきません。
しかも,http://developer.apple.com/documentation/Cocoa/Conceptual/Printing/Tasks/CreatingPrintJob.html#//apple_ref/doc/uid/20000861によると
They still use the shared NSPrintInfo object if one is provided, but do not allow the user to modify the defaults.らしい。
アドバイスをお願いします。
念のためソースです。
NSPrintInfo* printInfo;
printInfo = [[NSPrintInfo alloc] init];
[printInfo autorelease];
[printInfo setHorizontalPagination:NSFitPagination];
[printInfo setVerticallyCentered:NO];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setJobDisposition:NSPrintSaveJob];
[[printInfo dictionary] setObject:path forKey:NSPrintSavePath];
COPrintPanelController* printPanelController;
printPanelController = [[COPrintPanelController alloc] init];
[printPanelController setWebView:_webView];
[NSApp activateIgnoringOtherApps:NO];
NSPrintOperation* operation;
operation = [NSPrintOperation
printOperationWithView:[[[_webView mainFrame] frameView] documentView] printInfo:printInfo];
[operation setAccessoryView:[printPanelController view]];
[operation setShowPanels:NO];
[[[operation printInfo] dictionary] setObject:[NSNumber numberWithInt: 2 ] forKey:@"NSPagesAcross"];
↑ここで1枚あたり2ページを割り付けているつもり...
[operation runOperation];
NSLog([NSString stringWithFormat: @"%@" ,[[[operation printInfo] dictionary] description]]);
[printPanelController release];
838名称未設定:2008/09/27(土) 20:08:21 ID:3BeeyAhv0
>>836
drawRectで再設定されるから良いという問題ではないですよ。
思わぬ所で上書きされる可能性もあるし、
currentContextかえたら元に戻すのが作法だと思います。
839名称未設定:2008/09/28(日) 00:16:59 ID:4kM6Mp/Q0
>>837
NSPagesAcrossってNSPrintPagesAcrossのこと?
後こういう定数は「@"NSPrintPagesAcross"」じゃなくてそのまま「NSPrintPagesAcross」でいいと思う。
840837:2008/09/28(日) 12:00:57 ID:UPVPAS6R0
>>839
アドバイスサンクスです。NSPagesAcrossとNSPrintPagesAcrossとの関係はつかめません。
NSPrintPagesAcrossにかえても,NSPrintInfoをダンプ(NSLog)は「NSPagesAcross = 2;」になってます。
しかも,期待した結果を得られないし,,,
[printInfo setJobDisposition:NSPrintSaveJob];としても
runOperation中では,無視されているみたいです。
841名称未設定:2008/09/28(日) 12:39:44 ID:qIiqZsDr0
>>838
なるほど、言われてみればその通りです。

アドバイスありがとうございました。
842837:2008/09/29(月) 11:02:33 ID:El694lAQ0
NSLogで出力したとき,日本語がエスケープされる(\U5185みたいになる)のですが,
エスケープされない方法か,コピペで,変換してくれるようなサイトがあったら,
教えてください。ちなみにこれはUTF8?UTF16?
843名称未設定:2008/09/29(月) 12:49:55 ID:z/XCBa2L0
>>842
>ちなみにこれはUTF8?UTF16?

いわゆるNonLossyASCII。
844名称未設定:2008/09/29(月) 16:20:22 ID:gW8PSnBP0
>>842
>>NSLogで出力したとき
問題があった時は自分で原因を狭めてしまわず、どういうことをしたらそうなったのかちゃんと詳しく書くべき
NSLogは日本語表示してくれる
ArrayとかDictionaryのdescriptionだと言ってるように変換されて表示される
君はそれを言ってるんじゃないかな?
まずは質問の仕方から勉強しようね
845837:2008/09/29(月) 16:21:31 ID:El694lAQ0
ページ設定パネルで設定された結果(プリンタとか,用紙サイズ,方向など)を
チェックしたくて,
NSPageLayout *pageLayout = [NSPageLayout pageLayout];
runModalResult = [pageLayout runModal];
NSLog([NSString stringWithFormat: @"%@" ,[[[NSPrintInfo sharedPrintInfo] dictionary] description]]);
というのを差し込んでいるのですが,
ログには全然,パネルでの変更が反映されていません。
(デフォルトの設定がつらつらと出力されるだけ)
なんか勘違いしているみたいなのですが,その勘違いに気付けないので,よろしくお願いします。

846名称未設定:2008/09/29(月) 16:48:46 ID:FPqjXq0v0
だから、NSLogの第一引数に直接内容不明な文字列を指定するなっていったじゃん。

と、全然別の所に突っ込んでみた。
847名称未設定:2008/09/29(月) 17:04:44 ID:gW8PSnBP0
>>845
お前人の話し聞けよwww
そんでNSPageLayoutとかNSPrintInfoとか、
つかそもそもstringWithFormatとかdescriptionとかrunModalとか全部ドキュメント読んでこいよw
コード見てるとなんかどこじゃなくてたくさん勘違いしてるから
848名称未設定:2008/09/29(月) 18:04:53 ID:aNtcQVm00
NSLogの引数の中が全部デフォルトのものばかりかと。
変更された値を保持するオブジェクトを引数にいれないと。
849名称未設定:2008/09/30(火) 00:10:06 ID:AyM7tJ3A0
>>847
>どこじゃなくてたくさん勘違い

845はよーくドキュメントあたった方がいいぞ
850名称未設定:2008/09/30(火) 00:37:30 ID:ra4ctouo0
>>840
>>837のコードを参考に自分でもいろいろ試してみたんだけど、ダメだ。
カスタムのNSPrintInfo作って、それを使ってNSPrintOperationを動かしても全然一枚あたりのページ数が反映されない。
NSPrintOperationにパネル表示させて、一枚あたり2ページにしてやると正常に作動するのに、
その正常に作動したNSPrintInfoの内容と全く同じカスタムのNSPrintInfoを事前に指定してやると全然反映されない。
(多分>>837のコードは四苦八苦した後のものなんだろう。NSPrintOperation作った後に設定したりしてるから。
 自分はNSPrintOperation作る前にNSPrintInfoに設定したけど、結果は同じだった)

CocoaBuilderで似たような質問が出ていないか捜してみると、いくつかあった。
http://www.cocoabuilder.com/archive/message/cocoa/2007/11/16/193220
しかし困ったことに回答が付いたものはゼロだった。
誰か正解を教えてくれ。俺が困ってるわけじゃないけど。
851名称未設定:2008/09/30(火) 00:58:00 ID:jXZPfbh50
>>849
お前さんもどこがおかしいのか分からないのかい?
おかしいってか意味の無いことをしてるなって感じだけど
852名称未設定:2008/09/30(火) 01:45:32 ID:ra4ctouo0
>>845
まずNSLogだが、これはstringWithFormat:と同じで第一引数にフォーマット、次から挿入する引数になる。
それを直すとこうなる。
NSLog(@"%@" ,[[[NSPrintInfo sharedPrintInfo] dictionary] description]);

次に「%@」だが、これは引数に指定したオブジェクトのdescriptionが挿入される。NSStringのdescriptionは自分自身。
それを直すとこう。まあ動作は同じなんだけど。
NSLog(@"%@" ,[[NSPrintInfo sharedPrintInfo] dictionary]);

だが俺の理解だと、sharedPrintInfoはカスタムのNSPrintInfoを指定していないNSPageLayoutや他のNSPrintOperationとは
共有されているはずだ。それの変更が反映されていないというのは腑に落ちない。
ていうかそこが本質なんだから、>>846-849はそっちも答えてやってくれよ。
853名称未設定:2008/09/30(火) 02:02:03 ID:ra4ctouo0
>>852に追記。
NSLog([[NSPrintInfo sharedPrintInfo] dictionary]);
これをやってはいけない訳はつまり、descriptionが返したNSStringの中に「%@」やなんかがあったらどうなるか?ってこと。
質の悪いバグになる。
854名称未設定:2008/10/01(水) 00:24:05 ID:fZLF4RYJ0
ttp://ja.wikipedia.org/wiki/%E6%9B%B8%E5%BC%8F%E6%96%87%E5%AD%97%E5%88%97%E6%94%BB%E6%92%83
これって、セキュリティホールになるのか。
855名称未設定:2008/10/01(水) 07:44:49 ID:Au+Xh+xi0
>>852
>ていうかそこが本質なんだから、>>846-849はそっちも答えてやってくれよ。
「NSLogの第一引数に生文字突っ込むな」とか分かりやすいとこばっかレスが付くのはねえ(w

>>845
Leopard以降だとNSPrintInfoからCore Printing(低レベルの印刷レイヤ)まわりにアクセスできるので、
それ経由でやればよさげ。

[operation setShowPanels:NO];
PMPrintSettings settings = [[operation printInfo] PMPrintSettings];
PMPrintSettingsSetValue(settings, kPMLayoutNUpKey, [NSNumber numberWithBool:YES], false);
PMPrintSettingsSetValue(settings, kPMLayoutRowsKey, [NSNumber numberWithInt:2], false);
PMPrintSettingsSentValue(settings, kPMLayoutColumnsKey, [NSNumber numberWithInt:2], false);
[operation runOperation];

とか(2x2の場合)。
NSPagesAcross -> kPMLayoutColumnsKey、NSPagesDown -> kPMLayoutRowsKey という
対応があるようで、これらは元のコードのようにNSPrintInfoからもセット可能なのだが、
kPMLayoutNUpKeyは直接的な対応はないようなので、Core Printingでセットしてやる。
CUIでNSPrintInfoを使うとkPMLayoutNUpKeyがセットされず、それが問題らしい。
856名称未設定:2008/10/01(水) 13:40:46 ID:2vvkNhJP0
NSStringのrangeOfString:options:を使って、文字列の部分一致検索を処理してます。
アルファベットの大文字小文字、全角と半角、ひらがなとカタカナの違いを無視して一致させたいのですが、
ひらがなとカタカナを無視するオプションが見つかりません。
大文字小文字はNSCaseInsensitiveSearch、全角半角はNSWidthInsensitiveSearchが使えました。
どなたか、このあたりをご存知ないでしょうか?
857名称未設定:2008/10/01(水) 14:50:47 ID:Jxg6CwEI0
そんな日本語特有の処理が入ってるの?
858名称未設定:2008/10/01(水) 15:40:30 ID:QJCrV6zO0
印刷するアプリ作ったことない。w

>856
CoreDataの検索はひらがな、カタカナ無視してるから、
何らかの隠しオプションなりが有る可能性は有るけど。
enum CFStringCompareFlags {
kCFCompareCaseInsensitive = 1,
kCFCompareBackwards = 4,
kCFCompareAnchored = 8,
kCFCompareNonliteral = 16,
kCFCompareLocalized = 32,
kCFCompareNumerically = 64,
kCFCompareDiacriticInsensitive = 128,
kCFCompareWidthInsensitive = 256,
kCFCompareForcedOrdering = 512
};
CFのがそのまま通るかも。 kCFCompareLocalized ってのがあるけど使ったことない。
859名称未設定:2008/10/01(水) 17:39:48 ID:EWXwe1rT0
>>856
全く調べてないし、その気もないけど、そんな日本人に都合の良いっていうか日本人くらいしか使わないようなAPIがあるとは思えない。

自前で文字列をどっちかに変換して検索するとかしかないんじゃない?

860名称未設定:2008/10/01(水) 18:27:50 ID:2vvkNhJP0
>>856
ありがとうございます。
CFのオプションを試します。
ダメなら、CFの検索関数も試してみます。
861名称未設定:2008/10/01(水) 21:16:10 ID:2yWM9Tj30
AppleScriptは一部ヴァージョンでひらカタ無視するらしいけど、まあCocoaには関係ないか……。
862名称未設定:2008/10/01(水) 23:57:24 ID:YpUBWQie0
一部バージョンて
最新のAppleScript2.0のことでしょ
863名称未設定:2008/10/02(木) 08:58:20 ID:ZCB6ua8+0
iPhoneの連絡先も、かなを無視して絞り込むな。
やっぱ、CFあたりにあるんじゃないのか。
864名称未設定:2008/10/02(木) 09:24:10 ID:DEyPKUgT0
>>856
ttp://blogs.dion.ne.jp/fujidana/archives/4410801.html
NSPredicateだから、メールなどの絞り込み検索にはともかくテキストエディタなどの文字列検索だとしたらニーズに合うかは分からないけど。
865名称未設定:2008/10/02(木) 21:22:47 ID:6I84zxEw0
基本的な質問で恐縮ですが、
NSMutableDictionary *dict = [NSMutableDictionary dictionary];

NSMutableDictionary *dict = [[[NSMutableDictionary alloc] init] autorelease];
では、どう違うのでしょうか?

下の方が解放してくれていい感じがするのですが、
明確に使い分ける意図があれば教えて下さい。
866名称未設定:2008/10/02(木) 21:30:49 ID:/nxJVGj90
同じ
867名称未設定:2008/10/02(木) 22:10:36 ID:6I84zxEw0
そうですか、ありがとうございます。
これで迷わずにコードがかけます^^;
868名称未設定:2008/10/03(金) 08:29:27 ID:oZRcqq8c0
>>867
ドキュメントのどっかをよめばかいてあるけど、
メソッド名に init... , copy... があるやつは autorelease されてなくて、
メソッド名にそれらがないやつは autorelease されてる、
と「決まってます」。
自分でメソッド書くときもそれに従っとくと混乱がすくないです。
869名称未設定:2008/10/03(金) 11:02:40 ID:mGVGEXof0
>>868
>>423
init は出てこない。

まあ普通は alloc と init の組み合わせで使うから、関係なくないといえばそうだけど。
870名称未設定:2008/10/03(金) 16:51:46 ID:lnmhxgeU0
CABasicAnimationで画像を複数回移動するアニメーション部分をやっているのですが、
speed、durationなどの設定が同じならtoValueに設定した値までの移動距離が短くなるほど、
移動するスピードが遅くなります。(長くなると速くなる)

違った移動距離でも同じスピードで移動させたのですが、そのような設定は出来ますでしょうか?
毎回、speed、durationなどの値を入れ替えるしかないのでしょうか?


871名称未設定:2008/10/04(土) 14:48:53 ID:YvRU7BHV0
>>859
無いという確信がどこから来るのか不思議だが、見事にハズレ。APIはちゃんとある。
CFでもUnicode UtilitiesでもLocaleとoptionを正しく与えれば、ひらがなとカタカナを
同一視した比較ができる。この動作をするのはJapanese Localeの時だけだから、
System Preferences > International設定の影響を受けたくなければLocale明示が必要
872名称未設定:2008/10/05(日) 05:38:25 ID:uziPsw3m0
>>871
別に確信を持って言ってるようには感じないけど。


いい感じ通信だったかな日本語文字列検索のこと書いてたけどこのオプションを使ってるのかな?

勉強になりました。
873名称未設定:2008/10/06(月) 10:26:21 ID:JVQiKRWo0
>>871
kCFCompareLocalizedをオプションに入れて、
ロケールに日本語を入れれば良いという事ですか?
874名称未設定:2008/10/06(月) 22:13:17 ID:0Tq6ORkh0
>>873
CFStringCompareWithOptionsAndLocale()を使う場合はそう。
Leopard以前でLocale明示した比較をする場合はUnicode Utilitiesの
UCCompareText()を使う。
875名称未設定:2008/10/07(火) 01:33:37 ID:e/RkVFA40
すんません、古いOS持ってないので確認できないんだけど・・
例えばSDK10.4でビルドしたアプリって、OS10.3で起動したなら勝手にエラー出して終わるのかな?
それとも自分でチェックのコードを書かなきゃいけない?
876名称未設定:2008/10/07(火) 01:36:38 ID:QWJWi9xM0
>>875
デプロイメントターゲットも10.4にしておけば起動しない。
俺は10.3にも対応してるアプリを書いてるが、SDKは10.4でユニバーサルバイナリ、デプロイメントターゲットは10.3。
877875:2008/10/07(火) 01:40:17 ID:e/RkVFA40
>>876
了解です、ありがとう。
878名称未設定:2008/10/07(火) 10:06:27 ID:h1HNxZeI0
>>874
ありがとうございます。
879名称未設定:2008/10/08(水) 17:22:36 ID:HG8PgwVu0
CocoaでSOAP通信しようとした時に、まず何から手をつければ(何から読めば)いいんでしょうか…
880名称未設定:2008/10/08(水) 18:48:52 ID:ttuSaGVV0
881名称未設定:2008/10/08(水) 18:55:02 ID:HG8PgwVu0
ふんふん、やっぱそれが一番いいですか!
ありがとうございます!!
882名称未設定:2008/10/08(水) 19:23:55 ID:4ZTxCEDH0
ローカライズ作業をしていたところ突如Xcodeが強制終了して
立ち上げ直したのですがなぜかローカライズがまったく反映されなくなってしまい
前日まで作業していた分も全てローカライズがはずれてしまいました。
Localizable.stringファイルを削除し新規に作り直したのですが、まったく反映されません。
試しに新規プロジェクトでローカライズしてみたところ、ちゃんと反映されました。
強制終了した際にプロジェクトファイルが壊れてしまったのでしょうか?
どこかXcode側で設定しなおしてみる項目などはありますか?
883名称未設定:2008/10/09(木) 00:31:21 ID:mF789dp10
一番初めのObjective-Cプログラム - @IT
http://www.atmarkit.co.jp/fcoding/articles/objc/02/objc02a.html
884882:2008/10/09(木) 05:14:32 ID:qeuBkKCx0
Xcodeが強制終了したので先入観でファイルが破壊されたのかと疑っていたのですが、
結局、事前に一度にたくさん編集していたLocalizable.stringファイル内でセミコロンが抜けていただけでした。
失礼致しました。
885名称未設定
Cocoa-Dev-Japan (GoogleML) が… ちょっお前、binding の前に KVC が…
とにかくHMDT本か荻原本読めよ、って感じになってる ヽ(#`Д´)ノ