- 初心者は教えてくれる方への感謝を忘れずに。
上級者も初心者だった頃の気持ちを忘れずに。
前スレ
Cocoaはさっぱり!!! Version.3
http://pc5.2ch.net/test/read.cgi/mac/1063295248/
- ココアはやっぱり森永。2get
- ココア何処?
- ほっしゅ、ほっしゅ。
- Cocoa 開発環境 Xcode 1.5
http://pigpen.memphis.edu:6969/
- Cocoa対応マルチプラットフォームフレームワーク wxWidgets
http://www.wxwindows.org/
- >>6
wxWidowってC++のフレームワークじゃなかったっけ?
普通に考えるとCarbon対応だと思うのだが。もしやObjective-Cへのラッパーとか搭載したとかなのか?
とりあえずざっと眺めた感じじゃそういう記述は見当たらなかったんだが。
- cocoaアプリケーションで
fopen( "file", "r" )
とやると失敗するけど、これを回避する方法はあるのかな?
フルパスで指定すればfopen()が成功するのは確認しているけど、
それだと直さなきゃいけないソースコードが多すぎて、やりたくない。
アプリケーションがカレントパスを認識できれば動くと思うんだけど。。。
ビルドと実行だと正常に動くのに納得いかないなぁ。
- >7
よく探すとCocoa対応のがあるよ。ベータだけど。
>8
fopenを使わないか、fopen_wrapperとか作って一括置換すりゃいいじゃん。
- >>9
( ・∀・)つ〃∩ ヘェー
そうなのか。ちょいとよく探してみるべかな
Cocioa呼び出しするフレームワークが他にもいろいろ出てくると面白いね。
- Cocoaからラベルを参照する事はできないんでしょうか。
マカエレのログをラベルで管理するツールを作りたいんです。
- 沈み過ぎ
- お尋ねします。これからCocoaに手を出そうとしています。
非矩形ウィンドウの生成は可能でしょうか?
Windowsでは「非矩形」や「リージョン」で検索すればサンプルが
多数出るのですが、Cocoaでの検索キーワードすら分からない状態です。
- こんなんですか?
ttp://homepage.mac.com/mkino2/cocoaProg/AppKit/NSWindow/NSWindow.html
- >>13
http://www.miyakun.com/cocoa/
あたりが参考になるかな
- >>14>>15
おおお、ありがとうございます。ずばり、それです。
なるほど、Cocoaの場合はウィンドウそのものの透過をOpaqueで、
ウィンドウに描画した画像はAlphaで指定するのですね。
「頻繁にflushするとパフォーマンスに影響が、、」という表記が
ちょっと気になりますが、試してみます。
- http://mugiwara.jp/Software/AppInfoX.html#WPhtml
こちらのWPhtmlをRSSを出力するように改造しようとビルドしてみたんですが
エラーが出てしまいます。古いProject Builderも試してみたんですが同様です。
どこを修正すればいいんでしょうか?
- Targets > WPhtml > Settings > Simple View > Search Paths > Librariesの
/usr/lib/gcc/darwin/3.1を3.3にしたら通った。
- >>18
ありがとうございます兄貴。
- デキタ━━━━━━(゚∀゚)━━━━━━!!!
RSSで書き出してSafariStandのStand Bar RSSから
Open Multiple Bookmarksで更新サイトの一括アクセスが超便利
長い間これがやりたかった
改めて感謝致します >>18
- NsMovieViewをcontorl+クリックしたときの
メニューを非表示にする事はできるんでしょうか?
mouseDownをオーバーロードしても、
controlを押しているときだけは処理が入ってきません。
ユーザーがムービーを制御できないようにしたいので、
再生・停止が出来るメニューが出てくると困るんですが。。。
- NSViewの
- (NSMenu *)menuForEvent:(NSEvent *)theEvent
をオーバーライドすれば良いんじゃない?
- お、きた。
>22 ありがとうございます。
- 質問です。NSTableViewの中でテキストセルを編集してリターンやタブを押すと
次の行や列に自動で編集が切り替わりますが、あれは具体的にはどこでやっている処理なんでしょうか?
NSTableViewにはテキストの編集に関するメソッドがいくつか用意されていますが
一通り調べてみてもどこで何が呼ばれているのかわかりませんでした...
- 「どこでやっている処理」という表現が良く分からんのだが。
- (BOOL)textShouldEndEditing:(NSText *)textObject;
- (void)textDidEndEditing:(NSNotification *)notification;
あたりで編集が終わ(る|った)ことを知ることができないか?
- いや、そうではなくて、セルの編集中にタブやリターンを押すと次のセルに編集が移るわけですが、
その命令が(おそらくテーブルの)どのメソッドの中で出されているのかがわからないんです。
- あ、すいません。解決しました。
テーブルの editColumn:row:withEvent:select: で捕まえられるんですね。
- 自分の質問をもう一度読み返してみる事をおすすめします。
セル移動はトレースしてみるとすぐわかりますが途中フックはできませんよ。
- >>28
単純にあのセル移動を禁止することはできるんでしょうか?
ほとんどのソフトはああいう挙動はしませんよね。
- NSCell か NSControl の
- (int)sendActionOn:(int)mask;
でセル移動を禁止できないだろうか。
いや、勘だが。
- NSComboBoxのリストを表示する命令はないのかな?
safariのURLバーのように、文字列が入力されたときに自動でリストを出したいんだけど。
- ほんと、GUIを制御するメソッドは秘密になってるのが多くて困るんだよねえ
- キーイベントを強制的に発生させる関数って公開されてる?
ComboBoxの編集中に下矢印が押されたという命令を
強制的に発生させれば、リスト表示できるかなーとか考えたんだが。
- >>33
↓キーを押したNSEvent作ってcomboboxのcurrentEditorに keyDown: で送ればどうか
- >>33
[[comboBox cell]popUp:comboBox];
- あ、33じゃなくて31にレスにした方がよかったな
けどまあヘッダに公開されてるメソッドじゃないけれど
- >35
期待通りの動きができました、ありがとうございます。
(キーを押した瞬間にリストを表示したかった)
で、非公開のメソッドってどうやって見つけてるかな?
ヘッダに載ってないメソッドを調べる方法があるなら教えて欲しいんだけど。
- >>37
ttp://www.codethecode.com/Projects/class-dump/
class-dump -H /System/Library/Frameworks/AppKit.framework/AppKit
とするとクラスごとに分かれたヘッダファイルをカレントディレクトリに作る
まとめて1ファイルに書き出したいなら
class-dump /System/Library/Frameworks/AppKit.framework/AppKit > appkit.h
などとする
書き出されたヘッダファイルには隠しメソッドも載っている
- >38
「command not found」って返ってきちゃう…。
なにか間違ってるのかな…?
- >39
ちゃんとclass-dumpをパスの通ったとこに置いてる?
which class-dumpってしてみそ。
- >40
サンキュ! パスが通ってなかっただけだった(恥
- NSSplitViewでスプリットバーの位置をプログラムからコントロールする
方法ってないですか? いろいろ調べてはみたけどわからない。
- >>42
subviewのframeを直接変更するしかない
その後で[NSSplitView adjustSubviews]
- >>43
ありがとう。やってみる。
- 残念ながらうまくいきませんでした。subViewが小さくなるだけで
スプリットバーの位置はそのまま。逆に反対側のsubViewも大きく
してみても同じでした。
Xcodeではプロジェクトを閉じる時にスプリットバーの位置を記憶
しているみたいなので出来るはずなんだけど、やり方がわからない。
- >>45
ほい
http://blog.kung-foo.tv/archives/000311.php
- >>46
おおっ。やろうとしていることがズバリ出ているっ!!
ありがとう。
- 画像を綺麗に縮小して表示したいんですが、
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
を使っても変化がないようなんです。
NSImageViewへのsetImage: の直前、ImageViewのサブクラスを作りdrawRect: 中で試してみたんですが効果がありません...
描画後に currentContext に imageInterpolation をしてみるとNSImageInterpolationHighが帰ってくるので
interpolation自体は変更されてるようです。どこか勘違いしてますでしょうか?
- すいません。自己解決しました('A`)
扱っていた画像の形式に問題があったようです。
- IBに定義せずにボタンなどを生成して利用できますか?
cocoa開発のメリットがないやり方だと思いますが。。。
ある関数に問い合わせを行うと、適当な数値が返ってきて、
その数に応じてボタンを配置したいのです。
- 手間かかるけど、できる。
しかし、わざわざ生成するんじゃなくて、
予め IB でボタンを生成・配置・透明化しておいて、
必要な時だけ透明化を解除する方が賢いな。
もし、そういう方法が許されるんであれば。
- 便乗質問しとこっと。
例えば、NSButtonをコードで配置する場合、NSButtonを表示する前にNSButtonCellをつくって
やらないといけなかったと思うけど、こういう依存関係(?)って何を見れば明らかになりますか?
- エクスポゼ中かどうかアプリから調べる方法ありませんか?
ポゼ中にウインドウのlevelを変えるとポゼが解除されてしまうので
ポセ中だとlevelを変えるのを一時的に遅らせたいのです。
- テーブルビューの項目を右クリックで選択できるようにするには、
どうすればよろしいか?
右クリックで選択と同時に、コンテクストメニューも表示させたいんです。
- >>54
NSTableViewのサブクラスを作り、
- (NSMenu *)menuForEvent:(NSEvent *)theEvent
{
int row=[self rowAtPoint:[self convertPoint:[theEvent locationInWindow] fromView:nil]];
if(![self isRowSelected:row])[self selectRow:row byExtendingSelection:NO];
if(row>=0){
//独自のメニューを出したいならここで処理
return [self menu];
}else{
return nil;
}
}
てな感じで
- >>55さん。
問題解決しました。ありがとうございました。
- NSQuickDrawViewのサブクラスを作って、そこでPictureを描画することも
Picutureをファイルに保存することも出来るのですが、なぜか印刷すると
白紙のままです。Previewで確認しても何も表示されません。どうして???
- >>57
QuickDrawがPDFサポートしてないからと違う?
- >>58
NSImagePICTRepでPICTファイルを読み込ませたものは印刷できるんだけど。
こっちはPictureのOpCodeとOperandをQuartzでエミュレートしてるのかな?
いろいろやってみたけど、どうにもならないので、Cocoaで書き直すことに
します。どうせ円と直線と文字列くらいしか使ってないんで。
- REALbasicから別の言語に移行しようかと考えています。
次に学ぶ言語として適切なのはどれだと思われますか。
REALbasicよりも高速にコードが実行できて、難しすぎないのが希望です。
PyObjective-C
Cocoa-Java
FutureBASIC
...etc.
- Javaは?
- NSPopUpButton のメニューアイテムの選択可/不可の切り替えが上手くいかない。
[ [ self itemAtIndex : 0 ] setEnabled : NO ];
とやっても、選択不可にならないのだが、上手いやり方ないかな?
- >>62
NSMenuのupdate呼ばないといけないかも知れない
- >63
反応しないです。
ターゲットの指定が抜けてたときにグレー表示になっていたので、
ポップアップの項目を選択不可にするのは可能なはずだが。。。
- -(BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
を実装したらどうか。
- >65
ありがとうございます。 >63(と、あといくつかのメソッド)と
組み合わせて、期待した実装が出来そうです。
- http://www.sticksoftware.com/software/CircularSlider.html
Circular Slider
おもしろそうなんで貼っとく。
こういうの作る人どのくらいいるんだろ。
- >60さん
REALbasicから乗り換えるならどれでも大して変わらないし(難易度に関しては)、素直にCocoa-Objective-Cで良いのではと思います。
FutureBASICはあっさり除外するとして、Cocoa-Javaでも良いと思うけど初心者は逆に混乱する恐れあり(>_<)
Carbonは面倒すぎるのでやめといた方が無難っぽい。
参考書としてはヒレガス本が良いのではと思います、Cocoaの何たるかをちゃんと説明してくれているので非常に良いです。
買った本人が言うのだから間違いなし。
>REALbasic
3.5まで使ってたけど、D&D中に何にも処理が出来ないのが嫌すぎなのでCocoa-javaに乗り換えました、v2ぐらいまでがよかったかにゃ。
- 下げ忘れ(>_<)
- >>68
レスどうもありがとうございます
Objective-C か Cocoa-Java を検討してみる事にしました。
- >>67
がんばれば作れるかも、、、
ちっちゃいViewの中心に対してマウスのドラッグされた角度を計算して、、って感じかなあ
- NSViewのカスタムサブクラスでBindingを使おうと思って、KVCに準拠しexposeBindingも呼んでみましたが、
モデルの方からは変更が反映されるものの、
View中で自身のset○○を呼んでもコントローラーもモデルも無反応の模様。
これだけでは駄目なのかと色々ググって、ようやく見つけたページ。
ttp://homepage.mac.com/mmalc/CocoaExamples/controllers.html
ここの「Graphics Bindings」サンプルを覗いてくじけました。
こんなにコード書かなならんのか…?
<⌒/ヽ-、___
/<_/____/
- NSButton ( アクアフェイスなボタン)のビットマップイメージを取り出そうしていますが、
うまくいきません。コメントいただけると幸いです。
NSImage*imgtmp;
NSBitmapImageRep *reptmp;
NSSize size = [[Button image] size];
imgtmp = [[NSImage alloc] initWithSize:size];
[imgtmp lockFocus];
[[Button image] drawInRect: NSMakeRect(0,0,size.width,size.height)
fromRect:NSMakeRect(0,0,size.width,size.height) operation:1 fraction:1.0];
[imgtmp unlockFocus];
reptmp = [NSBitmapImageRep imageRepWithData:[imgtmp TIFFRepresentation]];
- NSButton の -(NSImage *)image; が返す内容を勘違いしているのが原因では?
NSImage *image=[[[NSImage alloc] initWithData:[Button dataWithPDFInsideRect:[Button bounds]]] autorelease];
てな感じでどうだろう?
- >>74
できました。
PDFに一旦落とすという発想は私の思いつく域を遥かに超えていました。汗
非常にエレガントでうっとりするコードをありがとう。
- NSCalendarDateって、
指定した年月が何日あるのかは教えてくれないのか
- >>76
教えてくれますよ。 int で。
- ID変わってるけど。
>76 あるのか。関数が見つからなくて、今は来月1日の一日前という取り方してるよ。
- スクロールビュー内にある、サイズが変わる予定の自作Viewのスクロールの起点を常に一番上にしておきたいんですが
そのスクロールの起点を動的に設定する方法がよくわかりません
スクロールビューのClipViewに - (void)scrollToPoint:(NSPoint *)point を使えばいいんでしょうか?
(0, NSMaxY([view bounds])) を引数にしてみてもどうもうまくいかないのですが
- >79
Macでプログラミング{4}
http://pc5.2ch.net/test/read.cgi/mac/1080051583/487-
にそんな話題が出てる。ご参考まで。
- >>80
サンクス。でも -scrollPoint: は単にスクロールさせるだけのメソッドなので。
スクロールの起点が一番上に設定されていると、スクロールビューがリサイズされた時にも
中のviewの表示領域が上端を基準に拡大縮小するはずなんです。
デフォルトのviewだと何故か下端を基準にしてしまうんですよね。
- nsscrollview でググルと結構有名な問題のようですね。
isFlipped が鍵なのかな?
この記事がアップされてくれれば... orz
第38回 (MOSADen第100号 2004年2月10日)
座標の原点を左上にしよう
ttp://www.remus.dti.ne.jp/~yoshiki/cocoa/ed1/index.html
- >>82
実装ファイルで
- (BOOL)isFlipped { return YES; }
を実装すると、座標系が左上起点になりますよん。
- NSImageViewの背面にあるカスタムビューに対して
別スレッドからsetNeedsDisplayを呼ぶと画面がチラチラするんですが
これはどうにもならないんでしょうか?
多分メインループのスレッドがNSImageViewに対してsetNeedsDisplayを呼ぶまでの
タイムラグが原因だと思うんですが。
- NSTextView に表示される文字列を全消去する方法を教えてください。
すとれーじがどうとか、あとりびゅーてどすとりんぐがどうとか、わけわかりません。
- >>85
たぶん [aTextView setString:nil];
- >>86
[aTextView setString:@""];
でできました。トンクス
ていうかsetString:なんてあったんですね・・・惑わされてしまった。
- >>86
それたぶん落ちる。
[aTextView setString:@""];
だな
- NSAffineTransform で回転をさせたビューの描画を元に戻したいんですが
どうすれば良いんでしょう?
- >>89
目測だが、invert で逆マトリクス作ればいいのでは?
- >>90
ありがとう。試してみます。
- >>89
あなたはおれですか?
質問書き込もうと思ってリロードしたら、聞きたい質問そのものが新着してた。
一瞬なにか超自然的な作用かと思って目の前が真っ白になったよ。結婚しよう。
>>90
そう思って試してみたんですがなぜかクラッシュします・・・。
デバッガによると [[affine invert] concat]; のところで
Program received signal: "EXC_BAD_ACCESS".
だそうです。
- >>92
もう一人の俺こんにちは。
色々試してみたら [NSGraphicsContext restoreGraphicsState]; でリセットできるっぽい。
ただ、これが何をやってるのか良く分かってないですが。w
- いま出てる本で1番初心者にお奨めなのはどれですか?
- 毎日コミュニケーションズの「Xcode入門」以外なら、なんでもおすすめ。
- >>89
[[NSAffineTransform transform] set];
でいけるかも。何もしてないNSAffineTransformをセットしてる。
うちではこうしてるけど、正しい方法かどうかは分からないね。
- >>95ありがとう。
- あらゆる戦争行為を否定する人が
ビートル乗ってるって変じゃない?
ナチスとの関係を知らないんでしょうかね。
- >>94
とりあえず
ttp://homepage.mac.com/mkino2/books/index.html
あたりを参考に。初心者といっても、いろんなレベルがあるから曖昧なんだが
オレ的にはアーロン・ヒレガスの本がお勧めかな。
Appleの「入門Cocoa」はちょっとお勧めできないな。
毎日コミュの「Xcodeプログラミング入門」は評論するにも値しないクソ本で
Xcodeのヘルプメニューに書いている内容をうすーく引き延ばしただけだよ。
- NSResponder の - (void) keyDown:(NSEvent*)event で
複数キーの同時押しを受け付ける方法はないんでしょうか。
ウェブあさったところ Carbon を使うとできるみたいですが、ちょっと・・・。
- >>99
ありがとうございます。
参考にします。
- >>99
>Xcodeのヘルプメニューに書いている内容をうすーく引き延ばしただけだよ。
一言で言えば「手抜き」。サンプルもDeveloperToolsのExampleを
お触り程度に解説しただけの(解説とも言い難い)クソ本。手抜き本。
やはりお薦めはヒレガス本だな。Cocoaのプログラミングマナーというか
スタイルについても書いてある必読本だ。入門はこれ一冊で十分。
あとは英語だがCocoaのReferenceを読みながらプログラムは書ける。
- ヒレガスのをesBooksでぽちっとしときました。レスありがとうございました。
がんがれ>俺
- >>103
余裕があれば荻原本(Objective-C入門だっけ?)も買っておくと吉
はじめは読んでも分からんと思うけど後で必ず役に立つ
- >>104
ありがとうございます。
余裕見つけてみます。
- NSLogって最終ビルドの時に削除した方が良いの?
簡易デバッグ用にあちこちに置いてあるんだけど
速度低下の原因とかになるのかな?
- いままでメモリ管理がよくわからず、うろおぼえで
[[[MyObject alloc] init] retain];
↑こんなことをやっていた私を罵ってください。
- [[[[[MyObject alloc] init] retain] release] autorelease];
- ↑これじゃ動かないか w
- >>106
コンソールを見たらログにゴミが溜まっていくのを発見できるかもしれない。
>>109
試してないけど動くんじゃないか?
- Javaでいうところの「定数」をObjective-Cで実現する方法を教えてくれませんか。
たとえばJavaでは、Hoge というクラスで
public static final int STATE_FOO = 0;
を定義すれば、よそのクラスから
if (hoge.getState() == Hoge.STATE_FOO) ...
とできますよね。これと同じこと(定数に名前をつける)をObjective-Cでやりたいのです。
NSForegroundColorAttributedNameとかのソース見ればわかるかと思いましたが
APPKIT_EXTERN とかいうキーワードみたいなの使っててワケワカメでした。
- enumとか
- もしかして、ただ@interfaceの外にenumを書けば
そのファイルを#importしたファイルの中でなら自由に定数として使えるんですか。
ていうか試したら自由に使えました。どうもありがとう。
- Objective-C以前にC言語の勉強をしたほうがいいよ。
- >>114
俺も同じ事書こうと思った
- #defineだろ!
- 循環的に依存しあってるクラスをコンパイルする方法はありませんか?
クラスの設計を考え直すしかないのでしょうか・・・。
- @class でできました。
- >>106
どうしても気になるならassertマクロみたいにマクロを使って
本番時にNSLogがすべて無効化するような工夫をすれば。
まさか本番時にNSLogをエディタでせっせと削除するとかは考えてないよね?
- K&R(html)
http://freebooks.by.ru/view/CProgrammingLanguage/kandr.html
pdf版ご存じの方教えて下さい
- >>119
__inline__ void Nop_(NSString *iMsg,...){ }
#define NSLog 1 ? (void*)0 : Nop_
この2行を含めるようにする手法のことだね。今は亡きK氏が紹介していた手法だな。
- むしろユーザーがバグを見つけたときに
ログを送信できるように前向きに考えるのもありかと思うが。
手法はmkino氏が前に紹介してたな。
- Cocoaプログラマって人口どの栗?
- とりあえず有名どこのサイト主の皆さんと……
あとこのスレで点呼取ってみる?
まずはド初級者の漏れがノシ
- ノシ
情報だけ追ってここ最近やってないが。
使わなきゃいけないC++かJavaばっかり触ってる。
- ノシ
- 荒んでるけど人口の多いmacでプログラムスレの方が人が多そうだ…
ノシ
- ノシ
- ノシ
というか今セブンイレブンにヒレガス本を取りに行ってきたばかりで、何一つ始めてませんが(´∀`;)
- ノシ
- ノシ
最近はGNUstepいぢりの方が頻度が高いのだが.
- ノシ
「入門Cocoa」読んでるんだけど、この本最初の方は難しいことがたくさん書いてあるなぁ、ってのが今の感想だな。
プログラム自体は簡単だよ、確かに。でも普通の人は多分コーディングする前にプログラミングを
諦めちゃうんじゃないんだろうか?
Toolboxの頃と比べれば天国だけどさ・・・
- ノシ
UNIX起源ツールのGUIすらマトモに出来たことがないよ。
なんか、日本語がうまく表示できな…
- unixコマンドラインというかshell scriptにGUIを被せたいんで相談にのってください。
ttp://developer.apple.com/samplecode/Moriarity/Moriarity.html
ttp://www.harmless.de/cocoa.html#shellwrapper
あたりで、先頭に #!/usr/bin/Python書いたスクリプトファイルを呼び出すまではできました。
でもスクリプト実行中ずっと虹色カーソルになってしまいます。
frameworkにもPythonがあると教えてもらったのですが
System/Library/framework/Python.frameworkのサンプルとか無いでしょうか?
Cocoa+Pythonはマイナーすぎですか?
- http://www.big.or.jp/~crane/cocoa/9000_mdo/MDOnline_2002.01.pdf
- 10人いれば隠れたところに100人はいるすね
- ゴキブリかよΣ(´∀`)
- >>134
つ PyObjC
ttp://pyobjc.sourceforge.net/
そういうことじゃないと思うが。
NSTaskを実行したあと、パイプ読むとこを別スレッドにすれば
虹色にならないんじゃないかと。
- Objective-C でアクションゲーム作ったら
実行中だんだん重くなっていくんだけど
これはメモリリークしてるってことですか?
あと NSMakePoint() のソース見たら単に NSPoint を作って返してるだけなんですが
これはメモリ解放しなくていいんですか?
- >>139
かもしれないし違うかもしれない。
とりあえずアクティビティモニタでメモリやタスクの状況をチェック。
NSPointはオブジェクトじゃないからリリースの必要は無し。intやfloatをリリースしないのと同じようなもの。
- NULLかもしれないあるオブジェクトを一番効率的に確認する方法は何でしょうか?
if(!object), if(object == NULL) や if(object == [NSNull null]) では捉えられませんでした
- if (object == nil)
だね
- if(object)
でもよろしいかと
- あ、処理が反対になるけど
- >>141
もしかして、retainCount == 0 のとき?
- 配列からひとつずつobjectを拾っていくんですが、中身がない場合もあって。
>>143
その判定は結局 if(!object) と同じでは?
- >>146
うん、書いてから俺もそう思った。
ていうかポインタとオブジェクトを混同してない?
if (object == nil)
ってのはポインタが存在するかどうかをチェックしているわけで、
参照先のオブジェクトが存在しているかどうかはそれでは分からないよ。
で、ポインタの参照先のオブジェクトが生きているかどうかの判定は、
無理ってような結論をどこかで読んだような・・・
詳しい人ヨロ。
それより素直にNSArray使えないの?
そうすりゃオブジェクトが解放されてたなんてことはないわけだが
- >>146
それはマズイね。設計を見直した方がいい。
Cのポインターと同じようにfree(release)後は実態はないでしょ。
Objective-Cの参照カウンター(retain)はAutorelease用だけに使えるもの
と考えよう。
過去レスにオーナーシップなんたらのイイ説明があったから参考にしてね。
- いや、実際にはリリースされてるわけじゃなくて、データベースから取り出した配列の中に
空の項目がある可能性がある、という話で。その項目の中身が実際に空である判定をしたいんですよ。
- >>149
> データベースから取り出した配列の中に空の項目
それて多分NSNullで格納されてるかも。
NSArrayはオブジェクトのidに-retainメッセージを送ってオブジェクトを確保するので
nilだとメッセージ送ると落ちる気がする、、
- >> 149
「項目の中身が……空である」の意味が分からん。「項目の中身」ってインスタンス変数のことかな?
それと、「配列」ってのがCの配列なのかNSArrayなのかはっきりせんから、各々のレスの内容が
混乱している気がする(俺はCの配列のことなのかと思っていたが、そうは思っていないでレスしている
人もいる)。
もう少し具体的な状況を説明せんと、このまま混乱しっぱなしだぞぃ。
- メニューアイテムのタイトルをプログラムから変更したいのですが、
いい方法はないですか? 変更したいアイテムが存在するメニューを
取り出す方法がわからんのです。
アウトレットを各アイテムに設定して処理する以外にないのだろうか?
- アクションが設定されてるならそのターゲットの -validateMenuItem: でいじればいいと思う。
メニューアイテムにはtagか何かつけておけば。
- >>153
なるほど。試してみたらうまくいきました。ありがとう。
- Mac OS X Tiger、Mac史上最大のリリースに
中略「次期バージョンのMac OSは、デベロッパにとってMac史上最大のリリースになる。」と語っていると伝えています。
同氏は、次期Mac OS Xについて、「良いニュースは、どのリリースよりもはるかに多い機能を搭載していることで、
悪いニュースは、学ぶことが多くあるため、なれるまで多少時間がかかるということです。」と語っています。
面白そうだけど、10.4のみ対応のソフトがガンガン出て古いOSの人はうんざりするだろうなあ。
- ぺけこーど2がぱんたーでも使えるなら嬉しいんだが
- >155
「Cocoa Framework 全廃」 とか言うんじゃないよね?
Appleのことだからやりかねんぞ。
「ラッパー作りましたので大丈夫です」とかいいつつ、細かい部分は泥臭い逃げ道しかないとか。
- 今のところ発表されてる内容としては Core Image, Core Data, PDFKit, Sync Services,
Spotlight関連、Dashboard関連、Automata関連、64bit Development等。
- >>157
それはありえないだろ。
何のためにCore Dataあるんだよ。
- いずれClassic環境と共にCarbonが廃止される可能性はあるけどな。
Carbonは非公開のAPIとしてCocoaの下請けに格下げ。
・・・というのならあり得る。
- ToolbarItemをクリックした時にModifierキーが押されているかどうかを
検出したいのですが、Cocoaで可能ですか?
今はObjective-C++でCarbonのGetKeys()とキーコードを使っていますが、
Cocoaで可能であればCocoaで統一したいのですが。
- 可能。
- http://homepage.mac.com/mkino2/cocoaProg/AppKit/NSEvent/NSEvent.html#keyEvent
- ありがとう。ToolbarItemはNSObjectのサブクラスだけど、targetとなるのは
NSResponerのサブクラスだからtargetの方で処理させます。
- 163はわかってないっぽいな(w
- 別に target が NSResponder のサブクラスでなくとも
modifier key が押されたかどうかの判定は可能なわけだが。
- Javaにおけるinstanceofのように、Objective-Cで
あるオブジェクトがどのクラスのインスタンスか判定する方法を教えてくださいませませ。
- isKindOfClass:とかNSStringFromClass()とか
- >>168
うほっ、サンクスです!
- 誰か10.4試してる人いる?
- NDAがあるんだから誰も答えんよ。
- NSBezierPath#stroke とか使って Pure Cocoa な描画するより
OpenGL フレームワーク使った方が速いんですか?
自分で確かめずに人に聞いちゃうテスト
- Macアプリの開発したいなぁと思ってるんですが、
ObjectiveCでソースファイル数100くらいで、
支障なく開発できる環境って、どの程度のマシンを買えばいいですか?
Macは10年近くご無沙汰だったもので状況がよくわかりませぬ。
- 支障なく開発できるって意味がわからん。普通、エディタを使ってる時間が
一番長いだろうが。
- エディタはたぶん普通に打てるとして・・・
コンパイル+デバッガ起動までがストレスなければいいかな。
AthlonXP 2000、メモリ512MBでEclipse使ってJavaやってるけど、
これくらいのパフォーマンスなら満足。
- >>173
予算しだいじゃない?
最近のMacは性能上がってるから...。
予算がありあまってるならPowerMac G5 2GHz Dual程度で。
20万とかで収めたいなら
省スペース重視ならPowerBook15inch以上、
デスクトップでもいいならiMac G5。
2.5GHz Dualは納期が遅いらしいんで止めた方がいい希ガス
- 画面のでかい20inch iMacG5もいいよ。さすがにPowerMac G5に比べると
ややもたつくけど、開発作業なら楽にこなす。一番バランスがいいのは
PowerMac G5 2G Dualだろうな。マルチスレッド対応だからDual CPUで
コンパイルすれば速いよ。
2.5Gは家で使ってるけど、発熱が2Gに比べて15~20℃くらい上なので
負荷がかかるとすぐにファンがうなり出す。その点2Gは静かでいいよ。
- 趣味だけど、15' PBG4 1.25Hzでやってる。
青空プログラミングとかやってみたり。
問題はマルチスレッドアプリのマルチプロセッサでの検証が出来ないことぐらいかな。
まあ趣味だから「マルチプロセッサマシンだと問題があるかもしれません。」で済ますけど。
- 予算はあんまり・・・10万以下に抑えたいけど厳しいそう。
G4-1GHzくらいは、ないときついみたいですね。
デスクトップはデカいから置き場所なさそう。
キューブくらいの大きさがよいけど、それだと性能悪そうだし・・・
となるとノートが一番コストパフォーマンス的にも良さそうなんだけど。
外部モニター接続とか、キーボードがRealForce使えるかが心配。
- iBookG4でちまちま楽しんでますが
それなりの規模のアプリを作るとなると厳しいんかなぁ。
- iBook G3 / 600 で開発してるぞ。
ユーザーの方が遥かにスペックの高い機種を使ってるのが鬱だ。
- とりあえず、来週CherryOSが出るので、それを試してみます。
満足いくパフォーマンスが出たらそれで。
だめぽなら、iBookG4 12inch買います。ヤプオクなら10万以下で買えそうだし。
- >>182
CherryOSは明らかに怪しいと思うんだが…
なんかGCCのメーリングリスト見てたんだけど
ObjC++のことでもめとるね。
- NSDataの型になってる文字列のエンコーディング判別をうまいことやる方法はないですかね?
Appleは「initWithData:encoding:で試して返ってきたらそれが正解だぜ」とか言ってるんですが
ISO2022JP、EUCJP、ShiftJIS、Unicode8をそれぞれ試してみると、
複数返ってきてしまったり化けてたりでまともに判別できません。
- 考えられる全てのエンコーディングの夫々に対して initWithData:encoding: で NSString を生成してみる
a 失敗なら不正解
b 成功なら他のエンコーディングで生成した NSString と length を比較してみる
イ より長いなら不正解
ロ より短いなら暫定正解
んで、一番最後まで残った暫定正解が正解
といった感じだっただろうか。以前どこかで見た方法だけど全然試してない。
- 完璧な自動判別方法は無い。
なのでユーザに判別させる。
- nkf辺りの判定コード持ってくればどうだろう? と言ってみるテスト。
- あ、書いた後で気付いた
187の「コード」は文字コードじゃなく「ソースコード」の意味っす。あいまいでスマソ。
- >>184
まずUTF8で開いて、失敗したらText Encoding Converter を使うようにしてる。
- 初心者故にどう質問してよいものかいまいち分からないですが質問します。
例えば、下のようなテキスト文字列で構成されたテキストデータがあったとします
1行目:本日の数値目標
2行目:
3行目:りんご 値1A 値2A 値3A
4行目:みかん 値1B 値2B 値3B
5行目:
6行目:みなさんよろしくおねがいします
このでーたから3~4行目の値を取りだし、それを指定されたテキストボックスに
表示させたい場合、どうすればいいんでしょうか?
使用する言語はObjective-Cとした場合で、ヒントをいただけるとありがたいです。
宜しくお願いします。
- 改行を区切りとして文字列を配列に変換して、
3つめと4つめの要素を取り出す。
NSString の componentsSeparatedByString: を使えばできるな。
- >>190
3、4行目を文字列として取り出したいのなら>>191
それ以上のことをしたいのなら(各行の中身をパースして1Aを取り出したいとか)、
何をしたいのかもう少し詳しく書いてくれないと分からない
- 正規表現を勉強してOgreKitを使うと幸せになれるかも。
- >>191-193
ありがとうございます。ある測定プログラムをNSTaskでもって動かして、受け取った返り値を
処理してテキストフィールドに反映させる、それが成功すれば今度は値のみのログを取る、と
いった感じです。
今回の情報を基に早速勉強したいと思います、ありがとうございました。
- 「みなさんよろしくおねがいします」とか吐く測定プログラムってちょっとイヤかも。
- ここに実際にMACのプログラムを仕事としてやってる人います?
言語的にはやっぱObjectiveCが主流なんでしょうか。
Mac OS Runtime for Javaとかもあるし、
JAVAの仕事も増えてきてるんですかね?
- 「Macの」というからには普通Javaは使わないかと
- ちょっとネットや知人からMacプログラミングの話を聞いて興味を持ったんですが、
Sunの提供しているVMの上で動くJavaの話ではなく、
Javaの文法を使ってMacネイティブのアプリ開発が
できるわけじゃないんでしょうか?
- >198
できますよ。
でもMacのアプリを作るのを仕事にするなら、Objective-Cでやるだろうね。
- >>199
それはなぜでしょう?
Objective-Cは、ちらっと本屋で立ち読みした程度なんですが、
相変わらずヘッダとソースを書かないといけないようですし、
言語としてはJavaのが洗練されていそうですが。
- >200
ユーザは言語の洗練具合でアプリを評価する訳ではないですし。
Cocoa-Javaアプリは重いよ。動作速度。
- 追加:
Cocoa-Javaは起動に時間がかかるが、重いと言っても極端に重い訳ではない。
でもCocoa-Javaは結局JavaブリッジでJavaをObj-Cに変換しているに過ぎない。
CocoaはObj-Cが一番の仲良しさんなんです。
- なるほど、やっぱりJavaのが重いんですね・・・
極端に重いわけじゃないとは言ってもユーザーからすれば
少しでも速いほうが良いですし、結局はObjective-Cになるわけですね。
ありがとうございました。今度、本を買っていろいろ勉強してみます。
- Javaが洗練されてるなんてホントにそう思ってるのか?
中途半端だろ。
- 洗練という言葉はObj-Cのほうが似合う気がするな。
Java5.0のThreadは便利そうでうらやましいが…
- Obj-Cは美しいし柔軟だけど
Javaのような安心感がいまいちというか
まだ低レベル言語寄りというか・・・。
- Objective-CはC++と混ぜて書けるし、CarbonのAPIも呼び放題。
CocoaだけではMacらしいアプリを書くにはちと機能不足。
- auto resizeのボタンが横に2つ並んでいて、
左のボタンは右幅を動的に、右のボタンは左幅を動的に設定。
こうした時に、ウィンドウをリサイズすると、ボタン同士の幅が一定にならない。
これを解決する上手いやり方はあるんでしょうか?
フォントパネルのようなウィンドウを作りたいのですが。。。
- 何がいいたいのか全然わからんよ
- GUIを文字だけで伝えるのは難しいね。
|------------|
|------------|
| ( ) ( ) |
|------------|
|------------------------|
|------------------------|
| ( ) ( ) |
|------------------------|
|----|
この幅を固定でリサイズしたいのです
- Mac使ってるとは思えないAA
- nibの設定だけじゃ無理じゃね?
NSWindowDidResizeNotification捕まえて自分でやるとか
俺としてはボタンは大きくしても全体のデザインが汚くなるだけで良いこと無いと思うが
- Java風のインターフェイスだわな。
- Obj-CもJava並みに的確なエラー報告してくれればなあ。
- 例外処理が使いにくいのがね、、、
- ダイナミックバインディングだからコンパイル・リンク時にエラーが
出なくて実行時にエラー出たりして、初めの頃は大分戸惑った。
調べてみたらメソッドの名前を一字間違ってたなんてのが良くあった。
- >215
10.3以降がターゲットなら
@try
@catch
@finally
が使えるよ
NSException が普通にキャッチできるよ
- 宣言と実装を分けて書くのがダルすぎる
- >>216
プログラミングなんてそんなもんじゃねえの
- Cocoa OpenGL がさっぱり!!!
- Cocoaでつくったものを、OS9でつかえますか?。
- 失礼。
だめみたいだね。
- OS 9で開発するならREALbasicがいいのではないかと。
でもバグ多かったり苦労多いらしい。
- 重ったるいしな
- >>223
OS9用のネットのツール作りたいだけなので、
金かけたくないんですよね。
- だったらMPW使えよ。
- >>226
39。しらんかった。
- モノにもよるけどMacPerl(MacJPerl)とAppleScriptの組み合わせでも
けっこう色々な事ができると思われ。
>>227
何かいいものできたらうpしてくだせー。
- >>228
んだ。がんばるだ。
- OpenTransport使うのか? 結構、大変だよ。
ドキュメントは難解だし、サンプルになるソースも少ない。
ネットワークに詳しければ簡単かもしれんが、そうでないなら
RealBasicでも使った方がいいかも。
- 金かけたくないって書いてあるよー
- 手間を惜しむか、金を惜しむか?
俺はPowerPlantのソースを読んで書いたけどな。ああいうソースがないと
しんどい。MacTCPの方が簡単だが、Carbonでは使えない。OpenTransportは
MacTCP互換でも作ることが出来るんだが、これまたCarbonでは使えない。
- なんとかしてCocoaでC++使う方法はないのかしらん。
- ソースの拡張子を.mmにすれば使えませんか
コンパイラはg++にしないと文句言われるかも
ProjectBuilder or Xcodeなら気にしなくていいだろうけど
Objective-C++でぐぐるといろいろ出てくるはず
- なるほど。Objective-C++ってのがあるのか。
で、少し調べてみたけど、全部Object-C++で書いて
Objective-Cと同じ事はできるのかな。
- 単にObjective-CとC++が混ぜて書けるだけだから
- >>230
おれにいってたのかw。
テキストブラウザつくりたくてね。
opentransportか、、、むずかしそうだな。
- テキストブラウザっちゅーと、モザイクさんのような?
- >>238
それしらない
- OS9用だとWannaBeがあるな。日本語表示するためにはパッチを当てなければ
ならないし、いろいろ使いにくいが。
- >>239
ttp://ja.wikipedia.org/wiki/Web%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6
- >>241
わざわざありがとう。
アウトラインプロセッサみたいのをイメージしてます。
w3mってのにちかいのかな、、、
- >>240
めっけました。ありがとう。
- cocoaでクリッピング領域を設定する方法ってあります?
エディタを作っていて、キャレットの点滅の後にsetNeedsDisplay:YESを
行うと全体を書き直してしまうので無駄な処理が多すぎて難儀してます。
setNeedsDisplayInRect:も結局全体を書き直してしまうし・・・
- 教えてください、頼みます。
愚妻のために、.docファイルをVPCのwordで開くようにする、アプリを作りました。
初めて、Xcodeを使って、AppleScriptで書きました。
Finderでアプリケーションの関連付けは出来て、.docファイルをダブルクリックすれば、
VPCが立ち上がって、mswordで読めるところまではこぎ着けたのですが、肝心のところが
うまく行きません。
それは、Mail.appで、添付ファイルが.docのとき、ダブルクリックでこのアプリで
開くように出来ないのです。どうしても、AppleWorksが立ち上がってしまう。
右クリックでアプリを選べば良いのですが、妻にそこまで要求するのは無理なので、
なんとかダブルクリックで、出来るようにしたいのです。どうしたら良いのでしょうか?
以前、NeoOfficeをインストールしたときには、Mail.appからデフォルトでNeoOfficeが
立ち上がったので、私のアプリケーションの作りが悪いか、あるいは、何かのコマンドが
有ると思うのです。NeoOfficeのインストールパッケージの中にpostinstallのshellスクリプト
が有りますが、それらしきコマンドやファイル操作は見当たりませんでした。
- Safariでためた各サイトのfaviconは他のアプリからwebkit経由でアクセスできるものなんでしょうか。
Shiiraを見る限りfaviconはシェアされてないようなんですが、
サイトのURLを指定してfaviconを得るような方法はありますか?
- .plistでfaviconのキャッシュフォルダを同じに変えとけば何とかなるってもんでも
ないの?
WebIconDatabaseDirectoryDefaultsKey
- >>247
そもそもどうやってfaviconを呼んだらいいのか...
用途はちょっとURLを扱うときにfaviconを添えられたらいいなあという程度なんですが。
WebHistoryItemに -(NSImage*)icon があるので、これをURLを指定して作ればいけるかと思いきや
initWithURLString:title:lastVisitedTimeInterval: を使ってもちゃんと返ってこないんです。
- >>245
Finder で .doc に関連づけられたアプリケーションを変更したらどうか。
まあ、スレ違いなので Mac OS X 初心者スレでも行った方が良さそうだが。
- >>249もしくはAppleWorksのplistをいじってdocを開けなくするとか
- れすありがとう。もうすこし、調べてみましょう。
- Mail.appのスレで訊いた方がよかったんぢゃ。
- Foundation ToolをDarwinで動かすことはできるんでしょうか?
- typedef で定義した型も型チェックしてくれればいいのに
- それできるとC言語自体だいぶ使えるようになるんだけど。
結局、defineかましてるのと、ほとんどかわらん。
- 自作のviewやcellでBindingする時の作法について詳しく解説した本・サイトはありますか?
海外のMLで同様の質問が出ると「NSEditに準拠しろ」という解答がほとんどなんですが
具体的な実装を示したものがなかなか見つからなくて。
- Obj-Cのコンパイラが穴だらけでムカつく。
- (Hoge*) hoge
{
/* empty */
}
こんなの↑が平気でコンパイル通って、
実行するとBAD_ACSSESSとか意味不明なエラーを
わけわからん場所で出すので気づきにくい。
- つづりミスった。
× ACSSESS
○ ACCESS
大文字だとたまに間違えるよね? ね?
- >>257
-Wall
- 質問失礼します。
MainMenuにAmpという項目を追加しました。
Ampという項目をクリックするとPnlAmpというパネルが表示される仕組みにしました。
PnlAmpは通常必要無いのでAmp項目を無効化(灰色になるやつ)にしたいのですが、どうやれば良いのでしょうか?
NSDocumentControllerのvalidateMenuItemで取得できないので困っています。
よろしくお願いします。
- NSMenuItemのsetEnabled:だろうけど
NSMenuのsetAutoenablesItems:の設定によっては効かないんだっけ?忘れた
- >>260
validateMenuItemはターゲットを繋げた先で拾うもんだけど。
アクションがDocControllerにあるのは確か?
- 返答ありがとうござます。
>>262
いえ、繋げていないです。
「ユーザーがAmp項目を選択するとPnlAmpパネルを開く」という仕様にしたいので、
InterfaceBuilderでAmp項目からControlキーを押しながらD&Dで、PnlAmpのタイトルに繋げました。
なんとなく原因が見えてきましたが、イマイチわかりません。。。
よろしくお願いします。
- >>263
PnlAmpを開くコントローラは作った?
Amp項目からconnectするのはPnlAmpのタイトル(パネルのことかな?)ではなく、PnlAmpを制御するコントローラにすればできるよ。
そのコントローラでvalidateMenuItemを受信しなさい
- >>263
目の前で教えるか、プロジェクトを見てみるとかしないと分からん。
プロジェクトをいきなりうpされてもあなたが何をやりたいのかをソースから判断するのは時間がかかるし。
無駄な時間を過ごすより本買った方がいいよ。
理論ならこの辺でもいいけど。
http://developer.apple.com/ja/documentation/japanese.html
の「Cocoa」「オブジェクトとの通信」の
「ターゲット/アクションパラダイム」
あたり。
- 返答ありがとうございます。
>>264
なるほど。
実は263を書いてる時点で薄々感づいてました(w
となると、
validateMenuItemで受信した後、PnlAmpパネルを表示する。
という流れになると思うのですが、プログラムからのパネルの表示ってどうやるのでしょうか?
既に
@interface DocController : NSDocumentController
{
IBOutlet NSPanel *m_pclAmp;
}
というインターフェイスは設けたのですが、、、
以前、そこで躓いたのでAmp項目からPnlAmpパネルのタイトルにconnectしたのを思い出しまいた。
質問が変わってすいません。
よろしくお願いします。
- >validateMenuItemで受信した後、PnlAmpパネルを表示する。
ここは、変でした。
validateMenuItemで受信して、有効無効を設定する。
ユーザーが有効なAmp項目を選択したら、PnlAmpパネルを表示する。
に訂正します。
すいません。
- 解決しました。
if(m_pclWinAmp== 0x00000000){
m_pclWinAmp= [[NSWindowController alloc] initWithWindow:m_pclAmp];
}
[m_pclWinAmp showWindow:nil];
こんな感じですね。
ありがとうございました。
- >>268
だいたいいいけど、もしm_pclWinAmpがIBOutletとして定義してあるなら(バンドルに入ってるなら)、
そこはNSWindowControllerをallocしないで、
IBOutlet NSPanel* m_pclWin;
if( m_pclWin == nil )
{
if ([NSBundle loadNibNamed:@"xxxx" owner:self])
{
//必要ならいろんなことをする
[m_pclWin setExcludedFromWindowsMenu:YES];
[m_pclWin setMenu:nil];
[m_pclWin center];
//このへんでm_pclWinに配置されているUI、Notificationの設定などをする
[m_pclWin makeKeyAndOrderFront:nil];
}
}
みたいにするべし。
WindowControllerはほっとくべし
- NSTaskで、ディレクトリ内の拡張子のあるファイル全部を指定しようとして @"*.*" をargmentsに加えたんですが
コマンドが「指定ファイルが見つからない」旨のエラーを返します(実際にあるファイル名を指定すると問題ない)
NSTaskに渡す引数に * は使えないんでしょうか?
- NSTaskで、ディレクトリ内の拡張子のあるファイル全部を指定しようとして @"*.*" をargmentsに加えたんですが
コマンドが「指定ファイルが見つからない」旨のエラーを返します(実際にあるファイル名を指定すると問題ない)
NSTaskに渡す引数に * は使えないんでしょうか?
- NSTaskで、ディレクトリ内の拡張子のあるファイル全部を指定しようとして @"*.*" をargmentsに加えたんですが
コマンドが「指定ファイルが見つからない」旨のエラーを返します(実際にあるファイル名を指定すると問題ない)
NSTaskに渡す引数に * は使えないんでしょうか?
- あちこちの板で三連投稿を見かけるが何かあったんだろうか?
- 深夜1時頃かな。pc5.2ch.netが落ちてた。
鯖が落ちてるのに気付かずに
『あれ?書き込めてないぞ?』と書き込みボタンを連打した香具師が居たという事じゃないかな?
2chで書き込みがタイムアウトとかなった時は
鯖がすごく重くなってるとかだから、そのまま待った方が吉。
- 中華からの攻撃でいくつか鯖が落ちたらしい。
pc5鯖の調子は長いこと最悪だった。なんでpc鯖狙うのかはよくわからんけど。
- エアコンをスタートさせるとがたがたいいます。
自宅のは2台そうなってしまいました。
どうすればいいでしょうか。
- 資金が豊富にあるなら新しいマシンを買うのが一番だが、
そうでないなら暖かいCocoaでも飲んで春を待つといい。
ただ、不具合の原因がわからないと新品も同じ道を歩む可能性があるので
メーカーのサポートに連絡してみるのが吉。
- どうも。
ファンが回転すると中でこすれてるんで音がします。
タバコやほこりで中が汚れてるんだと思うんです。
困りますね、最近のコンパクト傾向は。
- タバコをやめればマシンにも自分にも良い影響が。
- 保守
- Cocoaはさっぱりでも、PyObjCやwxPythonなら
比較的簡単にCocoaアプリを開発できそうですよ。
- CocoaやObj-Cが難しいんじゃなくて、資料不足が痛いな、おいら。
英語がわかればなぁ
- ほんと資料が問題ですよね。
だからPure Javaとかの方がやりやすいと思う。
とか言って漏れはAppleScript Studioがせいぜいなわけですが
これも日本語の資料を色々作ってくれた先人が居るから使えてるんですよね。
- SunのサイトでJava API文書は英語と日本語しか配布してないってことは、
日本語ネイティブじゃない人はほとんどみんな英語版を読んでるってことですよね。
日本人プログラマも英語文章をすらすら読めるようになっておかないと、
翻訳待ちしてるあいだに技術導入が遅れちゃうんじゃないかとちょっと心配。
このスレで心配する必要なかったね。
- >283
Pure JavaとwxPythonどちらが軽そうですか?
- さあ。Pythonの事は全く知らないからなあ。
そういえばPerlでもCocoaアプリケーション作れるんだよね。
CamelBonesだっけ。
>>284
ある意味日本人でよかったなあと思う。
日本は欧米文化にずいぶん浸食されてるよなと思うけど
技術的な事を学ぼうと思ったら英語じゃないと全くダメって国も
たぶん多いんだよね。
母語が失われて行くのはやっぱり悲しい。
- どっかの過去スレで読んだ話。
モンゴルとかだと大学で勉強するレベルの本でモンゴル語で
書かれたものがないから、勉強しようと思ったら
まず英語やロシア語を覚えるのが必須らしい。
- 世界進出とかを考えたら英語が理解できる方がいいよね。
インド人がアメリカなんかのオフショア開発を
引き受けやすいのも英語ができるという利点があるからみたいだし。
- グローバル化=文化の多様性の死、人類全体の頂点一極ピラミッド化
ですかね・・。
ああ憂鬱だ。
- そこでプログラミング言語「ひまわり」ですよ。
- 何だそれ?
- 質問です。
InterfaceBuilderで、NSWindowの上にNSButtonのカスタムクラスBtnPlayを置きました。
このボタン(BtnPlay)を「押した瞬間」と「離した瞬間」のイベント(別にNSEventで無くても良いです)を取得したいのですが、
どうやれば良いのでしょうか?
- ごめんなさい。解決しました。
NSResponderの派生とは知らなかったんです。
俺の1時間が、、、orz
- 安心汁。大抵プログラムで悩むのは一時間じゃ足りない。
一晩悩んだあげくつまんないミスだったりするのはザラだから。
- 一時間で自分で気づけばいい方だよなあ・・・
- Object-Cを触るの初めてなのですが、
pclTmpName= [NSString stringWithString:fileName];
pclExt= [pclTmpName pathExtension];
pclTmpName= [pclTmpName stringByDeletingPathExtension];
pclTmpName= [pclTmpName stringByAppendingFormat:@"_TMP"];
pclTmpName= [pclTmpName stringByAppendingPathExtension:pclExt];
プログラムは、これで良いのでしょうか?
一応動いていますが、メモリ周りが心配。
解放とかって必要あります?
- メモリ回りはOK
自分でalloc retain copyしていない限り解放する責任は無い
ちなみにまとめて書くなら
pclTmpName=[NSString stringWithFormat:@"%@_TMP.%@", [fileName stringByDeletingPathExtension], [fileName pclExt]];
とか
- 間違えた
pclTmpName=[NSString stringWithFormat:@"%@_TMP.%@", [fileName stringByDeletingPathExtension], [fileName pathExtension]];
でした
- メモリまわりはきちんと理解しておいたほうがいいので、
/Developer/ADC Reference Library/documentation/Cocoa/Conceptual/MemoryMgmt/Concepts/ObjectOwnership.html
を穴が開くまで読むことをおすすめします。
- なる。
ありがとうございます~。
- >298
stringByAppendingPathExtension: って 引数が nil の時は .(null) を付けるんでしたっけ?
そのやり方だと付きますよね?
# リファレンスには載ってなかった。 しかも実機が目の前に無い。。。
- 英語・・・。
- どなたか青空文庫のビューアを作ろうという方はいらっしゃいませんでしょうか・・。
- 口ひっぱりながら青空文庫っていってみ
-
stringByAppendingPathExtension: にnilを渡すと、
NSInvalidArgumentException が投げられました。
報告まで。
- >>303
http://www.voyager.co.jp/azur/
- >>303が日々2chに費やしてるであろう膨大な時間をコード書きに向けれ
- >>301
NSLogにnilなオブジェクトを渡すと、確か(null)って表示されたような気がする
普通のメソッドに渡すとだいたい例外投げるか落ちるか
- >>307
そんだけの頭が無いもんで・・・。
特に英語の資料とか無理。
- >>304
ワロテシモタ
- 起動中のアプリケーションの一覧
を取得するにはどうしたらいいでしょうか?
(Classic環境で実行されているのも含めて)
- >>311
NSWorkSpace.hより
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
/* The following methods return information about an application as a dictionary containing as many of the following keys as are available:
NSApplicationPath (the full path to the application, as a string)
NSApplicationName (the application's name, as a string)
NSApplicationProcessIdentifier (the application's process id, as an NSNumber)
NSApplicationProcessSerialNumberHigh (the high long of the PSN, as an NSNumber)
NSApplicationProcessSerialNumberLow (the low long of the PSN, as an NSNumber)
The same information will now be provided in the userInfo of the NSWorkspace notifications for application launch and termination.
*/
- (NSArray *)launchedApplications;/* Returns an array of dictionaries, one for each running application. */
- (NSDictionary *)activeApplication;/* Returns a dictionary with information about the current active application. */
#endif
- 質問です。
Aというファイルの中で宣言した配列変数を、Bというファイルのヘッダに
"#import A.h"して使おうと思ったのですが"first use ~"とのエラーが出て使えません。
配列変数を別ファイルで使うためにはどのようにすればいいのでしょうか?
- >313
Cは宣言と確保がきっちり分かれてないから分かりづらいといえば分かりづらい。
この質問も配列変数がCの配列なのかNSArrayとかCFArrayとかなのか分からないので答えづらい。
しかも、グローバル変数論争に発展しかねないのでさらに答えづらい。
- エラーメッセージは略さないで下さい。
こっちはエスパーでもNASAの指令センターでもないのよ。
- Cocoaでファイル入出力をやるにはXcodeで作るプロジェクトは
Document Based Appじゃないといけないんですか?
つまりJavaのようにとにかくストリームを開いて云々すればいいというわけじゃないんですか?
- >>316
Document-Based にすると抽象クラスの幾つかのメソッドをオーバーライドするだけで、
ほとんどのことはフレームワークがやってくれるというだけかな?
まあ「だけ」とは言えないほど膨大なことをやってくれるんだけど。
そのほとんどはGUI関連なのでコンソールアプリなら全く不要です。
何なら fopen(3) とか open(2) をそのまま叩いちゃっても別に問題ないです。
- >>317
なるほど。ありがとうございます。
- 質問失礼します。
Interface Builderで、NSWindowの上に「AというNSOpenGLView」と「B・CというNSScrollView」を合計3つ置きました。
Bから、Cのポインタを引っ張ってきたいのですが、どうやれば良いのでしょうか?
よろしくお願いします。
- >319
たぶんやりたいことは
NSOpenGLViewを選択。
Layout→Group→Scroller(うろ覚え)
だろうなぁ。
- あ、OpenGLなら拡大縮小とかもありか。
そういう場合なら、NSOpenGLViewをサブクラス化してoutletを持たせるか、
コントローラを別に用意してそっちに3つ全てを持たせるかかな。
後者が正当法だと思う。
- >>320
説明不足ですまんです。
作業した経緯に関しては、
1.A・B・CとNSOpenGLViewを設置した。
2.B・CをLayout→Make subviews of→ScrollViewで、スクロールViewにした。
という感じです。
Bのクラスから、Cクラスへのアクセス(正確にはCが管理しているNSView)を行いたいのですが、、、
BからCにConnection(nextKeyView)しました。
プログラムで[B nextKeyView];
で帰ってきたのがCのクラスなのでしょうか???
よろしくお願いします。
(自分は初心者なので、説明に「勘違い」が含まれてる可能性があります。。。)
- >>320
>コントローラを別に用意してそっちに3つ全てを持たせる
ヒントありがとうございます。
チャレンジしてみます。
- >>323
M・V・Cの違いをもう1度勉強したほうがいいように思う
- 出来ました!
NSView*pclView= [B nextKeyView];
pclView= [pclView nextKeyView];
pclView= [pclView nextKeyView];
pclView= [pclView nextKeyView];
pclView= [pclView nextKeyView];
やっぱ、止めた方が良いですか?(泣
- 最良のアドバイス:ちゃんと本買ってやったら。
- cocoaは独習はきついわよね
- >>327
cocoaの独習はきついけれど、pythonの独習はそれほどきつくないのでPyObjCでも利用してみては?
- Objective-CでXMLを使いたいんだけど
一般的にはどのパーサを使ってるの?
- >329
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSXMLParser.html
ってのが出来てるが使ったことは無い。
expat でいいんでない?
- >328
Cocoaフレームワークのマンドクサさからは逃れられないぢゃん……OTL
Objective-Cがネックで挫折した人ならともかく。
- Javaのを呼ぶ。
- Objective-Cで書いてて一部だけJavaのクラスを呼ぶってのは可能ですか?
なにかサンプルがあればありがたい。
- >>333
そんな面倒くさいことはしないほうがいいと思う。
フレームワークなんてどれでも慣れるしかないんだから
- Cocoa-javaからOpenGL使いたいなぁ
- おれもおもった
- ジニーエフェクトのAPIって未公開?
- >337
TransitionWindow()でいけたと思う。
10.3以上でCarbonだけど・・・。
- 冬はココアですよねやっぱり
- >>60
普通のC言語
- CocoMonarを自宅と出張先で使用しておりますが、スレッドの更新状態を同じに(簡単に言えばiSync)みたいな物はありませんでしょうか?
もしくは、どこのファイルをコピーすれば同じ状態にできるのでしょうか?
ご存知の方見えましたら教えて下さい。
- >>341
OSX専用2chブラウザ"CocoMonar"(22)
http://pc7.2ch.net/test/read.cgi/mac/1106466526/
- ココアはさっぱり森永
- Cocoa+Obj-CでXMLを取り扱いのですが
JAVAでDOMを利用するような感じで
XMLを読み書きするにはどうしたらよいのでしょうか?
どこかにサンプルソースでもあれば幸いです。
- 直接の解決じゃないけど、10.4ではxmlへのアクセスをサポートするNSXMLが追加されるとか
- NSXMLParserとかは?
- >>346
こんなものを待ってました。
ありがとうございます。
- cocoa-javaでkeyDownでスペースキーが取れないんだけど
Objective-Cの方で実装するにはどういう風にやってますか?
スペースキーはkeyUpでしかとれないみたい
- ObjCではふつうにNSResponderのkeyDownでどっさりとれてますが。
- >>349
NSWindowのkeyDownではどっさり取れるけど
NSWindowControllerのkeyDownでは取れていないことが判明。
チェインは
NSWindowからNSWindowControllerになってるんだけど
NSWindowControllerまで到達しないって事はNSWindowの方で
処理しちゃってるからって事なんですかね?
- >>349
NSWindowのkeyDownではどっさり取れるけど
NSWindowControllerのkeyDownでは取れていないことが判明。
チェインは
NSWindowからNSWindowControllerになってるんだけど
NSWindowControllerまで到達しないって事はNSWindowの方で
処理しちゃってるからって事なんですかね?
理解間違ってるだろうか。
- >>344
定番のExpatは?Obj-Cラッパ―もあります。
http://expatobjc.sourceforge.net/
そのままだとちょっとダサいので、Cocoaな感じにアレンジしたほうがいいやね。
- >>351
なぜNSWindowControllerでkeyDownを取得?
というかNSWindowControllerはあまり変更しないものだと思う。
よくわからないけど、
・カスタムビューを追加して、そこで取得
・あるいはNSResponderを継承したコントローラーを作成して、responder chainに挿入
・NSTextViewなどがfirstResponderで、そいつが取得するイベントを知りたいときは、NSTextViewを継承したカスタムビューを作成
のどれができると思うけど
- この話の流れに関係あるのかないのかわからないけど質問。
タイトルバーなしの透明ウインドウ中で半透明のイメージを常にほかのアプリケーションより
前面に表示しつつ、その表示されている部分をクリックしてもそのアプリケーションが
アクティブにならない(下に表示されているほかのアプリの操作ができる)
というのを実現するにはどうしたら良いでしょう?
単にNSWindowをタイトルバーなし・透明にして、その上のNSImageに半透明画像を表示す
るだけではクリックに反応してしまいますよね。
うまい方法があれば教えてください。
- >354
NSWindow にこんなんあったけど。
setIgnoresMouseEvents:
- (void)setIgnoresMouseEvents:(BOOL)flag
Specifies whether the receiver is transparent to mouse clicks and other mouse events, allowing overlay windows.
Availability
Available in Mac OS X v10.2 and later.
- おお、見落としてたか。thanks!
欲を言えば一部だけクリックに反応とかできたら良いのだけど、これは、クリックに反応する
小さいウインドウを子ウインドウにして横に並べればいいか。
- NSImageの縦と横のサイズ知りたくて[image size]からNSStringFromSizeして
componentsSeparatedByString:@","してNSMutableStringにして
deleteCharactersInRange:NSMakeRange(0,1)とかしてintValueなんてして
おかしい面倒すぎるNSImageRep使えってことか
とか思ってたら構造体を知った超初心者な俺様が来ましたよ
なんだこの茶番orz
- Cocoaさっぱりわからない。
スレタイ通り。
アーロン・ヒレガスを読んでも今ひとつ分からない。
もちろん話は楽しい。
読んでマウスをカチカチしているとわくわくする。
しかし、分かった気になっていざ一人でプログラミングに取りかかると、
さっぱり分かっていなくて詰まってしまう。
誰か良い本を教えてください。
- 何がしたいんだよ。
あと本を読んで初歩を知っただけではやっぱりわからない。
作りながら経験を積んで構成を掴んでいくしかない。
みんな調べながら作ってるんだよ。
- ヒレガス本に限らず入門書というのは一通り何かのプログラムを作って
おしまい。セミナーに出ても同じ。ヒレガス本がすぐれているのは
Cocoaのプログラミングスタイルが一貫していて、こういう時には
こういう流儀でプログラムするということが出てるんだな。
ただ、ヒレガス本を読んだからすぐに自分の作りたいものが作れる
わけじゃない。ヒレガス本に出ているサンプルはCocoaのごく一部しか
使ってないわけだから。AppleのDeveloperサイトのApplicationKitや
Foundationのリファレンスを見ながら作るしかない。これは誰でも一緒。ApplicationKitやFoundationの各クラスが一体何をするものなのかを
知らなければ何も出来ない。それが面倒だとか英語だから無理なんて
思うのなら諦めた方がいい。
20年くらい前ならインサイドマック徹底ガイドというリファレンス代わり
になる日本語の本があったけど、Cocoaにはリファレンスになるような
日本語の本がないから自分で努力するしかない。
- >>358
> 誰か良い本を教えてください。
厳しいこと言うようだけど、他の本を読んでも多分無駄。
ヒレガス本と同じことを繰り返すだけだと思う。
何か作りたいものがあってプログラミングの勉強を始めたのだろうから、
とりあえず何でもいいから作り出すこと。
そうしたら「こういう動作をさせたいけどどうすればいいのだろう?」という疑問が出てくるから、
そうしたらそれについて書いてある本を買うなり、文献を探すなり、
ここで聞くなりすればいい。
- >>361
第一線で活躍しているプログラマの駆け出しの頃って、
みんなそうだったんだろうな。
自分はだいぶ後方から追いかけてる立場だけど、
子供の時はかなりプログラム作りまくってたなぁ。
今は出来合いのモノがしっかりしすぎていて
個人でプログラムを作ろうとしてもなかなかハードルが高いよね。
- ヘッダファイルでインスタンス変数なんかを宣言する時に//でコメントつけるのは御法度なんですか?
おかげでしばらく混乱してたんですが
- 全く問題なくコメント付けられるが?
- じゃあ漏れの頭がおかしいのか('A`)
Controller.h
@interface Controller : NSObject
{
…
//ディレクトリパス
NSString *directoryPath;
//ファイルリスト
NSEnumerator *dirEnumerator;
…
}
Controller.m
@implementation Controller
…
-(IBAction)open:(id)sender
{
…
directoryPath = [openPanel directory];
dirEnumerator = [[[NSFileManager defaultManager] directoryContentsAtPath:directoryPath] objectEnumerator];
…
}
…は略です
これでdirEnumeratorの横にバツ印が付いて
`dirEnumerator'undeclared(first use in this function)(Each undeclared indentifier is reported only once for each function it appears in.)
と言われます
しかし/* */でコメントを書くと何も言われません
- お勧めの方法としては
・本のサンプルを実行してみる
・少し改造をする
・・この時レファレンスと本、ネットの情報と格闘する
・しばらくはこれを繰り返す
・時々オリジナルに挑戦する
こんなもんです。
一歩目の簡単さは旧Macの時代に比べればホントに天と地の違いです。
- >>359-362 >>366
ありがとう。とても参考になりました。
- >>365
File Encodingを変えたり、コメントを半角英数字だけにしてもダメ?
- >>368
日本語(MAC OS)からUTF-8に変えたらエラーは出なくなりました
また日本語(MAC OS)のままでもコメントを半角英数字だけにしてもエラーが出なくなりました
コメントくらい日本語使いたいので/**/でやるかUTF-8にするかですね
しょうがないんでしょうけどこういうのでエラー出ると自分のコードに自信が持てない初心者には辛いですorz
- >>369
個人的にはコメントと言えどもソースコード内に日本語を書くのはお薦めしま
せん。今回の件のようなコンパイラの問題の他、Xcodeのプロジェクト内検索や
CVS、FileMergeなどで問題が起こることもありますし、将来ソースコードを
公開しようとしたときに海外の人が読めないことにもなります。
・関数名、変数名などを分かりやすくし、コメントは必要最小限にとどめる。
・コメントを書くときは(ナンチャッテでもいいので)英語で書く。
・関数や変数の仕様を書く必要があるときは別ドキュメントにする。
などとしてはどうでしょうか。
- 俺は逆にコメントは日本語の方がいいと思うなぁ。
書いてる時はいいけど、久しぶりに開くとコメント書いてあっても
「これどういう意味だっけ?」と悩むことも。英語だと読む気すら起きないよ。
日ごろから英語で読み書きする人ならいいかも知れんけど。
- >>370-371
ありがとうございます。
まだ試行錯誤しながら動きを確認してるレベルですし、久しぶりじゃなくても悩みそうなので、
とりあえず/*日本語*/で行きます
将来的には英語にしたいですが今は変数名や関数名の名前考えるだけでいっぱいいっぱいですorz
- 今のうちから英語にしておく癖を付けておいた方が良いと思うがなあ。
- 漏れもコメントは1Byte文字推奨。
できれば英語、次善の策としてローマ字(w<問題多いけどね。
でも今のウチから簡単な英語で読み書きする訓練しとくと、後々人外のソースを読む時にコメントの英語で
悩む事が少なくなるとおもうよ。結局なんだかんだで数の勝負って感じだからねぇ。
開発言語も英語も。
- NSTableView でセルをダブルクリックして直接内容を編集しても
データソースには反映されないために元の値に戻されてしまうのですが、
ちゃんとデータソースも変更するにはどうすればいいのですか?
ぐぐったらHMDTの掲示板で同じ質問がありましたが、
私には具体的な解決方法がわかりませんでした・・・。
- datasourceにtableView:setObjectValue:forTableColumn:row:メソッドを書くんじゃないの
http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Protocols/NSTableDataSource.html#//apple_ref/doc/uid/20000122/BCIEDFGG
- -(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(int)row;
こいつを実装する。
-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(int)row{
Hoge *hoge=[sourceArray objectAtIndex:row];
NSString *identifier=[tableColumn identifier];
if ([identifier isEqualToString:@"name"]) [hoge setName:object];
if ([identifier isEqualToString:@"address"]) [hoge setAddress:object];
}
みたいな感じで。
- >>376-377
できました! 深謝!
- PDFKitのメソッドはどこで調べればいいんでしょうか。
- NSTableView で、行がクリックされたら xxxx という処理を
したいのですが、どうすればいいでしょうか?
そのときクリックされてる行の各セルの値も知りたいです。
- テーブルビューにダブルクリック時のアクションを設定して、
その設定したメソッド内に処理を書く。
これをヒントにCocoaDocumentを見て。調べればすぐにわかるはず。
クリックされている行の値は、ワンクリックされた時点でselectionが
クリックした行になるからそれが何行目かはselectedRowでわかる。
値の調べ方は・・・わかるよね?データのselectedRow番目を見ればいい。
- >>380
「クリックされたとき」のみであれば381でもいいけど
「選択されたとき」という意味であれば違うからね
調べればすぐにわかるけど
ちなみに、クリックだろうがキーだろうが選択状態を調べるときは
複数選択されている可能性も考慮しましょう。
コード上は複数選択でも動くように実装しておいて
IBで複数選択ができるかどうかを切り替えるのがいいでしょう。
- >>379
PDFKitはTigerからだが。
- 頭悪くてすいません、混乱してしまったので確認させてください。
NSImage *image;
//NSImage型であるimageという変数名(ポインタ)を宣言。
image = [NSImage alloc];
//NSImageのインスタンスを生成し(=メモリを確保)、
//imageにそのインスタンスのメモリアドレスを設定する。
//つまりimageはNSImageのインスタンスを参照している
[image release];
//NSImageのインスタンスのretainCountを0に=解放=メモリを解放
//imageというNSImage型の変数名自体は残る?
image = [NSImage alloc];//1回目
image = [NSImage alloc];//2回目
//とした場合1回目のインスタンスは参照を失う
[image release];
//としても2回目のインスタンスしか解放されない
//1回目のインスタンスはどこからも参照されてないのでどうやっても解放出来ない=メモリリーク
//ただしアプリを終了した時には解放される?
これで合ってるでしょうか。
?マークつけたとこは合ってるか自信が無いのですが…
ほんとに頭悪くてすいません…
- 合ってる。
- >>385
ありがとうございます。やっとこ理解出来ました。
- initしてないオブジェクトをreleaseしてちゃんと解放されるかは少し疑問
面倒でもちゃんと
[[NSImage alloc] init];
って書いとけ
- そう言われると不安なので、
-(void)test{
NSImage *image;
image=[NSImage alloc];
NSLog(@"%d",[image retainCount]);
[image release];
NSLog(@"%d",[image retainCount]);
}
こんなコードを書いてみた。
2回目の NSLog の部分で落ちるので、たぶん解放されてるんだろう。
alloc と init をセットにしておけというのは同意。
- >>387-388
すいません。端折ってしまいました。
initしてないと危ういという事は覚えておきます。ありがとうございます。
ところで連続で申し訳ないのですが、NSImageViewを使っていて疑問が生まれました
-(void)test{
NSImage *image = [[NSImage alloc] initWithContentsOfFile:@"/Users/ore/ore.jpg"];
NSImage *image2 = [[NSImage alloc] initWithContentsOfFile:@"/Users/ore/ore2.jpg"];
NSLog(@"%d",[image retainCount]);//1
[imageView setImage:image];
NSLog(@"%d",[image retainCount]);//3
[imageView setImage:image2]
NSLog(@"%d",[image retainCount]);//5
[image release];
NSLog(@"%d",[image retainCount]);//4
}
これはtestメソッドが終わればimageはちゃんと解放されるんですか?
最後のretainCountが2なら解放されるんだろうと思えるんですが、4とか5とか…
- test が終わった時に解放されるとは限らない。
NSImageView が不要と判断した時に解放される。
- >>390
レスありがとうございます。
うむむ…
[imageView setImage:image2]
としてもNSImageViewは不要と判断しないんですか
もうちょっとNSImageViewのDeveloperDocument読んできます
- >>389
たぶん autorelease pool に入ってるのでは。
>>390
[ imageView setImage: image2 ]; してるから、image はもう必要ないかと。
- >>392
レスありがとうございます
autorelease poolに入ってるのかも、ならtestメソッドが終われば解放されるのでは?
とは思ったんですが、retainCountの値が腑に落ちなくて質問しました。
今テストしてたんですが、
>>389のtestメソッドの中ではなく、
testメソッドが終わった後に別のメソッドで[image retainCount];すると落ちました。
解放されると考えて良さそうですね
しかしretainCountが5になるのが謎ですが…
これ以上つっこむと内部まで行きそうなのであまり考えない事にします
ありがとうございました
- >autorelease poolに入ってるのかも、ならtestメソッドが終われば解放されるのでは?
testメソッド終了直後じゃなくて
testメソッド実行中のRunLoopが終了したら解放されるんだと思う
retainCountの数についてはあまり気にしない方が良いんじゃないかな
NSImageViewが他のオブジェクトに渡している可能性もあるし
- なぜわさわざ、そんな怪しいコードを書くのか理解できん。
- REALbasicからフォントパネルを使うってことは
可能ですか?
- スマソ
REALbasic板で聞き直します
- Document Types:でjpgを登録して、アプリケーションアイコンにjpgをドロップ出来るようになりました
ドロップされたファイルのパスはどうやったらわかりますか?
Document-based Applicationじゃないと無理ですか?
- >>398
NSApplicationのdelegateを調べるべし
- >>399
出来ました。ありがとうございました。
- [[[[NSNichannel sharedNichannel] boardForName:@"新・mac"] threadForName:@"Cocoaはさっぱり!!! version.4"] write:@"保守" name:nil email:NSSageEmail];
- [[[NSNichannel sharedNichannel] boardForName:@"新・mac"] threadForName:@"Cocoaはさっぱり!!! version.4"] addObserver:self selector:@selector(newMessageDidArrive:) name:NSNewMessageDidArriveNotification object:nil];
- Cocoa のヘッダとか見てるとデザインパターンの勉強にもなるよな。
- >>403
Objective-C のおかげでデザインパターンが自然に表現できている感じ。複雑なクラス構造とかインタフェースを駆使しないで最短経路でいける。
さらに Cocoa Framework + InterfaceBuilder の組み合わせによって、MVC アーキテクチャの理解も進むし。
Cocoa サイコー。
- ジェネリクスが使いたい
- スタック上にオブジェクトを配置したい
ブロック構文を使いたい
- NewsFire の左側のような、
順番入れ替わるときに滑らかにアニメーションする array(?) 項目って
どうやって作るんでしょうかねー。
- NSTimerとか
- WebViewに既に表示されている文字リンクの場所を
nsrectとかで取得できたりします?
- >>408
View は自作ですかねー
- すみません、Cocoa入門したばかりの者ですが
outlineViewを使ってフォルダの中身ではなく
ただの文字をツリー状に表示させてみたいのですがいまいちわからず…
どなたかご教授お願いします
- >411
DataSourceってのを調べてください。
NSOutlineView.h の最後のほう。
スーパークラスであるNSTableViewを調べておくのもいいかも。
- 名前は間違いです。>320さんとは関係有りません。
- NSTaskでコマンドに*のワイルドカードを使った引数を渡そうとすると失敗してしまいます。
(NSTaskはワイルドカードを展開してくれないという記事も見つけたんですが、本当でしょうか)
そんなわけでNSFileManager経由で適合するファイル名をリストにして渡すようにしたんですが、
今度はファイルが多い&ファイル名が長いとコマンドが終了しなくなってしまいます。
ワイルドカードを使った場合と同じ結果(適合するファイルを完璧にコマンドに渡す)が
得られる方法はないでしょうか。
- ワイルドカード(というかglob)はシェルの機能だからNSTaskは展開しません。
こんな感じにシェルにまかせればいいと思う。
NSArray *args = [NSArray arrayWithObjects:@"-c", @"こまんど", @"foo*", nil];
[NSTask launchedTaskWithLaunchPath:@"/bin/sh" arguments:args];
- ありがとうございます。でも全然反応が返ってこないです。こんな感じなんですが。
NSArray *argArray = [NSArray arrayWithObjects:@"-c", @"/usr/bin/zip", @"test.zip", @"*.txt", nil];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:argArray];
(後略)
- >>416
[NSArray arrayWithObjects:@"-c", @"/usr/bin/zip test.zip *.txt", nil];
コマンド~パラメータは1つの文字列に。
てきとうにかいてしまってゴメン。
- ありがとうございます。できました。
- ランチャーソフト等で使われてるホットコーナーやホットキーのように、
最前面でないアプリがグローバルに入力を横取りするのはどういう仕組みなんでしょうか?
- ホットキーは InstallApplicationEventHandler と RegisterEventHotKey を使う。
Apple のサイトにある FunkyOverlayWindow が参考になる。
- ホットコーナーだったら任意の場所に透明のウィンドウをフロートで最前面に置いておいて
TrackingRectを監視するってのはどう?
- >>420-421
ありがとうございます。やってみます。
- toolbarの高さを取得するメソッドはないのでしょうか?
ウィンドウのMaxSizeをアプリ側で固定していますが、
現在はtoolbarが表示されているときには、
defineで指定した数値を足して最大サイズを管理しています。
(数値はtoolbar表示・非表示の時のウィンドウサイズのログから取得)
- >>423
ウィンドウの高さ - contentViewの高さ
ツールバーってcontentViewに入ってるんだっけ?入ってないよね?
- >423
上手くいかないです。。。
差分を取ると、titlebar + toolbarの高さが取れるけど、
MaxSizeには titlebar + contentViewの値が必要だから、
titlebarのサイズを取得するには・・・どうすればいいんでしょうか?
- 開発環境が10.2の為、苦労しました。
(見つかるドキュメントは10.3 and laterばかり・・・orz)
10.2以前限定ですが、一応書いておきます。
setToolbarを実行する前に、>423が説明しているやり方でtitlebarの高さを取得。
[ NSWindow setMaxSize : NSSize ]では
contentView + titlebarを指定。
- Xcode2になれば、マニュアルやらドキュメントはローカライズも含めてもう少し充実するかな?
- >ローカライズも含めて
ますます追いつかなくなる、に2000点
- >>428
もちろん、はらたいらさんに、2000点
- >> 427
英語を勉強しる
- はじめまして。まちゃぽこと申します。
Carbonでコーディングする場合、
複雑な範囲の塗りつぶしやクリッピングは、
リージョンというものを使いますよね。
APIはPaintRgnやClipRgnとか、引数にリージョンデータを
指定して、呼び出しをしますよね。
Cocoaでコーディングする場合、
複雑な範囲を記録するデータ構造っていうものを
どういったクラスで扱えばいいのかが分かりません。
たとえば、円形10000個のUnionをとった領域を
塗りつぶし領域として記録する場合、円形10000個の
中心座標と半径を記録しておくしかないんでしょうか?
Carbonのリージョンデータのように1つのデータとして
扱うことができないんでしょうか…?
どなたか教えていただけると幸いです。
よろしくお願いいたします。
- NSBezierPath
- NSBezierPathは、集合演算が欲しいな。
- NSBezierPath、遅い・・。
- >431
Carbon の遺産があるなら素直に Carbon でやるのが吉。
NSQuickDrawView を使えば GrafPort が簡単に取れるよ。
- >>433
そう言えばCocoaでベジェ曲線のブール演算とかするライブラリって無いのかな。
libart周辺にはありそうな気もするけど。
- >>436
ベジェ同士のプール演算の他に、他のベジェや点との包含判定も欲しいし、現在のペンとキャップとジョインの描画結果(輪郭)をベジェで取りだすAPIも欲しい。
後者は、外部ライブラリだとムリかな。
- QuickDrawViewはプリントが出来ないっ。ディスプレイに表示だけなら
いいけどさ。
- >438
GWorld で自力バッファリング。
通常の描画はCopyBits() で NSQuickDrawView の GrafPort へ。
-(void)print:(id)sender; を
1,GWorld -> NSImage 変換。自分自身を消去後 NSImage を自分自身に描画。
2,[super print] を呼ぶ。
3,[self drawRect:] で再描画。
とやればうまくいくんじゃないかなと想像してみる。
1 が通常の NSView 扱いにならなければ無理だけど。
- >>437
QuickDrawGXだと簡単にできた。CoreGraphicsは足りない機能が
まだたくさんある。
>>438
一旦PICTを経由して描画すれば良い。PICTからPDFへの変換は簡
単だからプリントはPDFベースで行なう。
- あるメソッドで作ったNSString *hogeの値を別のメソッドでも使いたいんですけど、
これってどうしたらいいんでしょう? ヘッダファイルでインスタンス変数として
書いておくらしいのはわかったんですが、具体的な方法がわからないです。
hoge = @"この文字列";
[hoge retain];
↑のような書き方では駄目ですよね?
- スコープ
- 質問の意味がわからん。
- >>441
文字列リテラルを retain するな。あと、C言語を勉強しろ。
- >>441
ヘッダファイルでは宣言だけ
Hoge.h
@interface Hoge : NSObject
{
NSString *hoge;
}
- >>441
最近はAppleのサイトからObjective-Cのドキュメントの和訳が読めるので、
参考にするといいんじゃないかと思う。
該当部分はクラス定義とメモリ管理の部分だと思うんだけど、難しいかな。
でもこれを読むくらいのやる気がないと続かないのではないかと思う。
特にメモリ管理の方はしっかり理解しておいた方がいいと思う。
http://developer.apple.com/ja/documentation/cocoa/Conceptual/ObjectiveC/3objc_language_overview/chapter_7_section_5.html
http://developer.apple.com/ja/documentation/cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_8_section_2.html
>>444
「文字列のリテラルをretainしてはならない」なんて話はなかったと思う。
リテラルだと本当にわかっていればretainする必要はない、というのはあるけど。
そういう意味だよね?
- >>442-446
レスありがとうございます。
わかり易くしようと思ったら自分の知識不足からわかり難くしてしまいましたorz
すいません。実際にやりたかったのは、
Hoge.h
@interface Hoge :NSObject
{
NSString *hoge;
}
Hoge.m
- (void)hogeMethodA:(NSString *)hogehoge
{
hoge = hogehoge;
}
- (void)hogeMethodB
{
NSLog (hoge);
}
↑のNSLog(hoge)でhogehogeが出力されるようにしたかっただけです。
和訳を読みながらもう少し勉強してみます。
- ver.4 だったらわかるけど略さないなら version 4 が正しいのではないか、と思った
- - (void)hogeMethodA:(NSString *)hogehoge
{
[hoge release];
hoge = [hogehoge retain];
}
- >>449
それは出来なかった筈……と思ったら、出来ました。
テストしてたクラスとは別のクラスで試したら出来ました。
これが原因だったのか?? 兎も角ありがとうございました。
- >>449
それじゃ hoge == hogehoge かつ retain count が 1 のときに dealloc されちゃう。
- (void)hogeMethodA:(NSString *)hogehoge
{
[hoge autorelease];
hoge = [hogehoge retain];
}
か、あるいは
- (void)hogeMethodA:(NSString *)hogehoge
{
if (hoge != hoegehoge) {
[hoge release];
hoge = [hogehoge retain];
}
}
- >>450
>449は典型的な悪い例だね。少なくとも一般的な使い方では。
言い方は悪いけど、メモリ関係の所をしっかり読んでおいた方がいいと言った
のは、まさにこういうのを避けるため。
英語だけど、こっちの方が詳しいな。
http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Concepts/ObjectOwnership.html
読んでみるとわかってなかったことを発見。orz
まあ、よっぽど自信がない限りはautorelease使え、ということで。
- Appleはこういう書き方もしてたと思う
- (void)hogeMethodA:(NSString *)hogehoge
{
[hogehoge retain];
[hoge release];
hoge=hogehoge;
}
- >>451
3行目の
[hoge autorelease];
はnilか否かの判定必要ですよね?
if ( hoge != nil ) [hoge autorelease];
- nil はどんなメッセージが来てもスルーするから
判定は不要なんじゃないか。
- 初めて知りました>nilスルー
ならば納得です
- nilをreleaseしようとしたら落ちないか?
-
ファイルの作成日を変更する方法ってCocoaで可能なんでしょうか?
NSFileManager の changeFileAttributes:atPath:
では、「変更日」は変更できても「作成日」は変更できないみたいですし。
CarbonAPIを呼ぶしかないんでしょうかねぇ…
- >>457
落ちない。
deallocされたオブジェクトにreleaseメッセージを送ると落ちる(ことがある)。
- 出来たっぽいです。
すみません。
- >>459
それで悩んだ事がある。nilに送っても無視されるって言ったじゃないかーって。
まぁよく考えたらnilじゃないんだけど
- ポインタが指しているメモリブロックが有効なオブジェクトかどうかを調べる方法は無いみたいだから
deallocした(つもりでいる)ポインタはいちいち=nil;しておくととりあえず安全
- Xcode2はどんな感じ?
- インスコするの忘れてた
- すいません質問させて下さい。
NSWindowControllerのinitWithWindowNibNameで作ったウインドウに
NSImageViewをつけてるのですが、これら(ウインドウとImageView)の
オブジェクト(メモリ?)を解放させる方法がわからないのです。
closeでウインドウを閉じてからならImageViewのImageもこちらから
release出来るようなのですが、クローズボックスを押してウインドウを
閉じたらウインドウとウインドウが含むオブジェクトを全て解放する、
といったような動作は出来ないのでしょうか?
- >>465
NSWindowController が dealloc されるとそのメンバである _window も rerlease される。
NSWindowController に setWindow: で nil をセットすると、 元の _window は release される。
NSWindow が dealloc されるとそのメンバである _contentView (NSView) も release される。
NSView が dealloc されるとそのメンバである _subviews (NSMutableArray) も release される。
NSMutableArray が解放されるとその要素も release される。
- >> _subviews (NSMutableArray)
これは嘘だけど、こっちの方が分かりやすいだろうからね。
- - (void)setReleasedWhenClosed:(BOOL)flag;
を YES にしときゃ良いってことかね。
- IBにNSLevelIndicator(.mac容量風)やらNSTokenField(Mailの宛先風)が追加されてるね。
- >>466-468
レスありがとうございました。
御陰でなんとか解放する事が出来たようです。
- CoreDataとMetaData Importerのdoc読んでたら頭痛くなってきた。
- MetaData周りは楽しそうだな。
でもTigerは新PowerBookまでおあずけな俺。
- Core Dataとmetadataの扱いって連携できるみたいなこと書いてなかったっけ?
やりやすいってだけの話なのかな。
- ここに書いて良いのか迷いながら書きます。
TigerになってPackage Makerもバージョンアップしましたね。
普通にパッケージを作るとライセンス表示の所から英語表記になるのですが、
みなさんはどの様に対処されていますか?
- NSLevelIndicatiorのratingスタイル激しく使えねえ。なんでこんな気持ち悪い挙動なんだ。
NSDatePickerはスタイル変えるとiCal左側のミニカレンダーそのままのものが使える。
使う予定ないけどちょっといい。
- Cocoa de AppleScriptableなドキュメントがいっぱい更新されたんで、
実験してるんだけど。うまくいかない。
CreatorCodeの話なんだけど。
Application sageに、AppleScriptコマンドageを定義したとして
sage.scriptSuiteのAppleEventCode と、
ageコマンドのAppleEventClassCode って、
やっぱりCreator Codeにしないとだめなのかな
デフォルトの????のままではうごかないの?
Creator codeの申請ページで依頼かけたんだけど、3日たっても
かえってこない...どうすりゃ動くんだ。
-
4亀で来た。Apple仕事遅すぎ。あっちは平日だろ。
- 初歩的な質問ですがお願いします。
NSTableViewの中のセルを編集してenterキーを押すと次のセル、次のセルと編集モードのフォーカスが移って行きます。
これをとめる方法はありませんか。
- NSTableViewはNSControlのサブクラスなので、delegateに
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command
{
if (selector == @selector(insertNewline:)) {
// Enterでやって欲しいことがあればここに書く
return YES;
} else {
return NO;
}
}
を実装でいけそうな気がする。試したことないけど。
- 間違った
× if (selector == @selector(insertNewline:)) {
○ if (command == @selector(insertNewline:)) {
- テキスト編集はフィールドエディターの扱いもあるから自分で扱うのは難しい。
同じ疑問にぶつかったときに検索して見つけた方法。
tableviewのサブクラスのほうでtextDidEndEditingをオーバーライドして通知を書き換える:
- (void)textDidEndEditing:(NSNotification *)notification;
{
if ([[[notification userInfo] objectForKey:@"NSTextMovement"] intValue] == NSReturnTextMovement)
{
NSMutableDictionary *newUserInfo;
NSNotification *newNotification;
newUserInfo = [NSMutableDictionary dictionaryWithDictionary:[notification userInfo]];
[newUserInfo setObject:[NSNumber numberWithInt:NSIllegalTextMovement] forKey:@"NSTextMovement"];
newNotification = [NSNotification notificationWithName:[notification name] object:[notification object] userInfo:newUserInfo];
[super textDidEndEditing:newNotification];
[[self window] makeFirstResponder:self];
}
else
{
[super textDidEndEditing:notification];
}
}
- あ、コードの一行目に入ってるセミコロンは消して
- 私も方法を披露させてもらっていいかな。
-(BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(int)row{
NSEvent *event=[NSApp currentEvent];
if ([event type] == NSKeyDown) {
switch ([event keyCode]) {
case 36 :
case 48 :
case 52 :
return NO;
default :
return YES;
}
} else {
return YES;
}
}
こいつを NSTableView の delegate に実装する。
return,tab,enter が押されても次のフィールドには移行しない。
- みなさまレスありがとうございます。
インターフェイスビルだーでちょこちょこといじればできるのかなと思っていたのですが
かなりいろいろといじらなくてはいけないようで驚きです。
ひとつづつ勉強しながら使わせていただきます。
当方のイメージとしてはiTunesのような挙動をしてくれたらいいな、と思っていたのですが
iTunesはCocoaではないんですよね。
ありがとうございました。
- なにげにCocoaな純正アプリが思いつかない漏れがいる
- 481氏の方法が正論だなと思いつつもこんな方法で自分用には十分なのかも。
@implementation CustomTableView
- (void)textDidEndEditing:(NSNotification *)aNotification
{
[super textDidEndEditing:aNotification];
[self deselectAll:nil];
}
@end
- Cocoaでスクリプタぶるなアプリ作るときに、
どうしてもファイルパスの取り扱いが分からないんだ。
アップルスクリプトから渡されたFile Specificationは、こんな形式になるよね
Macintosh HD:Users:hoge:Desktop Folder:ほげほげ.txt
:Desktop Folder:ほげほげ.txt
これを、NSStringで扱えるようなファイルパスへ変換するうまい方法ってある
のかな?つまり、POSIX Pathにしたいんだけど。
/User/hoge/Desktop\ Folder:ほげほげ.txt
~/Desktop\ Folder/ほげほげ.txt
日本語や、空白や、32バイト以上のパスコンポーネントをうまく扱えるような
すばらしい技を知ってたら教えてほしいな。
- OK, 誰かCore Dataのオブジェクトモデルの具体的な使い方についてわかりやすく解説してくれ。
プロパティの設定の仕方くらいはわかったが、サンプルを見ても何がどう作用してるのか全然わからない。
- >>487
return POSIX path of ファイル as Unicode text
でいけないか?
- アイコンについてお聞きします。
システムアイコン(フォルダや白紙の書類など)はどこに保存されているのでしょうか。
また、将来自作のアプリを公開するときにこのようなアイコンを使っても良いものなのでしょうか。
- >>490
白紙の書類は AppKit.framework/Resources/NSMysteryDocument.tiff かな?
Finder.app の Resources 下の icns か Finder.rsrc かも。
でもAppleの著作物ゆえ流用してはイカンのだろうなと思う。
以前はADCにAquaIconKitというテンプレートがあったんだけどね。
- sudo find / -name "*folder*" -print
こんなことしてみても見つからない。もしかしてリソースフォークに入ってる?
でも128*128のフルサイズのアイコンもあるしなあ。
>>491
バンドルして公開するのはまずいと思うのですが、パスを指定して読み込むのもまずいんでしょうか。
- NSWorkspace-iconFor...:は何のためにあるのか考えてみよう。
NSWorkspaceはIcon Servicesのラッパーだから機能が不足なら
直接Icon Servicesを使う。標準的なアイコンは概ね用意されている。
- http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIcons/chapter_14_section_5.html
8番目の項目に使うなと書いてあるね
著作権については何も触れていないけど
- それは「ユーザーを混乱させるからそのまま流用するのはよせよ」という意味だろ。
書類のアイコンを作ったりするときに空の文書のアイコンをベースにしても問題はないし。
※この問題ないってのは法的な意味じゃなくソフト作家が使うくらいなら通常容認されてるという意味
- >>495
>それは「ユーザーを混乱させるからそのまま流用するのはよせよ」という意味だろ。
そうだよ
>>492は書類アイコンを作りたいわけじゃないみたいだからね
- http://developer.apple.com/documentation/Cocoa/Conceptual/Workspace/Tasks/InformationAboutFiles.html#//apple_ref/doc/uid/20001004-39665
NSWorkSpaceのサンプルコードをみるとなつかしのファイルタイプ使って管理してる。
そういやFinderってCarbonなんだよな。
- Spotlight importerで検索結果画面の特別な分類を作るにはどうしたらいいんだろ。
(書類、メールメッセージ、イベントとTo DO、みたいな分類)
- >>498
Schema.xmlに新しい分類を追加して、GetMetadataForFile()で
attributesに突っ込んでやる
- あ、ごめん、書類の種類の事か
それだったら俺も知りたい
誰か教えて
- NSTableViewでセルを選択しているときにコマンド+Cを押すと、BEEP音がなってしまいます。
コマンド+Cを押したときに選択しているセルをコピーするようにするには、どうするといいのでしょう?
TableViewのサブクラスを作ってperformKeyEquivalentをオーバーライドするような感じでいいんでしょうか?
初歩的なことですみませんが、朝からハマってて困ってます。。。
- - (void)copy:(id)sender
をテーブルのデリゲートでオーバーライド。
- >>502
未熟者でした・・・。試してみる&ドキュメント探してみます。
お陰で正しい道を歩めそうです、ありが㌧でした。
- CFStringRefとNSStringの変換について質問。
cfRefPath = (CFStringRef) [ MoviePath stringByExpandingTildeInPath ];
ネットで、CFStringRefとNSStringがキャストで相互変換出来るって見つけた
んでこう書いたんだ。この後これをQTの関数で処理させるんだけど、これ自体
は間違っていないよね?
で、CFStringRefに型変換したけど、stringByExpandingで生成された領域
自体ってAutoReleaseされるんだよね?(MoviePath自体はAutoRelease)
そう思ってたから、CFRelease(cfRefPath);って書いてないんだ。
もしかして、CFStringRef型に放り込んだ時点でretainされたことになってて
手でreleaseしないと残りっぱなしになるとか、そういうことなんだろうか。
実際、この(CFStringRef)cfRefPathは、ルーチン抜けたら破棄されてよいの
だけど、
確実に手で破棄すべきなのかな?どうすればいい?
- 相互変換できるなら自分で retainCount を数えてみればいい。
- まったく検証してないけど、autoreleaseされると思う。
キャストしただけでCFRetainされたりしたら気持ち悪すぎ。
- >>505,506
retainカウントはみてないけど、
DFRelease(cfRefPath);
とか
[(NSString*)cfRefPath release];
とかやると、ルーチン抜けたところで
NSApplicationのAutoreleaseでクラッシュする。
AutoReleaseなやつを手でreleaseしたらクラッシュ?
まあいいや
やっぱり手でリリースする必要は無さげ。よかったー
これ自体はリークの原因じゃないのね。
やっぱりQTのSGStopがリークしてる気がしてきた...
一応BugReport中なんだけど、ずっと放置される予感...
(10.3.9/QT652)
- >>507
>AutoReleaseなやつを手でreleaseしたらクラッシュ?
そりゃクラッシュするよ
手でreleaseした時点で解放されたオブジェクトをAutoreleasePoolがさらに解放しようとするんだから
- AppleがObjective-CにGCを導入しようとしてるらしい。
http://lists.apple.com/archives/objc-language/2005/May/msg00021.html
- 開発のスピード化的には正しい方向ですな
- そのうちObjective-Dにでもなるかな。
- ある文字列のなかに特定の文字が何回あらわれるかを調べるにはどうしたらいいですか。
NSScannerの使い方がよく分からないです…orz
- ごく単純な方法。
NSArray *array=[@"ある文字列" componentsSeparatedByString:@"特定の文字"];
NSLog(@"%d回",[array count] - 1);
- NSScannerの使い方はCocoaはやっぱりに昔出てた
今もあるかどうかはわからん
探してみ
- ありがとうございます。解決しました。
- 別にD言語はわざわざObjectiveにする必要ないだろ。
- 良スレ
- NSString* contents=[NSString stringWithContentsOfFile:filename];
こんなかんじでファイルを読み込むと、
ファイルサイズが100kbを超えた辺りからcontentsがnilになって読み込みに失敗してる。
メモリを確保できなかったってことなんだろうけど、回避するにはどうしたらいいかな。
//Cocoaのスタックって512kbくらいなかったっけ。
- ファイルの容量じゃなくてエンコードの問題じゃないか?
stringWithContentsOfFile:はデフォルトのエンコーディングでエンコードするけど
うまくエンコできなかったときはnilが返ってくるから
NSData dataWithContentsOfFile:で読み込んで
initWithData:encoding:で適当なエンコーディングを指定してNSStringにしてみたら?
//オブジェクトはスタックじゃなくてヒープに確保されてるんじゃないかと思う
- 遅くなったがサンクス。
これで読み込み成功。
NSData* theData=[NSData dataWithContentsOfFile:filename];
NSString* contents=[[[NSString alloc] initWithData:theData encoding:8] autorelease];
ファイルサイズに関係なく、エンコード判別に失敗してただけのようだ。
//しかし失敗する原因はなんだろう。自動判別に失敗はつきものなんだろうか。
- >>520
stringWithContentsOfFile:は完全な自動判別じゃなくて
Unicode-> UTF-8-> default C string encoding
の順番でチェックしてるだけだそうだ
ちなみにTigerからは
stringWithContentsOfFile:encoding:error:
とかいうのが増えてるね
- というか stringWithContentsOfFile: は deprecated になりましたな。
- お、ほんとだ、見落としてた
当面はNSData経由がベターかな
- directoryContentsAtPath:で取得したファイル一覧fileListから.DS_Storeを
消したいんですが、if文で判別させようとしてもうまくいきません。
if ([fileList objectAtIndex:0] == @".DS_Store"){
//処理
}
↑では処理が行われないようなのですが、@".DS_Store"の部分は
どのように指定すれば良いのでしょう?
また、fileListが空の配列だった場合に、
if (fileList == [NSArray array]){
//処理
}
↑のような書き方をしても処理が行われないようなのですが、
これも何か別の書き方があるのでしょうか?
- >>524
isEqualToString:
isEqualToArray:
- >>524
最初のは
if ([[fileList objectAtIndex:0] isEqualToString:@".DS_Store"]) { ... }
2番目は
if ([fileList count] == 0) { ... }
- .DS_Storeが一番目とは限らないだろ。
if([fileList containsObject:@".DS_Store"]) とやるべき。
- >>524
if ([fileList objectAtIndex:0] == @".DS_Store")
と書くと「オブジェクトの値」の比較ではなく
「ポインタの値」を比較しているということね
オブジェクトの値を比較したいときは>>525のようなメソッドを使う
- プロジェクトのResource内にある「hoge.txt」の内容をNSStringにするにはどうすればいいのですか
- NSString *string=[NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"hoge" ofType:@"txt"]];
こんぐらい自分で調べようぜ。
- >>530
ありがとう。
なんかいろいろやってたら分け分かんなくなって(言い訳
- >>525-528
レスありがとうございます。
ちゃんとそれ専用にメソッドがあるんですね。
やっぱりAppleScriptの感覚でいるとダメですね。
>>526の2番目はちょっと目から鱗です。なるほど。
- 最近活性化してる。Tiger効果か?
- NSLog()関数に渡す引数には
ascii文字が最低1文字含まれていないといけないようなきがする。
- NSMutableStringって結合できないのか。
('A`)マンドクセ
- >>535
NSMutableAttributedStringのまちがい
- replaceCharactersInRange:withAttributedString:か
insertAttributedString:atIndex:を使えば良いんじゃないの?
- 結合の意味がわかんないけど
appendAttributedString: といっておく。
- うわーーーーーーーーーー
見落としでした。
はずかしいいいいいいいい
- >>537
結合で insert を出してくるなんて、エロすぎます。
- for(i=0;i<100000;i++){
[myTextField setIntValue:i];
}
特に意味はないんだけど、これを実行するとしばらくハングした後に99999が表示される。
0,1,2…と順に表示させるにはどうするんだろ。
- NSTimerですかね
- NSAnimation
- [myTextField display];
ではだめだろうか?
- >>544
ビンゴ!
それですな。
しかし、display呼ばなかったらイベントループが終わるまで変更が反映されないのか。覚えとこ〆(゚▽゚*)
- それだと固まるのは直らないような希ガス
- >>545
基本的に全部そうだと思う
setImage:とか
- >>546
別スレッドを立ててみた
- (IBAction)start:(id)sender
{
[NSThread detachNewThreadSelector:@selector(count:) toTarget:self withObject:nil];
}
-(void)count:(id)object
{
NSAutoreleasePool* arp=[[NSAutoreleasePool alloc] init];
int i;
for(i=0;i<100000;i++){
[myTextField setIntValue:i];
}
[arp release];
}
これでもカウンタは回る。display呼ばなくてもいいのはなぜだろう。
- 追記
メインのイベントループが待機中だったらビューの再描画が行われるのかな?
- スレッド切り替えのタイミングで再描画してくれるんじゃないの?
- Cocoaアプリでは基本的に、イベントループ1回(例えばアクションメソッドが呼ばれてreturnするまで)につき、
最後にセットされた描画内容を描画する。
- >>548をビルドしてデバッガで追跡したけど
[myTextField setIntValue:i];
この行を処理したときにテキストフィールドも変更される。
別スレッドをたてるとそうなると思うしかないのか。
- NSTextFieldってスレッドセーフだっけ?
NSTimer使うのが正解では?
- >>548
これはスレッドを使う場面じゃないです。すでに指摘されている通り NSTimer を使ってメインスレッド内で処理すべきです。
別スレッドからの GUI の更新は Cocoa に限らず基本的にどのライブラリでもタブーと思ってください。
- 別threadから、main threadで関数指定で実行するmethodがあるやん。
- [hoge display];
はスレッドセーフではない。
[hoge setNeedsDisplay:YES];
はスレッドセーフ。
[hoge setNeedsDisplay:YES];
は、更新フラグを立てるだけね。
メインランループの更新手続きのときにメインスレッド上で更新される。
- マウスカーソルを合わせたときに、
ラベルっぽいメッセージがポップアップするのってどうやるのでしょう?
よくブラウザでalt属性を表示させるようなアレ。
- Tooltipのことか?
- >>557
IBのパレットをよく見よう
- 関係ないけど tooltip が目的なら alt 属性じゃなく title 属性を使おう。
- >>558-560
それでした。cocomonaのソース見て、NSPanelから手作りしなきゃならないのかなー
と不安になってたとこでした。
毎度どもです。
- @implementation
- (void)start{
num=0;
timer=[NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(count:) userInfo:nil repeats:1];
}
-(void)count:(id)object{
[myTextField setIntValue:num++];
}
@end
こんな感じでカウンタ回りました。
で、カウンタ止めたくなったら
[timer invalidate];すると。
- インターバルってゼロを指定していいんですか?
- 人にきくまえに先ずはドキュメントをよみましょう。
- 「Happy Macintosh Developing Time 」を、xcode1.5でお勉強中です。
P130の「アウトレットとアクションをつなぐ」と言うところで困ってます。
本の通りにしたはずなのに、control+D&Dが全く反応しません。
xcode1.1でも同じでした。
ゴールデンウィークから立ち止まって、抜け出せません。
IB単体で、やってみましたが駄目でした。
お願い、誰か助けて~~~~~ !!
- よくわからんけどあんな簡単な事を本よりも詳しく説明するなんて至難の業だと思うが。
何がどうダメなのか詳しく説明しろよ。
ドラッグしても線が出ないとか、対象につながらないとか、つないでも元に戻ってしまうとか。
- >>565
とりあえず操作が合っているか確認。
1. Control を押しながらオブジェクトをクリック
2. そのまま Control は押しつつマウスをドラッグすると線が引かれる
3. そのまま線をもう一方のオブジェクトに重ねる
4. マウスボタン離す
Interface Builder の "Instances" からじゃないと接続できないからね。"Classes" じゃだめですよ。もしくはウィンドウ上に配置したオブジェクトね。
- 説明不足で、スミマセン。
>ドラッグしても線が出ないとか、対象につながらないとか、つないでも元に戻ってしまうとか。
ドラッグしても線が出ない、かつ、対象につながらない。
のです。
>1. Control を押しながらオブジェクトをクリック
OKでした。
>2. そのまま Control は押しつつマウスをドラッグすると線が引かれる
これが、出来ない。 ?(tt)??
>3. そのまま線をもう一方のオブジェクトに重ねる
>4. マウスボタン離す
2.が出来ないから、3,4はできない。
>Interface Builder の "Instances" からじゃないと接続できないからね。"Classes" じゃだめですよ。もしくはウィンドウ上に配置したオブジェクトね。
"Instances" からなんだけどね~~~~?
不思議だ。
- >>568
まさかとは思うが、controlキーってどのキーだか解ってるよな?
- 鉛筆の絵が書いてあるキー、でしょ。
キーにも、しっかり「control」って、書いてありました。
ちなみに、サブ・オブシェクトを作るときは、しっかり反応してましたよ。
- あなたはどの程度若葉マークなのかそれが知りたい
名前欄にあえて「初心者」とか書いちゃう人は
いろんな意味で相当な初心者に思えてしまうのよ条件反射的に
それはもうドラッグとかドロップとかちゃんと意味分かってるんだろうかと気をもむぐらい
実際どうなの
パソコン歴は長くて部分的には習熟してる中~上級ユーザーなのか
まだ始めたばっかりの初級ユーザーなのか
- Carbon Nibじゃないだろうな
- 言葉足らずでスミマセン。
>実際どうなの
>パソコン歴は長くて部分的には習熟してる中~上級ユーザーなのか
>まだ始めたばっかりの初級ユーザーなのか
パソコン歴は長いです。
仕事にしているぐらいです。(Linux,H8マイコン,ハード設計、など)
でも、macのプログラムに関しては、さっぱりです。
>Carbon Nibじゃないだろうな
英文マニュアルにも、「cocoaのみ」と書いてあったので、その辺も確認しました。
cocoaのアプリで動作確認してますけど。
- >>573
そこまで壊滅的だと、もっと基本的なところから確認した方がいいと思うよ。
たとえば、Control キーが(ハード的に)使えない状況になってないかとか。
Finder から「ファイル」メニューを開いたままControl キーを押したり離したり
して下さい。
「情報を見る」が「概要情報を見る」と切り替われば Control キーが有効。
変化が無ければキーボードが壊れてるって事で。
あとさ、あちこちの掲示板で同じ質問するのが悪いとは言わないけど、いい気はしない。
2ch なら「助けて~」って書き方でもいいけど、ハードなアプリ屋が集う板で
同じ表現だと荒らし寸前になっちゃうよ。
- まずはDevToolsを再インストールじゃないか?
- >あとさ、あちこちの掲示板で同じ質問するのが悪いとは言わないけど、いい気はしない。
>2ch なら「助けて~」って書き方でもいいけど、ハードなアプリ屋が集う板で
>同じ表現だと荒らし寸前になっちゃうよ。
↑本当に、スミマセン。
ごめんなさい。
でも、本当に困っているのも事実です。
xcode1.1を再インストールし、これが駄目だったのでxcode1.5を購入しました。
で、結局同じ。
もう、どうしたら良いものやら。
- 土日に掛けて、ハードディスクの掃除をしてみます。
(駄目もとで)
それで、再インストールしてみます。
(余り期待出ませんが)
ネチケット違反の件は、重ねてお詫び申し上げます。
はぁ~。
落ち込むなぁ。
- >>568
>> そのまま Control は押しつつマウスをドラッグすると線が引かれる
>これが、出来ない。 ?(tt)??
マウスやコンテキストメニュー関連で、妙なユーティリティを
インストールしてやしませんか?
- >>568
Interface Builder の環境設定で、Editingの「Lock all connections」の
チェックは切れてるか?
- >>577
とりあえず、再セットアップなら次の順序を試してみるのが良いかも。
0. Control を認識しているかチェック
たとえば Interface Builder の Palettes Window (Command-/) のツールバーでコンテキストメニューが出せるか。(2ボタンマウスがあれば)右クリックで出ることを確認して、同じように Control + クリックしてみる。
1. ~/Library/Preferences にある com.apple.InterfaceBuilder.plist 削除
これでもう一度試してみる。
2. 捨てアカウント作って試す
ユーザーの設定ファイル類がクリーンな状況になるんで。そのとき言語も English にしておくと良いかもしれん。
3. Interface Builder の再インストール
Interface Builder だけ再インストールって出来るのか分からんけど、確実にいくなら Developer Tools 全体のアンインストールと再インストールか。
4. OS の再インストール?
Interface Builder だけに問題が発生する状況というのがよく分からんので最終手段といっても効果の程はどうだろう。
- NSTextViewのBackgroundColorを透明にするにはどうしたらいいですか?
IBでOpacityを0にするとIB上では透明になるんですが
ビルドすると真っ黒になってしまいます。
- isOpaqueで何かえしてる?
サブクラス化してYES返すようにしたらだめだろうか?
- NOかもしれん・・・
Opqqueって不透明、だな
- NSTextViewのサブクラスでこうやってもだめでした。
#import "MyTextView.h"
@implementation MyTextView
-(id)init{
[super init];
[self setDrawsBackground:NO];
return self;
}
-(BOOL)isOpaque{
return NO;
}
@end
- >>584
initWithFrame:textContainer: を同様に override してみたらどうでしょう
- 普通のウィンドウだからじゃないか?
ウィンドウも透明にしてやらないとダメだろ
- >>586
NSTextFieldのようにウインドウに直接テキストを張り付けたいんですよ。
IB上のNSTextFieldには「Draw」のチェックボックスがあるんですけど
NSTextViewにはないし。
ドキュメントを読む限りではsetDrawsBackground:で変更できるはずなんですけど。
- >>584
initWithFrame:textContainer: じゃなくて initWithFrame: を override するべきか。
initWithFrame:textContainer: は initWithFrame: をよんでいるが、
initFrame: は init をよばないので、init だけを override してもダメみたい。
- (id) initWithFrame:(NSRect)frameRect
{
if ((self = [super initWithFrame: frameRect])) {
[ self setDrawsBackground: NO ];
}
return self;
}
isOpaque の override は要らないはず。NSView の default が NO だし。
- >>588
IBで作ってるみたいだからinitをオーバーライドしてもダメでは?
- >>589
IB で Dran & Drop したコントロールにカスタムクラスを指定した場合は、
initWithCoder:
が呼ばれます。
http://www.omnigroup.com/mailman/archive/macosx-dev/2001-April/012348.html
- メールの文中をおおまかにダイジェストすると、
IB のコントローラは nib を保存するときには IB 上の情報を使って archive されて保存される (encodeWithCoder:)。で、プログラムが実行されるときには unarchive されるので initWithCoder: が使われる。
たぶん IB で Window とかに Drop したときに initWithFrame: が使われているんだろう。
# NSTextField で実際に試したわけじゃないですが、NSOpenGLView にカスタムクラスを指定したときは確かに initWithCoder: が呼ばれました。
- 何度もすまんです。
こんな話もあるんで、
http://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/4200/4282.html
気をつけてください。
nib でインスタンス化されたコントロールは
1. 基本的に initWithCoder: が使われる
2. ただし NSCustomView の場合は initWithFrame: が使われる
file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Conceptual/LoadingResources/Concepts/NibFileLoaded.html
に詳しい。カスタムクラスを指定した場合は、nib からの unarchive の際に、元のクラスを decode してカスタムクラスと交換する処理が入るらしい。だから initWithCoder: / initWithFrame: の中で
if (self = [super initWithCoder:]) // or [super initWithFrame:]
{
// initialization
}
という書き方が必要になると思われ。
- Panther以降用のアプリでCoreImage使おうと思って、NSViewのサブクラスで
#import <QuartzCore/QuartzCore.h>
して、CIExposureSampleをまんまパクってやってみたんだけど、
これPantherだと当然落ちるか起動できないかですよね?
Tigerの場合はCoreImage使って、Panther以下の場合はそのままってどうやれば良いんでしょうか
- 書き込みが遅れてスミマセン。
結果報告
>Interface Builder の環境設定で、Editingの「Lock all connections」の
>チェックは切れてるか?
(@o@)
これですっ! これ、これっ!!
動きました。
やったーっ!! ありがとうございます。 感謝してます !
- 態度悪いなぁもぅ・・・
- NSTextViewのサブクラスをIBで?
と一瞬疑問だったんだが、TigerからはIBでNSTextViewのカスタムクラスを指定できるようになったんだね。
楽になったというか、やっと普通になったというか。
これで作ったnibファイルはPantherで使えるのかな?
- >596
元から出来たよ。
- すみません、最近Cocoaを始めたものなんですが
クラスが多すぎて調べたいactionクラスがどこに接続されてるのかわからない場合
簡単に調べられる方法はないでしょうか・・・?
どうか知恵をお貸しいただきたい m(__)m
- inspectorのconnectionで該当するactionを選択すれば線が出てくるので
確認できる。
- NSTableViewにフォーカスがあるかどうかって、バインディングで取れますか?
具体的には、フォーカスある時だけメニューをクリックできるようにしたいのでつ
- >>600
http://developer.apple.com/documentation/Cocoa/Reference/CocoaBindingsRef/index.html
には見た感じなさそうだね。
無いということは、たんに機能としてまだ実装されていない場合かもしれんけど、フォーカスの有無によってインターフェースに変化があることを Apple の Human Interface が推奨しないかのかもしれない。
項目が選択されているかどうか (selectionIndexes) じゃだめなの?
- メニューをクリックってのがどういう意味かわからんけど、
メニューバーのメニューをどうこうするなら validateMenuItem: でやるのが筋じゃない?
- >>594
解決してよかったね。
自己満足してないで、あちこちの掲示板に書き散らした
「助けて~」にフォロー入れてきなよ。
マックのプログラマが少ないとかボヤくより先にやる事あるでしょ。
- あちこちの掲示板のことなんかどうでもいいよ
話題に出されても何ら面白みがない
- マルチだってわかってんなら最初に指摘しとけ
- NSXMLParser を使っています。
これで丸数字などのいわゆる機種依存文字の入った XML ファイルを読み込むと
アプリがクラッシュしてしまいます。
encoding="shift-jis" や encoding="euc-jp" で必ずクラッシュします。
これを回避する方法はないでしょうか。
- パネルウインドウで、前はIBからタイトルバーをボタンオンオフで切り替えできたけど、
Tigerは出来なくなった?
- >>607
訂正
タイトルバーの位置をボタンオンオフで上と横切り替えできたけど
- http://ridiculousfish.com/blog/
ここ既出ですか?
I’m a developer on Apple’s AppKit team; I work to make Cocoa better.
With a few exceptions, we are responsible for both AppKit and Foundation. This is my blog.
- NSProgressIndicatorを使ってファイルコピーの進捗を表示してるんだけど、
一瞬で終わった場合、バーが満タンになる前に終了してしまいます。
どうやったら、必ずバーを満タンまで描画させられるんでしょうか。
- コードがまったくわからないから setDoubleValue: とだけ言ってみる
- 満タンにしてから閉じればいいだろ。一瞬で終わらなくても満タンになって
から終わるんだから、満タン表示が2回になってもコストは小さい。
- >>601,602
どもです。validateMenuItem: で実装できました。
NSMenuItemのBindingにenableってのを見つけて、これに直につないだら楽できるのになー
と思ってたのですが、そっちの方が面倒そうですね。
- >>601
>フォーカスの有無によってインターフェースに変化があることを Apple の Human Interface が推奨しないかのかもしれない。
特定のビューにフォーカスがなきゃ機能し得ない操作なんていくらでも想像つくだろ?
アホチンがHuman Interface語るな。
- 煽るならもうちょっと早くな。
- >>587
もう解決したかな?
NSTextViewのカスタムビューを作って、背景をウインドウの背景と同じにしたら?
- NSOpenPanelをrunModalで出してても、アプリメニューの
「アプリを隠す」ってのだけは有効なままだけど、
自分で作ったNSWindowをrunModalForWindowすると、
アプリメニューが全部Disableになるんだが、
有効にする方法ってあります?
- >>616
587ですが、素のNSTextViewに
setBackgroundColor:[NSColor windowBackgroundColor]を投げてやればOKでした。
clearColorじゃダメなんだということが分からずお騒がせしてしまいました。
- ビルドすると
main.m:13: warning: passing argument 2 of 'NSApplicationMain' from incompatible pointer type
って警告が必ず出るんですけど、無視していいんでしょうか?
- その行の内容に因る。
- #import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, argv);
}
普通のmain.mです。
どっかでおかしなことやってるってことなんですかね?
- >>621
Xcode1.2ぐらいの問題じゃなかったっけ?
無視してもいいし、気になるなら
(const char**)argv
とかしとけばいい。
DeveloperTools最新にすれば出なくなったはず。
- Xcodeはタイガーに付いていた2.0です。
でもソースは古いバージョンで作成しました。
- でも無視することにしました
どうもありがとうございました。
- Cocoaはびっくり!!!
ホントに再コンパイルだけで大丈夫?
- Cocoaを勉強してまもないものでしが、疑問が湧いたので
教えてくださいまし....
プロジェクトのテンプレートから作成した自分のプロジェクト
にあるMainMenu.nibには、ブランクなWindowが最初からあるので、
実行時にMainMenu.nibが非アーカイブ化されて、
何もコーディングしなくても、Windowが表示されるという理解でした。
ところが、このMainMenu.nibに始からあるWindowを削除して、
自分でIBのパレットからWindowのインスタンスをMainMenu.nibに
追加しただけでは、実行した時Windowが表示されないんですが、
なぜなんでしょうか?
#削除は誤って消してしまったんでがす...
nibにあるオブジェクトは、実行時に読み込まれることで
非アーカイブ化されて、nibの中にあるオブジェクトが
インスタンスとして再生/表示されると思ってたんでげすが、
どうも間違って理解してるかなぁと。
確かに、デフォルトのMainMenu.nibに自分でWindowを追加しても
実行時は、始からあるWindowしか表示さえないような感じだし。
nibを読み込んだ時、オブジェクトのインスタンス化する、しないを
制御する設定があるとか?でしょか....
長々となってしまいますたが、ご指導お願いします。m(_ _)m
- 長文書く前に IB を隅から隅まで探してみよう。
- シフトとアップルキーとiを押してインスペクタ表示させて
enableで目的達成かな?
- visible at launch time
- Intel版MacOSXでもCocoaでアプリケーションつくれるんだろうな?
今やってる事を、無駄にしてくれるなよ。
- >>630
コンパイラー(gcc)の問題だけだから、大丈夫じゃね?
- 少なくともカーボンは死亡?!
- ClassicもCarbonも、もう要らんでしょ。
それより、MacでMacOSXとWindowsがネイティブ動作できるわけだ。
別にPowerPCの信奉者じゃないから、これはこれで便利かもしれん。
ノートタイプにはPowerPC G5は載りっこなかったわけだし。
- OC=>C#になったりして
- CPUが変わっただけで開発言語まで変わるわけないだろ。
- >>633
Windowsが今のX窓と同じ気軽さで動作するにはもう少し時間が必要だろうけどな。
- >>636
メモ帳程度なら今でも(ry.....
- >>634
そーなったらいいのにな~♪
- >>627, 628, 629
ありがとございますた。解決しました。
精進します。
- NSEventのtimestampはイベントが起こった時の起動してからの秒数(NSTimeInterval)のようですが、
現在の起動してからの秒数はどっかにありますか?
- [[NSApp currentEvent] timestamp] かなぁ
- currentEventは最後のイベントらしいので結局同じイベントのtimestampしか得られないっぽいです…
やりたいのはviewのscrollWheel:(NSEvent *)theEventでtimestampとdeltaYを得て、
現在のNSTimeIntervalと比べてホイールの回転速度を知りたいのです
一気にまわすと↓こうなるので出来るかなと
2005-06-08 13:08:19.276 time=397451.7
2005-06-08 13:08:19.308 time=397451.8
2005-06-08 13:08:19.318 time=397451.8
2005-06-08 13:08:19.333 time=397451.8
2005-06-08 13:08:19.808 time=397451.8
- theEvent が作られた(発生した)瞬間と、scrollWheel: が呼ばれた瞬間は
同じと考えて(ひょっとしてこの2つの時間差を計ろうとしてない?)、
一回前にscrollWheel: が呼ばれた時とdeltaYを比べるべきじゃないですかね?
試してないけど、大体こんな感じでどうでしょう?
- (void)scrollWheel:(NSEvent *)theEvent
{
static NSTimeIntervalbeforeTime=0.0;
static floatbeforeY=0.0;
NSTimeIntervalcurrentTime=[theEvent timestamp];
floatcurrentY=[theEvent deltaY];
NSLog(@"移動距離=%f 移動速度=%f", currentY-beforeY, (currentY-beforeY)/(currentTime-beforeTime));
beforeY = currentY;
beforeTime = currentTime;
}
全然違ってたらゴメン
- >>643
私も同じだと思ってたんですが、同じだと>>642のログにはならないと思うのですが間違ってるかな
2005-06-08 13:08:19.276 time=397451.7
|0.03秒でtimestampが0.1変わってる(=違うときに発生したイベント)
2005-06-08 13:08:19.308 time=397451.8
|0.5秒経ってるのにtimestampは変わってない(=同じときに発生したイベント)
2005-06-08 13:08:19.808 time=397451.8
それとずっと回してる訳ではないので、それだと久々に回した時の計算がおかしくなります
(まぁいざとなったらcurrentTime-beforeTimeが○以上だったら無視、とかすれば良いですが)
なんか混乱してきた
- いや、イベントが発生した瞬間と、scrollWheelが呼ばれた瞬間に差があろうがなかろうが、
スクロール処理を実装するのに、その差を出す必要はないんじゃないかってことですよ。
> それとずっと回してる訳ではないので、それだと久々に回した時の計算がおかしくなります
もちろん>>643の方法ではまずいパターンは多々あるけど(最初に呼ばれた時とか)、
基本的な方法としてはこれでいいんじゃないかと思ったんだけど。
- そういや現在の起動時間-timestampでやったら(thread作るならともかく)
一回一回処理の時間かかるから意味ないですね
timestampが同じならdeltaYを足してって変わったら処理、でも良いけど、
それならbeforeTime=timestampしといてtimestamp変わったらbeforeTime-timestampでも良いし
timestamp変わらなかったら…だけどNSTimerで保険かけるか
また混乱してきたorz
とりあえず>>643で久々のor最初の一回目は固定の処理をする、でやろうと思います
ありがとうございました。お手数かけてすいません>ID:xXFoKke
- Intel Macを考えるとCocoa-Javaがベストな選択?
ObjectiveCの場合、PPCとIntelの両方のプラットフォームを手に
入れないと動作確認できないのは辛いよね。
- Cocoa-Java Bridge だって動作確認は必要じゃないの?
っていうか, Intel への移行で Java bridge の方がいいという意味が
わからんのですが...
- Objective-Cで何の問題もないが。
妙なメモリアクセスさえしなけりゃね。
- バイトオーダーに依存するような生々しい書き方せずに
Cocoaで書く分には問題ない、と思いたい。
- 自力でJava Bridgeをゴリゴリ作っている場合は、
ObjectiveCと同じように注意が必要だと思うけど
アッポ純正APIを使う分にはjavaの恩恵を受けら
れるんじゃないかな
- え? なに? エンディアンが気になるって? (w
- やっぱC言語(ObjCも含む)の場合はエンディアンが気になるでしょう。
sys/socket.hのソケットを使って、intを送信したらどうなるのかな?
- そんなに気になるかな? エンディアンよりもアライメントの方が気になる。
エンディアンはOSUtilのBitSetとかBitClrなんか使ってるとこくらいかな。
あとバイナリーファイルか。
- > sys/socket.hのソケットを使って、intを送信したらどうなるのかな?
ぽかーん
- つ man 3 byteorder
- すみません、質問です
試しに適当な単語を入れて透明あぽーんを実行してたのですが
元に戻す方法がわかりません。。。(;_;)教えてください。
- ぽかーん
- アップルって、Cocoa-Java を見捨てていない?
- ヒレガスも「Cocoa-Java は糞」と言ってるしね。
- 力は入れてないわな
使ってる人あんまいなそうだしな
- CocoMonarはさっぱり!!!
- WebObjectもVer6でObj-cに回帰しないかな。。。
- Cocoa-Javaってすっごく便利なんだけどね~おしいな~
まあ、ビジネス用途で開発する人は少ないと思うけど、
ビジネスロジックを書くならJavaが便利だもんね。
俺は、唯一のMacネイティブビジネスアプリ言語だと思っている
JDBCでPostgreやMySqlでデータベースアプリをガシガシ書けるし、
iReportで帳票も設計できるしね
- >ビジネスロジックを書くならJavaが便利だもんね。
なんで?
- ちょっとプログラミングをかじった奴に限って
「エンディアンが変わったら、全データを逆転しないと動かない」
とか平気で思ってんだよねw
- ぽかーん
- Safariで使われているタブを自作アプリで使いたいのですが、
あれって自前で書いて用意しないといけないのでしょうか。
- 最近マカエレからCocoMonarに乗り換えました
いくつかの疑問点があるので質問させて下さい
1、お気に入りのスレをファイル等を使い階層化できないのですか?
2、もしできないのであれば、お気に入り内のスレを整理したいのですが
上下に入れ替える方法がわかりません、教えてもらえないでしょうか?
3、いわゆるタブブラウズのような機能は付いていないのでしょうか?
4、あぽーん機能で消したレスをスレに復帰さすには、レス番をクリックし
一つ一つ迷惑レスのチェックを外していかなければいけないのでしょうか?
5、「掲示板リストの表示」から2chnnel.brdを読み込んだのですが
なぜかラウンジが重複しているから読み込めないと言われました
みなさんはどう、解決しましたか?
質問ばかりで恐縮ですが、ぜひご教示ください、よろしくお願いします。
- >669
cocoちがい?
- >>665
ガーベージコレクションがあるのでメモリの管理が楽だし
JDBCなどの周辺ライブラリが充実しているでしょ
まあそういってもCocoa&javaのメモリ管理はけっこう難しいが
>>666
ソケットを使っている人はやっぱエンディアンが気になるよ
PPC同士でintやlongをそのまま送信しているようなプログラムがあったとする
そのプログラムをPPC MacのサーバとINTEL Macのクライアントで使ったとする
やばそうな気がしない?
>656みたいにバイトオーダーを意識した作りになっていれば良いけど、
Macはビッグエンディアンだと思い込んで作られているソフトも多そうだよね。
- >>669を書き込んだ者です
素で間違えました…申し訳ありません
別スレ行きます。
- > PPC同士でintやlongをそのまま送信しているようなプログラムがあったとする
そんな腐ったプログラムはさっさと捨てろ。
- まあ、そうかも(*´・ω・)(・ω・`*)ネー
- >>671
なんつーかな、ネットワークバイトオーダーって言葉すらあるわけで。
- ポカーン
- >>675
そうなんだよ(*´・ω・)(・ω・`*)ネー。
でもMacで開発する場合はプラットフォームが同じなので
そこまで意識して作っていないケースがありそう。
Javaアプリ(の規定値) と PPC Mac(の規定値)はそのまま通信できるしね
って実際は問題にならないかもしれないけど、複数のアーキテクチャで
テストしなきゃならないのは辛いよ(*´・ω・)(・ω・`*)ネー
- ネットワークにバイナリ垂れ流すような産廃業者のようなヤツはネットアプリ作るなよ。
- ぽかーん
- telnet pc7.2ch.net 80
....
GET mac/dat/1091927026.dat HTTP/1.1
Host: pc7.2ch.net
Connection: close
Accept-Encoding: gzip
406 Not Acceptable
Reason: "ネットワークにバイナリ垂れ流すような産廃業者のようなヤツはネットアプリ作るなよ。"
Connection close.
- >>680
バイナリを出す時は、きちんとゴミ袋に包んで中身が漏れないようにして出しましょう♪
- 何だこの実のない
- 10.3.9と10.4.1で同じ画像ビューアを動作させたとき、
10.3.9の方が早いみたいなんだけどそんなことあり得る?
画面に描画するのはTigerの方が早いっぽいんだけど
[ image lockFocus ];
[ sourceImageRep drawInRect:NSMakeRect(0,0,width,height) ];
[ image unlockFocus ];
とかはどうもPantherの方が早い気がする
気のせい?
- NSTableViewでdeleteキーを押したら選択されている行を削除する、という動作を実現するためには
delegateかdataSourceで実装するべきメソッドがあるのでしょうか?
この程度のことでサブクラス化なんてするはずないだろうし・・・
- 漏れは
[tableView selectedRow];
で列を出してdataSourceの該当行を消して
[tableView reloadData];
した気がする
- そうじゃなくて、delegateやdatasourceにそれ用のメソッドが用意されてるのかって話。
結論としては、ないだろうけど。
- 最初は大変でもサブクラスに作っておけば使いまわしが聞くから、後々楽になると思うよ
コントローラとかに書いちゃうと後で必要になったときにいちいち探し出してコピペしなくちゃいけないから
結構面倒だったりする
後からサブクラス化するのも時間を損した気分になるしね
- そこらへんはリファレンス見ればわかるしょ?
- >>684
Responderの仕組みを理解していれば答えは自力で導けるはず。
NSResponderとかについて調べてみよう。
- NSTextFieldのcopyやpasteに割り込むにはどうしたらいいんでしょう?
余裕かと思ってたんですが、やってみたらappのdelegateやviewのdelegateでもダメ。
サブクラスでオーバーライドしても無反応でした。
- >>690
俺もEditableがNOの場合にペーストできるようにしたかったけど分かんなかった。
- EditableがNOだったらそもそもファーストレスポンダーが乗らないから
ペーストできるわけないがな(´・ω・`)
テキスト編集中はフィールドエディタにFRがあるからそっちから割り込まないと駄目なんでしょうか?
- ごめんなさい。EditableがNOでもファーストレスポンダーはくるし選択も出来るね。
- 俺もちょっと違かった。
NSTextFieldにフォーカスがきている時でも、FirstResponderになっているのは
中で持ってる(であろう)NSTextViewみたいなんだよね。
([NSWindow firstResponder]がNSTextViewを返している)
このNSTextViewをサブクラス化したものに置き換えられればいいんだろうけど、
その方法が見つからなかった。
じゃあサブクラス化したNSTextViewをそのまま使えばいいや、と思ったんだけど、
NSTextViewもEditableをNOにするとオーバーライドしたpaste:に来なくなる。
俺もNSResponderの理解が不十分みいたいなんだけど、そもそも「ペースト」
を有効にする/しないはどう判定してるんでしょう?
- >>694
fieldEditor を置き換えるには、NSWindow の delegate で
- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject
を実装し、anObject が目当ての NSTextField だったら自前の NSTextView
(のサブクラス)を返せば良いみたい。
nil を返せば通常の fieldEditor が使われる模様。
- 「ペースト」MenuItemを有効にするには、
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem
でYESを返せばいいのね。
NSTextFieldならこれとpasteの実装でOKだった。
NSTextFieldの場合はそれに加えて >>695 をやれば良さそうですね。Thx!
- >>633
> ClassicもCarbonも、もう要らんでしょ。
まだこういう人っていたんだ?
Classicはともかく、Carbonなくなったら大抵のソフトは動かないよ
CarbonはMac OS 9からの移行用APIではない
- ところでFinderって完全にCocoaになったんだっけ?それともまだ?
- Info.plist見るとNSPrincipalClassがないね
- >>697
>Carbonなくなったら大抵のソフトは動かないよ
今はそーでもないよ
- 互換部分のCarbonと基幹部分のCarbonをごっちゃにして語る奴がいるけど、無意味
- Carbonは冗長でイヤだな。
- CarbonとCoreFoundationの区別について
- >>699 から多分Finderもそうなんだろうけど、NSApplication使ってない、
WaitNextEventやRunApplicationEventLoop使ってるアプリはまだ結構あるでしょ。
OS 9の頃からあるアプリはほとんどそうなんじゃない?
- >>700
AppleEventやATSUIやらが無くて動くソフトはどれですか?
日本語入力はどうやって動いてるの?
>>704
どれもCFRunLoopにhookしてイベント処理してるだけだから、表面仕上げが
多少違うだけで実質同じ物
Appleの人間はこう言ってます。
http://lists.apple.com/archives/carbon-dev/2005/May/msg01121.html
- よくわからんがCarbonは無くならないという結論でいいのかな
そんなに刺々しいレスをしないでくれ
- NS保守
- [thisThread retain];
- while(1)
{
[thisThread addRes:[NS2chRes resWithString:@"Nullpo"]];
}
- - (void)awakeFromNib
{
clocktimer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(thega:) userInfo:nil repeats:YES];
}
- (void)thega:(NSTimer *)atimer
{
[NS2chRes resWithString@">>709¥ngaxtu¥n"];
}
- on mouseUp
put "ガッ"
end mouseUp
- 10 R=INT(RND(0)*2)
20 IF R=0 THEN PRINT"ぬるぽ":GOTO 10
30 IF R=1 THEN PRINT"ガッ":GOTO 10
40 PRINT"あぼーん"
50 PLAY"T120L8O2C"
60 GOTO 10
- 妙な流れを打ち切ってすみませんが質問です。
NSControlに複数のサイズの異なるセルを張り付けたいのですが、
この用途だとNSMatrixが使えませんよね。
NSControlのサブクラスで +(Class) cellClassを呼んでセルを指定すると
1つのセルがコントロール全体に張り付けられてしまいます。
複数のセルを張り付けるにはどのメソッドで指定あるいはメソッドを上書きすればよいのでしょうか。
- 素直に複数のcontrolを使うべきかと。
- iSightなどのウエブカムの映像を表示するにはどうしたらいいんでしょうか。
やっぱ、QuickTimeですかね。
- >>715
たぶんSequenceGrabberあたり
- NSWidth()ってあるけど、aRect.size.widthのようにアクセスするのとどう違いますか。
わざわざ用意してあるということは関数を使うほうがAppleの推奨ということなんでしょうか。
- 同じ
推奨かどうかは知らん
- >>716
いろいろ調べてみたけど、さっぱりでした
そんなに簡単じゃないんですね。
- >>717
NSGeometry.h
FOUNDATION_STATIC_INLINE float NSWidth(NSRect aRect) {
return (aRect.size.width);
}
- 補足
構造体のメンバ名がwideとか変わった場合(あり得ないけど)
関数経由でアクセスしておけば書き直す必要がない
まあこんな単純なものは気にする必要ないだろうけど
- >>715
ttp://www.mindsprockets.com/developer.html
iSightでいいなら(1394接続向けっぽい)、ここのiRecordが参考になるかも。
- >>717
関数のメリット→>>721のいうとおり、あとタイプ数が少ない
関数のデメリット→変数に直接アクセスするよりは時間がかかる
(ループの中でそれこそ山のように繰り返すようなことでもしなければ、体感では分からない程度だろうが)
- >>723
>関数のデメリット→変数に直接アクセスするよりは時間がかかる
インライン関数ですが?
- このスレはCococa-Javaの質問を投下しても
いいのでしょうか?
- もちろん
- >>726
ありがとうございます。
早速ですが
NSImageView をwindow に複数個設置し
ユーザーがそのうちの1つを選択した時、
選択されたNSImageView の情報を取得する
メソッドはあるでしょうか?
初心者なので質問の仕方もよく分かりませんが
よろしくお願いします。
- なかったらサムネイル作るとき便利悪いんじゃね?
- >>721
もう一つメリットがあるぞ。
いちいち構造体の内部を憶えておかなくていい。
- メタデータインポータを作成中・・・
でも、アップルの資料の通りGetMetadataForFileのなかでNSDictionary*とか使ったら
コンパイルエラーに。error :'NSDictionary' undeclared.
仕方ないから勝手にFondationフレームワークを追加して#include <Foundation/Foundation.h>
を入れたらこのエラーは出なくなったけど、こんどはリンカの段階で
Undefined symbols: _GetMetadataForFile
とかでるようになった。どうすりゃいいの? orz
- リンクすべきフレームワークが抜けてるんじゃないの?
- 拡張子は .m になってる?
- >>732
お、すごい。.cを.mに変えたら一発で通っちゃった。
なんで気がつかなかったんだ!
ありがとう。助かったyo!
- ADCのメーリングリストを見ていたら、Cocoa-Javaの
JavaBridgeは、MacOSX 10.4までしか提供しないよう
な事が書いてあった(英語力はありませんが)んだけど
これが本当ならモチベーション下がるなぁ。
かなりJavaのライブラリに依存した形で作ったので、
Objcへの移行も大変すぎるし・・・はぁ。
- そういえば、
Java-Swingに移行した方が楽だけど、
日本語関係のトラブルがなぁ・・・はぁ。
- Important: Features added to Cocoa in Mac OS X versions later
than 10.4 will not be added to the Cocoa-Java programming
interface. Therefore, you should develop Cocoa applications
using Objective-C to take advantage of existing and upcoming
Cocoa features.
・・・はぁ。
Cocoa-JavaってIntel移行に有効だと思うんだけどおしいなぁ。
Macの開発者離れが心配だ。
- >>736
え、心配するほどCocoa-Javaやってる人いるの?
- >>736
「10.5以降でCocoaに追加される機能はCocoa-Javaには提供されない」
ってことで、Cocoa-Java自体が無くなるわけじゃないみたいね。
とりあえずのところは。
Javaの言語仕様と相容れないからなのか、
現状でもObjective-Cで使えるCocoaの重要な機能いくつか使えないしね。
まあしょうがないんじゃない。
- >>737
Web上で検索すると結構いそうな感じだよ。
取っ付き易いので、Java開発者の人口を考えると
侮れないと思う。
>>738
互換性を考えると10.2や10.3の機能しか使えないかも知れなけど
未来が無いと思うとがっかりするよ。
- Javaの人は動作速度向上を期待してJava+Swingでがんがったほうがよさそうですね。
- >>740
Java+Swingでも動作速度については、あまり問題にならないと思われるけど、
jvmのバージョンアップで動作がころころ変わるのが問題なんだ。
Cocoaなら最低限の互換性は保てるからね。
その点、Cocoa-Javaで組めば10.5以上でもそのまま動作するなら
逆に嬉しい事なのかもしれない。
- Cocoa+JavaってJavaの売りを捨ててまで使うようなもの?
単純に敷居を下げてるだけだと思ってたけど
- MSのC#やJ#のような位置付けだと思っていたけど
Appleの体力が持たないんだろうね
逆にJavaBridge部分がオープンソースになればもっと進化するかも
- C#,J#は怪しいパチモノマネ商品ガンガル。
Cocoa-Javaは宗教上の理由 な ど で、どうしてもObjective-Cをつかえない人向け。
- Javaで間口を広げようとしただけで、もう役目は終わってお払い箱って
とこかな。Cocoa-Javaで書かれたソフトって見たことないけど、何か
あんの? Apple製以外で?
- >>744
C# はそんなにわるくない
- Cocoa-Javaってのは、
既に作られたJava製の何かのソフトの核を利用して
Cocoaのガワをつけるためにあるんでないのかい?
おまいら自分の日曜プログラムの範囲だけで考えてない?
- だって日曜プログラマだし。
- Cocoa-Javaは、Java用のライブラリが使えるのが美味しい。
JDK1.4に付属の物だけでも、宝の山。
ディスコンにするなら、Objective-Cのライブラリが増える事に期待。
せめて正規表現関係は欲しい。
欲を言うと、JDK1.5のような並列ライブラリも欲しい。
- 正規表現なら鬼車使えばいいんでないかい? BSDライセンスだから
商用でも使えるし。
- 人から渡されたソースコードがみずらいときの為の
Objective-C用のソースコード整形ツールなどはありませんか?
ググッてもなかなか見つかりません。
Win用でもかまいません。
- emacs で Objective-C モードで読み込んで C-M-\ だとどうでしょう
- >>752様
お返事ありがとうございます。
いい忘れましたがソースファイルは膨大な量があります。
Xcodeで一つづつならインデントなどできますが、括弧のフォーマットなどは出来なかったです。
なので、できれば一括して処理できるものを探しています。
- emacs でもたくさんのファイルをいっぺんにできそうですが、やり方はすぐわかりません。
indent コマンドでやってみましたが Objective-C だとあまりよくないですね。
- 前にperlで整形用スクリプト書いたけど
複数行にまたがる処理ができなくてカッコで挫折した
- >>753
Xcode ですべて選択して 「再インデント」 では?
- >> 749
おれは、階層がフラットで美しいCocoaライブラリを見た後、
Javaのようなごちゃごちゃしたものライブラリは使う気が起
こらなった。それに、Cocoaのライブラリは、少ない学習期
間でさくさく使えるし。
- >>757
業務アプリなどを組む時にはやっぱJavaでしょう。
SwingだとGUIがいまいちなのでCocoaはいいよ。
帳票もiReport等を使えば楽だし、Oracle等の
データベースアプリもちょちょいのちょいだし。
- >> 758
たしかに業務用ライブラリは少ないが、Cocoaの場合、QTKitや
Core Imageのようなマルチメディアライブラリの出来はいいと
思う。Javaの場合、JMF、JavaSoundは廃れたし、JAIは多少使わ
れているようだが。。。
- >>754
整形コマンドは俺も欲しい
indentの設定ファイルだけでもいいかどこかで手に入りませんか?
- [hoge hoge];//hogeです
って書くと
そのあとインデントtab一個ずれるよな.
- >>760
indet コマンドは入ってませんか?
Objective-C だとあまりうまくいきませんけどね。
- >> 762
やっぱり、macに入ってるindentもObjC対応でないんですか。
EmacsのObjCモードくらいしか整形ツールは無いんですね。
メンドクサイ。
- 何でないなら自分で作ろうとしない?
- 面倒をほかに押し付けるためのツールやライブラリなのに
なんで自分で面倒をしょいこまにゃならんのだ
無くて致命的に困るわけじゃない
使えるツールが出てくるまで愚痴こぼしながら我慢するんさ
- みなさん、お返事ありがとうございました。
結論からしてObjective-C用の一括整形ツールは存在しないとのこと。
ないものはいくら頑張っても仕方ないのであきらめます。
- 整形はSCMのファイルが肥大化するので使ってないけど
% emacs -batch -l indent-mode -f objc-indent-function -f example.m
程度で我慢してみてはいかがでせう。
- >>755
カッコ開始にあたったら「今カッコの中」というフラグを立てる。
フラグが立ってる間はカッコの中用の処理をさせる。
閉じカッコにあたったらフラグ下ろす。
- 俺のセレクタの書法
@selector( hoge: foo: bar: baz: )
これって少数派?
- これのObjective-C版が欲しいかな
GNU GLOBAL
ttp://www.tamacom.com/global-j.html
- CodeWarriorでは、定義された関数とかクラスはカラーリングされてたけど、
Xcodeでは出来ないの?
予約語とかは出来るし、option+clickで飛べるのに...
誰かやり方教えてよ。
- それができればなあ
- EclipseにObjectiveCのプラグインができれば使うんだけどなぁ
XcodeとInterfaceBuilderの連携は他人のプログラムが読み難い
のでいまいち好きになれない
Xcodeってチーム開発の事を考えて作ってあるのかな?
- チーム開発なら読むのは他人のプログラムのソースコードじゃなくて
そのプログラムの仕様書だから
別にいいんでないの?
- クロスレビューしない?
- UIに関する動作を変えようと思ったとき、Xcodeだけじゃなくて
nibまで変更しなきゃならん事があり、そのたびに
Interface Builderでnibを変更して、なおかつ各国語版のnibまで
更新しなきゃならん。
最悪。
- AppleGlot使え
- iLocalize、PowerGlotなんかもある。
- 特に iLocalize は多言語編集と使いやすさと分かりやすさで一番お勧め。
文字を更新した後でnibを編集してレイアウトを調整するだけ。
- NSOpenPanelで不可視の項目を表示する方法はないのでしょうか?
- >>780
setShowsHiddenFiles:
- >>781 おおー!確かに出来ました。ありがとうございました。
でもなぜヘッダにもリファレンスにも載ってないんでしょう?
AppleScript(choose fileとか)でもCarbon(Navigation Services)でもある機能なので
非公開にする理由もないように思えますが。
- Cocoa+Objective-Cで
Dockにあるアプリケーションのアイコンをバウンドさせたいのですが
それらしい機能がAPIリファレンスをみてもそれらしき物が見つかりません。
どなたかご存知のかたいませんか?
- >>783
NSApplication requestUserAttention:
- Cocoaはやっぱりって本をみると、
NSApplicationクラス?で、
requestUserAttention:(NSRequestUserAttentionType) reqType
ってのがあるようです。
- >>784-785
できkました。かんしゃです!
- 荻原本が絶版で買えない(つД`)
他に初心者向きの良いObjective-C本やサイトってありますか?
- HMDTはどうよ?
ヒレガス本は初心者にはお勧めできない。
つか自分もまだ全部は読んでない・・・
- WebKit SDKって今から入手できないかな?
xcodeに移行しろよって言われればそれまでなんだけど、
完成までは開発環境を変えたくないのです。
- >>788
HMDTは持ってます。てか最初に買いました。
プログラム自体が素人なので他に柴田望洋明解C言語なども。
あと、
http://developer.apple.com/ja/documentation/cocoa/Conceptual/ObjectiveC/index.html
とかも暇みて読んでます。読むだけだったら猿にも出来るし(ノД`)
さらにヒレガス本昨日注文しました(ノД`)
頑張るべ・・・
- NSTaskについて質問です。
UNIXのコンソールアプリに、CocoaのGUIをかぶせたものを作りたいです。
NSTaskでコンソールアプリを起動させます。
NSTaskDidTerminateNotificationのセレクタを登録しておき
アプリケーションの終了時にapplicationWillTerminate:メソッド内で
コンソールアプリに終了通知コマンドを送りNSTerminateLaterを返します。
そしてNSTaskDidTerminateNotificationを待ってから
[NSApp replyToApplicationShouldTerminate: YES]で終了させたいと考えています。
しかし妙な事にNSTaskDidTerminateNotificationはアップルメニューをクリックして、
メニューのハイライトを離してからでないとどうしても通知されないのです!
どなたか解決策をご存知の方ご教授宜しくお願いします。
- NSToolbarItemのサイズを可変(ウインドウのサイズに合わせてサイズが変わる)にするにはどうすればいいですか?
- >>788
初心者にこそヒレガス本だろ。Cocoaのプログラミングスタイルを学べる
唯一と言っていい本だし、つまづく要素はどこにもない。あれでつまづく
ようなら見込みはないと思った方がいい。
ただ、HMDTもそうだが最低限ANSI Cは知っていなければならない。
- そのANSI Cを知ってないといけないというのがなあ。。
一応独習Cとか買ってかじった事もあったけど
やっぱりGUI付きの具体的なものとか、
テキスト処理とかの目に見えて自分に利益があるものがすぐには作れないせいで
なかなか学習が進まず・・・。
ポインターもよく理解しないまま途中で放り出してしまったですよ。
- ANSI Cは英語で言えばアルファベットのようなもの。これを通過しないと
C++にもObjective-Cに進めないからね。
最初からGUIよりもやはり最低限標準ライブラリくらいは一通りやって
おいた方がいいよ。実習みたいな本で練習して慣れるのが一番の早道。
C++の標準テンプレートライブラリに比べればずっと楽だよ。
ポインタはアセンブラをやってれば理解が早いんだけど、今時アセンブラ
の本なんてほとんどないし、使うこともないからね。ポインタはアドレス
と格納されるデータの関係を掴めば理解できる。これも慣れで突破するしか
ない。
- >>792
maxSizeとminSizeを指定してやれば良いんじゃないの?
- >>795
『標準ライブラリ一通り』はどうすれば学習できますか?
ヘッダを読む?とかいうのも、読み方自体がわからないし・・・。
- >>797
大抵の実習本なら標準ライブラリは使うはずなのでそういう本で
慣れることが一番いいと思う。全部を憶える必要はない。
Cocoaで使うことはそれほどないけど、やっていると役に立つ
こともある。俺はファイル関係等で結構使ってるけどね。
大昔のパソコンサンデーじゃないけど、習うより慣れろ。
- 標準ライブラリって、studio.hとかあんなんですか?(もうそのへんの記憶もない)
当時わざわざCodeWarrior買ってやってたんですが、
入門書そのままの記述だとだめだったりした覚えが。
ああ、無駄金かなり貢いでしまった。
orz
- 変に根元を押さえようとするより、手を動かして慣れた方が身に付くものは多いと思。
得てして上級者は基本が重要だと言い張るのだが、
基本を完全に身につけてから実践に入る奴なんてどこ探したっていない。
- >>799
まぁ、昔のClassic MacOSにはコンソールがなかったからな。
CodeWarriorだとSIOUXなんて変なライブラリ使わなきゃならなかったが
標準入出力モドキがついてたTHINK C/Symantec C++よりは劣ってたな。
MPWならそのまま動いたと思うけど。標準入出力関連は入門書のままじゃ無理。
ただ、MacOS Xではそのまま動くはずだよ。
- learn Cで2週間だった。4.2BSD。
- Cをやり始める人へ。
モジモジ処理があんな面倒だろ。でも実際はもっといいものがあるので安心しろ。
- >>788
HMDTは初心者にはお勧めできない。
本に書いてある通りに作っても
コードが掻い摘んで書いてあるから動かない。
初心者は混乱するだけだと思う。
- Cocoaだけやるなら
ANSI Cなんてサラッとでいいよ。
ポインタは
インスタンス変数を宣言する時は*hoge
メソッドがポインタ要求してたら&hoge
まー、こんな理解で必要十分だとおもーよ。
今時、Hello,Worldなんかやってても面白くないし。
- struct使うとendian問題あるし。
- >>793
>最低限ANSI Cは知っていなければならない。
つまり初心者にはお勧めできないってことだろ・・・
- >>804
確かにHMDT読んで、CPUモニタ作ってみた時、初心者の自分ですら
なんか足りなくね?とか思ったわけで。
本にサポート用の全チャプタのソース置いてあるURLが書いてあるので
落として見れば全部解決なんだけど・・・。
IBを使う部分にしても初心者にはキツい省略してたりするし。
あまり一冊だけに期待するのも酷だとは思ってますが。
明日はヒレガス本来るかな。
- >>808
HMDTはいい本だとは思わないけど、その評価はちょっと酷な気もする。
初心者向けの本ってあまり実用性のないサンプルで学ぶ形式だし、
Cocoa全般を網羅してるわけじゃないからね。ヒレガス本と言えども。
荻原本は廃刊というより出版社がなくなったみたいだね。1年くらい前かな。
Objective-Cはアップルのサイトに日本語のドキュメントがあるので
それを読めばいい。普通にCocoaを使う分には全部読む必要はないが。
- CocoaのAPIの使い方に難儀しています。
NSToolbarでSafariの機能拡張のように現在選択されているツールバーがハイライトされる設定と
通常のツールバーのようにクリックしてもハイライトされないようにする設定はどこにあるのでしょうか?
- HMDT本は最後にでも良いからコード全部書いてあったら初心者向けにはなかなか良い本だったと思う。
一部しか書いてないんじゃ、自分で打っても動かないから「へー」て言うしか無いし、
落としちゃったら見て「へー」て言うしか無いし。
やっぱり自分で(わからないながらも)全部打った方が、
試行錯誤してやっと動いた時に実感とか達成感がわくし、覚えられる。
まぁHMDT本読んで細々とだけどフリーウェア作れるようになったから文句言うのはあれだけど。
あとCは知らんくてもどうにかなるかと。本当に基本的なとことポインタだけネットで調べれば。
バチスカ女子校生も良く知らんみたいだし、俺も知らんかったけどなんとかできてるし。
趣味じゃなくて本気でやるなら勉強するべきだろうけどそういう人はとっくに知ってるような。
個人的にはリファレンス本が欲しいなぁ。それぞれにちょっとしたサンプルコード付きの。
というかttp://www.oomori.com/cocoafw/index.htmlをもうちょっと丁寧にした感じの。
- >>810
ttp://homepage.mac.com/mkino2/cocoaProg/AppKit/NSToolbar/NSToolbar.html
- >>812様感謝
なるほどデリゲートメソッドの実装のところで
toolbarSelectableItemIdentifiersを実装しなきゃ行けなかったんですね。どうもお騒がせしました。
- >>811
漏れはかなりoomori.comに助けられてるんだが・・・
ちみもまずは「大盛り」さんに感謝すべきじゃないか?
- 萩原本の復刊リクエストを出しました。
興味があったら是非投票してくださいな。
http://www.fukkan.com/vote.php3?no=29943
書名が微妙に間違ってるのは、修正依頼を出したので修正されるはず。
- >>814
俺も助けられてるし感謝はしてるよ。
助けられてるからこそurl知ってて出したんだし。
ただもうちょっとサンプルコードや説明が具体的だったらなぁって思うから、
そういう本が欲しいなって言っただけだよ。
- そうだね。無料で利用させてくれるとこに今以上を期待するのも図々しいし、
本が出たらうれしいよね。
- あそこはフィードバックできるようになってるから、
自分がわかるものに関しては積極的にサンプルコードを投稿したら?
- CocoaっつーかXcodeの質問なんですけど・・・
Document-basedアプリケーションをビルドして実行しようとすると
アプリケーションが起動せずにXcodeの中にドキュメントウインドウが開くんですが、
これは何ででしょうか?
いままではこんなことなかったのですが・・・
- >>819
その画面キャプチャしてupしてみせろ
- すみません、キャプチャしようと思ってXcodeを再起動させたら治りました。
どうもすみませんでした。
- バグったら
なにはなくとも
再起動
- 付属のサンプルコードの「CircleView」で、
startAnimation:の中で最初にstopAnimation:を呼んでるのはなぜです