2013年01月新・mac64: Cocoaはさっぱり!!! version.16 (790) TOP カテ一覧 スレ一覧 2ch元 削除依頼
みすらわるものそしきにゃーのつめMac支部 (623)
Mac OS X 10.6 Snow Leopard Part 39 (960)
誰か、いらなくなったMacを下さい【7台目】 (811)
Parallelsで様々なOSをうごかそう Part33 (418)
iPadもiPhoneもMacBookProも持ってる金持ち来い! (294)
みすらわるものそしきにゃーのつめMac支部 (623)

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


1 :2011/06/04 〜 最終レス :2013/01/16
■関連スレ
Macでプログラミング{10}
http://hibari.2ch.net/test/read.cgi/mac/1248682344/
Mac OS XをUnixとして使ってる人の為のスレ 16
http://hibari.2ch.net/test/read.cgi/mac/1302132772/
Xcode part8
http://hibari.2ch.net/test/read.cgi/mac/1265669504/
MacでJava その4
http://hibari.2ch.net/test/read.cgi/mac/1214284891/
AppleScript アップルスクリプト 質問、発表 4
http://hibari.2ch.net/test/read.cgi/mac/1256127156/
[SDK]iPhoneアプリ開発初心者質問箱15[touch][iPad]
http://hibari.2ch.net/test/read.cgi/mac/1305798708/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
【マック】Macintoshプログラミング質問箱
http://hibari.2ch.net/test/read.cgi/tech/1113058054/
【Cocoa】Macプログラマのスレ【Objective-C】
http://hibari.2ch.net/test/read.cgi/prog/1214208397/
■前スレ
Cocoaはさっぱり!!! version.15
http://hibari.2ch.net/test/read.cgi/mac/1277992217/

2 :
■過去スレ
01 http://pc11.2ch.net/test/read.cgi/mac/1007632025/
02 http://pc11.2ch.net/test/read.cgi/mac/1036923528/
03 http://pc5.2ch.net/test/read.cgi/mac/1063295248/
04 http://pc11.2ch.net/test/read.cgi/mac/1091927026/
05 http://pc11.2ch.net/test/read.cgi/mac/1124986925/
06 http://pc11.2ch.net/test/read.cgi/mac/1146391229/
07 http://pc11.2ch.net/test/read.cgi/mac/1161486802/
08 http://pc11.2ch.net/test/read.cgi/mac/1179498292/
09 http://pc11.2ch.net/test/read.cgi/mac/1201106820/
10 http://pc11.2ch.net/test/read.cgi/mac/1211290055/
11 http://pc11.2ch.net/test/read.cgi/mac/1224960170/
12 http://pc11.2ch.net/test/read.cgi/mac/1231853172/
13 http://pc11.2ch.net/test/read.cgi/mac/1241407525/
14 http://pc11.2ch.net/test/read.cgi/mac/1258249232/

3 :
■Web
Cocoa wiki
http://cocoawiki.aerial.st/index.php?FrontPage
Apple Developer
http://developer.apple.com/jp/
Cocoa Dev Central
http://cocoadevcentral.com/
CocoaDev
http://cocoadev.com/
Cocoa Blogs
http://cocoablogs.com/
Cocoaはやっぱり!
http://sitearo.com/
HMDT
http://hmdt.jp/
OOMORI.com - Cocoaリファレンス
http://www.oomori.com/cocoafw/
Cocoa Study Blog
http://blog.cocoa-study.com/
Cocoa Break!
http://park15.wakwak.com/~concordia/cocoa_break/
Cocoa Bindings Examples and Hints
http://homepage.mac.com/mmalc/CocoaExamples/controllers.html
Cocoaで遊ぼう!!
http://homepage.mac.com/t_yamane/prog/index.html
itok's Lab
http://110k.net/
Vacuous Virtuoso
http://lipidity.com/
MOSA テクニカルドキュメント
http://www.mosa.gr.jp/?page_id=19

4 :
■書籍
【Objective-C】
詳解 Objective-C 2.0改訂版「荻原本」(ソフトバンククリエイティブ 10/12)荻原剛志
Dynamic Objective-C「ダイナミック本」(BNN新社 09/3)木下誠
【Cocoa全般】
HappyMacintoshDevelopinTime 2nd Edition「黒本」(BNN新社 04/6)木下誠
HappyMacintoshDevlopingTime 3rd Edition「赤本」(BNN新社 06/5)木下誠
たのしいCocoaプログラミング「たのここ」(BNN新社 08/8)木下誠
CocoaではじめようMac/ iPhoneプログラミング入門(秀和システム 09/3)中野洋一
Mac OS X Cocoaプログラミング第3版「ヒレガス本」(ピアソンエデュケーション 09/11)アーロン・ヒレガス
【iPhone】
iPhone デベロッパーズ クックブック「エリカ本」(ソフトバンククリエイティブ 09/2)エリカ・サドゥン
iPhoneアプリケーションプログラミング(技術評論社 09/6)新居雅行
iPhone SDK アプリケーション開発ガイド(オライリージャパン 09/9)Jonathan Zdziarski
iPhone SDK 3 プログラミング大全(アスキー・メディアワークス 09/9)木下誠
基礎からのiPhone SDK 改訂版(ソフトバンククリエイティブ 09/10)鶴薗謙吾
ほか山ほど

5 :
ココアはやっぱり森永

6 :
スレチはチラシの裏にでも書いてろ。

7 :
Cocoa bindigsについてよくわからない事があるんだけど、
IBを使ってbindを設定するときのbind相手が何を繋ぐべきかってのを知る方法ってあるんでしょうか?
例えば、NSColorWellのvalueにはNSColorをbindする。でもここにbindするのは何かってのは
IB上などからは解らないので知ってるものならいいけどそうでないのは結構難儀するんですが。

8 :
ツールチップにも出た気がするが、ドキュメントにあったような。
ここに全部のってるかな?
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CocoaBindingsRef/CocoaBindingsRef.html

9 :
id <NSMenuItem> menuItem;
menuItem = [[[NSMenuItem alloc] initWithTitle:@"Click Me" action:nil keyEquivalent:@""] autorelease];

NSMenuItem *menuItem = [[[NSMenuItem alloc] initWithTitle:@"Click Me" action:nil keyEquivalent:@""] autorelease];
の違いを教えてください

10 :
上の書き方はidが NSMneuItem プロトコルに適合したものなら何でも受け入れると宣言してある。
NSMenuItemプロトコルはLeopardで廃止になったので今は原則下の書き方をする事になる。

11 :
>>9
昔はNSMenuItemというプロトコルに適合したオブジェクト(クラスは何でもいいけど、ほとんどの場合NSMenuItemクラス)
をメニュー項目として使っていたんだけど、今はNSMenuItemというクラス(かサブクラス)のインスタンスを使う
つまり上は古い書き方。ずいぶん前に非推奨になったはず

12 :
わかりやすい回答、大変ありがとうございます。
と言う訳で、大量修正の発生です(笑)
LIONでも耐えてくれるかなあ。

13 :
どんだけ古いコード

14 :
既に書いてあるコードのメンテナンスなら別に動かなくなったりはしないので
時間との兼ね合いで考えるのがいいんじゃない?

15 :
s/id¥s*<NSMenuItem>¥s*/NSMenuItem */
でいいやん

16 :
RubyCocoaとかPythonとcocoaのスレってないの?

17 :
余りの過疎さに消えていったな

18 :
まあここでいいんじゃないの?Cocoaだし

19 :
わざわざrubyとかで苦労するくらいなら、最初からobj-c選ぶよ

20 :
>>最初からobj-c選ぶよ
まったく新規で始めるやつがRubyCocoaかObjective-Cで迷うわけないだろJK

21 :
ハイパーカードでおk

22 :
OCはつぶしが効かなさすぎるし、なんかR言語って感じで嫌い。

23 :
あほくさ。
だったら、C#でも使ってろよ。

24 :
そこはJava()だろ

25 :
ARCすげー。Automatic Reference Counting。retain/releaseさようなら。

26 :
Is GC (Garbage Collection) deprecated on the Mac?
GC remains an option for development in Mac OS X v10.7.
You are strongly encouraged to consider ARC for new
development. For existing codebases (both manual
reference counting and GC), you are encouraged to
“test the waters.” This is, however, a non-zero amount
of work and you should weigh that effort with your other
priorities.
要は、GCは要らない子だってことじゃん。なんだかなぁ。

27 :
>GCは要らない子
周知の事実

28 :
さよなrelease

29 :
autorelease最強

30 :
http://developer.apple.com/jp/technologies/ios5/
...新しいApple LLVMコンパイラでARCを有効にすると、retainまたはreleaseを再度タイプする必要がなくなり、...
再度タイプってことは一度は打つのか?よくわからんな。

31 :
http://developer.apple.com/technologies/ios5/
...you will never need to type retain or release again,...
もうタイプすることは無いだろうってことかな?英文見てもわからん。

32 :
そりゃ、二度とタイプする必要がなくなるってことだ。
つまり、コードからratainとreleaseが消えると。

33 :
でもやろうと思えば ARC の裏をかけるだろう。

34 :
コンパイラサポートって事だから静的解析の先にあるものかと思ったんだけど違うのか?

35 :
昔ながらのポインタの配列のキューとかでもちゃんと動くのかな?
昔ながらのポインタの配列のキューの場合、
Rュするときに以前の値を上書きするだけでポップ時には配列に何もしないからね

36 :
StoryBoardも、Dashcodeより簡単かも。
相当イッテマスネ。

37 :
>>29
autoreleaseもさようなら。

38 :
>>33
コンパイル通らない。
バイナリはiOS4/10.6でもOK!!
>>36
StoryboardはSegueのエディタだよ。
ViewControllerのナビゲーションを抽象化する。
Dashcodeとは全然違う。

39 :
64bitの.prefPaneはGC必須だった気がするが

40 :
Storyboardってフレームワークが増えたのかと思ってた。アプリケーションが増えたの?自分でdev見ろって話だが。

41 :
>>40
Class。設定はXcodeのIBもどき。

42 :
全然違うのか、IBでInterfaceのモックアップだけなら大分作れそうなところとか、良さそうだけどね。

43 :
画面1 → 画面2 →……
ができるっぽい
nibはたぶん消滅

44 :
あ、無くなりはしないか
覚えることたくさんあって大変ね

45 :
まだ開発中なのだから何があってもおかしくないんだが、
ARC 有効にした時の fast enumeration の挙動が変だね。
for (id obj in [NSArray arrayWithObjects: @"one", @"two", @"five", nil]) {
^{ assert(obj != nil); }();
}
block の中で obj が nil になっちゃうよ。

46 :
位置情報のシミュレータでの動きは面白そうだけど、どうもUsetLocation の取得が出来る時とできない時があるみたい。
まだ、不完全なのかな?

47 :
表示はされてるのに 青丸 、
ゲット出来ない

48 :
ファイルカットプロ。Cocoaで作り直しているな。プラグインのフレームワークをみたらObjective-C
になっている。


49 :
発表の時Cocoaベースで作り直したって言ってたじゃん

50 :
>>47 ウチでも同じ。まだ、不完全かな。
Placemark が色々かわって、 geocording は MapKit でなくて CoreLocation でいけるよみたいな?

51 :
Cocoaネイティブなゲームを作りたいのですが、ゲームパッド関連のAPIってありますか?

52 :
たしか、ForceFeedbackフレームワークだっけ?
http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/HID/intro/intro.html

53 :
>>48 >>49
cocoaで作り直したはいいけど、機能削除、劣化で大不評みたいだね。

54 :
間に合わなかったんだろ
プレミアに負けたくない一心で早とちったな

55 :
iMovieでも9でタイムライン外して、時間やフレーム単位での映像と音の合わせが
出来なくなったし、おかしな方向に行ってるのは確かだよ。

56 :
http://taisyo.seesaa.net/article/212337517.html
うわあなんかメソッドの命名が素人臭くない?(笑)

57 :
>>56
確かにw
参考までにお前のヘッダーファイルを晒してみてくれよw

58 :
ていうか、よく見たら引数の型が全部idで引数名がarg1って。
これで本当にいいのか?

59 :
>>56-58
class-dumpの出力に何を高望みしてるのかな?

60 :
釣りの邪魔をしないでくれ

61 :
あーそうなんだ。それは知らなかった。
クラスダンプとかしたことなかったもんで(笑)
やっぱり俺は素人なんだなあ。

62 :
class-dumpさんを馬鹿にするのはやめろ

63 :
質問です。
NSCalendarDateが10.6でdeprecatedなのですが、class referenceに代替クラスの記述がありません。
下記のコードを対応させたいのですが、どのように変更すればいいのでしょうか?
よろしくお願いします。(これとこれを使え、みたいな)
//
// "Sat, 24 Oct 2009 14:20:33 +0900" -> "2009/10/24 14:20" に変換する
//
NSString *dateString = @"Sat, 24 Oct 2009 14:20:33 +0900";
NSCalendarDate *calDate = [NSCalendarDate dateWithString:dateString calendarFormat:@"%a, %d %b %Y %H:%M:%S %Z"];
NSString *newDateString = [calDate descriptionWithCalendarFormat:@"%Y/%m/%d %H:%M"];
NSLog(@"newDateString=%@", newDateString);

64 :
>>63
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendars.html

65 :
NSString *dateString = @"Sat, 24 Oct 2009 14:20:33 +0900";
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss zzzz"];
NSLog(@"Date : %@", [inputFormatter dateFromString:dateString]);
[inputFormatter release];
Localeをちゃんと設定した方が安心かもしれない。NSDateになった後は好きに料理してくれ。

66 :
hdmi取り込みで映像加工とかだとまだココアだけじゃ無理過ぎるな。
h264ファイル直接取り込みもクイックタイムがサポートしてないし。
本格的なアプリ作ろうとするとココアだけじゃ完結しない。
なんかジャバアプリで作ってますって言いつつ裏でジェーエヌアイでごにょごにょしてるようなごまかしを感じるよな。
全部ココアで出来る日はいつなんだろう。

67 :
必要に応じてライブラリ読み込めばいいじゃない。

68 :
>>66
http://developer.apple.com/library/ios/#DOCUMENTATION/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188
これがほぼそのままMac対応になるので、そうなったら希望のことは出来るようになるはず。
まあ、「本格的」がどのぐらいを指すかはしらないけど、FCPXはこれを先行して使ってきているはずで、
バッシングも受けているが一応完結している。。

69 :
>>68
Lionでね

70 :
http://hissi.org/read.php/mac/20110701/QmRGWTRCMy8w.html

71 :
GMc!

72 :
>>70
この人、本当にマク持っているのかな?妄想だけじゃ。

73 :
妄想じゃなくてネガキャン
いわゆる自宅ステルスマーケッター

74 :
なるほど、基地外か。

75 :
>>64 >>65
参考になりました。ありがとうございます。
しかし、面倒くさくなりましたね。

76 :
NSDateのあれは、いい加減なんとかしてほしいと思う。

77 :
何でNSCalendarDateをdeprecatedにしたのかわからんね。
おかげで面倒くさい。
俺はNSDate, NSCalendar, NSDateCompnentsの合わせ技を使ってる。
確かリファレンスに出ていたと思うけど

78 :
releaseについて質問なのですが、下記のコードの場合
imageのreleaseはどこですれば良いのでしょうか?
(コードはちょっと適当です)
- (NSImage*)imageFromFile:(NSString*)filePath
{
// NSImage *image = [[[NSImage alloc] initByReferencingFile:filePath] autorelease];
NSImage *image = [[NSImage alloc] initByReferencingFile:filePath];
return image;
}

79 :
returnする時に、autoreleaseしたものを返す。
後は、呼び出し元が管理すれば良い。

80 :
>>77
もともとNSDateのサブクラスでCalendar計算とCalendar文字列の扱いという複数の機能を
一緒に持っていたけど、一方はLocaleに非常に影響されている上、ISOカレンダーとの互換の
問題もあったので、
NSCalendarDate.h に書いてある通りそれらの機能をNSCalendarとNSDateFormatterに分けた
分けたら当然重複機能を矛盾なくメンテナンスするのは面倒なのでdeprecated。
現状のものと現状で互換があるものを作るのはそんなに大変じゃないので
必要だと思えば自分で作ってメンテすれば良い。

81 :
HID Utilitiesの使い方がさっぱりわからない
日本語ドキュメントどこかにないでしょうか?

82 :
頑張って英語読め。

83 :
Queueとかは解らんけど、値とるだけならこんな感じかな?
IOHID***GetTypeIDとか省略してるんで、TN2187とかみて適宜いれてくれ。
間違ってるところはツッコミよろしく。
http://paste.bradleygill.com/index.php?paste_id=301204
さっぱり解らんだけでは、
何がしたいのか解らんからこっちが回答できるレベルの質問かどうかも解らん。

84 :
他人の気持ちがさっぱりわからない
何語でもいいからドキュメント欲しいわ

85 :
流石に英語ならあるだろ。

86 :
>>80
「ISOカレンダーとの互換の問題」とは具体的にはどういうことでしょうか。

87 :
deprecatedはいいんだけど、それが本当に使えなくなるのは
いつなのかわかる資料はありますか?
ここらへんは実はグダグダ?

88 :
ないよ。宣言されてるんだから、突然廃止されても文句は言えない。
宣言されたOSの二世代くらい後と見ておけばいいんじゃないか。

89 :
>>86
ISO 8601 読め

90 :
俺的には1世代後かな。deprecatedになって即使えないってのもたまにあるし近年スパンが短い気がする。

91 :
10.5で大量に出たdeprecatedが10.7で使えなくなると、
大量に爆死するアプリが出るんじゃないかな。

92 :
64bitでバッサリはたくさんあるぞ。

93 :
一番欲しいのは、OSヴァージョンとdeprecatedのAPIが掲載された一覧なんだけど、なんでないんだろ?
いつもリファレンスライブラリで調べたいAPIの所で偶然見つけるしか方法が無いのかな?
そんなわけ無いと思うんだけど、いくらぐぐっても一覧らしきものが出でこない。
みんなどうやって調べてるの?

94 :
一番簡単なのはSDKを切り替えてビルドする
古いSDK取って置かないとダメだけどね
xcodebuild で -sdk 使えば早そうなきがする

95 :
>>93
ヘッダにも出てる。

96 :
根本的にXcodeは常に最新にしないとだめですか10.5でXcode3.xとかだめですかそうですか。

97 :
対応OS次第

98 :
grep -R --include='*.h' DEPRECATED /path/to/SDK | ほむほむ
とかやれば一覧表作れそうだけど?

99 :
>>93
> いつもリファレンスライブラリで調べたいAPIの所で偶然見つけるしか方法が無いのかな?
俺としては、それで不都合ないのだが。
仮に一覧があったとして、それをどう活用する?

100 :
え?
自分のプロジェクトでdeprecatedなメソッドがないか調べるんですよ。

101 :
警告出るでしょ?

102 :
ビルドしたら、deprecatedなメソッドはワーニングになるよね?
Xcode4なら、テキストエディタに書いた瞬間にワーニング表示されるよね?
ビルド設定の「Warn About Deprecated Functions」は、デフォルトで有効だよね?

103 :
>>101 >>102
>>96

104 :
「新しいMacを買えない貧乏人はアプリを作らなくて結構」
ジョブズ様はそう仰っています。

105 :
10.6も用意せずに10.6対応のアプリを作ろうとしてるのか。

106 :
あれ?
deprecated警告ってgcc4.0ぐらいでも実装されてたよね?
Xcodeだけじゃなく、gccのバージョンも古い?
まさか、deprecatedになっていない古いSDKを選択してないよね?

107 :
>>103
ほとんどの場合、deprecatedになると同時に代替メソッドが追加されるから、
古いSDKでは新しいSDKのdeprecatedは回避出来ない。

108 :
みんな最新OSに最新開発環境なんだ、いいなあ。
これからもずっとそうなんだ、凄いなあ。
自分の環境環境より上のバージョンで何が非推奨になるかなんて
知る必要もないんだ、羨ましいなあ。

109 :
そういう古い開発環境を使ってる割には知りたがりの人のために
>OSヴァージョンとdeprecatedのAPIが掲載された一覧
をPDFにして売ったらそこそこ売れるかも、毎コミさん出番ですよ

110 :
>>108
バイトでもして新しいMac買え

111 :
>>108
そんなに最新情報が欲しいなら最新SDKだけインストールすれば良いじゃん
何甘えてるの?

112 :
>>107
でも「deprecated」である限りは、「まだ使えてる」よね。次はなくなる覚悟して作る必要があるだけで。
つまり、これが出てるときのバージョンで回避すれば両方対応のものが作れる。

113 :
凄いねこりゃ「最新以外は悪」か。別にいいけどさ。
こりゃMacのアプリが増えていかないのもわかるよ。
(変わりに少し前のがどんどん動かないまま放置されていく)
iOSも5になってそろそろ古い環境の人も出てくると思うけど大変だね。
一覧化されたドキュメントが無いことがわかっただけでもありがたい。
それでは、ありがと。

114 :
何言ってんだこいつ。

115 :
たまに自分の作ったアプリを「deprecated」したくなるときね?

116 :
>>108
最新のと古いの両方環境用意しておくに決まってるだろ。甘えたこと言うならコード書くの辞めちまえ。
>>凄いねこりゃ「最新以外は悪」か。別にいいけどさ。
この思考回路はガキかキチガイ

117 :
>>114
よくわからんね
分かっても回避出来ないって教えても変な返答来るし、
調べ方教えても試す気どころか、聞く気もないし
「最新以外は悪」じゃなくて「怠惰は悪」だよね

118 :
deprecatedなメソッドの中でも呼ぶとコンソールに警告出るようなのが
いち早く消えるのではと勝手に判断しているけどどうなんだろう。
自分は旧OSとの互換性維持のために、カテゴリで共通のメソッドを作って
内部ではrespondsToSelectorで調べてから新メソッドと旧メソッドを呼び分けるようにしている。

119 :
>>117
「怠惰が悪」とまでは言わないが、一人で勝手に悩んでいれば良いと思う。

120 :
ただねぇ。開発はいいんだけど、ユーザーが脱落していくのがね…

121 :
もうほとんどが10.6に移行してるんだから、10.5とかは切ればいいっしょ。
少なくとも10.4はもういいだろ。
http://heylennon.posterous.com/-mac68os-snow-leopard24leopard

122 :
OSバージョンがどうのよりも
PowerPCを切るかどうか悩むなあと対外的には発言しつつ
実際にはIntelビルドしか用意しない俺が来ましたよ
(PPCユーザにはソース公開してますから自力で...と)

123 :
何このブロパガンダ
キモチワルイ

124 :
プロパガンダって言いたいだけだろ?

125 :
プロパ・ガンダム、出るぞ!

126 :
ここまでのまとめ
・OS(SDK)バージョンとdeprecatedになったクラス/メソッドが一覧化されたドキュメントは存在しない。
・自分の開発環境より上のバージョンでdeprecatedになったクラス/メソッドを知るには、一つ一つ調べるしかない。
・Macのアプリ開発者たるもの常に最新OSにすべき、また古い環境もそろえるべき、甘えんな。
ここは魁!Cocoa塾かよ(笑)

127 :
>>126
おい!
>>115が入ってねえぞ

128 :
>>126
だから SDKだけ最新にしろって言ってるだろ
お前馬鹿か?

129 :
>>126
男塾ネタはそろそろdeprecated。

130 :
>>127-129で、
一人だけ必死な奴がまだいるな(笑)

131 :
API diffにdeprecatedは出てるよ。
新しいSDKでワーニング吐かせるのが正解だとおむけそ。

132 :
基本的にdeprecatedなコードを使わない限り、古いOSバージョンで開発したアプリも
新しいOSバージョンで動く。(この前提が崩れたら大変だけど)
すなわち、deprecatedなコードを常に把握できれば、新しいバージョンのOSに対応する
アプリの修正も可能であるし、その都度、何がdeprecatedなのかをリファレンスか
ヘッダファイルをしらみ潰しに探さなければならない開発者の負担も軽減する。

133 :
最近こういうのがあるらしいよ
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/DeprecationAppendix/AppendixADeprecatedAPI.html

134 :
今後、ムービーの再生処理は、NSMovieやQTMovieは非推奨になるの?
deprecateが大量にあるんだけど、代替処理がなくてしかたなくそのまま使ってる。
それどころか64bit環境にも高速に動作する同等の処理がないから、ムービーを細かく制御するソフトが
32bitから身動き取れないんだけど、みんな困ってない?
動画制御なんてやってる物好きが少ないのか…

135 :
たまに話題になってるから、困ってる奴はいるんだろう。

136 :
基本的に通称「QuickTime7系」は無くなると考えておくべきだろう。
コアの開発者(Peterはkinomaばっかりやってるのかな?)が抜けてからQuickTimeは迷走を続けてるからな。
ここら(AVFoundation)で一区切りつけたいんじゃない?


137 :
>>132
> 基本的にdeprecatedなコードを使わない限り、古いOSバージョンで開発したアプリも
> 新しいOSバージョンで動く。
その前提、なんか変じゃない?
古いOSでdeprecatedではないコードが、新しいOSでdeprecatedなコードになるわけだから。
あえて言うなら、
「古いOSでdeprecatedなコードを使っておらず、新しいOSでも運良くdeprecatedにならなければ、
古いOSバージョンで開発したアプリも新しいOSバージョンで動く。」
ということだろう。

138 :
もしかして、新しいOSでdeprecatedではないAPIが、古いOSには存在してない、という可能性を失念しているのか?

139 :
まあ、deprecatedなうちはまだ「ある」んだがね。

140 :
>>139
ん?
「新しいOSでdeprecatedでは無いAPI」というのは、
古いOSのときからdeprecatedではなかったか、
または、新しいOSで新設された、という意味なのだが?

141 :
>>140
>>137
>新しいOSでも運良くdeprecatedにならなければ、
がおかしい。「新しいOSで運悪くdeprecatedになっても動く」
なんで古いOSで動く物が前提なのに新設APIの話が出てくるのやら。

142 :
1. Deprecatedを宣言
2. Headerから落ちてビルド不可
3. Libraryから落ちて実行不可
大抵メジャーアップデートで一つづつ。

143 :
ヘッダから消えても警告増えるだけじゃないの。

144 :
>>142
SetCurrentA5()とか凄いのもまだ残ってるぞw
ちなみにA5ってMC68000のA5レジスタのこと

145 :
英語ワールドとも呼ばれていたなぁ。システムだったかToolboxのポインタが
格納されてるんだっけ?
Classic環境が消された時点で用済みだけど、何で残っているのか疑問。

146 :
>>145
low-memory Globalのポインタが入っているんだが、
こんな事を言う奴が将来に向かって互換性のないアプリケーションを作るんだろうな。

147 :
いきなり殺伐とし始めたな

148 :
例えば10.5でアプリを開発してる人が今度の10.7で動くか確認したい場合、
deprecatedなAPIの一覧がない場合にどうすればいいんですかね?
自分のソースコードからメソッドを一つ一つリファレンスベージを見て探すなんて
ナンセンスだし。
容易に調べる方法がないんですよね?

149 :
Beige

150 :
>>148
動作確認を怠る開発者がナンセンスだろ。
未確認なら対応OSを10.5までと書いておけ。

151 :
>>148
あのね、現実には実際に10.7で動作確認するんだから。
そんな一覧で調べて動くなんていうつもり?

152 :
で、Lionは来週出るのかい。出ないのかい。どっちなんだい。

153 :
>>151
動いても実際には非推奨だったりするでしょ

154 :
>>153
10.7でビルドすれば警告出るだろ。

155 :
それにしても、なぜこの人は「ビルドすれば警告出る」という話を無視し続けるのだろうか?

156 :
ループが好きなんだろ。

157 :
>>148
http://developer.apple.com/jp/documentation/DeveloperTools/Conceptual/cross_development/Using/chapter_3_section_6.html
ループしたいのだろうけど、このページにもあるようにdeprecatedな関数は無くなってはいないからな。

158 :
公式から情報探せないようなやつに構う必要無し
そもそも探す気がないからここで煽って聞いてるんだろうが

159 :
やっぱり「最新にしろ」と言うのが大前提なんですね。
そこから話は進まないというか、それ以外のケースは質問すらするなというか。
なんだろう、この排他的な感じは。

160 :
ちょっと聞いときたいんだが、
X codeを4.0.2にできない理由って何なんすか?

161 :
ダメだこれ、俺はもう匙を投げるよ。時間の無駄

162 :
誰もやらない奇特な行為をやろうとして、そのくせ
「非効率でナンセンス」ですね。
ときたものだwww
これがゆとり世代ってやつか。

163 :
>>159
別に最新にしなくても開発はできるよ。ただ、最新のやつと同じ事が出来ると思うな。
お前の主張はPhotoshop1.0を使ってるやつが「レイヤー使えないなんて排他的だ」と言うのと同じ。

164 :
一応ここのスレは突き放さない方向性だし、
それを踏まえて、十分親切に答えてたよね。
それで排他的とかなんて恐ろしい子(文字通りの意味で)

165 :
>>159
自分の都合通りに物事が進まないと、
何でも排他的になっちゃうのかw

166 :
10.8でなにがdeprecatedになるか解らないのに10.7のSDKでそれを調べる方法がありますか?
って質問に近いな。

167 :
そもそもdeprecatedなAPIを使ってるかどうか以前に
当該OSで動作確認しないと話にならん

168 :
「最新にしろ」「動作環境を複数持つのは当たり前」を連呼するだけで
他の意見は受け入れない、それを排他的と言うんですよ。
まあ、1人の人間がやたら噛み付いているだけですけどね。

169 :
>>168
Xcode3の10.4SDKを残したまま、Xcode4の107.SDKも入れられるんだから、
面倒くさがってるとしか思えない。古いOSしか動かないマシンだと言うなら、
最新のOSに対応するソフト開発する事自体が無理でしょ。

170 :
>>168
ごめん、他の意見て何?w

171 :
どもども、いろいろ機能を追加したMacVideoDL v2.0をリリースしました。
http://macapps.web.infoseek.co.jp/macvideodl/
- 対応サイトのアイコン表示を追加
- 動画情報ウィンドウを追加
- サイトのリソース一覧を追加
お試し下さい。
>>172
タブ表示って(私にとって)かなり難易度高いんですよね(笑)
これが実装出来たらほとんど新しいブラウザが完成なんですけど。
>>173
Craving Explorerはすごいですね。再生ページをロードせずに動画ファイルのURLを探すのはすごいです。
一応、SafariのブックマークをMacVideoDLのブックマークにドロップすれば登録出来ます。
フォルダ丸ごとは無理ですけど。


172 :
すみません。誤爆しました(笑)
マカエレ頼みますよ(笑)

173 :
>>170
俺も同じ事おもた

174 :
>>168
最新にする必要はない。が俺は匙を投げたので言えるのはここまでだ。排他的な思考のまませいぜい頑張れ。

175 :
敗者的思考ですね、わかります

176 :
何と戦っているのかな?

177 :
七人の敵と。

178 :
>>168
MacOSX10.5でMacOSX10.6対応のアプリを作ろうとしているのか?
もっと具体的な話をしてもらわないと、話はこじれる一方だ

179 :
intelMacが無い、または英語版Xcodeが使えない。
あるいは、PowerPC版を作る必要がある。
どれかでしょ。

180 :
そもそもMacを持っていない。

181 :
10.7をスルーする理由は
Hackintoshであるじゃねw

182 :
base SDK のバージョンをあげたら NSDeviceBlackColorSpace が deprecated だという警告が出るようになったんですが
この定数は何に置き換えたらいいんでしょうか?ドキュメントやヘッダーファイル見ても代替の指定が出てませんでした。

183 :
DeviceWhiteにして1.0から引けばいいじゃない

184 :
Lionでの動作確認、みんなもうやった?

185 :
Xcode4.1が無料に戻ってますね。
あの600円って、いったい何だったんだ。。。

186 :
有料ベータテスト

187 :
FaceTimeと同じで会計上の何やかやがあるんだろ

188 :
まあ600円でとやかくいうな。
開発環境として思えば、ただも同然だ。

189 :
>>184
実はみんなアプリなんて作ってないから。
というのは冗談半分で、俺のは問題なかったよ。

190 :
>>184
俺の10.4用のソフトは半死した;;
10.6までは正常に動いていたんだけどね

191 :
自作2本は問題なかった。

192 :
NSCalendarDateを使ってるうちのも動いてる。
とはいえ、そろそろ改修するか……。

193 :
>>190
それってクラッシュ? それとも単に挙動がおかしい?
実はPowerPCバイナリだとかw

194 :
>>193
AUGraphでMusicシンセを使っているんだが、音を鳴らそうとした瞬間にクラッシュします。
AUGraphを構築するためのAPIがDeprecatedになっている辺りが原因かと。

195 :
>>185
サーベンス・オクスリー法

196 :
さよならNSCell

197 :
IDがCocoaかと思ったら違った

198 :
NSDocumentにカテゴリーを使って内部のインスタンス変数を書き換えてたのが
ダメになった。落ちることはないが、アラートが出まくりで大変。
ま、俺が悪いんだけどね。ただ、欲しいAPIがないので他の手が使えない。

199 :
その「内部のインスタンス変数を書き換え」って何?
setterとは違うもの?

200 :
setterなんだが、そのsetterが用意されてないというか公開されてない
のでカテゴリーで処理した。自己責任だから仕方がない。

201 :
@implementation NSDocument (hoge)
- (void)setMyWindow1:(id)win {
_window = win;
}
- (void)setMyWindow2:(id)win {
[self setValue:win forKey:@"_window"];
}
- (void)setMyWindow3:(id)win {
object_setInstanceVariable(self, "_window", win);
}
@end
とりあえず、2番と3番は10.7(64bit)ではエラーもアラートも出なかったよ。
1番は10.7(32bit)ならエラー出なかった。
まあ、それ以前にプライベートな部分を使わなくても良いように、設計を見直した方がいいと思うけど。

202 :
>>201
トンクス。
書いたのは1だけど、key value codingの方が安全なのか?
どちらにしても公開されていないインスタンス変数を利用してるので仕様が変更
されたりすると一発でアウトになってしまう。公開されていないのを勝手に使って
いるわけだから文句も言えない。
別の方法を考えるか、最悪諦めるか、だね。

203 :
>>202
で、結局プライベートに手を出してまで何をしようとしていたの?
俺としては、NSDocumentのプライベートに興味をそそられる部分は無いのだが。

204 :
複数のウインドウを開くアプリで、ウィンドウ1(全面NSTextView)、ウインドウ2(HUDパネル、NSTextFieldをもつ)があります。
起動させるとファーストレスポンダがウインドウ2のNSTextFieldにフォーカスされるのですが、これをウインドウ1のNSTextViewにフォーカスさせるようにするには、どうすればいいのでしょうか?

205 :
ウィンドウ1をmainWindowに指定するのかな。たぶん。

206 :
正確にはmainWindowじゃなくて、keyWindowの方かな?
[window1 makeKeyAndOrderFront:self];
[window2 orderFront:self];
起動時に上記コードでウインドウを表示させればいい。
-[NSDocument windowControllerDidLoadNib:]とか-[NSWindowController windowDidLoad]とか- awakeFromNibとかで。
上記の2つのコードは、それぞれ別の場所に書かれていてもいいし、呼び出しの順番もどうでもいい。
ただし、nibファイルのNSWindowの設定で、「Visible At Launch」のチェックは外しておくこと。
(関連)
- [NSWindow setInitialFirstResponder:]

207 :
NSTextViewから入力中の文字列の長さを取得ってできないの?

208 :
エディットされた時に呼ばれるメソッドでtextStorageからNSStringにしlengthとか。

209 :
>>207
入力中って、かな漢字変換中のこと?

210 :
>>209
いや、表示されている文字の数を動的に取得したいなと思って
かな漢字変換は確定後でいい
しかしNSTextStorageか……
初めて手を伸ばすクラスだ

211 :
>>210
なんだ、それなら単純に「NSTextViewの文字列の長さ」ということか。
[[textView textStorage] length];

212 :
ドラッグして選択される範囲の選択色って変えられないの?

213 :
>>207といい >>212といい(文面が同じだぞ)、
ちったあ努力してから来いや。

214 :
>>212
ぼくちゃんには変えられないの

215 :
NSTimerが動作中のオブジェクトをreleaseするとtimerは強制終了されるのでしょうか?
それともrelease前にタイマーが動作中ならストップさせる処理を行ったほうが良いのでしょうか?

216 :
>>215
run loop が timer を retain し、timer が target を retain してるから、timer や target は release しても問題ないよ。
逆に、timer を止めたいなら、ちゃんと timer を止める必要がある。

217 :
ありがとうございます。
ストップ処理を入れようとすると、クラス変数としてNSTimerを持たないと、
invalidateできないですよね?
記述するのが面倒ですが、そうします。

218 :
面倒なら中に止める機構を作っておくしかないと思うけど
ソッチの方が面倒だよね

219 :
タイマーによって呼び出されたとき
- (void)timerFireMethod:(NSTimer*)theTimer
メソッドのパラメータでNSTimerオブジェクトが取得できるのだけど、このタイミングじゃ停止できないの?

220 :
出来ないわけ無いじゃん。

221 :
Obj-C スレが落ちてたから立てた
Objective-C [ObjC part:6];
http://hibari.2ch.net/test/read.cgi/tech/1313891268/

222 :
他板のことなんかほっとけばいいでしょ

223 :
>>222
なんか嫌なことでもあったの?美味しいものでも食べて回復してね

224 :
Quicktime -> AVFoundationでいいんすね?
後者はまだいじったことないけど。

225 :
iOSによるオートマティズムを読んでいるのですが、意味の分からない点があります。
56pの3.1.2 Core Dataを使うか否かにおいて、
1. CoreDataのメリットとして大規模データの取り扱い易さがある
2. Core Dataではファイル保存形式にはxml、バイナリ、SQLを選択できる
3. SQLを利用すると、メモリ領域を活用することができる
4. 現実的に数MBのデータを扱う際はCore Data一択である
何回読んでも、4の結論が導かれません。
Core Dataが大規模データに向いていると言いたいように思えますが、
比較対象となる「Core Dataではない場合」の話がなく、根拠なくCore Data一択と言っているように読めます。
すみませんが、この箇所の意図するところを教えて頂けないでしょうか。

226 :
>>225
著者本人に聞けば?
ちなみに、俺は、CoreDataのメリットは、リレーショナルDBと同様に、
データベースの中から条件に合うレコードを抽出することだと思っているけど。
SQLならSELECT文とか、CoreDataならNSPredicateを使うあたり。
たぶん、データ量は関係ないだろう。

227 :
CoreData以外でDBを扱うならSQLiteとか?
なんにしろCoreDataだとレコードの取り出し、更新、削除などの扱いが楽だよ。
ただ、XMLファイル全てをメモリに読み込むから、大規模DBには向いていないと思ったけど。

228 :
>>227
CoreDataって、ようするにSQLiteなんじゃ?

229 :
sage

230 :
質問です。
自作ラッパークラスをKVO対応にする場合、
タイマーで例えば0.1秒間隔でチェックさせて
willChangeValueForKey
didChangeValueForKey
を投げるのがいいのか、
それとも違うやり方がいいのか、アドバイスを下さい。

231 :
NSNotification じゃないのかな。

232 :
イマイチ質問の意味をつかみきれないんだけど、
値を変更する時に、プロパティ使うか、セッター使えばいいんでないの?

233 :
タイマーで監視ってKVOが根本的に分かってないんじゃないの?
かなり古いけど、これ読んどけ
http://developer.apple.com/jp/documentation/cocoa/Conceptual/KeyValueObserving/index.html
こっちでもいいけど
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

234 :
>>230
KVOというのはセッター呼べば通知行くの
セッターを使わない変更の場合は、その変更処理をwillChangeValueForKey, didChangeValueForKeyで囲めばいい

235 :
>>230
とりあえず、その「自作ラッパークラス」って何?

236 :
Non-cocoa ライブラリのサービスを
扱う為にラッパクラスを書いてます。
こういうケースでサービスのプロパティ
をBindingでモニタ出来るようにしたい
ので、ポーリングするタイマーを動かして
変更時に通知させたいのです。

237 :
>>236
そのライブラリにはコールバックもないわけ?

238 :
はい。linux環境からの移植です。


239 :
>>238
具体的にどういうライブラリの何をラップするのか書いてくれた方がいいな。
俺はKVO使う必要がそもそもない方に賭けるけど

240 :
これです。
https://github.com/MyCometG3/libavPlayer/blob/master/libavPlayer/LAVPStream.h
libavformatで読み込んだ映像ファイルを、如何にKVOサポートさせるかで
悩んでいます。
画像更新ごと、毎秒60回もKVO通知させるわけにも行かないし・・・
タイマーによるポーリング以外でうまく出来る手法はあるのでしょうか。

241 :
>>240
えーと、ようするに、動画ファイルを再生するフレームワークを作っていて、
再生中を表す「isRunning」みたいなプロパティを実装するにはどうしたらよいか?
という話?

242 :
>> 241
はい。
double_tとか、BOOLとか、構造体とかをKVOサポートさせる話です。
現状画像はDisplayLinkで更新されるように作っているので、
GPUのリフレッシュレートより高速にはなりませんが・・・
タイマーで間引くのがいいのかな、というのが最初に質問の趣旨です。

243 :
>>242
その再生中プロパティに限った話なら、
とりあえず、-playとか-stopメソッドが呼ばれたときは、普通に処理できると思うけど、
問題は再生中に、再生が終了したときに、どうやってプロパティを「停止」にするか?ですよね?
再生終了の条件は、再生位置がファイルの末尾に達した時でいいでしょうか?
で、このlibavformatで動画を再生するときって、1フレームごとにリアルタイムに画像処理とかしませんか?
そのときに、現在処理中のフレームが最終フレームがどうか判定できませんか?
または、再生終了時刻を計算して、-[NSObject performSelector:withObject:afterDelay:]で、
終了時刻にアクションを起こせるようにRunLoopにスケジュールできませんか?

244 :
>>243
確かに、ON/OFFといった情報は実装も容易なのですが、
時間と共に連続して変わって行く可能性のあるプロパティ
例えば、再生位置、といった情報のKVO通知を想定しています。
このような連続して変わるものをKVOでどう扱うのが望ましい
のでしょうか。

245 :
>>244
それはKVOする必要ありません。
再生位置なら、NSTimerで60Hzぐらいの速度で、setNeedsDisplay:して、
drawRect:の中で、再生位置をその都度参照して描画する。でOKです。

246 :
>>245
・・・どうにもうまく理解出来ていません。
もう少し調べてみます。ありがとうございました。

247 :
>>246
えーと、つまり、NSAnimationクラスのcurrentValueと同じ扱いでいいという話です。
NSAnimationのcurrentValueはKVOをサポートしてませんよね?
そもそもKVOを必要とするような使い方しませんよね?

248 :
>>233
それ古い。これ最新。
http://developer.apple.com/jp/devcenter/ios/library/documentation/CoreData.pdf
ここから。
http://developer.apple.com/jp/devcenter/ios/library/japanese.html

249 :
プログラミングを初めて勉強しようと、古いCocoa本を買ったらTiger時代のものでLionの俺のXcodeと全然違います。助けてください!!!

250 :
ええっと、Tigerはもう手に入らないんだっけ?

251 :
なんでやねーん!!!!

252 :
Lion時代に最新の解説本買わずにわざわざTiger本買って始めようというのだから、
Tigerでなにかやろうとしていると思われても当然ですしおすし。

253 :
古本で100円だったんです(´・ω・`)
最新版買うしかないですねスマソ

254 :
安心しろ、今のところ日本語の良書は無いから

255 :
Macについては本を書く人がいないからな。まあ、AppKit以外はiPhoneの本をそのまま
流用できるけど。


256 :
AppKit以外が流用できるレベルになってる人はXcodeのバージョンで泣いたりはしないだろ。
本家のXcode4のガイドと併読するだけで解決する。
「これからプログラミング入門」だと本に書いてある通り動かないときついだろ。

257 :
JavaScriptでwindow.open()を実行した時
-(WebView *) webView:(WebView *)sender
   createWebViewWithRequest:(NSURLRequest *)request
requestが0x0でとれません。
URLを知るにはどのようにしたらよいのでしょうか?

258 :
えーと、もう一つなんかあったはず。

259 :
もう一つはMacプログラマのスレかな

260 :
リクエスト取るだけなら
decidePolicyForNewWindowActionとかでもいけるんじゃ無いかな。
ナビゲーションのデリゲートメソッドを漁ってみる。

261 :
>>260
NSDocumentで実際にwindowをひらいた後なら
decidePolicyForNewWindowActionでとれました。
しかし、winodowを開かないで、さらにできればNSDocumentを使わない
方法はないのでしょうか?

262 :
NSDocumentじゃなくてWebViewじゃないの?
開く前に取得出来るメソッドもあるかと。
じゃないとポップアップブロックとかで来ないし。

263 :
>>262
本来
WebUIDelegateの
>>257
で受けとれるはずなのですが受け取れません
なので、どなたかご存知ありませんでしょうか?


264 :
デリゲートの宣言をしていないとか。
簡単なwebviewのサンプル作って再確認かな。

265 :
ちなみにjavascript以外の
<a href="http://???.jp/" target="_blank">test</a>
はcreateWebViewWithRequestで取得出来ます。


266 :
そうそう。で、window.openの時は違うメソッドで処理したような気がする。
ココアはやっぱりのページに書いてあったかな?

267 :
Appleのサンプルコードで
[savePanel beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSInteger result) {
if (result == NSFileHandlingPanelOKButton)
[self performSelector:@selector(startProgressSheetWithURL:) withObject:[savePanel URL] afterDelay:0.0];
}];
と言うのがあったんだけど、afterDelay:0.0なんだから
[self startProgressSheetWithURL:[savePanel URL]];
と等価にみえるんだけどなんであえてこういう書き方なんだろう?

268 :
そのメソッドの処理が重い場合、直接呼び出すとそのまま固まる。
afterdelayで呼び出すと、完了を待たずに先へ進めるので固まらない。
waituntiledoneでNO指定するのと一緒。
ただ、画面表示周りはafterdelay:0.0だとうまく描画が更新されるのに
直接呼び出すとダメなことがあった。
このため、単なる回避策の可能性もある。


269 :
>>267
Specifying a delay of 0 does not necessarily cause the selector to be
performed immediately. The selector is still queued on the thread's
run loop and performed as soon as possible.

270 :
ありがとうございました。
>>268
メソッド名のstartProgressSheetWithURLを見ていただくと解る通りプログレスの表示なんです。
なので、重いというよりはそっちの方がむしろ処理をブロックする側になります。
キャンセルボタンだしてProgressの表示を行っています。
画面表示周りがうまく行かない件、調べてみようと思います。
>>269
はい。その記述は読みました。0を指定するのは即座に実行される必要がない時に指定するもので
スレッドのrun loopのキューに積まれてできるだけ早く実行されるという意味だと理解しました。
逆に、今回は別に即座に実行されてしまっても構わないケースだと思ったのにこういうコーディングに
なっていたので、もしかすると何か即座に実行されてしまうと困る事があるのかもしれませんね。
そういう観点でstartProgressSheetWithURLを良く読んでみます。


271 :
スレッドの使い方の分かりやすいサンプルとか、サイトあったら教えてください。
テーブルと加速度センサーの処理をスレッドで分けたいのですが出来ますか?

272 :
NSThread

273 :
NSOperation

274 :
GCD

275 :
pthread

276 :
APIデスね。ありがとうございます。
>>271後半は可能ですか?

277 :
可能。UIはメインスレッドで。

278 :
>>270
runloopが回ることに意味がある。

279 :
練習用にテキストエディタを作っているのですが、仕上げの入出力で手間取っています
ヒレガス本は一応通読したのですが、データ形式しかのっていないためネットの記事を参考にしようと思うのですが、おすすめのサイトはありますか?


280 :
仕上げの入出力って何?
音声入出力に対応させるってこと?
それともジェスチャーでってこと?

281 :
>>279
ファイルの入出力かな?
documentベースで作っていればテンプレにちょっと付け足すだけでできるけど。
ttp://www.mosa.gr.jp/?p=446

282 :
っていうか、ここへ来て、知りたい情報は「おすすめのサイト」なのか。
自分でググッた方が早いんじゃないのか?

283 :
日本語でcocoaを解説しているサイトなんて数える程だな。
最近は、iOS関連で増えてはいるが。

284 :
>>279
Cocoaの日々
http://cocoadays.blogspot.com/
http://xcatsan.blogspot.com/
Googleと有益な情報はここに行き着く。

285 :
Cocoaの日々の人はよくやってるよ
いつもいい情報提供してくれる。
iOSでも似たようなところがあるけど、情報としてはすごくピンポイントだったりしていいんだけど
いろいろキモいので困る。

286 :
10.7から使えるようになったview-basedなNSOutlineViewについてです。
ビューのリサイズを検知したら、各行の高さを内容に合わせて調整するようにしています。

[outlineView noteHeightOfRowsWithIndexesChanged:rowIndexes];
(rowIndexesは表示中の行を表すNSIndexSetインスタンス)
このとき、行の高さは正しく調整されるのですが左側の三角(開閉の時にクリックするやつ)が期待する位置に描画されません。
具体的には、最初に描画された位置から変更されません。つまり、最初に描画する際に行の高さを20とした場合、三角の中心が左上から10の位置にあるということになりますが、その後、行の高さを70.0としても10の位置のままとなっています。
これをリサイズ後も上下中央(高さを70に変更した場合は35の位置)に描画するようにしたいと考えています。
解決方法をご存知の方がいらっしゃいましたらご教示ください。

287 :
>>286
- (void)windowDidResizeNotification:(NSNotification*)notify
{
[outlineView reloadData];
}

- (CGFloat)outlineView:(NSOutlineView *)anOutlineView heightOfRowByItem:(id)item
{
return [[anOutlineView window] frame].size.height / 5.0;
}
試して見たけど、とりあえず上記のコードで、ウインドウのリサイズに追従して三角の位置も変化したよ。

288 :
>>287
ありがとうございます。
>>286 です。確かにそれでも可能のようです。
しかしその後の調べた結果、簡潔な方法が判明したので記載しておきます。
まず、原因です。
Appleが提供しているTable View Programming Guideにも記載がありましたが、view-basedなNSOutlineViewでは各行にNSTableRowViewがあり、そのサブビューとして左側の三角や各カラムに対応するNSTableViewCellが配置されているようです。
左側の三角はNSButtonクラスのインスタンスで、NSTableRowViewのサブビューのひとつとなっています。
今回の場合、NSButtonのautoresizingMaskがNSViewNotResizableとなっていることが原因でした。
(解決方法は次へ)

289 :
つぎに解決方法ですが、NSTableRowViewのサブクラスを用意し、xibファイルに追加します。
User Interface Item IdentifierをNSTableViewRowViewKeyとすることでカスタムクラスを使用することができるようです。
addSubview: をオーバーライドします。
- (void)addSubview:(NSView *)subview
{
[super addSubview:subview];

if ([subview isKindOfClass:[NSButton class]]) {
[subview setAutoresizingMask:NSViewHeightSizable];
}
}
これで三角のボタンをリサイズに合わせて中央に表示することができました。
簡潔というより、コストが低い、ですね。。

290 :
Xcode4でNSStepperおかしくありません?
incrementはdoubleのはずなのに整数しか入らん…

291 :
Xcode3でビルドするとdoubleが入るってこと???

292 :
IBでやると無理、コードで指定なら可能って感じじゃないかな。
他にもNSNumberFormatterとかNSTextField+NSStepperで値指定するものは少数を入力できなくなってる。

293 :
>>286
ふと思ったのだが、
普通にNSOutlineViewをNSWindow上に配置すると、
NSOutlineView本体はNSScrollViewの中に入ってるはずなので、
NSOutlineViewのリサイズが発生するのは、行が増えたり減ったりするときだけのような気がする。
今回の話って、いったいどういった状況下でNSOutlineViewを使ってるの?

294 :
行の高さが変わるんじゃない。
リサイズしても常に10行表示させたいとか。

295 :
>>293
>286です。
スクロールビューに入った状態で使用していますが、横スクロールをさせたくないのでスクロールビューのリサイズに追従してアウトラインビューの幅も調整しています。
また、各行には複数行のテキストを省略なく表示したいのでスクロールビューのリサイズで行の高さを変更する必要がありました。
今>286を読み返して気づきましたが、冒頭のビューのリサイズを〜というのはアウトラインビューの、ではなくスクロールビューの、ということです。

296 :
ようするに、スクロールビューを無効化している訳か。

297 :
Xcode4.2にアップグレードしたら、svnリポジトリのリモート接続がトラブった。
復旧させるのに、ちょっと苦労した。

298 :
>>297
せっかくだから、どうトラブってどう復旧したか書いてみませんか?

299 :
オーガナイザーで、ステータスが「赤」になって、svnのリモートリポジトリが参照不能になった。
コマンドラインの、svnコマンドの方は問題なし。
add Repository...で作り直しても、ステータスは赤(Host is unreachable)のまま。
復旧方法はちょっと変。
add Repository...のLocation欄に、
svn://remote.local/project
と書くと、ステータス赤になるが、ここで最初の「/」を削除して
svn:/remote.local/project
にすると、ステータスが消えて、再度「/」を挿入すると
svn://remote.local/project
元の内容に戻ったうえに、ステータスが消えたままになる。
このまま、「Next」→「Add」と進めると、リポジトリが出来上がり、
checkoutやcommitが正常に動作するのを確認した。
が、、、
OSをシャットダウンして、一晩だってから再起動したら、またステータス赤で参照できなくなってた。
というわけで、全然復旧してませんでしたorz

300 :
xcodeとsvnの連携って便利?
設定が面倒で、結局ターミナルでチェックインしてる。
まあ、それで不満がないから設定してないってのもあるけど。

301 :
>>300
それは、svnの使うのにGUIを使うかCLIを使うか、という話だと思う。
でも普通に考えたら、マウス1クリックでcommit出来る方が楽じゃないか?

302 :
>>299
そんなあなたのために…
svnX
Versions
Cornerstone
SmartSVN
URLはMacUpdateで検索してね!

303 :
Thanks.
でもXCodeと一体化してくれるといいんだけどねー

304 :
SCMとかあるじゃん

305 :
OS X 10.6.8 + Safari 5.1.1のWebKitで
グラフィクをロードしない
[[ webView preferences] setLoadsImagesAutomatically: NO ]
を行うとメモリ消費が増えます
これは、以前のバージョンでもおきるのでしょうか?

306 :
TortoiseSVNになれると他のは使えない。Mac版は開発中断しのがなあ。

307 :
SourceTreeが無料のうちに落としとくのがいいよ。これ使いやすい。SVN鯖にも繋げるし。

308 :
>>299
それがXcodeのバグなら、とりあえずバグが修復されるのを待つしかないだろう。
それまでの間は、適当なツールでしのぐ。
commitとかのバージョン管理だけじゃなく、diffとかもあるからね、
やっぱりXcodeに統合されていた方が便利だよね。

309 :
interface builderの不具合なんですが、xcodeでアウトレットを追加すると今まではIBにも追加が通知されていました
それが突然されなくなって、全部消えてしまうようになりました
同じ現象がおきた方いますか?
直前にハードディスクのアクセス権修復したのが原因かと考えているんですが・・・・・・

310 :
再インストール

311 :
>>309
コンソール.appを見てみて。
本当にファイルアクセス権限関係の障害なら、XcodeかInterfaceBuilderが何かログを吐いているかもしれない。

312 :
Document-Basedアプリケーションでファイルを開くとき
FinderからDockアイコンにドロップしたり「ファイルを開く」から開くようなことを
コードから実行するとすると、どうしたらいいでしょうか。
NSDocumentControllerのopenDocumentWithContentsOfFileでしょうか?

313 :
>>312
全部、フレームワークがやってくれます。
ドロップするファイルの定義はinfo.plistの編集が必要。
この辺参考にどうぞ。
http://homepage.mac.com/mkino2/cocoaProg/AppKit/NSDocument/NSDocument.html

314 :
ありがとうございます。これは、ユーザーが何かした後の対応ですよね?ちょっと誤解がある表現だったようですみません。
要はユーザーが行った操作をトリガとしてではなくて、アプリケーションが自分で開きたいということなのです。

315 :
>>312
openDocumentWithContentsOf〜系のメソッドでいいと思うけど。聞く前に自分で試せばいいのでは?
でも、最新のドキュメントを見ると、
〜OfFile:display: available in 10.0 and later, deprecated in 10.4
〜OfURL:display: available in 10.0 and later, deprecated in 10.4
〜OfURL:display:error: available in 10.4 and later, deprecated in 10.7
〜OfURL:display:completionHandler: available in 10.7
となってて、さらにreopen〜なんてのもあるから、どれ使えばいいか迷うね。

316 :
-[NSWorkspace openFile:withApplication:]

317 :
>>316
それは他のアプリで開く場合では? アプリ名に自分を指定すればいいのかもだけど、同じ名前のアプリがあったりしたら、確実に指定できるのかな?
ドキュメントを読んでて気になったこと。
•file coordination mechanism って何? iCloud 関係? そもそも日本語では何と訳せばいい?
•Lion の App Sandbox では open ダイアログで指定したファイル以外は開けないようだけど、履歴から開くような場合はどうするんだろ?

318 :
ありがとうございます。確かにopenDocumentWithContentsOfURLを試したのですが、
*** Canceling drag because exception 'NSInternalInconsistencyException' (reason 'typeForContentsOfURL:error:
must be overridden for your application to support non-'file:' URLs.') was raised during a dragging session
といわれマス。
なので、DocumentControllerのサブクラスをMainMenu.xibに置いて、中身の
(NSString *)typeForContentsOfURL:(NSURL *)inAbsoluteURL error:(NSError **)outError
を実装しようかと思ったのですが、中身に困っています。
単にタイプを返すだけだと何も起こらないようで…

319 :
>>318
openDocumentWithContentsOfURLのパラメーターとして、どんな内容のNSURLを渡したの?
なんか、file:じゃないURLだったので処理に困っている。というふうに読めるけど?

320 :
>>318
NSURL *url = [NSURL URLWithString:str];
としてない? これは str が "file:///Users/xxx/file.txt" とか "http://www.apple.com/index.html" とかの場合だよ。
NSURL *url = [NSURL fileURLWithPath:path];
が正解の筈。あと、path はフルパス ("file.txt" じゃなくて "/Users/xxx/file.txt") じゃないと駄目だと思う。

321 :
>>317
> •file coordination mechanism って何? iCloud 関係? そもそも日本語では何と訳せばいい?
それは、ファイルの「バージョン管理」関連らしいぞ。
そして、iCloudストレージでもバージョン管理を使うようなので、いちおうiCloud関係でもあるようだ。
あえて日本語に訳すなら、「ファイル調整機関」かな?

322 :
>>319,320
わーお、まさにズバリその通りでした!
お騒がせしてすみません。。。
丁寧な回答大変ありがとうございます。

323 :
>>321
>それは、ファイルの「バージョン管理」関連らしいぞ。
ありがとう。バージョン管理関連かぁ。
自動保存とかバージョンとか iCloud の衝突とか、何がどうなるのか謎すぎる。ちゃんと試してみなきゃ。
>あえて日本語に訳すなら、「ファイル調整機関」かな?
うーん…、英語でいいや。笑

324 :
>>323
実はちょうど今、iCloud Storageをいじってるところ。
若干ハマッている。。。
ストレージのファイルの読み書きは問題なく出来るようになった。
でも、なぜかファイルの競合が発生しない。もしくは、競合を検出できない。
どうやら、しっかりとバージョン管理付きでファイルを書き込みしないと、ダメっぽい。
ちなみに、自動保存と非同期保存は制圧済み^^

325 :
iCloud Storageで、いろいろと通知を受け取れるようになった。
結果、別の意味でファイルの競合が発生しないらしいことが分かった。
NSDocumentのデフォルトの実装によれば、iCloud Storageにある1つのファイルを2つのデバイスで同時に開いた状態で、
片方のデバイスでファイルを編集して保存(新バージョン作成)すると、リアルタイムにもう片方のデバイスに
変更が反映される。(ファイルの自動再読み込み)
ファイルのバージョン競合なんてものは、そもそも起こらないのかもしれない。

326 :
>>325
オフラインで編集すれば競合するのでは?
(まさかオフラインでは保存できないってことはないよね…)

327 :
ってか、リアルタイムに反映されるのはどうなんだろ。
古いドキュメントをじっくり読んでたらいつのまにか新しくなってるってことだよね。
undo/redo 情報とかもどうなるのやら。

328 :
>>326
> オフラインで編集すれば競合するのでは?
そのとおりでした。
1度開いたことのあるファイルは、ローカルにキャッシュされていて、オフラインでも開くことができる。
オフラインのまま編集して保存(新バージョン作成)も可能。
そして、オンラインにしたとたんに、双方のデバイスでバージョンの競合が発生します。
NSDocumentのデフォルトの実装では、「破棄」と「解決...」の選択を迫られて、「解決...」を選ぶと、
どのバージョンの書類を有効にするか選ぶ画面(通常のバージョン選択画面)が出てきます。
片方のデバイスでバージョンを選択・決定すると、もう片方のデバイスにもそれがリアルタイムに反映されます。
(もう片方のデバイスでバージョン選択画面に入っていても、強制的にキャンセルされます。早いもの勝ち)

>>327
> 古いドキュメントをじっくり読んでたらいつのまにか新しくなってるってことだよね。
そのとおりです。デフォルトでは、「更新しました」表示も出ません。
> undo/redo 情報とかもどうなるのやら。
まだ試してませんが、おそらくクリアされると思われます。ファイルを開き直しているっぽいので。
でも、そのへんの動きは、NSDocumentに実装されているNSFilePresenterのメソッドをオーバーライドすれば、
動作のカスタマイズは可能だと思うので、なんとかなるんじゃないかな?

329 :
Property redeclaration について相談です。
ヘッダはreadonly、カテゴリでreadwriteと再定義するやり方について正しい書き方を教えてください。
test[10383:707] -[AppDelegate setHoge:]: unrecognized selector sent to instance 0x101e0e1f0
// AppDelegate.h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSNumber* hoge;
}
@property (assign) IBOutlet NSWindow *window;
@property (readonly, retain) NSNumber* hoge;
@end
// AppDelegate.m
#import "AppDelegate.h"
@interface AppDelegate (private)
@property (readwrite, retain) NSNumber* hoge;
@end
@implementation AppDelegate
@synthesize window = _window;
@synthesize hoge;
- (void)dealloc { [super dealloc]; }
@end
@implementation AppDelegate (private)
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.hoge = [NSNumber numberWithBool:YES];
}
@end

330 :
@interface AppDelegate ()

331 :
>>330
ありがとうございました。
Categoryではなく、Class Extensionという機能を使うのですね。すっかりCategoryだと
思い込んでいました。
なお、Documentにあるpropertyやinstance variableの追加は、Clang/LLVM 2.0 compiler
が必須とあったので、llvm-gcc非互換になってしまうと理解したのですが、試してみたら
clang 3はもちろん、llvm-gcc 4.2でも動きますね・・・

332 :
失礼しました。検証ミスってました・・・
やはりclangでないと、インスタンス変数追加は出来なかったです。

333 :
Document-Basedアプリケーションで作ってても
ある種類のファイルは開くたびに新しいウィンドウを作りたくない、みたいな場合のために
解説していたWebサイトがあったと思うのですが、どうしても見つからない…
誰か御存知ありませんか?

334 :
ようわからんが、シングルウインドウだけで済ませるつもりなら
Document-Basedにする必要あるかいな?

335 :
ええと、どちらかというと、ある種類のドキュメントはウィンドウを使いまわしたい
という要求ですね

336 :
>>335
それは、NSDocumentを使わなければ良い。ということかと。

337 :
>>335
ところで、それって、2つの書類を開いたらどうなるんだ?
古い方の書類は、自動的に閉じたことにするの?

338 :
>>335
既存のウィンドウを使い回して古い方は閉じるか、既存のウィンドウのプレイリストに追加されるか、新しくウィンドウを開くか、条件によって変えられるといいのですが。
・.通常は常に新しいウィンドウで開きたい
・基本的に新しいウィンドウを開くが、すでに開いているウィンドウにドロップしたときはそれを使いまわす
というような感じですね
自分で新しくウィンドウを作ってもいいと思うのですが、履歴の対応や複数開いた場合などを考えると
ベースはDocument-Basedの方が何かと便利なもので
ある条件の時だけ新しくウィンドウを開かないで使いまわせないかなぁ、と考えてます

339 :
>>335
使い回す部分だけDocumentのnibを使ってその他は別のnibに置けばいいんじゃないかな。
>>337
シングルウィンドウのアプリケーションは新しい書類を開く時に古い書類を保存しますか?と聞いてくる。

340 :
>>338
ウインドウを開いて、すぐ閉じて処理を続ける処理をすればいいんじゃない?

341 :
>>338
> ・.通常は常に新しいウィンドウで開きたい
> ・基本的に新しいウィンドウを開くが、すでに開いているウィンドウにドロップしたときはそれを使いまわす
これって、難しい話じゃなくて、普通にDocument-basedでアプリを作って、書類のドロップ処理だけ工夫すればいいのでは?
一つのNSDocumentオブジェクトで、書類を再読み込みするのは、普通にできた気がするけど?

342 :
すみません、ちょっと難しく考えすぎていたように思いますので
普通にNSDocumentControllerのサブクラスを作りますね
よく考えれば、MyDocumentクラスをインスタンス化する前に既存のウィンドウにURL投げてやるように
openDocumentWithContentsOfURLをオーバーライドしてみます。
お騒がせしました

343 :
>>341
それもそうですね。ドキュメントタイプによって必ず新しいウィンドウで開きたい場合もあるのですが(プレイリストファイル自体とか)、それはおいておいて
再読み込み後にどのように自分のURLの変更を通知するのか、ちょっと調べてみます。

344 :
NSTextFieldで英小文字入力を大文字に変換して表示する方法をご教示ください。
見た目はキー入力時にcaps lockした時と同じ動きになってる感じです。
NSFormatterでuppercaseStringをしたのですが、
returnキーで確定しないと大文字表示にならず目的とおりにならないです。
@interface OomojiFormatter : NSFormatter {}
@end
@implementation OomojiFormatter
- (NSString *)stringForObjectValue:(id)anObject
{ return (anObject == nil)? nil : [anObject uppercaseString]; }
- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string
errorDescription:(NSString **)error
{ *anObject = [string uppercaseString]; return YES; }
@end

345 :
文字が入力される度に大文字にするなら、NSTextFieldかそれの親クラスのメソッドで
内容が変更されたら呼ばれるメソッドがあったはず。

346 :
NSControl の -controlTextDidBeginEditing: , -controlTextDidChange: の
デリゲートで地道に uppercase に変換していけば、一文字ずついけた気がする。

347 :
>>344
- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error {
*newString = [partialString uppercaseString];
return NO;
}
を追加する

348 :
>>345>>346
コメントありがとうございます
>>347
追加したら目的どおりの動作になりました、
アドバイスありがとうございました

349 :
Xcodeでsvnのリモートリポジトリが使えない件は、version4.2.1で復旧しました。
めでたし、めでたし。

350 :
文字列からクラスとそのクラスメソッドを呼ぶ方法はないでしょうか?
Class型はNSClassFromString()で作れ、
SEL型はNSSelectorFromString()で作れますが、
クラスメソッドに対するperformSelector:みたいのが無さげです。

351 :
自分で書いてるような。
Class cls = NSClassFromString(@"MyClass");
SEL sel = NSSelectorFromString(@"foo");
[cls performSelector:sel];

352 :
performSelector:でいいよ

353 :
@selector(hoge:fuga:hage:)

354 :
「Objective-Cプログラミング言語」を見直しました。
Obj-Cにおいてクラスは、クラスオブジェクト(ファクトリオブジェクト)であり、
インスタンスとはことなるものの、1つのオブジェクトなんですね。
ありがとうございました

355 :
NSPersistentDocument 使って iCloud 経由で
sync させる方法がわからん

356 :
>>355
ところで、NSDocumentを使ってiCloud経由でsyncさせる方法なら分かるの?

357 :
Core Data アプリだから NSPersistentDocument しか試してない
WWDC の関連するビデオも全部見たけどわからん
サンプルコードも見つからないし

358 :
NSDocumentControllerのサブクラスを作って、独自にメソッドを追加しました。
NSDocumentController:sharedDocumentControllerで呼び出して独自のメソッドを使うと、動作は問題ないんですがコンパイル時にウォーニングが出て気持ち悪いです。
このウォーニングを消す方法ってありますか?

359 :
呼び出しの際に、(サブクラス*)でキャストでもすれば

360 :
”/”下の"bin"や"etc"等を除いたFinderから見えるディレクトリのみを抽出したい場合、どのAPIを叩けばいいのでしょうか?
NSWorkspaceやNSFileManagerを調べましたが適切なメソッドが見当たりませんでした。

361 :
前になんちゃってFinderを作ったときは
ファイルの可視属性とかを見た
何を使うかは忘れた

362 :
>>360
何をしたいのか良くわからないのだが、NSFileManagerで大抵のことは
出来るよ。

363 :
10.6 からこんなのあるね
NSDirectoryEnumerationSkipsHiddenFiles
使った事ないけど

364 :
NSFileManagerで、NSDictionaryでファイル属性取れたはず。

365 :
これで解決できました。ありがとうございました。

NSArray *contentsAtPath = [[NSFileManager defaultManager]
contentsOfDirectoryAtURL:[self URL] includingPropertiesForKeys:nil
options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];
Part.3の頃にも同じ質問がありましたが、現バージョンとは状況が違う様です。


366 :
以前は不可視属性の取得はCore Services (Carbon)のFile Managerを使う必要が
あったかも。FSGetCatalogInfo()でFinderInfoがどうたらとか。
10.6から「これからはもうCocoaだけで」みたいな流れになってる様だから。

367 :
>>366
NSURLのリファレンスを見ると隠し属性か否かを判断するNSURLIsHiddenKeyやら
エイリアスの作成と読み出しを行うfileReferenceURLと
bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:
が追加されていますね。
AliasManagerを叩いていたのはなんだったんだ。。。

368 :
全部cocoaで書いてやったぜ!とおもったらcarbon読み込んでたりして、なんとなく気持ち悪い
いつになったら100%cocoaになるのやら

369 :
次の次か、次の次の次のOS Xに期待。

370 :
ジョブズも死んだしObj-Cやーめた
という展開もあり
秘密にしたいあれこれがあるiOSの方はハックしやすいObj-Cを苦々しく思ってる可能性も高いし

371 :
開発者切り捨ててライブラリも全部他の言語で書き直すのかよアホか
サードのも全部死亡
ねーよ

372 :
他の言語とか何言ってんの?

373 :
CもC++も使えるのに?

374 :
金がかかりすぎるし、第一アップルにとっても良いことがない。

375 :
Core Data を NSPersistentDocument 使って
iCloud 経由で2台のマックで同期させる事はできたけど、
NSPersistentStoreDidImportUbiquitousContentChangesNotification
が来ねーよ
一度アプリを立ち上げ直さないと UI がアップデートされん

376 :
「Restart Application」
と、ダイアログを出せば解決(笑)

377 :
>>376
Notification が来ないからいつダイアログを出せばいいかわからん

378 :
XCodeのビルド完了しましたーみたいな
画面中央の半透明グレーの正方形の中に通知出すみたいなのってどうやればいいの?
Cocoa用ライブラリある?

379 :
Growl使えば良いんじゃないの?

380 :
自分でcore graphicsなりで描画すりゃいいじゃん

381 :
手元のLion環境だと、キーボードショートカットで
Cmd+左右カーソルキー
が拾えない・・・予約されている?
SnowLeopardだと拾えるんだが・・・

382 :
再起動したら直りました・・・orz。

383 :
>>380
そりゃそうだけど誰でも思いつく回答だね
それがめんどくさいから聞いてるに違いないに100ペリカ

384 :
表示を担当してるのはBezelServiceだけど
こいつ確か非公開

385 :
長方形の画像を平行四辺形に変形させたいのですが、
NSAffineTransformでいいのでしょうか?
拡大縮小回転まではわかるのですが、
変形がさっぱりでして。

386 :
いいよ

387 :
>>385
アフィン変換でググればきっとヒントが見つかる

388 :
ありがとうございます。出来ました。
NSAffineTransform ts = {m11, m12, m21, m22, tX, tY};
を噛ませばいいんですよね。
m12(Xの傾斜率)とm21(Yの傾斜率)の値が理解しにくい、
描画領域を拡大しないと変形後の画像の上下左右が切れてしまうので
それを描画領域を計算するのでハマってました。

389 :
test

390 :
すいませんCocoaでのHTTPリクエストの書き方を質問させて下さい
2chのスレッドをGETしたいのですが、2chのサンプルにある
GET /namazuplus/dat/1230058090.dat HTTP/1.1
のCocoaでの書き方がわかりません
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://サーバー名"]];
[request setHTTPMethod:@"GET"];
[request addValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
....
とすれば良いのかと思ったのですが、GETのパラメータの /namazuplus/dat/1230058090.dat HTTP/1.1 はどこに書いたらいいんでしょうか?

391 :
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://サーバー名/namazuplus/dat/1230058090.dat"]];
で、いいんじゃないの?

392 :
できました
ありがとうございました

393 :
POSTやGET用のライブラリがあるが

394 :
cocoaAMFの参考になるサンプルとかサイトってない?

395 :
質問です。今、あるクラスの保持する配列を、2つのクラス(クラスA、クラスBとします)で共有
しようと思ってるんですが、例えば、クラスAのメソッドで、配列に要素を追加し、クラスBから
ゲッターで取得しても、配列の中が空になってしまいます。再び、クラスAのメソッドを実行すれば、
配列の要素は2個になる為、初期化等はされていないと思うのですが、どうすればいいのかわかりません。
対処方の分かる方、アドバイスお願いします。かなり初歩的な何かがダメな気はするんですが…

396 :
>>395
ちゃんと同じインスタンスを渡しているのか?

397 :
わけのわからんことをうだうだ書いているヒマがあるならコードを晒せ

398 :
遅くなってすいません。ではコード晒します。クラスはTestとTestAとModelOfTestAAndTestの3つです。
TestでModelOf…の保持する配列に値を追加するのと、TestAクラスからその配列の値を取得するアクションを
それぞれ別のボタンにつないであります
@implementation TestA
-(id)init{
self=[super init];
if (self!=nil) {
model=[[ModelOfTestAAndTest alloc]init];
}
return self;
}
- (IBAction)testaction:(id)sender {
NSLog(@"%@",model.tesary);
}

@implementation Test
- (IBAction)tesaction:(id)sender {
[model Setself];
NSLog(@"%@",model.tesary);
}
-(id)init{
self=[super init];
if (self!=nil) {
model=[[ModelOfTestAAndTest alloc]init];
}
return self;
}
@end
続く

399 :
@implementation ModelOfTestAAndTest
@synthesize tesary;
-(id)init{
self=[super init];
if (self!=nil) {
tesary=[NSMutableArray array];
x=0;
}
return self;
}
-(void)Setself{
x=x+1;
[tesary addObject:[NSNumber numberWithInt: x]];
}
@end
です。よろしくお願いします。ヘッダーも晒した方がいいですか?

400 :
>>399
Test とか TestA とかじゃ何のためのクラスかさっぱり分からない。もっと意味のある名前を付けよう。

401 :
>>398
>>396
TestとTestAでmodelに保持しているインスタンスが違う

402 :
というか[NSMutableArray array]ってARPで解放されるけどいいのか

403 :
ついでにちゃんとソース読んでみたけど、TestA と Test でそれぞれ ModelOf... のインスタンスを生成してるってことは、
別々の配列を参照してるわけで、片方の配列に入れた奴がもう片方の配列に入ってるはずがないよ。
根本的にクラスやインスタンスが何なのか分かってないんじゃないかな。

404 :
申し訳ないです…次回から気をつけます。要するにTestで値を配列に追加して、TestAで取得するので、
それぞれAddTesaryクラス、GetTesAryクラスとして見てください。お願いします。

405 :
申し訳ないです…次回から気をつけます。要するにTestで値を配列に追加して、TestAで取得するので、
それぞれAddTesaryクラス、GetTesAryクラスとして見てください。お願いします。

406 :
>>404
AddTestArray と GetTestArray の略かな? Cocoa ではそういうおかしな略し方はしない方がいいよ。
あと、それらのスーパークラスは? たぶん NSWindowController か UIViewController だと思うけど、後者だとしたらスレ違い。
(ここは Mac プログラミングのスレだから。)

407 :
>>401
>>402
>>403
連投申し訳ないです。やっぱりそういった基礎部分がおかしかったんですよね…cocoaの入門書とサイトでしか勉強して
なかったので、根本的な部分はあまり理解できてなかったみたいです。すいません。
ただ、インスタンスを生成してはいけないということは、インスタンスメソッドであるアクセサメソッドは使いえないので、
AddTesAry→ModelOf…←GetTesAryではなく、
GetTesAry→AddTesAry→ModelOf…という感じで、
AddTesAryのアクションを、GetTesAryのアクションの中でやるという形になるのですか?
とりあえずクラスとインスタンスの勉強をしてきます…

408 :
>>406
確かに説明しないとわからない略のしかたになってますねすいません。気をつけます。
これは質問のためのサンプルなのでNSObjectです。NSTableViewの表示するデータソースの配列をNSbrowserと
共有する事が目的なので、たぶん実際に使うのもNSObjectになるのかな?一応Macのプログラミングで考えてます。

409 :
>>408
Mac のコントローラは NSObject のサブクラスにするんだっけ。頭がすっかり iOS になってるなぁ。
で、何をするクラス? の答えとして欲しかったのは「NSTableView や NSBrowser のデータソース」みたいなこと。
クラス名からすぐ分かることが望ましいけど、分かりにくい場合は説明すればいい。
大事なのは、質問(ってか、クラス設計)する上でそれが重要な情報だってこと。
で、これらのコントローラの間でどうやってデータを受け渡すかを考えるためには、
・画面間の関連(または、どう遷移するか)
・そのデータや画面は何組存在するか(ウインドウを複数開くのか?)
といったことを知る必要がある。
とりあえずデータがひと組なら、シングルトンにすればいいのでは?

410 :
NSObject継承してController作ってawakeFromNibでUIの値初期化とか
もはや懐かしい

411 :
えっ何か別のやり方があるんですか?

412 :
>>409
アドバイスありがとうございました。シングルトンがたぶんまさに僕の求めていた物になりそうです。
一応僕のアプリケーションは、シングルウィンドウで、画面間のやりとりは一切無いです。
要するに、browserでダブルクリックされた文字列を、tableviewの一番下に追加したい。というのが目的です。
ちなみに、ある変更可能なデータ(NSMutableArrayなど)をさまざまなクラスから変更、取得する場合、
このシングルトンが一般的な方法とみてしまっていいんでしょうか?

413 :
>>412
>このシングルトンが一般的な方法とみてしまっていいんでしょうか?
いいえ かなり特殊な方法で、全く一般的ではありません

414 :
>>413
返信ありがとうございます。そんなに特殊なんですか?一般的な方法ってどんな感じですか?

415 :
シングルトンで実装する必要がないだろ。
クラスが複数作られるわけでもないんだから。

416 :
>>414
シングルトンの意味を正しく(ry

417 :
できました!!静的な型で宣言してクラスメソッドで変更をという形でやってみたらできました。みなさん
貴重なアドバイスありがとうございました。
>>415
詳しく調べてみたらそうですね…また複数クラスの時にまた勉強してみます。
>>416
プログラムの中でひとつだけインスタンスを生成するクラスというくらいしか理解できませんでした…
ただ、シングルトンの話のおかげで、静的な型の話にたどり着けたので、大変助けになりました。本当に
ありがとうございました。

418 :
>>417
もっとダメになった

419 :
>>418
本当ですか!?一応期待通りの動作はしてくれているんですが、何かデメリットがあったりするんですか?

420 :
オブジェクト指向ではオブジェクト同士の関連性が大事
インスタンスAとインスタンスBで同じインスタンスCを利用する場合
1、AがCを持ちAを知っているBがAからCの情報を得る。この場合、BがAを、AがCを生成して関連性を作る
2、AとBを統括するインスタンスDがCを持ちAとBはDを介してCの情報を得る。この場合DがA,BおよびCを生成しそれぞれの関連性を作る。この場合、AとBは互いに知る必要がない
3、Cのクラスのインスタンスの集合を持ち識別キーにより一意なインスタンスを返すオブジェクトEを用いる(シングルトンはこれの特殊な場合)。この場合もAとBは互いに知る必要がない
とか、かな?他にも色々ありそうだけど
2、でCがAとBを知る立場であるならDの役をCがやってもいいけど、この場合は当てはまらないよね

421 :
まさにスレタイ通りのレスに感動。

422 :
>>420
とても丁寧な説明どうもありがとうございました!!
1の方法をHDMTさんのhttp://hmdt-web.net/seminar/CocoaSoftwarePattern/CocoaSoftwarePattern.pdf
記事のドキュメントウィンドウパターンの部分を参考にして、実現する事ができました!!
ただ、質問ばかりで申し訳ないのですが、IBActionを持つクラスA、BでモデルCを共有する場合、
BはAを、AはCを生成するメソッドを持っていて、
B→A→Cの順に生成していき、参照できるように書き変えたのですが、実際に動かしてみたところ、
B→A→C→A→Cという順序で生成されました。おそらくこれは、ウィンドウが読み込まれた際、AクラスもBクラスも
IBActionを持つので、インスタンスが生成された。要するにB(→A→C)→A(→C)という形。わかりづらいかも
しれませんが、()内はB、Aのそれぞれのinitメソッドで生成されたもの、()外はウィンドウが読み込まれた
祭に生成されたものになってしまったのではないかと推測しました。肝心のAのIBActionは、二度目に生成されたAに接続
されているため、Bが参照しているCは1度目のもの、Aが参照しているCは2度目のものという状況で、
結局は共有できていません。長文で申し訳ないのですが、アドバイスいただけないでしょうか

423 :
連投すいません調べてみたところ、たぶんKVCの方が簡単に実現できそうなので、そっちで頑張ってみます。
いくつものアドバイス本当にありがとうございました。

424 :
何でこういう人は普通に実装しないんだろう

425 :
実践より理論を先に理解したい人なのかも。

426 :
入門書とかサイトとかを流し読みして、基礎が抜けてるんだろう。

427 :
イベントの受け取りについて質問させてください。
rotateWithEventなどを実装したNSViewの上(IBの階層では下)にもう一つNSViewを置くと、イベントが検知できなくなってしまいます。
上にNSViewを置いてあっても下へイベントを伝える方法はないでしょうか?

428 :
上のビューで拾って下に回すとか。

429 :
上にのってるviewのrotateWithEvent:の中でsuperのも呼ぶ。
mouseDown:とかも同じ方法で下へ伝播できる。

430 :
>>428,429
ありがとうございます。透過するのではなく、上で拾って回すということですね。
その場合、上のビューはNSViewのサブクラスにしないといけないのでしょうか。
(ボタン等が載っているだけの単なるNSViewなので、できればクラスは増やしたくないのです)

431 :
>429で言ってるsuperというのはsuperviewではなく、superclassの方。
レスポンダーチェーンにイベントを渡すってこと。
nsviewはuiviewと違って
色を付けるのにもサブクラス化しないといけないんだから、
クラスが増えるのがイヤとか言ってたら何もできない。
だったらそんなviewをなくせという話にもなる。
1つメソッドをオーバライドして、IBで設定するだけなんだし。

432 :
>>431
なるほど、ありがとうございました。理解できました。
あと一つ質問させてください、NSMenuItemに割り当てられているアクションを実行したいのですが、どうしたらよいでしょうか?
NSMenuItemはアウトレットで取得できていますが、[menuItem action]ではセレクタが取れるだけで、実行先が見つからないのです。。。

433 :
performSelector的な

434 :
>>432
まず、
>NSMenuItemに割り当てられているアクションを実行したい
この希望が出る自体がおかしい。
それでも、どうしてもというのなら
Target-Actionパラダイムに付いて調べる
で、NSApplication.hを調べる

435 :
>>434
まあ、確かにそうですよね。
実行したいのは、FirstResponderにあるopenLastItemなのですが、このメソッドの持ち主がわからないのです。

436 :
>>432
レスポンダチェーンでぐくれ。
簡単に説明すると、メニュー項目はファーストレスポンダ (現在キャレットのあるテキストビューなど)、
そのスーパービューやウインドウ、アプリケーション (それぞれのデリゲートを含む) に
順番にこのメソッド (action) 実行できる?と問い合わせて、できると答えた奴が実行する。
ので、レスポンダチェーン上のオブジェクトにメソッドを実装して、メニュー項目にはメソッド名だけ指定すればいい。

437 :
>>427
これ、良く考えたら普通に下のNSViewでイベントが受け取れると思うんだが。
実際、試してみてもちゃんとそうなるし。
どういうコード書いてんの?

438 :
補足すると、メニュー項目に限らず、ボタンとかでも同様で、
target-action パラダイムで target が nil の場合にこの動作になる。
Interface Builder 上では target が first responder ってことになってる。
first responder にはもともとよく使われるメソッドが一通り登録されてるけど、
見つからない場合は Interface Builder 上でメソッド名を追加もできる。

439 :
iTunesUにある、Stanford UnivのiPad and iPhone Application Development
を見始めました。SDで十分だね・・・
Lesson 2をみて気になったので質問です。いくつかルールがあって、
・PropertyにInstance Variableを必ず割当する
・アクセッサ以外からは原則Instance Variableを触らない
・従ってinitで初期化せず、Lazy instantiationで対応する
1.インスタンス内部のメソッドからも、原則構文でのプロパティ呼び出しを
使え、と言っているようです。確かにバグは減るでしょうが、これは、
nonatmic限定でないと速度に著しく影響する気がします。
また、スレッドセーフでない構造になります。
そもそもこういう書き方(デザインパターン?)はよく使われる物なのでしょうか。
2.スレッドセーフにするために、同一のインスタンス変数に割当された
二つのプロパティ(例:foobar+foobarAtomic)を用意するというのは
思いついたのですが、現実的な対策はどのようなものがお勧めでしょうか。

440 :
> nonatmic限定でないと速度に著しく影響する気がします。
プロパティへのアクセスを、1秒間に10の何乗回繰り返す気だよ。

441 :
>>439
>1.インスタンス内部のメソッドからも、原則構文でのプロパティ呼び出しを
>使え、と言っているようです。
ARC 以前はそれによってメモリ管理のバグを減らせたんでしょうけど、
そのような副作用を利用する考え方は間違ってると思います。
プロパティである必要がないものまでプロパティにするのは有害な場合もあるでしょう。
スレッドセーフに関しては、個々のプロパティのレベルでスレッドセーフにしてもあまり意味がなく、
オブジェクト全体、あるいはもっと大きな単位で考えるべきだと思います。
ので、プロパティは基本的に nonatomic にしてます。

442 :
>>441
じゃあ、なぜデフォルトはatomicなんだろう?
まだ、主流の考え方ではないよね。

443 :
言語のデフォルトは一度決めちゃうと簡単には変えられないので、あんまり関係ないと思う。
UIKit のヘッダ見てるとほとんどの @property は nonatomic 宣言されてるよ。
Foundation や AppKit も見てみたけど、@property ほとんど使われてない…。

444 :
>>443
UIKitは等は可能限りチューンするのがOS開発者の義務だろ。
FoundationやAppKitの時代は、、、
CoreDataぐらいのヘッダを見るのがいいと思うよ。

445 :
NeXT時代のフレームワークなんだから

446 :
Carbonさんのお役目もそろそろ終わりのようです。
http://www.appleinsider.com/articles/12/02/18/mountain_lion_focuses_on_cocoa_drops_x11_and_deprecates_carbon.html

447 :
>>438
遅くなりましたが、ありがとうございました。うまく出来ました。

448 :
以下を実行するとシミュレーターと実機では異なる結果が出力されました。シミュレーターでは正しく出力されるので書き方は間違っていないように思うのですがiOSのバグでしょうか?
Xcode 4.3
iOS Deployment Target 5.0
出力結果
iPhone 5.0Simulator : 2012-02-21 04:06:03 +0000
iPhone4 iOS 5.0.1: (null)

NSString* dateString = @"Tue, 21 Feb 2012 04:06:03 GMT";
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"eee, dd MMM yyyy HH:mm:ss Z"];
NSDate* date = [formatter dateFromString:dateString];
NSLog(@"%@", date);

449 :
NSDateをそのまま%@でログ出力するとどうなるん?

450 :
タイムゾーンがGMTになってるんじゃ

451 :
>>449
最後の2行を↓に変えても結果は同じでした。
NSLog(@"%@", [formatter dateFromString:dateString]);
>>450
3行目に↓を入れてみても結果は同じでした。
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
実機とシミュレーターで挙動が変わるのが困ったところです

452 :
nullってことはNSDateの生成に失敗してるってことかな。
もっと単純なNSDateを生成してログ出して見れば?

453 :
[NSDate date]を実行するとシミュレーターでも実機でも正しく動作しました
NSDateFormatterを使った時に問題があるみたいです
シミュレーター
Log 1: 2012-02-21 06:38:59 +0000
Log 2: 2012-02-21 04:06:03 +0000
実機
Log 1: 2012-02-21 06:39:32 +0000
Log 2: (null)
実行した処理
NSLog(@"Log 1: %@", [NSDate date]);
NSString* dateString = @"Tue, 21 Feb 2012 04:06:03 GMT";
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"eee, dd MMM yyyy HH:mm:ss Z"];
NSLog(@"Log 2: %@", [formatter dateFromString:dateString]);

454 :
Locale設定が必要だったはず

455 :
>>454
ありがとうございました
以下を加えたら実機でも正常動作しました
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];

456 :
10.5,10.6,10.7で同一バイナリ、バージョンによって処理を変えたいのですが
どのようにすればよいのでしょうか
10.5 -> 独自実装
10.6,10.7 ->新設されたAPIを呼び出す
のようなイメージです。
この場合、10.5のSDKを使えばよいのでしょうか?

457 :
NSStringFromClassを使って
目的のクラスがあるかどうかを確かめれば良い。
SDKは少なくとも10.6以降にしないと、その目的の新しいAPは使えない。
10.5対策の方は、ビルドの設定でBaseSDKを10.5にする。
そうすれば、多分、10.5でも動くはず。
でも、Xcode4.3では10.6以降しか設定できない。

458 :
間違えた。NSClassFromStringだった。

459 :
OSのバージョンチェックなら、NSFoundationVersionNumber定数を使った方がいいんじゃない?

460 :
IKImageEditPanelって使ってる人いますか?
データソースやデリゲートを設定してやってsetImageで受け取ると、画像は変化しているのですが、filterArrayの中身がいつ見ても空っぽになっています。
CGImageをやり取りするのは遅いので直接フィルタをかけようと思ったのですが、空っぽだと何ともなりません。
何か他に設定するものがあるのでしょうか。。。

461 :
>>456
それは「新設されたAPI」というのにもよるんじゃ?
既存のクラスにメソッドが追加されたのか、クラス毎新規なのか。
あと既存のフレームワークに含まれているのかどうかとか。

462 :
>>456
追加されたクラスは NSStringFromClass()、追加されたメソッドは respondsToSelector: で確認するのが基本。
OS そのもののバージョンチェックは、上記の方法ではできない場合に限るべき。

463 :
>>462
>NSStringFromClass
また同じことをw まさか>>457の人?

464 :
>>462
> respondsToSelector:
もしかして、instancesRespondToSelector:の間違い?

465 :
>>463
ごめん、コピペした。NSClassFromString() です。
>>464
NSObject プロトコル (クラスじゃなく) で宣言されてるインスタンスメソッドの respondsToSelector: ですよ。
https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/respondsToSelector:
クラスメソッドの instancesRespondToSelector: は今知った。

466 :
>>465
respondsToSelector:のことは最初から知っているのだが、
今回あえてrespondsToSelector:を使うということは、つまり、
インスタンスをallocする直前でNSClassFromString()でチェックして処理分岐し、
そのインスタンスのメソッドを呼ぶ直前でrespondsToSelector:でチェックして処理分岐するということなのか?
いくらなんでも、分岐が細かすぎるような気がするけど?

467 :
>>466
クラス自体が 10.6 で追加された場合 → NSClassFromString()
クラス自体は 10.5 から存在して、10.6 でメソッドが追加された場合 → 普通にインスタンス生成して respondsToSelector:
って一般的だと思うけど。

468 :
>467
+1。

469 :
>>467
> 普通にインスタンス生成して respondsToSelector:
respondsToSelector:の結果がNOだった場合、生成したインスタンスはどうするの?
破棄するぐらいなら、インスタンス生成前にメソッドの存在をチェックした方がいいのでは?

470 :
>>460
自己レスで恐縮ですが、どうも常に空の配列が返る仕様のようですね。
なぜこんなものがパブリックなプロパティなのかなー。
http://stackoverflow.com/questions/5928436/how-to-get-users-changes-using-ikimageeditpanel

471 :
>>462
> OS そのもののバージョンチェックは、上記の方法ではできない場合に限るべき。
今回は、OSのバージョンによって処理を変える話だと思うのだが、
OSのバージョンチェックが推奨されない理由を誰か教えて

472 :
人に聞く前に自分で調べたら?
https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/cross_development/


473 :
instancesRespondToSelector:というのがあってだな

474 :
>>472
そのドキュメントに書いてあるとおり、NSClassFromString()やinstancesRespondToSelector:で、
クラスやメソッドの存在をチェックするだけだと、まれに互換性を解決できないケースがあるので、
NSFoundationVersionNumberやNSAppKitVersionNumberを使って、OSバージョンを直接チェックする必要がある。
ってことだよね?
だから、クラスやメソッドを個々にチェックせずに、いきなりOSバージョンをチェックしても問題ないよね?

475 :
>>469
そのメソッドがなければそのクラスを使わないなら +instancesRespondToSelector: を使えばいい。
けど、自分の経験では、そのクラスは使いつつ、他のメソッドとかでなんとかすることの方が多いので。
あと、「普通にインスタンス生成」と書いたけど、実際には IB で作ったり、引数で渡されたりすることも少なくないし。
>>474
例えば doSomething というメソッドが 10.6 で追加されたとして、
if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_6) {
  [obj doSomething];
}
と書いた場合、「doSomething が 10.6 で追加された」ことをいちいちリファレンスで確認する必要がある。
これが、
if ([obj respondsToSelector:@selector(doSomething)]) {
  [obj doSomething];
}
だったら、doSomething がどのバージョンで追加されたかを気にする必要がなくなる。

476 :
>>474
VersionNumberのチェックじゃ不正確、不十分でしょ。
ヘッダの定義値が将来にわたって「削除されない」「ずれない」保証もないし。
ヘッダにミスがあったら、そのSDKでコンパイルされたバイナリは全滅じゃね?
>>今回は、OSのバージョンによって処理を変える話だと思うのだが
この考え方がそもそも正しくない。
>>475が正しい考え方。基本runtimeに問い合わせるのが安全なバイナリを作る方法。

477 :
>>475
> 自分の経験では、そのクラスは使いつつ、他のメソッドとかでなんとかすることの方が多いので。
それは一般的な話じゃなくて、あなたの個人的な流儀でしょ?
> doSomething がどのバージョンで追加されたかを気にする必要がなくなる。
どのバージョンで変更があったのかは、気にしなければならないのでは?
そもそもその理屈だと、フレームワーク内の全てのメソッド呼び出しをrespondsToSelector:でチェックしなければならなくなるよね?
respondsToSelector:でチェックしてから呼び出すメソッドと、未チェックで呼び出すメソッドをどうやって区別してるんだ?

>>476
ヘッダーファイルが壊れる可能性を考慮して、それに備えたコードを書くのは基本的に無理でしょう。
「VersionNumberのチェックじゃ不正確」などと言うレベルの話じゃなくなるし。

478 :
>>476
> 基本runtimeに問い合わせるのが安全なバイナリを作る方法。
「NSAppKitVersionNumber10_6」はヘッダーに書かれた定数値かもしれないが、
「NSAppKitVersionNumber」はruntimeで設定される値だろ。
NSAppKitVersionNumberのチェックはruntimeに問い合わせたことにはならないの?

479 :
API有無チェックもシステムバージョンチェックも両方使うよ。
API追加されたけどバギーで使い物にならないから、バグ修正されたシステム
から使用とか普通にあるでしょ。

480 :
ヘッダにミスっていうのはどういう意味なんだろうか。
定数10とするところを、9としたとかそういうこと?

481 :
>>477
>それは一般的な話じゃなくて、あなたの個人的な流儀でしょ?
Apple も推奨してるんだけど…。まぁどうしても自己流がいいなら、好きにすればいい。
>どのバージョンで変更があったのかは、気にしなければならないのでは?
10_6 と書くべき所を 10_5 とか 10_7 と間違えた場合、リファレンス見ないとチェックできないよね。
でも、メソッドの有無なら、ソースの該当部分を見比べるだけで済む。
昔からあるメソッドか、追加されたメソッドかを意識する必要があるのはどちらの方法でも同じ。

482 :
>>479
言いたいことが書かれてた
追加されたばかりのAPIでバグがある場合にバージョン判定を用いて処理を分けたことがある
respondsToSelector: だと予期せずPrivateAPIを呼び出してしまうこともあるね
どれかにこだわらず状況に合わせて使い分ける必要があると思う

483 :
本来必要なのは
 ・OSやフレームワークバージョンによって処理を分ける
のではなく
 ・必要な機能、APIがサポートされているかによって処理を分ける
ことだと思う。
前者が必要なのは、せいぜいAPI側のバグ回避のケースくらいだろう。
バージョンベースの分岐には、そんなに信頼性あるとは思えないけどな。
複数のOSバージョンに対応させるなら、出来るだけ低いバージョンの環境を
基準にコードを書くよね?そうすると、バージョン違いのコード分岐なんて
ごく一部になる。そうじゃなかったら、それは設計が良くないと思う。
Appleがこっそりヘッダの修正するケースは、ヘッダの定義値とにらめっこ
するような状況にいれば普通に気がつく話だと思うし。

484 :
定数やC関数が増減したら、結局バージョンでチェックするんじゃないのかな

485 :
>>481
>10_6 と書くべき所を 10_5 とか 10_7 と間違えた場合、リファレンス見ないとチェックできないよね。
それは、単に定数値を書き間違えたのが悪いだけだろ。それに、ヘッダーに書かれている定数値はOSバージョンだけじゃない。
一般的に、定数値の書き間違えを含むコードの記述ミスの防止は、別途テストコードを書く事によって行っているんじゃないのか?
テストをせずに、ミスを無くそうするのは限界があるだろう。
>でも、メソッドの有無なら、ソースの該当部分を見比べるだけで済む。
リファレンスを見てチェックするのと、ソースを見比べてチェックすることの間に、いったいどれほどの差があるというのだ。
>昔からあるメソッドか、追加されたメソッドかを意識する必要があるのはどちらの方法でも同じ。
メソッドの動作が変更になったり、別のメソッドに置き換わったりするケースは意識しないの?
あと、さっきから「リファレンスなんか見たくない」って言ってるように聞こえるけど、
コードを書く時って普通にリファレンス見るでしょ?

486 :
>>483
>本来必要なのは
> ・必要な機能、APIがサポートされているかによって処理を分ける
>ことだと思う。
>バージョンベースの分岐には、そんなに信頼性あるとは思えないけどな。
話の内容を総合すると、同一のOSバージョンでも、実装されている機能が異なるケースがあるっていうこと?

487 :
答え自分で書いてるよね。
>メソッドの動作が変更になったり、別のメソッドに置き換わったりするケースは意識しないの?

488 :
SDK互換性ガイド[日本語]
http://developer.apple.com/jp/devcenter/ios/library/documentation/cross_development.pdf

489 :
関数はNULLと比較するのか。

490 :
>>487
同一のOSバージョンで、メソッドの動作変更はないだろ。
それに、動作変更になったメソッドは、いくらrespondsToSelectorを使っても判定できないだろ。

491 :
ユーザ環境で動きが違うケースは考慮しないの?
・別フレームワークで拡張されたケース、例:VideoDecoderAPIとかGPUの種類で違う動作
・ユーザが入れた機能拡張でランタイムに手が入ってるケース、
・ランタイムが管理者権限で動いているかどうか、例:アクセス出来るリソースの制限
・Sandbox内か否か、同上に加えて、AppleEventサポートとか
・ユニバーサルアクセスの補助記憶装置が有効か無効かとか、例:AppleScript系サポートの制限
普通に考えてOSバージョンは絶対じゃないし、あくまで機能の有無をランタイムに問い合わせするのが一番だと思うよ。

492 :
>>491
何を曲解し出してるんだ。
APIの有無チェックだけではAPIの動作の妥当性までは判らないから、
システムバージョンチェックの併用も必要という話なんだが。
プラグインや設定で動作が変わる物をシステムバージョンで調べる奴は居ない。

493 :
>>491
いったい何の話をしているんだ?
一度>>456に戻って読み直して来い。

494 :
会社の会議とかでもよくあるんだよな。
話の前提とか範囲とか無視して自分の意見を始める奴が出てきて、
結局何の決定もできない、みたいな。

495 :
かみ合ってないのは認めるけど。
なぜバージョンチェックが必要と考えたか
>複数のバージョンのOS環境をサポートするため
複数バージョンをサポートする場合の考え方
>低いバージョンの機能を基準にコードを起こすべき
>差分を最小にしてテスト工程を最小化
生まれる差分はどこに存在するか
>実装を分ける必要があるかどうかで分岐
実装を分ける必要はどこからくるか
>実行環境=機能の有無(範囲)に依存
だから「バージョンのチェックでは不十分」だし、「機能の有無で判定すべき」
APIチェックもそうだし、ランタイムへの問い合わせが基本だという話。
機能は環境と同じ。MacはiOSみたいに閉じた世界とは違う。カスタマイズさ
れた環境を考慮しないといけない。
納品するようなコードの考え方ってこうだと思うんだが・・・よそは違う?

496 :
>>495
だいたい、その通りの話だとは思うが、なぜ
> だから「バージョンのチェックでは不十分」だし、「機能の有無で判定すべき」
という一文が入るんだ?
そこだけ話が繋がっていないぞ。
> APIチェックもそうだし、ランタイムへの問い合わせが基本だという話。
バージョンチェックだってランタイムへの問い合わせだろうが。

497 :
なんか、これまでの話からすると、
『複数バージョンをサポートするために、リファレンスを見て設計を検討するのは、面倒だからヤダ』
と、駄々をこねているようにしか思えない。

498 :
いちいちageるな

499 :
agesageに一体何の意味が?
どっちでもいいでしょ

500 :
どっちでもいいと思うのなら喜んでsage入れとけばいいんじゃね

501 :
誰も彼もが専ブラを使ってるわけじゃないし。

502 :
あるクラスやメソッドがあるかないか、を判定するときに
NSClassFromString()/respondsToSelector:等を使えば、常に判定は正しい。
一方「OSのバージョンが○○ならある/ない」という知識を元にした判断の場合、
判定が正しいことが保証されるのは、この知識が及ぶ範囲のみ。
すなわちそのコードを書いてバイナリを生成した時点で知り得た知識での範囲。
というわけで、前者の方がより適用範囲が広いと言える。

503 :
>>502
>>494

504 :
h4KCJc2G0 = p7Ld3eXz0 かな。
バージョンチェックに固執してるのは、楽してテスト工程をさぼりたいってのが本音では?
メンテの手間を考えると、設計時にバージョンで分岐します、って書けばそりゃ楽だけどさ。
あとからバグが出て仕様書の追求で紛糾するのはやだよ。そんなコードサポートしたくない。

505 :
>>504
>>494

506 :
質問させてください。
NSImageViewの背景色を変えたいのですが、うまくゆきません。
またできれば、背景色を半透明にしたいと思っています。
どうやるのが良い方法でしょうか?

507 :
>>506
NSImageViewの背景色っていうのは、つまりIBで言う所のBorderのこと?
それをカスタマイズするには、NSImageCellのサブクラスを作って、drawWithFrame:inView:をオーバーライドかな。

508 :
>>507
ありがとうございます。
Borderはちょっと違うように思うのですが、IBで言うなら、たとえばNSTextFieldのBackgroundの項目です。

509 :
>>508
透明にしたいだけなら、
- (void)drawRect:(NSRect)rect {
[[NSColor clearColor] set];
NSRectFill(rect);
}
とかやればできるから、drawRectを見直すのがいいんじゃね?


510 :
>>509
それだと単に透明になって何も表示されないんじゃないか?

511 :
その後に描く命令を書けば

512 :
>>509
なんか話がずれてるぞ。
NSImageViewの話をしているのだから、グラフィックの描画を行っているのはNSImageCellだろ。
それとも、imageの描画ぐらいNSImageViewを使わずにNSViewをサブクラス化して、
-[NSImage drawInRect:fromRect:operation:fraction:]を使えと言いたいのか?

513 :
iOSでiCloudで同期するCore Dataの使い方を勉強しているのですが以下のサイトで基本的な解説を見つけました
http://goddess-gate.com/dc2/index.php/post/452
このサイトの5th stepの部分で@private部で
NSFetchedResultsController *fetchedResultsController__ ;
NSManagedObjectContext *managedObjectContext__;
と宣言しろとあるのですが、末尾の2つのアンダースコアに何か特別なしくみがあるように書いてあるのですが
その意味がよくわかりません。これをつけると何が変わるんでしょうか?
またこのしくみをつかうとiCloudでの過剰な同期を避けられるというように書いてあるんですが、やはりこれを
使ったほうがいいでしょうか?この宣言がなくても動作はするようなのですが...

514 :
チラ見だけど
__ なしだとKVCで何度もマルチスレッドで参照されちゃうから
て書いてるような気がする

515 :
Cocoa Bundleでプラグインを作る場合、
アプリ本体→10.5SDKでビルドされたもの
プラグイン→10.7SDKでビルド
これって不具合とか起こる?

516 :
>515
起こせる

517 :
10.7未満で未実装のAPIを呼んだらNG
あとは-mmacosx-version-min次第か

518 :
>>513
ようするに、変数名が"fetchedResultsController"でなければ、何でもいいということなのかな?
もしくは、
+ (BOOL)accessInstanceVariablesDirectly {
return NO;
}
を実装すれば済むとか?
なんか、微妙に断片的なコードで、チラ見しただけだといまいち良く分からない。。。

519 :
とりあえずKVC経由で意図せずに外部からアクセスされるのを防ぐ、ということのような。
>>518
accessInstanceVariablesDirectly だと、特定のインスタンス変数に関してNGだが
その他はOK、みたいなときに困るんじゃ? all or nothing な設定というか。

520 :
int i;//ループカウンタ
for (i=0; i<roop; i++) {
//下記のメソッドでframeサイズを決定して描画しています
WebView *webView = [[WebView alloc] initWithFrame:[self webViewRect:i+1 all:roop]];
[webView setMainFrameURL:[[urlStringArray objectAtIndex:i] string]];
[scrollView addSubview:webView];
[webView release];}
//こちらのメソッドは、分かりにくい事になっていますが、ウインドウサイズと描画するWebViewの個数に合わせて、各WebViewのframeの大きさを決定するようになっているメソッドです
- (NSRect)webViewRect:(int)returnvalue all:(int)a
{ NSSize winSize = [window frame].size;
NSRect rect;
int column=0;
do {column++;} while (column*column < a);
int b=returnvalue%column;//何個目の列か(結局1を引く事になるが、分かりやすさのため無視する)
if (0==b) {
b=column;}
int c=returnvalue/(column+1)+1;//何個目の行か
rect.origin.x = (float)(b-1) * (winSize.width/(float)column);
rect.origin.y = (float)(c-1) * (winSize.height/(float)column);
rect.size.width = winSize.width/(float)column;
rect.size.height = winSize.height/(float)column;
printf("%f,%f,%f,%f¥n", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
return rect;}
というようなコードの結果として、ページが表示されるのですが、なぜか、
http://iup.2ch-library.com/i/i0592972-1332292095.png
このようにバグってしまうのですが、何が原因なのでしょうか。教えてください。



521 :
webViewRectの上から下まで全ておかしい。とだけいっとく。

522 :
根本的な解決ではないのですが、InterfaceBuilderを使って、静的に一枚webView(hiddenフラグを立てて)を貼っておいたところ、なぜかバグらなくなりました。ありがとうございました。

523 :
マクロで、SDKのバージョンを表しているものってありましたっけ?
SDKのバージョンによって、特定のコードの箇所を#ifでコメントアウトしたいのですが。

524 :
>> 520
> [scrollView addSubview:webView];
NSScrollViewにaddSubview:はダメだろ

525 :
>>523
MAC_OS_X_VERSION_MAX_ALLOWED とか?
http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
でも、普通はそんなの使わずに、最新の SDK を使って、respondsToSelector:
などで場合分けすべき。

526 :
いやいや、マクロで動的処理分けは出来ないよ

527 :
>>526
いやいや、静的に処理分けする話なんだろ。きっと

528 :
base SDKのバージョンが変わりうる場合はそういうマクロでメソッドの定義の有無を分けたりするな

529 :
>>525-528
えっと静的なコンパイルの処理分けです。
具体的にはあるバージョンのSDKから有用な定数変数が導入されたので、
それが定義されてるバージョンではそれを使い、そうでないバージョンでは
適宜宣言をして使うということをしたいのですが。
で、状況によってSDKのバージョンも変えたいというわけで。
MAC_OS_X_VERSION_MAX_ALLOWEDはいいかもしれないですね。
とここまで書いて、
もしかしたら動的にCFBundleGetDataPointerForName()とかで動的にシンボルを
チェックしてほげほげしたらいいかな???

530 :
動的処理振り分け
追加されたクラス、メソッドと同等で同名のものをバンドルにまとめる
そのバンドルを内包し、起動時に必要ならバンドルをロードする
とすれば本体側は振り分け不要
だけど、C++のoperator overloadと一緒でバグなどの時に無駄に時間を取られる可能性もある

てのを思いついた

531 :
将来的にAppkitとUIKitって統合されたりしないのかな

532 :
しねーよ。

533 :
UIKitでMacアプリが作れるようになる可能性はあるかもね。

534 :
UIViewの多機能ぶりがすごいからな。
NSViewさんの立場がないぜ。

535 :
UIWindow が UIView のサブクラスなのはビックリだけど

536 :
NSWindowのアイコン+タイトル文字列のコンポーネントをちょっと左にずらしたり一時的に非表示にしたいんだけど
どうすればいいかなー

537 :
>>536
あれらもビューだから無理矢理やれば可能かと

538 :
>>537
無理矢理<ここw
NSWindow の contentView があってのがあというのが美しいと思うんだけど
UIView なんだから UIView の中に UIWindow 入れれるかと言うとなんか変だし。まあ、Expose のようなの簡単にできるんだったら便利か

539 :
>>536
アイコンやタイトルを非表示したいというのはまだ分かるが、「ちょっと左にずらしたい」っていうのは一体なんのために?
ちなみに、NSWindowにはそんな器用なことする機能はないので、titleに空文字を設定するなどしてタイトルを非表示にしてから、
手動でタイトルバーの位置にアイコンとタイトル文字列を描画するしかない。

540 :
NSWindow.h
id _contentView;
id _borderView;

+ (NSButton *)standardWindowButton:(NSWindowButton)b forStyleMask:(NSUInteger)styleMask;
- (NSButton *)standardWindowButton:(NSWindowButton)b;

この辺りいじってみたり、subviews取得してみたり。
_contentViewなんかはobjc-runtimeのAPI使えば取れる。

541 :
>>540
contentViewは公開のアクセサあるよ

542 :
タイトルバーをいじるなら、contentViewじゃなくて、borderViewの方だろう。
borderViewは非公開のアクセサあるよ。
とはいえ、たしかタイトル文字列は独立したViewではなく、タイトルバーのグラフィックの一部として描画されてた気がする。
結局、手動でタイトル文字列を描画するハメになるなら、非公開APIを使う必要ない。

543 :
タイトル空にして
-standardWindowButton:
のスーパービューにビュー乗っければ何とかなったりしそうな気がしたりしなかったり
手動で描くとか面倒だしNSButtonでimageとtitle設定すればそれなりになるでしょ

544 :
手動で書くと右クリックメニューの生成もやらにゃいかんのでは?
地味に面倒そうだなここ

545 :
自前のタイトルバーは、絶望的に難しいので諦めた記憶が。
iTunesのミニプレイヤーみてるとAppleは卑怯だと感じる。

546 :
QTプレイヤーでフルスクリーン時に出るフローティングコントローラーもどきは
自前でNSWindowから作ったことあるよ。
NSWindowは透明にして上に貼りつけたNSViewでウインドウもどきを作って。

547 :
>>545
 まあ、アップルのフレームワークは、社内でじっくり熟成、運用してから公開するんやけどな。
他の会社みたいに、自分で使い物しない物を安易に公開しない。

548 :
質問です。ドキュメントベースアプリケーションで、xibファイルに配置したGUIが反映されない現象が起きてしまい、
色々調べてみて、クリーンアップやらなんやら試してみたのですが上手く行かず、困っています。
しかもアプリを起動して新規ウィンドウが表示されたときと、アプリを起動したままファイルを読み込んだ時はしっかりと
反映されているのですが、アプリを終了した状態でファイルを読み込んだときは反映されないというよくわかんない状態です。
もし分かる方がいましたら、よろしくお願いします。

549 :
>>548
DebugとReleaseに新しいのと古いのが一つづつある

550 :
>>548
> アプリを終了した状態でファイルを読み込んだときは反映されない
それって、どういう意味だ?
アプリを終了した状態なら、そもそもファイルを読めないだろ。
ちなみに、そのxibファイルって、ローカライズとかしてる?
それから、「xibファイルに配置したGUIが反映されない」って、具体的に言うとどういう状態?
たとえば、NSButtonを配置してもnibファイルを読み込むとそこが空白になるとか?

551 :
おぉ、素早いレスありがとうございます。
>>549
やっぱりそういう感じですよね…IBOutletしていないNSBoxとかまで表示されてなかったので、
古い方を認識されていたんだなぁ…ちょっと試してみます。
>>550
なんというか、Excelとか起動してなくても、保存したファイル開こうとすると自動で起動してファイルの
内容表示するじゃないですか。そのパターンの場合のみ不都合が起きます…
ローカライズはしてません。上でも書きましたが、IBOutletで接続してあるとか関係無しに、配置した物が
全て消えます…

552 :
>>551
なんかそれは、>549の言うように、どこかに別バージョンのアプリが存在しているように思えるなぁ
> 保存したファイル開こうとすると自動で起動して
ファイルを開こうとするとアプリが起動するわけだが、
その起動したアプリを「アクティビティーモニタ」で選択して「詳細を表示」とやって、
「開いているファイルとポート」タブを選択すると、そのアプリのファイルパスが分かるはずだ。
確認してみろ。

553 :
>>552
Dockにあるのをコマンドクリック

554 :
>>552 >>553
旧バージョン見つかりました 笑
それを削除してもう一度試してみたところ、変更が全て反映されました!!丁寧な解答ありがとうございました!!

555 :
iTunes等で動画をフルスクリーン再生していても,さらにその上にアプリのウィンドウを表示したいのですが(Growlのように),何か方法はありますか。

556 :
>>555
どうやってフルスクリーンにしているかによるかな?
ディスプレイを占有してるなら難しいが、
NSWindowを画面いっぱいに広げてるだけなら、
NSWindow.levelを設定すれば、フルスクリーンなウインドウより手前にウインドウを表示させることはできると思う。

557 :
>>556
ありがとうございます。NSWindowのlevel試してみます。

558 :
>>555
NSWindowのlevelのみでは,Lionのフルスクリーンではうまく動作しませんでしたが,その後も色々と検索した結果,
[window setLevel:kCGMainMenuWindowLevel-1];
[window setCollectionBehavior:NSWindowCollectionBehaviorStationary|NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenPrimary];
及び
info.plistの"Application is agent (UIElement)"をYES
とすることで,フルスクリーンで動画を再生している場合でも,常に手間に表示
することができました。
ありがとうございます。
"Application is agent (UIElement)"をYESとすると,Dockアイコンが消えるので,
これは問題といえば問題ですが…

559 :
以下の画像のウインドウの右側のように、項目ごとの情報を縦に並べて色つきで表示するには、
どのVIewを使うのが一般的なのでしょうか。
http://a1.mzstatic.com/us/r1000/082/Purple/76/b5/83/mzl.oarwiktb.800x500-75.jpg
NSCollectionViewでbindingを使って実現しようとしたのですが、
縦一列に並べたいのに横方向にも空のタイルが並んだり、
連続する項目を同じ色にできなかったりと、目的が違うようです。

560 :
CollectionViewの機能が使いたいんじゃなきゃ(ソートとかドラッグドロップのアニメーションとか)
NSTableViewにするんじゃないかな?
行ごとに色付けるなら私ならwillDisplayCellのdelegateの中でやる。

561 :
>>560
おお、NSTableViewでカラム1つ、ヘッダー無しにしたらできました。
感謝です!!

562 :
> NSTableViewでカラム1つ、ヘッダー無し
それなら、NSMatrix使うのといっしょなんじゃ?

563 :
Document-Basedかつ完全にビューワーアプリで、Versionsの機能いらないんだけど、どうしても外せなくて困ってます
特にウィンドウに「 - Locked」とか付くのを外したいのですが、
どうやって「このドキュメントはVersionsに対応してないドキュメントだ」って明示的に指定するのでしょうか…

564 :
>>563
Documentクラスに書いてある
+ (BOOL)autosavesInPlace {
return YES;
}
これを消すかNOを返せば良いかと。

565 :
>>564
ありがとうございます!

566 :
今更だけどBlocksって便利だな
気をつけないとBlocks内にだらだら書いてしまうけど

567 :
iOSの写真アプリをMacに移植したいんだけどうまくいかないっす
trackSwipeEventWithOptionsとか使えばいいのはわかるんだけど、イマイチうまくいかない…

568 :
amazonでページトップの
おすすめ商品を見るにはサインインしてください。 のサインインへ移動した後の
ページで読み込み完了が非常に遅く(十数秒)になります
webView:resource:willSendRequest:redirectResponse:fromDataSource:
でロードしている物をしらべてみると
mercury9.swfを呼び出しているところで遅くなります
単独でmercury9.swfにアクセスするとすぐにロード完了します
safariでは問題ありません。
なにか特別な処理が必要なのでしょうか?

569 :
Cocoaビギナーです。
球体のリストアイコンを自作アプリでも使用したいのですが、
どうやったら表示できるのでしょうか?
たとえば、システム環境設定 > ネットワーク設定画面では、
 ○ Ethernet
 ○ AirMac
 ○ FireWire
のようなリストが表示されます。
各項目の左端に、接続中の場合は緑色、切断/未接続の場合は
赤色の球体アイコンが表示されます。
このアイコン(画像イメージ)は、Cocoaのライブラリにあるのでしょうか?
それともカスタムセルで描画系APIを駆使しなければならないのでしょうか?
キーワードだけでもよいので、ご存じの方は教えてください。

570 :
画像を自分で作ってリソースとして登録しておくんだよ。
で、NSImageViewなりで状況に合わせて画像をセットするんだよ。
システムで用意された画像がどこかにあってそのパスを指定してもいいけど、
パスがいつ変更されてもおかしくないので、自分で作るんだよ。

571 :
ググりまくって、ようやく見つけました。
NSImageのimagedNamed:メソッドを使えばよさそうです。
ttp://tips4all.net/osx-application-red-orange-green-icons.html
>>570
最初はそう思ったのですが、いろんなアプリで使用されていたので
たぶん何か方法があるんじゃないかと思っていました。

572 :
おお、こんなのがあったんだ。
知らなかった。
こっちも勉強になりました。

573 :
>>571
ググりまくる前にNSImageのドキュメントをよく読めばよかったのにねw
マニュアルに書いてあるように10.6からサポートとか割と最近なので(古参のCocoa
プログラマ的にはw) そんなに知られているとは言えないかも。
実際には以前からいろいろ参照できるイメージがあったし、各種フレームワークの
中に入っているものは勝手に使えてしまったりするが、マニュアルに明言してなくて
サポートが不透明だったり。中の人は話し合ってやってるだろうからいいけどw

574 :
すみません、調べてもどうもよくわからないのですが
Dockアイコンにフォルダをドロップしたりして開けるようにするには
plistファイルにUTIをどう指定するべきなのでしょうか?

575 :
>>574
ん? ファイルじゃなくてフォルダなのか?
で、フォルダをドロップしたら、何が開かさるんだ?

576 :
>>574
public.folder (kUTTypeFolder)

577 :
>>574
Document OS Types に fold を指定すればいいだけだけど
それに加えて UTI に指定したいってことなの?

578 :
>>576,577
ありがとうございます。色々と試したところ何とかなりました。
>>574
フォルダの中の対応ファイル全部です。しかしこういう挙動は、App Sandboxのせいでそろそろ不可能かもしれませんね。
通常はユーザが開いたファイル以外を開くことはできないみたいですが、フォルダを開くとどういう挙動になるのかよく判ってないので試してみます。

579 :
>>578
> フォルダの中の対応ファイル全部です。
その場合、通常はフォルダの中にあるファイルを複数選択して、Dockアイコンにドロップすると思う。

580 :
>>579
確かに、そういうやり方の人だけが使うならフォルダに対応する必要もないですね…
ちなみに、ファイルの中身がたくさんあったとしても、自分でひとつひとつ選択して開いてますか?

581 :
>>580
フォルダのパスを渡して、「この中から必要なファイルを全て開け」ってやるようなアプリケーションを見た事がない。
例えばXcodeなら、あるフォルダ内の複数のソースファイルを編集できるけど、開くのは.xcodeprojファイル一つだけだ。

582 :
>>581
フォルダの中のそのアプリが対応しているファイル全部っていうことじゃないの?
画像ビューアだったらそういうのはあるよ

583 :
>>582,581
Preview.app なんてまさしくそうだね。というのを今知ったw

584 :
>>581
まあ、作る側としては選択してもらって開くのもいいですし、フォルダごと渡してくれても大丈夫にできれば
そのへんはユーザーの使い方次第かなと。
>>582
その通りです。他にはファイル名変更ツールなんかもこういう局面ありますね。

585 :
>>581
iTunesやApertureもフォルダドロップできるね。手元にないけどきっとiPhotoもできるんじゃないかな?

586 :
今までiOSをやってて、今回Macを初めて作ってるのですがつまってしまいました
NSMutableArrayにNSNetServiceBrowser: didFindServiceのところで値を入れても
numberOfRowsInTableViewで値をチェックするとNSMutableArrayが空になってしまいます
NSMutableArrayに格納しようとしているのはNSNetServiceですがNSStringでも同様でした。
iOSでは同じコードでちゃんと取得できたのにMacアプリではなにか違うのでしょうか?
よろしくお願いします
//ClientTableView.h
@interface ClientTableView : NSTableView <NSNetServiceDelegate, NSNetServiceBrowserDelegate>
{
NSMutableArray *_services;
}
続く

587 :
//ClientTableView.m
#import "ClientTableView.h"
@interface ClientTableView()
@implementation ClientTableView
@end
@property (nonatomic, strong, readwrite) NSMutableArray *services;
@synthesize services = _services;
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
_services = [[NSMutableArray alloc] init];
return self
@end
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
NSUInteger count = [self.services count];
return count;
}
- (void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didFindService:(NSNetService *)service moreComing:(BOOL)moreComing {

if ([service.name isEqual:self.ownName]) {
self.ownEntry = service;
} else {
[self.services addObject:service];
}
[self reloadData];
}

すいません、sage忘れてました・・・。

588 :
すいません、上の少し間違ってました
//ClientTableView.m
#import "ClientTableView.h"
@interface ClientTableView()
@property (nonatomic, strong, readwrite) NSMutableArray *services;
@end
@implementation ClientTableView
@synthesize services = _services;

589 :
_servicesが初期化されてないに一票。
initWithCoderが実行されてるか確認。

590 :
>>589
レスありがとうございます。
今、確認してみましたけどちゃんと通過していました。。。

591 :
NSLog(@"%@", self.services);
[self.services addObject:service];
NSLog(@"%@", self.services);
とかはしてるのかな。
あと initWithCapacity: 0 を試してみて。

592 :
>>586
> @interface ClientTableView : NSTableView <NSNetServiceDelegate, NSNetServiceBrowserDelegate>
> { ... }
> ...
> @end
>
> @implementation ClientTableView
> - (id)initWithCoder:(NSCoder *)coder { ... }
> @end
>
> - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { ... }
> - (void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didFindService:(NSNetService *)service moreComing:(BOOL)moreComing { ... }
>
とりあえず、NSTableViewDataSourceは、いったいどこに実装してるの?

593 :
>> 591, 592
レスありがとうございます。
Nibとコードの両方でNSTableViewを作ってたせいでおかしくなっていました。
NSTableViewがUITableViewControllerと同じように動くと勘違いしていたので、
NSTableViewだけを作ってそこで全部動かそうとしていました。
NSViewControllerを作って、その上にNSViewTableを置いて同じように動かすとうまくいきました。
色々とありがとうございましたm(__)m

594 :
まあ、20年前はお手本といわれ、いろんな所からパクられまくったA
ppKitもいろいろ古臭くなって来たな。

595 :
>>593
なんか、何も理解していませんオーラが出てるなぁ^^
最初、なぜ失敗したのか原因は分かっているのだろうか?
NSTableViewだけを作ってそこで全部動かすのは、十分可能です。
あと、NSTableViewは、UITableView相当だ。
それと、NSViewControllerの前に、NSWindowControllerの使い方をおぼえてくれ。

596 :
iOSだとUIWindowはUIViewのサブクラスになってるからなぁ。
意識しなくてもアプリは作れるし、影が薄いのは確かだ。

597 :
ようは、そもそも addObject: してなかったってことだろ。
なんで自分でそんなこと気づけないのか謎だが。

598 :
macでcanvas的なことをやりたいんだけど、quartz 2dを使えばいいの?
hello, worldなチュートリアルがあったら教えてくれ

599 :
Canvas 的って、こういうのか?
http://hmdt.jp/cocoaProg/AppKit/NSBezierPath/NSBezierPath.html
NSBezierPath は Quatz 2D の CGPath と同等だが。

600 :
>>598
通常であれば、NSViewのサブクラスを作って、drawRect:をオーバーライドしろ。
という話になるところだけど、もしかして、何か別のものを想像してる?

601 :
>>598
最近、ADCのサイトに翻訳ドキュメントが上がった。まあ、以前からMOSAのサイトでも配布しているけど。
ただ、iPhone版なんで座標系に注意な。

602 :
あれ?
NSStringっていつからリテラル形式で日本語扱えるようになったっけ?

603 :
>>599
おお、ベジェをサポートしているのか
>>600
なるほど!
Canvasクラスみたいなものがあるわけじゃなくて、NSViewにドローイング機能が備わっているのね
まさに知りたい情報でした
>>601
日本語版が出ているんですね、探してみます

みなさんありがとうございます

604 :
> NSViewにドローイング機能が備わっているのね
いや、NSView は Drawable なコンテキストを持ってて、それを表に描写するというか。

605 :
>>603
なんか、いろいろと、アレな状況ですね^^
Canvasという名のクラスはないけど、NSGraphicsContextクラスがCanvas相当になります。
>604の言うとおり、NSViewにはドローイング機能がありません。
>599が言っていたNSBezierPathクラスなどが、NSGraphicsContextという名のキャンバスに絵を描いてくれます。
NSViewは、NSWindow内でグラフィックを描く領域(キャンバスの一部分)を表しているだけ。

606 :
>>604
あと、NSViewはDrawable なコンテキスト(NSGraphicsContext)を持っていません。
NSWindowがDrawable なコンテキスト(NSGraphicsContext)を持っています。
たとえ、NSViewにグラフィックを描いたとしても、
ビューではなく、ウインドウにグラフィックを描くという形になるから。

607 :
レス遅くなりすいません。
>> 595
NSWindowControllerの上にNSTableViewをのせるということですか。
何個かサンプル見たけどNSWindowControllerを使ってるのがなかったので重要視してませんでした。ありがとうございます。
>> 596
そうなんですよね。MacアプリはView単位じゃなくて、Window単位なので混乱してました。
正直、iOSでUIViewController使いまくってたので、その上でオブジェクトを管理するのに慣れてしまってますw

608 :
>>607
根本的に view と view controller の区別がついてないように見えるんだが…。
Mac の Cocoa ではどんなオブジェクトでも controller になれるから、かえって分かりにくいってのはあるけど、
あえて言うなら iOS の UIViewController に相当するのは NSWindowController だと思うよ。

609 :
 NSViewControllerは後付けやしな。レスポンダーチェーンに入れてやるには
手動でつないでやらないと行けない。
 
Macアプリについては、skimとかcot editorとか、それなりの規模のアプリの
ソースコードがネットでGetできるから一度読んだ方がいいと思う。


610 :
>>607
どうやら、View階層というものを理解してないみたいだね。
そもそも、ViewControllerの上にViewが乗ったりはしない。
これは、MacOSXでもiOSでも同じことだ。
ViewとViewControllerは、「関連している」程度の弱い関係しかない。

611 :
そういえばMacでは、NSObjectを継承した自前ControllerでloadNibNamed:やってawakeFromNib:でごにょごにょやって、、
とかやってたな。

612 :
>>604, 606
やってみて理解しました。ドローイング機能を持っている、というより、ドローイングさせる感じですね。
Canvas系のコンポーネントがあって、そのpaintイベントハンドラを継承すればグラフィックコンテキストの取得と描画ができるんだとばかり思っていましたw
グラフィックコンテキストの扱いが、.NETやJava等々と違いますね
>>605
なにせ、Xcodeを初めて起動したので^^;

613 :
>>612
.NETやJavaを知っているなら話は早い。
NSViewクラスのdrawRect:メソッドが、paintイベントハンドラ相当だと思えばいい。
そして、paintイベントを発生させるのが、setNeedsDisplay:などのメソッドだ。

> グラフィックコンテキストの扱いが、.NETやJava等々と違いますね
実は、大差ない。
C言語のCGContextRefをObjective-C言語でラッパーしたのが、NSGraphicsContextクラス。
NSBezierPathなんかを使った場合でも、内部ではCGContextRefが使用される。
CGContextのリファレンスを見れば、たぶん事情を理解できるだろう。
NSGraphicsContextクラスが持つ、currentContextというプロパティの存在がポイントで、
NSBezierPathなどがグラフィックを描画しようとした際は、内部でその都度currentContextを参照するようになっている。
これにより、ドロー系のメソッドの引数からNSGraphicsContextの指定を省略できるようになっている。
NSGraphicsContextのcurrentContextは、NSViewのdrawRect:が呼び出される直前に、フレームワーク側で自動的に設定される。

614 :
>>613
そういうことだったんですか!
どういう仕組みでコンテキストを操作しているのか不思議だったんですよね
勉強になりました、ありがとうございます^^

615 :
>> 608
>> 610
UIViewControllerやNSWindowControllerがViewを管理するっていう認識でした。
あくまでもViewの管理を示している(集中させる)オブジェクトという位置づけなんですね。
>> 609
ありがとうございます。テンプレのサイトとあわせてもっとソースコード見て勉強します。。
>>611
特にiOSではスタート地点までテンプレでお膳立てされてるので、自前のControllerとか使われてると
「なんでここでViewの管理してんだ?そんな必要あるのか?」ってなってました(^^;;
いろいろと勉強になりました。ありがとうございますm(__)m

616 :
いつの間にやらiOSのViewController系が便利になっちゃってるんだな…良い意味で統合してもらいたいぜw

617 :
MacOS用で正規表現が標準で使えるのはいくつから?

618 :
10.6

619 :
正直NSCellはいらん。

620 :
>>616
カメレオンといって、UIKitをMacで動かすSDKはあるにはある。

621 :
MacBookのマイクから音を録るにはどうしたらいい?
Core Audioってのが音を再生する機能を持っているってのは分かったけど、マイクから音を取り込むのがサッパリ分からんです

622 :
>>621
QTCaptureDevice が QuickTime Player での Recording のベースでしょう。たぶん
https://developer.apple.com/library/mac/#samplecode/MYRecorder/Introduction/Intro.html
どう取り込んでどうするつもりなのかサッパリ分からんですけど

623 :
>>622
サンプルコードキタ━(゚∀゚)━!
音声編集ソフトを作るつもり

624 :
書き途中で投稿してしまった
>>622さん、ありがとう!

625 :
>>621
AudioToolboxのAudio Queue Servicesとかはどう?

626 :
AudioUnitで再生する方法を知ってるならほとんど同じだよ
入力用のAudioUnit(kAudioUnitSubType_HALOutput)を作り
ユニットの入力側(kAudioUnitScope_Input)をenable,出力側をdisableして
使う入力デバイスのAudioDeviceIDをセットする、という感じ
あとはAudioOutputUnitStartしてコールバックでAudioUnitRenderを呼ぶだけ
まあCoreAudioよりは高レベルなAPI使ったほうが楽かもしれんけどね

627 :
>>625-626
選択肢がいろいろあるんですね
HALにアクセスとか胸熱だわぁ

628 :
>>627
今ならAVFoundation使って、iOSとコード共用しないでどーする。

629 :
>>628
また新しいの来たw
cocoa touchはノータッチ なんちて
いやいや、iOSとコード共用するっていう発想は無かったわ
並行して勉強してみるかな

630 :
iOSでもAudioUnitでやればいいよ。
Mac版のサブセットみたいなもんだから。

631 :
AVFoundationとかiOSで動いても10.6ですら動かないゴミはイラネ

632 :
ええ、もう10.6もばっさり切り捨ててですね。
サンドボックス化してですね。AppStoreな訳ですよ。

633 :
デフォルトの入力デバイスでひたすら録音してALACで保存するサンプル
AudioUnitをつかってる、たぶん10.4以降でうごく
煮るなり焼くなり好きにしてくれ
http://pastebin.com/z3gxM0Eq

634 :
ComponentMgr使いこなしてる!
...今、10.6と10.7の割合ってどの位なのかな


635 :
おっさんの余計なお世話かもしれないけど、今から作るなら
QTKit含めQuickTime関係に今から手は出さない方が良いと思うよ。

636 :
>>633
保存しました
助かるー!
>>635
ほぅ

637 :
>>636
AV Foundation is the recommended API for all new development involving time-based audiovisual media.
AV Foundation is also recommended for transitioning existing applications that were based on QuickTime or QTKit.
https://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html#//apple_ref/doc/uid/TP40010355-SW5

638 :
>>637
Thx

639 :
AudioUnit : C, 10.2以降
Audio Queue Services (AudioToolbox) : C, 10.5以降
QuickTime : C, 64bit不可, iOS不可, 新規開発は非推奨
QTKit : ObjC, 10.5以降, iOS不可, 新規開発は非推奨
AV Foundation : ObjC, 10.7以降

640 :
QTKitもディスコんかあ。
自社のiMovieとかFinalCutとかQTime/QTKitは捨てて、AV基礎で作ってんのかな。

641 :
>>640
iMovieはAVFoundationにほぼべったり、というかiOSのiMovieの副産物だろ>AVFoundation
CoreMediaとかまだまだ公開されてないところが多いけど時間の問題でしょ
FCPもかなりAVFoundationよりだけど、あっちはかなり難航してる気配があるね。
過去の資産になってるCodecとかが沢山あるので、それらをどうするかが多分問題。
QTに留まる≒64bit化をあきらめる だからね。現在は32bitのサブプロセス上げて、
QT関係は全部そっちに追い出す事で対処してるけど、いつまでその手法に留まるのか。
このへんどうくるのかが来週の楽しみでもある。

642 :
>>639
FCPとかに手を突っ込んでもいいなら10.6でもAVFoundationが、、
再配布用のライブラリ供給してくれれば、AVFoumdationに以降しやすいと思うんだけどね。


643 :
QTKitからAVFoundationへの移行はできてもQuickTimeのReplaceはまだまだ無理
将来的にはもっと高機能になることを期待している

644 :
>>643
高機能化じゃ無くて低レベルAPIの公開な。Core Mediaは今回出るかもね。

645 :
メディア関係のAPIたくさん有るねー
中の人も早く統一したいだろうね

646 :
CoreGraphicsぐらい波形が弄りやすいのたのんま

647 :
 単に動画を再生したり、内蔵カメラを動かすのにiOSでいうMediaPlayer Frameworkレベル
のものがないとつらいと思うが。QTKitで変に高度化した部分を切って整理するんかな?


648 :
未だ自社製品でさえQuicktimeから脱却出来ないなんて
よっぽど凄かったんだな、QuicktimeFrameworkって奴は。

649 :
最近まで(QTKitじゃなくて素のQuickTimeが)拡張されてたし
結局QTの利点ってあらゆる機能が網羅的に実装されていること(ただし使いやすいかは別)と
20年ほど蓄積されてきたコード資産があるってことだからね
中途半端なものを濫造しても置き換えは進まない

650 :
QuickTimeは単なるフレームワークじゃないからね。
ComponentManagerを核にしたダイナミックライブラリをを扱う仕組み(これも乱造し過ぎだけど)が
非常に良く出来ていてこの上にいろんなメディア乗せてったからね。
3Dレイヤーとか流行らなかったけどFlashみたいなマルチメディアレイヤー(当時のFlashを変換するcodecとかね)
入力関係のレイヤー等なんでも取り込んだから。
よく、あんなものWindowsに移植したよ。メモリマネージャとファイルマネージャ乗せて、
実質MacOSの互換フレームワークになってる。
あれの64bit化ができなかったのがやっぱり痛いでしょう。中心人物失っちゃったのが、、、
WindowsPhoneに見切り付けて帰ってきてくれると良いんだけど。今度のWWDCの目玉だったりしたら歓喜

651 :
>>644
いつの間にかハードウェアサポートのサンプルコードが出てた。なんと10.7用。
CoreMediaIO
https://developer.apple.com/library/mac/#samplecode/CoreMediaIO/Introduction/Intro.html#//apple_ref/doc/uid/DTS40012293
The CoreMediaIO Device Abstraction Layer (DAL) is Rogous to CoreAudio’s Hardware Abstraction Layer (HAL).
Just as the HAL deals with audio streams from audio hardware, the DAL handles video (and muxed) streams from video devices.
This SDK will demonstrate how to create a user-level DAL plugIn, a user-level “assistant” server process that allows the device to
vend its video data to several processes at once, and a kernel extension (KEXT) for manipulating the device’s hardware.

652 :
>>644
そこは分かってる。低レベルAPIの公開=俺にとっては高機能化だと勝手に脳内変換してただけ。
これからもっと細かいとこいじれるようになるといいなってことで。
Mountain Lionで載って来るものはだいたい見えたからまたその次にも期待している。

653 :
>>652
ともあれ、独自コーデックの追加ができないとつらいよね。

654 :
>>653
独自コーデックって?

655 :
独自というか外部コーデックじゃないのかな? perianみたいな奴
ここ見てQTKitをAVFoundationに移行しようと思ってテストアプリ書いて遊んでたんだけど
aviすら再生できないので無理だというのが分かっただけだった
iOSのをそのまま持ってきただけなのね
CALayerベースってのが面白そうだったんだけど当分ダメだね

656 :
>>654
独自コーデックだろ。開発側からしたら。
まあ、他社が作ったコーデックを使う開発もあるだろうけど、その他社にとっては独自。
たとえば、H.264の高速化支援をしようとしてもそれがQTXには追加できない。

657 :
 スレッドは急に止まれないを地で行っている嫌なフレームワークだ。FCPが嵌っている
のもこの辺りが原因かな?


658 :
>>656
高速化支援は、独自コーデックの追加なのか?

659 :
x264とか、mkv importerとか、それなりに
需要があるのに、開放されないのかな。

660 :
ハァーさっぱりさっぱり

661 :
7月の日付の入ったドキュメントが公開されるとか、、、

662 :
Rivision Historyを見ると単に日付間違いみたいだね

663 :
WebKitをタブブラウザ化して使うのにPSMTabBarControl使ってるんですけど
これを64bitでARC対応にしようとするとコンパイラを通らないんですが
いい方法はないでしょうか?

664 :
>>663
GitHubでForkして通るように直してPull Requestを投げる

665 :
今更ながらOSX10.3での話なんだけど、ダイアログなんかで文字列表示する場合、
改行コードってなんて指定したらいい?
10.6とかだと ¥r で改行されるんだけど、10.3では駄目みたい…

666 :
え、円マークになってるけど、"バックスラッシュ+r" ね、10.6は。

667 :
普通 \n だろ……

668 :
ごめん、徹夜で脳停止してたわ

669 :
毎時きっかりに走らせたいメソッドがあるんだけど
「毎時きっかり」を知るいい方法ってある?

670 :
>>669
現在時刻と走らせたい時刻の差でタイマー予約するのが普通と思うけど、
もっと精度要るの?

671 :
>>669
launchdを使う。

672 :
>>670
フレームワークで用意されてないかなと思って
あとスリープされたときどうしたらいいかわからん

673 :
>>672
スリープ解除はスリープするときにパワーマネージャにお願いして起こしてもらうんだよ、たしか。
IOPMSchedulePowerEvent() とか。
パワーマネージャは権限とかあってややこしいんだよね。

674 :
スリープ解除はこうすればいいのかな
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserverForName: NSWorkspaceDidWakeNotification
object: nil
queue: [NSOperationQueue mainQueue]
usingBlock: ^( NSNotification * aNotification )
{
[self タイマーセットし直し];
}];

675 :
ダメか
スリープ前に動かしたタイマーの止め方がわからん

676 :
>>675
状況がわからないのだけれど、timerをinvalidateしてもtimerが無効にならないのだろうか?
私は、NSWorkspaceDidWakeNotificationを受けて
[self.timer setFireDate:予定date];
で動かしていますが、これではダメですか?

677 :
新しいiTunesの画面みたけど中央上のボックスがタイトルバーに食い込んでる。
今時のcocoaだと簡単に出来るのかい?

678 :
>>677
それって、もしかしてNSWindowにNSWindowを重ねてるだけなのでは?
それなら、昔のCocoaでもできるよ。
ユーティリティのグラブで、ウインドウのスクリーンショットを撮れば確認できる。

679 :
ええっ(笑)
そんな力技で本家がアプリを作るかなあ(笑)
確かにウインドウ上部のマウスオーバーで
タイトルバーが出てくるアプリもあるけど、その変形かな。

680 :
>>679
Xcode4がそういう作りだったはずだよ。
グラブでXcodeウインドウのスクリーンショットを撮ると、
本当に選択したNSWiindowだけしか写らないので、タイトルバー直下の情報パネル(?)が消えちゃうんだよね。
で、いまグラブでもう一度試してみたら、全部写るようになっていた^^;;
グラブがアップグレードしたせいだろうか

681 :
>>677
ノッペラボウのwindowの中に全部自分で描いてるんでしょ。
スクロールバーとかも独自のデザインだし。クロスプラットフォームの
アプリケーションではよくある手法。

682 :
web上にあるフォームにプログラム側からブラウザを経由せずPOSTしたい(この言い回しは合っているのだろうか)のですけどどうすればよいのでしょうか。
プログラム側で受け取ったユーザー名とパスワードを使ってサービスにログインしたいのです。
WebViewのインスタンスをつくって(表示はしない)、コイツからjavascriptをどうこうすればどうにかなるのでは、と思ったのですがどうもよく分からず。

683 :
ぶっちゃけNSURLConnectionとかでPOSTするとか。

684 :
自分でHTTPリクエスト作って送信。ASIHTTPRequestとかAFNetworkingとか便利なライブラリがある。
parosなんかでキャプチャすればPOST内容分かるからそれ参考に。

685 :
>>683,684
方針ありがとうございます、試してみますです。

686 :
TextFieldの文字をURLエンコードしてサーバーにPOSTしたデーターがOS10.8だけ文字化けする
10.6や10.7では問題無いのに、なんでや・・・


687 :
>>686
エンコードが正常に動かないのか、POSTが正常にされないのかわからないから誰も答えられない。

688 :
>>687
大変失礼いたしました。
わたくし、取り乱してしまいました。
どうやらエンコードが正常に動いていないようです。
NSString *encodeString = ( NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)str,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingEUC_JP);
ECU_JPのエンコード文字が欲しいのに、勝手にUTF8にエンコードした文字を返してきます。
でも毎回では無くて、画像をPOSTした後の日本語をPOSTする際のエンコードの時だけUTF8で返してきます。
OS10.6や10.7では問題なくて、10.8だけなんです。
UTF8でのエンコードなんて一切指定していないのに、なんでだろ・・・

689 :
>>688
エンコードがうまくいかないと考えるなら、
元の文字列のバイナリダンプとエンコード後のデータのバイナリダンプを
10.7でやった場合と10.8でやった場合を晒してみると良い。
1文字でも良いけど、2、3文字のが判りやすいかな?

690 :
Objective-c癖が強いなあ・・・。
しかも頑張って覚えても潰しがきかないから心が折れる・・・。
でもOSXでアプリ作るにはこれかJavaくらいしかないんだよねえ・・・。
頑張るか。

691 :
>>690
Javaはもうないと思うけど。
Javaがありなら、なんでもありじゃない?
デフォルトで実行できない言語環境
X codeでサポートされてないし

692 :
CocoaのJavaブリッジは大分前に廃止された

693 :
 潰しが効く言語というが、かつてのFortran/Cみたいなかんじで使われるのって
ほとんどないと思うけど。それに今はAPIやフレームワークの学習にコストがかか
るし。Javaにしたって、Androidとサーバーサイドじゃ全然違うし。


694 :
objective-cから入ってJavaはすごく楽だったよ。

695 :
Javaはobjcとcppのいいところ取りしたようないい言語だよね
実行環境があれだけど

696 :
プラットフォームの変化が激しいからねぇ
いちばん潰しがきくのはCOBOLだろ
(使ってる会社に入るのが超絶狭き門だが。銀行系とか)

697 :
うーん。ごめんなさい。
つぶしが利かない・・・の使い方が間違っていた。
>>695が言うとおり実行環境がないのが嫌くらいの意味でした。
結局会社ではWindows使わないといけないんだけど、
WindowsにはObjective-cの実行環境がないから
覚えてもなあ・・・って。
リファレンスもサンプルも充実してるし、
何よりMacでアプリ作りたいから頑張ります。
RSSリーダ、作りたいんだよね。無料の。

698 :
rssリーダにはたくさん競合がいるけど頑張れ。
たくさんの人に使ってほしいと思うより、
まずは自分の欲しいものを作るのが一番良い。

699 :
Twitter全盛のこのご時世、RSSはオワコンだろ。

700 :
お前はRSSを何だと思ってるんだ

701 :
>>697
Windows用にRuntimeもあるし、ビルド環境も作れるよ。
会社で使わせてもらえるかとかパフォーマンス的にどうかとかいうのは別の話だけど。
iTunesとかQuickTimeに(Windows上で)手を突っ込むとさらに色々、、、

702 :
>>701
ありがとうございます。
gnustep のことでしょうか?
明日、早速入れてみます。
ログの解析とかにしか使わないので大丈夫かと。
rssは取ってくるだけならできるようになりました。
あとは、UIですね〜♪
一番むずかしいところです。

703 :
ランタイムがあったところでAppleのフレームワークは存在しないだろ

704 :
GNUStepでなんとかしろとかいう話かね。

705 :
>>703
Safariとかにも入ってる。

706 :
最近MacのCocoaプログラミングやりたくなったんだけど、
iOSはAppleが公式で色々PDFでドキュメント公開してるけど、
Mac開発向けの資料ってどっかないの?

707 :
>706
OS X向けのドキュメントもApple公式のが大量に出てるよ。

708 :
というか元はそっちだもんな。

709 :
Objective-c Programming guideの第5版が出てた。
まだ4版訳すら出てないのに・・・。
諦めて5版の洋書買うかなあ・・・

710 :
>>709
ごめん、間違えた。
Programming in Objective-C, 5/e (Developer's Library)
でした。

711 :
Core Image Filterを使うとき、パラメータ設定用にIKFilterUIViewを出したりフィルタのデフォルトの状態を
CALayerへ適用することはできるのですが、IKFilterUIViewでの変更がレイヤーに反映されません。
IKFilterUIViewの操作結果のコールバックを受け取るには、どうしたら良いでしょうか?

712 :
>>711
バインドでも使うんじゃね?
IKFilterUIViewの中に、NSObjectControllerが用意されてるわけだし。

713 :
OSXのCocoaで
UNICODEエスケープされたUTF8の文字列を
もとに戻す方法を探しているうちに朝がきて泣きそうです。。。
SBJsonってライブラリを見つけたけど
戻せませんでした。
どうやったらいいんでしょうか
OS 10.6.8
Xcode4.0.1

714 :
NSString unicode escape
でググればあるやん
http://stackoverflow.com/questions/2099349/using-objective-c-cocoa-to-unescape-unicode-characters-ie-u1234
CFStringTransformが好みだな

715 :
>>713
CFStringTransform

716 :
>>715
あら、かぶってた。

717 :
713です
最強のレスあざした
CFとかも勉強してみます
「NSString unicode エスケープ」でググッてました

718 :
CF系ってまだ使えるんだ。

719 :
>>712
なるほど…ありがとうございます。
ちなみに、単純に手動で(IKFilterUIViewを使わず)フィルタのパラメータを更新した時は
どうやってCALayerへ反映するのが普通でしょうか。

720 :
>>719
手動でパラメータを更新したなら、そのまま手動でCALayerへ反映すればいいのでは?
それに、NSObjectControllerはIKFilterUIViewとは独立して使用できるので、バインドを使ってもいいし。
おまえが何を作っているのか知らないので、具体的なことは言えないが、
やり方はケースバイケースでいくらでもあると思うぞ。

721 :
>>718
CFのCはCarbonじゃなくCoreだけど
Coreなんていらんから全てNSに実装してくれればいいのにねえ。ドライバとかは必要かもしれんが

722 :
 CF系なんて無くしたら、時間制約の厳しい音楽アプリとか、動画アプリとか作れなくなると思うが?
計測すればわかるがメッセージ送信のオーバーヘッドって積もり積もるとあんまり馬鹿にならないぞ?

723 :
そういう特殊な方面は必要だろうがなあ。それこそそこの部分だけCoreにしとけばええやん
NSのメソッドにありゃ別に無くてもいいっていうのが多いな。だから特にいらないってこと

724 :
CFはNSのベースになっているAPIだからね、NSがあるならCFを無くせるわけがないし、無くてもいいという議論にもならないと思う
使わないなら、ただその存在を無視すればいいだけだ

725 :
うーむ...
単に>>718を受けてのNSだけでもいいよねってだけなんだがなあ
使わないならって、
NSのメソッドにないNSのクラスにあたるCFリファレンスの関数あるからって話しだし(そもそも>>714のstackoverflowのCFStringTransformを薦めている人も言っているでしょ)、
それすら使わないならCFの存在自体わからんからどーでもいい話しで、筋違いの話しのよーな
議論する気なんてねーよ。雑談しているだけだけどな

726 :
>>725
「NSだけでもいいよねってだけなんだがなあ」って、NSだけじゃ足りないよねっていう話をしていたはずだろ?
> Coreなんていらんから...(以下略)
> (前略)...だから特にいらないってこと
おまえは、さっきから「CFはいらない」っていう話をしているようにしか聞こえないんだけど
CFに対して何か不満でもあるのか?

727 :
>>726
なんだかめんどくさいやつだのお
>>718を見てなんでそんなこと言うのかなというと、CFは使っていなくてNSだけでもやってんだろうな。わざわざNSにあるのにCF使うことも無いのが多いからわかるな
にしても>>714なことあるのはなんだかなあってことが凝縮されているんだよw
不満とかwめんどくさいやつ

728 :
なんだこいつID:wK+q2hdd0

729 :
ああ、不満があるならNSに対してだろうなw

730 :
めんどくさいID:wK+q2hdd0がいると聞いて飛んできました!

731 :
>>723
その必要な部分だけ抜き出したのがCore Foundationですが。

732 :
>>731
そうなの?>>724の言っているのと同じ認識だったんだけど
まあ全部比較しているわけじゃないので。そういうことならそうでいいよ
NSにメソッドありゃ別にCFいらんっ(=使わない)てだけで、何を俺が言ったCFいらないってのにムキになってんだかあ。そうか俺はそんなに大物だったのかw

733 :
>>731
あ、あなたに「ムキに」っていう表現は度がすぎたように思うので、あなた対してというのは取り消します。失礼しました

734 :
自分の理解できないものは要らんのだろ

735 :
なるほど、お前はそうなんだろうなw

736 :
発狂してる奴が居てワロタ

737 :
微笑ましいので続けてください

738 :
iOSでアプリリリースできたんでMac用の
プログラミングに挑戦しようと思うんだけど
書籍がほとんどないんだね。
iOSのヒレガス本は自分に合わなくて
必要なとこだけつまんで使ったけどあの本が一番良いのかな
萩原本は自分に合ったので結構読み込んだ。
あとIB使わなくてもなんとかなる?
作りたいのはGUIアプリだけど

739 :
>>738
HDMT本も役に立つ。ただ、待てるならあと1年ぐらい待った方がいいかもな。
予想だけど、10.9から、UIKitでMacアプリが作れるようになると思う。結構、
噂になってたりする。

740 :
後、「http://chameleonproject.org」みたいにUIkit互換のフレームワークはあるにはある。

741 :
IB使わなくてもなんとかなるけどアホな作り方としか思えない。

742 :
>>732
NSはCF内部で呼んでると思ってた。

743 :
>>739-741
ありがとう。立ち読みしてみる。
UIKitはよく出来てるなーと思ったのでさもありなんだなー
IB使ってる人って複数画面のプロパティとか一括で変えたい時どうしてるの?
自分はGWTからこういうGUIのツールキットに入ったから
anrdoidもWPFも極力コードで済まして
IDEの機能とかマクロとか利用してるんだけども。
XCodeってリファクタリングが若干弱いよね

744 :
>>743
ちまちまクリクリ変えるか、xibはテキストなので一気に変えられるようだったらそれで
そんな滅多にあることじゃないことを持ち出してリファクタリングがどうとか。初期化コードのごてごてした固まりがないコードの方がよっぽどリファクタリングしやすいと思うけど、それは個人の好みなんだろうな

745 :
>>743
> IB使ってる人って複数画面のプロパティとか一括で変えたい時どうしてるの?
そもそもそういう状況にならないなぁ
iOSならまだしも、Macだと「画面の切り替え」がほぼ無いから、複数画面にならない気がする。

746 :
>>739
> 予想だけど、10.9から、UIKitでMacアプリが作れるようになると思う。
それは無いだろ。
あるとすれば、「MacにiOSエミュレータが装備される」じゃないのか?
iOS版UIKitとMac版UIKitが別々になると、ユーザー側にも開発者側にもメリット無いしね

747 :
>>739
>結構、
>噂になってたりする。
どこで?

748 :
nibのアウトレット名もリファクタで書き変わる。

749 :
ヒレガス本四版

750 :
NSTableView というか NSScrollView のスクロールが終わって
「止まった瞬間」を検出したんだけど、いい方法ある?

751 :
>>750
NSViewBoundsDidChangeNotificationを利用すれば、スクロールの動きを追跡できるんじゃないか?
ただ最近は、スクロールが終わっても「止まった瞬間」というのが微妙な気がするけどね。

752 :
>>751
NSViewBoundsDidChangeNotification で「スクロール中」はわかるが
「スクロールが止まったとき」はわからん
NSViewBoundsDidChangeNotification で NSTimer 動かして bounds
の変化を見るようにしてるが、もっと賢いやり方を探してる
UIScollView の delegate みたいなのが欲しい

753 :
>>752
面倒だけど、
NSScrollView のサブクラスを作って -scrollWheel: をオーバーライド。
引数 NSEvent の -phase や -momentumPhase を見る。
ただしこれらのメソッドはLion以降が必要で、マルチタッチデバイスだけ。

754 :
>>752
慣性スクロールというのがあるわけだが、
そもそも「スクロールが止まった時」というのは、どういう状態のこと?

> NSViewBoundsDidChangeNotification で NSTimer 動かして bounds
> の変化を見るようにしてるが、もっと賢いやり方を探してる
NSViewBoundsDidChangeNotificationの中で、RunLoopにスケジュールしろ。
例えば、最初に既にスケジュールしているものをキャンセルし、
次に、1秒後にあるメソッドをスケジュールする。
そのメソッドが1秒後に呼ばれれば、スクロールは1秒間止まっていたことになる。

755 :
>>753 のコード。
@implementation SomeScrollView
-(void)scrollWheel: (NSEvent *)event
{
[super scrollWheel: event];
if (event.phase == NSEventPhaseNone) {
switch (event.momentumPhase) {
case NSEventPhaseEnded:
NSLog(@"慣性スクロールが終わった");
break;
case NSEventPhaseNone:
NSLog(@"タッチじゃないスクロール");
break;
default:
break;
}
} else if (event.phase == NSEventPhaseEnded) {
NSLog(@"スクロールの指が離れた");
}
}
@end

756 :
ああ、AppKitの方にはDelegateないのか

757 :
アプリからfacebookのウォールへ投稿する機能を追加することになったんだけど、
iOSだとSDKがfacebookからリリースされてんだけど、
Cocoaの場合、そーゆーライブラリ/フレームワークとかってなさそう。10.8にあるSosial.frameworkでもいいんだろうけど、
まだ手元に無いので…。何か良いものご存じないでしょうか。

758 :
UIも含めてなにもしなくてもいいらくちんだーっUIもそーくーるてのが Sosial.framework/NSSharingService だと思うけど
言っているやりたいことは Facebook API で自分で地道に実装してもたいしたことないと思うけど、言っているようにSosial.frameworkでいいことなので、別に書かなくてもいいことを書くことになるのは否めない

759 :
日本語でok

760 :
正月で暇だからって素人がここ見ても

761 :
すいませんiOSで2ch専ブラ作ろうとしてるんですけど
p2.2ch.net経由で2chに書き込むのってプログラム的にはどうやったらいいんでしょうか?

762 :
いろいろ検索していたら CFURLConnection を使えばいいらしいと出てきたんですが
CFURLConnection ってXcodeのドキュメントを検索してもリファレンスが出てこないです
このクラスはiOSからは使えないのでしょうか?

763 :
NSURLConnectionがあるよ。
iOSで使えるのか知らないけれども。
CFなんたらはだいたいNSなんたらがあるよ。

764 :
いやProxy使いたい時はNSURLConnectionじゃなくてCFの方を使えと
出ていたんで使い方を調べていたんですが情報が古いのかなぁ
http://stackoverflow.com/questions/4328048/iphone-proxy-connection/4328098#4328098

765 :
システムグローバルのプロクシ設定じゃなくて、アプリケーション側で設定したければ
CFHTTPMessage/CFReadStream系でやれという話ではなくて?
キーワードはCFHTTPMessageCreateRequest, CFReadStreamCreateForHTTPRequest, kCFStreamPropertyHTTPProxyあたりで

766 :
NSTextView 内の選択された範囲のフォントを、コマンド B で太字と普通の文字とで切り替えたいんだけどやり方がわからん
1. 選択されたレンジを取得
2. そのレンジの1文字目の NSFont を取得
3. その NSFont が bold でなければ bold に、bold なら bold でない書体に
4. 選択されたレンジに新しいフォントを設定
てしようと思ってるが、2 と 3 がうまくいかない

767 :
こんなんでhttp://pastebin.com/fJ0cmyiN

768 :
>>767
d 試してみる

769 :
昨日買ったsnowleopardをvirtualboxに入れて初めてXCodeやってみたが、
ネットで4.2の例を見て必死にボタンからソースファイルにコネクトしようと頑張ったが挫折
今日本買ってきてbuilderにobject追加してdelegateインスタンス化しようと必死にやって挫折
よく見るとdelegateインスタンスは最初からあったわw
2日がかりでやっとボタン押したらテキスト表示アプリが出来たは\(^o^)/
XCode3.2って過渡途中の半端な仕様で本も無いしネット情報もないし酷いなぁ
オフィシャルチュートリアルもバージョン違うし…
controllerなら普通に意味分かるけどdelegateってイミフ
クセ強すぎだろ/(^o^)\

770 :
>>769
今4.5で、4.6βだよ。公式ドキュメントは最新版に合わせるだろJK。
Javaはdelegate使えなくて苦労するが、C#には類似機能があるな。

771 :
delegateはobjcだけの概念ではないだろ

772 :
移譲ってオブジェクト指向の基礎概念だろ……

773 :
素直にViewControllerで良かったじゃん
なんでdelegateなんて言い出したんだよ

774 :
君がデザインパターンも何も知らないのは判ったよ
まあ、頑張って

775 :
強く文句言うヤツほど身の程知らずってのが端的だな

776 :
文句言えるレベルですらない

777 :
C#のdelegateは、Cocoaフレームワークのdelegateと全然意味違うからなぁ〜

778 :
おしゃれイメージ命のくせにどうして
処理代行屋クラスなんてださい名前にしたのかw
と言ったのだがw

779 :
何だ、ただの馬鹿か。

780 :
クラスw
Objective-CだけじゃなくてOOPSを理解していない>>779のいうそのものだったのか

781 :
delegate を全部 controller にすると、どうなる?

782 :
どうなる?

783 :
**delegate.h -> **controller.h
**delegate.m -> **controller.m

784 :
Proxyパターンの委譲をコントローラにする
Adaptorパターンの委譲をコントローラにする
Facadeパターンの委譲をコントローラにする
...
全く意味が分からんが?

785 :
名前がダサいと言ってるだけなのにどうしてこうなったw
代行なんて名前じゃなくて司令部とかにすればよかったのに

786 :
しるかボケ

787 :
自分がお馬鹿なのを自覚してないからだな
まだ自覚してねーし。まあ馬鹿だからしょうがないなw

788 :
どういう経緯でコントローラが代行屋になったの?
iPhone用がそうなって本家にも波及しちゃったみたいな?
MVCアーキテクチャはMDCになったの?
上から目線のエロいマカの中の人教えてくだしあ

789 :
エスパーすると
delegateと名付けられた「インスタンス変数」の実態がHogeControllerの「インスタンス」だからHogeController == HogeDelegateと混乱しているのではないか

790 :2013/01/16
>>788
大笑い。上から目線ってお前に合わせてやったのに、「俺は特別だから俺は上から目線でおけ」なヤツなんだな
本家ってCocoaか?元からあるがな。DelegateはコールバックだけをOOPS的に実現したもの。クラスとして実現しなくてもプロトコル/インターフェースで実現した方が柔軟性があるのはわかるはずなのに
MVCをMDCってwwとことん馬鹿っぽい発言はもうよしたまえ、腹いたいからw
TOP カテ一覧 スレ一覧 2ch元 削除依頼
Final Cut Pro X その3 (353)
OS X Mountain Lion (10.8) Part 16 (897)
iPadもiPhoneもMacBookProも持ってる金持ち来い! (294)
迷えるLionServer1台目 (763)
Mail.app Part 13 (437)
Cocoaはさっぱり!!! version.16 (790)
--log9.info------------------
【標識】バンディング調査について【足輪】 その2 (347)
野鳥観察板自治巣れっど (409)
【鳥フル】異常な鳥を見つけたら報告しるスレ (245)
[美しい] 。野鳥の写真貼りましょう。 [キレイ] (202)
映画「WATARIDORI」はどうですか (280)
野鳥観察の時の服装、グッズについて教えて (230)
【他県は】岡山人のための撮影会情報【来るな】 (276)
[個撮]ヌード撮影会・情報スレッド (216)
●●●●少人数撮影会・個撮について26●●●● (341)
【鶏昆虫】西川和久【アジアの笑い者】 (368)
2013 東京オートサロン (394)
関西撮影会情報30 (342)
【東京】オートサロン写真撮影板part19【2012】 (936)
写真撮影板の質問・雑談スレ-11- (398)
レースクイーン・コンパニオン撮影スレッド★Part27 (576)
【みんなで】flickr.com 7【なかよく】 (901)
--log55.com------------------
【正式破談を】小室母子を冷静に語るスレPart37【一刻も早く】
旦那が発達障害かも!?な奥様 106
| ∀゜)彡<事件、事故、ニュースを語ろう!930
皇后美智子を折々思う奥様のスレ68【我流皇后】
【チラシより】カレンダーの裏640【大きめ】
「ひょっとして、僕達ひきこもりだけが嫌韓なの?」気づき始めたバカウヨ(笑) 2
【籠池メール】 辻元清美の犯罪疑惑に関する記述、民進党がメディアに拡散するなと卑劣な圧力★4
【昭和】昔の少女漫画を語る【レトロ】76冊目