Cocoaはさっぱり!!! Version.3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名称未設定
03/09/12 00:47ID:8ue/kw6dオリジナルを作ろうと思ったら、全然その先に進めない人集まれ!
親切なプログラマーさんが暇なときだけ教えてくれてる(よね?)
前スレ
Cocoaはさっぱり! http://pc.2ch.net/mac/kako/1007/10076/1007632025.html
Cocoaはさっぱり!version:2 http://pc.2ch.net/test/read.cgi/mac/1036923528/l50
関連スレは >>2
0002名称未設定
03/09/12 00:51ID:8ue/kw6dMacでプログラミング{3} http://pc.2ch.net/test/read.cgi/mac/1049070432/
MacでC言語 http://pc.2ch.net/test/read.cgi/mac/1048587374/
MacOSX Java総合スレッド http://pc.2ch.net/test/read.cgi/mac/1047361032/
「AppleScript,Perl,Shell」OS Xでスクリプトスレ http://pc.2ch.net/test/read.cgi/mac/1055091471/
Mac OS XをUnixとして使ってる人の為のスレ その5 http://pc.2ch.net/test/read.cgi/mac/1055874672/
XCode http://pc.2ch.net/test/read.cgi/mac/1061702196/
参考リンク
HAPPY Macintosh Developing TIME!
ttp://homepage.mac.com/mkino2/
Cocoa Developer Documentation
http://developer.apple.com/documentation/Cocoa/Cocoa.html
file:///Developer/Documentation/Cocoa/CocoaTopics.html
Cocoaはやっぱり!
ttp://www.big.or.jp/%7Ecrane/cocoa/
0006名称未設定
03/09/12 01:27ID:BOCgM/4RCocoa Browser(Cocoa API のリファレンス用ブラウザ )
http://homepage2.nifty.com/hoshi-takanori/cocoa-browser/index-j.html
Docoa Browser(上記のWebKit版)
http://www.iwascoding.com/DocoaBrowser/
■便利ツール
Completion Dictionary(ProjectBuilderの入力支援ツール)
http://www.obdev.at/products/completion-dictionary/index.html
0007名称未設定
03/09/12 08:11ID:Rs5hdxNuPBXtra
http://www.versiontracker.com/dyn/moreinfo/VT/16470
0008名称未設定
03/09/12 14:06ID:KdDjq9P/option-M押しても、前単語選択にしかならへん。
00097
03/09/12 21:40ID:Rs5hdxNuReadMeは読んだ?
PBKeyBinding.dictを~/Library/KeyBindings/に
コピーする必要があるよ。
あと、にわかXP厨としてこれも紹介しておこう。
ObjcUnit
http://oops.se/objcunit/
0010名称未設定
03/09/14 00:28ID:5a/4RCFa0011名称未設定
03/09/14 07:32ID:WZrztSl9[window setTitle:@"hogehoge"];
としたら、
そんなもんいきなり使うっていわれてもなー。
といわれましたがなぜなんでしょう?
同じメソッド内で
[self showWindow:self];
が通るのに、不思議。
どちらも継承元のNSWindowControllerで定義されているので
継承したオブジェクトからも使えそうなもんですが。
もしかしてprivateなOutletなのかな?
0013名称未設定
03/09/14 08:13ID:4t5YX5+hこの際、Finder で不可視のファイルについては操作を加えないようにしたいのですが、
可視/不可視を判定する良い方法は無いでしょうか。
0014名称未設定
03/09/14 09:36ID:ucWzBMQuファイル一覧の習得
必要なファイルの確認
一覧をユーザーに掲示
選択されたファイル群を順に処理。
って結局、NSStringファイル名で各行程を受け渡していくしかないのでしょうか?
0015名称未設定
03/09/14 11:31ID:5a/4RCFacomponentsToDisplayForPath:
は駄目だったの?
>>14
話が見えにくいんだが、どう困ってるんだ?
0016名称未設定
03/09/14 21:40ID:WZrztSl9ごめんよ、書いてからすぐにクラスブラウザ眺めてて気づいたよ…
でもInterface Builderだとアウトレットのところにwindowって書いてあるのはなんでだろう…
0017名称未設定
03/09/14 21:43ID:WZrztSl9- (id)initWithFile:(NSString *)aFile
{
self = [self init]; // ←ここでinitWindowNibNameなどを呼び出してる
[[self window] setTitle:aFile];
return self;
}
とやったとき、aFileをretainする必要はありますか?
つまりはsetTitleした時に、ポインタをコピーするのか、それとも
文字列自身の複製を行うのか、どっちなんでしょうかねということなんですが。
0018名称未設定
03/09/14 22:55ID:7iGV5H+O>とやったとき、aFileをretainする必要はありますか?
ないよ。というか、この場合はレシーバ(NSWindow)側が copy / retain
しなくてはならない。どっちをやってるかは分からないし、関係ない。
いやまあ、俺様も同じことで悩んだのだけれど。
0019名称未設定
03/09/16 17:30ID:PfhTi4PwNSWindowControllerのリファレンスをよく読もう。
-[NSWindowController window]メソッドを呼ぶまではnibがロードされないのです。
だから、いきなり[window setTitle:@"hogehoge"]とかやっても「そんなもんいきなり
使うっていわれてもなー」ということになるのだ。
0020名称未設定
03/09/18 20:08ID:DyN3ww9wいや、そうじゃなくてNSWindowControllerの宣言が
@private
NSWindow *_window;
になってるからなんだけど。
IBは_windowとか_delegateとかの_を削除するようなしないような不思議な実装になってたよ。
自分で作ったIBのPaletteに_delegate付けたら
delegateと_delegateが同時に現れて変なことになった記憶がある。
0021名称未設定
03/09/18 21:44ID:i0AO7t69そういや昔、今のSqueakの原型みたいなのが
Cocoaって名前でAppleから出てなぁ・・・。
ふと思い出したのでCocoaスレでネタフリしてみるテスト
0022名称未設定
03/09/18 22:20ID:E7zkIKcGおそらく
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Protocols/NSKeyValueCoding.html#//apple_ref/doc/uid/20000471/URLWithPath_ClassMethod_NSPathUtilities
このあたりが関係していると思われ。
002320
03/09/18 23:37ID:DyN3ww9wややこしすぎ。(w
でもこれっぽいね。
どうでもいいが>22のページのアンカーの名前おかしくねーか?
なんでURLWithPath_ClassMethod_NSPathUtilitiesなんだ?(w
一瞬リンクし間違えてるのかと思たよ。
ついでに-valueForKeyのほうはfileAttributes_ClassMethod_NSPathUtilitiesだ。
いやらしく思ったが調べてみた。
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Java/Classes/NSPathUtilities.html#//apple_ref/doc/uid/20000399/URLWithPath_ClassMethod_NSPathUtilities
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Java/Classes/NSPathUtilities.html#//apple_ref/doc/uid/20000399/fileAttributes_ClassMethod_NSPathUtilities
これをひな形にしたのかな?
なぜJAVAのリファレンスをひな形にしたのか?
なぜNSPathUtilitiesなのか?
謎は深まるばかりだが。
0025名称未設定
03/09/19 20:04ID:5eXeIJxQ紛らわしい名前付けんなよ > Apple。
しかしながら、>>24のディスク内を
しばらく探険みたいなぁ・・・。ドキドキ
0026名称未設定
03/09/21 11:36ID:L1OOQJIW0027名称未設定
03/09/23 01:42ID:4CYZpi1Z受け付ける場合、接続された時のクライアントのアドレスを知る方法って
なにかありますか?
0029名称未設定
03/09/29 21:51ID:Q/6ho6adUnix的手法ですがgetpeername(2)を使えばいいと思う。
#include <sys/socket.h>
#include <netinet/in.h>
int socket = [filehandle fileDescriptor];
struct sockaddr_in addr;
int length = sizeof( addr );
if( (getpeername(socket, (struct sockaddr*)&addr, &len)) < 0 ) {
// error
} else {
NSLog(@"address->%s¥tport->%u", inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));
}
0030名称未設定
03/09/30 16:25ID:QtzbCLLWNSTerminate:Nowみたいなのがあるのでしょうか?見つけられません。
1アプリ終了を通知(ここが分かりません。誰に何を送れば良いの?)
2「ほんとに?」のダイアログ表示 (NSRunAlertPanelかな?)
3windowを全て閉じる(窓位置を保存)
4後始末処理(applicationWillTerminate ??)
5終了 (??)
みたいな流れになる予定。
0031名称未設定
03/09/30 16:57ID:Our0Qs9+003330
03/09/30 18:12ID:QtzbCLLWNSAppというオブジェクトがあるわけですね
しらべてみます。
あと、
applicationWillTerminate:
applicationShouldTerminate:
の区別がつかないかも
0035名称未設定
03/10/01 02:07ID:QlbhOD5f0036名称未設定
03/10/06 21:43ID:9PyVqaRO秋の夜長にCocoaでもと思い、全く知識が無いままCocoaのお勉強をしようと思う
んですが、今買うとすればCocoaはやっぱり!でしょうか、それともHMDTでしょ
うか?それとも、それ以外でしょうか?教えてください。
0037名称未設定
03/10/06 21:59ID:qFbHEZimあとは荻原本。
0038名称未設定
03/10/06 22:30ID:Fvl4aF9p0039名称未設定
03/10/06 22:34ID:qFbHEZimあれが読めないと自分の作りたいものは作れない。
0040名称未設定
03/10/06 23:02ID:lZ74qdJw内容的にはヒレガス本より初心者向け。
ひとつひとつのチュートリアルが短くて勉強を進めやすい。
ステップアップの仕方もいい感じだし。
初版のイメージでこの本を見ないように。
一から書き直した全く別の本だから。
004136
03/10/07 19:34ID:lzpDd0V+ありがとうございます。昨日、部屋を掃除してたら3500円分の図書券が発掘された
もので(w
早速書店で見てきたいと思います。もっとも、田舎なんで全部見れるか分かりませ
んが…お世話になりました。m(_ _)m
0042名称未設定
03/10/12 15:09ID:3jXCimTHソースが見れるから参考になると思う。
http://www.gnustep.org/
0043名称未設定
03/10/14 18:56ID:1AUSNjMUコンパイラのバージョンでは切り替わってなくて、コマンドラインから
gcc_selectしたらちゃんとプリコンパイルが効くようになってゲキ速になった。
漏れんとこだけかな。
0044名称未設定
03/10/15 09:15ID:EiOngqDOCarbonの助けを借りないといけないの?
あと、使用できるファイル名の最大長はいくつなのでしょうか?
日本語フォルダ名の処理もさっぱりでつ。
0045名称未設定
03/10/15 09:53ID:aL5cN4iiフォルダを作るにはNSFileManagerのcreateDirectoryAtPath:attributes:を
使うといいと思うよ。ファイル名の最大長は256?
0046名称未設定
03/10/15 13:49ID:EiOngqDO助かりました。Cocoaのドキュメント探索に、まだ慣れなくて
//CocoaBrowserが、全検索に対応してくれれば、ありがたいのですが。
あと、ファイル名長さは、ファイルシステム依存なようなので、
さがしてみます。
0047名称未設定
03/10/15 21:55ID:bHi6IZfNttp://kwatch.at.infoseek.co.jp/macosx/objc.html
0048名称未設定
03/10/16 09:35ID:QvP+XpxJちらっとみたけどどうだかなあって感じ。
id型をオブジェクト型みたいな書き方してるけどそうじゃないだろ。
なんかObj-Cを誤解されそう。
0049名称未設定
03/10/18 13:28ID:IqG902TPヘッダだけ読み込んで種類別に一覧をだすのですが、ファイル数が
数10になった時点で長時間虹色カーソルになってしまいます。
多数のファイル(の先頭数バイト)を読み込む時のコツってありますか?
セーブプログラム側は、1日に何度かログファイルを作成するプログラムです。
日付け+カウンタでファイル名を決定してセーブしています。
参考になりそうなプログラムソースを探たのですが、Carbonしかみあたらなくて。
似たような実装しているはずなのに。CarbonとCocoaで速度が違う?
0050名称未設定
03/10/18 15:37ID:troFacQ3こんなのだろ?
for (i = 0; i < [array count]; i++) {
NSFileHandle *h = [NSFileHandle
fileHandleForReadingAtPath:[array objectAtIndex:i]];
NSData *d = [h readDataOfLength:16];
[h closeFile];
NSLog(@"%@\n", d);
}
ファイル数1000でG4/400で5秒くらいだったぞ。
時間がかかるのは何か別のとこだろうな。
ファイル数を極端に増やして、Sharkで調べれば一発で分かるぞ。
apple chud sharkでぐぐってみ。
0051名称未設定
03/10/18 16:25ID:AT68cfvn-(void)readLogAtIndex:(NSNumber*)indexNum
{
unsigned index = [indexNum unsignedIntValue];
id log;
if( 0 > index || index >= [logsArray count] ) return;
log = [logsArray objectAtIndex:index];
...
[self performSelector:_cmd withObject:[NSNumber numberWithUnsignedInt:index + 1] afterDaley:0.0];
}
とか。
005249
03/10/21 21:47ID:B3t2pI4nありがとうございます。
どうやらファイルの処理だけにすると、短時間で済むようです。
表示更新関連の処理がまずいのかもしれません。
CHUDインストールしたのですが、まだ原因追跡中です。
0053名称未設定
03/10/25 22:46ID:LjLKkzJ60054名称未設定
03/10/25 23:17ID:LAgJLJNRメソッドはrecentSearches関係しかないじゃん。
あとはNSTextFieldと同じように使える。
カスタマイズしたいんだったらNSSearchFieldCellを使えばよさげ。
005553
03/10/25 23:26ID:LjLKkzJ6あたりを読んでみますー。
0056名称未設定
03/10/26 14:20ID:Z08cHU7nプロジェクトを選んで、インスペクタ→スタイル→デバッグシンボルを生成する
で、いいんだよね??
0057名称未設定
03/10/26 15:27ID:Sc1yCy2Yその逆でデバッグシンボル外せない。。
古いプロジェクトだからか?
0059名称未設定
03/10/27 00:14ID:VuyA3xy8Xcodeに乗り換えるときの注意とかありますか?
0060名称未設定
03/10/27 01:50ID:t0eHMPlt従来のProjectBuilderのターゲットとXcodeネイティブのターゲットがあって、ターゲットをアップグレードするといろいろ新機能が使えたりするらしい。
0061名称未設定
03/10/27 01:54ID:gshUILbp0062名称未設定
03/10/27 06:45ID:6/w/szGf入ってる。
アップグレードしたら挙動が変わってしまった。直さなきゃ。
0063名称未設定
03/10/27 18:48ID:wnDTzYZU神の言語らしい<Cocoa
ttp://www.geocities.co.jp/Milkyway-Lynx/4133/article/art_13.html
0064名称未設定
03/10/27 19:18ID:dL5Q4fukこの"::"が非常に美しくありません。
一体何なのでしょうか?
何故に"::"を選んだのか私には全く理解出来ません。
4個の"黒点"が均等に並んでいます。
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
殺戮凶器に昆虫の大群です。
不気味極まりないですね。
考えているうちに寒気がしてきました。
……精神病院行った方が良いと思う。
0066名称未設定
03/10/27 20:53ID:euR+kMdlあなたの健全な精神と平穏な社会生活に悪影響を及ぼす場合があります。
このWebページはリンクフリーですが、
過去に大量投稿による荒らしを受けた経緯がありますので
2ch BBS関連の掲示板にはリンクを張らないでください
0067名称未設定
03/10/27 21:28ID:QvyjIU960068名称未設定
03/10/27 21:39ID:gVY3dPF1OpenWindowsセッションを開始するとまず、蒼く晴れ渡った画面に
将来のバージョンでは OpenWindows 環境は
サポートされなくなります。
CDE(共通デスクトップ環境)に移行することをお勧めします。
なんとも悲しげな悲壮感漂うメッセージが表示されます(fig5)
OpenWindowsの開発者は手塩に掛けて育て上げたOpenWindowsの打ち切りが決まり
このメッセージを表示するコードを書いた時、どんな気持ちだったのでしょうか。
ほの暗い深夜のオフィスでエディタに向かって最期のメッセージを打ち込む
最期のプログラマの寂しげな後ろ姿が目に浮かび、私は目頭が熱くなりました。
もらい泣きしちゃったYO!
脱線スマソ
0069名称未設定
03/10/27 22:36ID:RMUURkD00070名称未設定
03/10/27 23:02ID:vJrRsZnR0071名称未設定
03/10/28 19:49ID:+PIFsiv50072名称未設定
03/10/28 20:40ID:oqJwi6pVまぁ、M橋みたいな一見あれな物で毒電波垂れ流してる奴よりはいいけどな。
最初っから毒電波って謳ってるわけだし(藁
でも、Objective-Cに関して着眼点は面白いかもしれないってのだけは同意しとく(w
てか、こいつも歴史認識がいい加減なんだよなぁ(w
0073名称未設定
03/10/28 22:36ID:S7AYvpIG0074名称未設定
03/10/29 00:10ID:eyc+9Iff日本で一番モチベーションの高いCOBOLerだなw
別ページでObjective-C使ってMotif使ってたが、アレもある意味すごいw
0075名称未設定
03/10/29 01:26ID:IBofPNMx007653
03/10/29 01:48ID:2Bd9N9OHプレースホルダーを変えようとして - setPlaceholderString: を呼ぶとselector not recognized
になる。NSTextfieldでも同じ。ちゃんとヘッダファイルからコピペしたからスペル違いじゃない
はず。なんでだろ。
あと、IBでサーチ範囲のメニューと最近の検索を組み合わせたNSMenuをsearchMenuTemplate
としてくっつけてみると、resentsが追加されるたびにmenuItemのstateがリセットされるから、
ユーザの選んだサーチ範囲の保存に役立たない・・。しかも後でsearchFieldにくっいている
メニューを取得する方法もないっぽい。
サーチ範囲のメニューを選ぶと、選ばれたメニューアイテムのみにチェックをつけ、後の
サーチの時にチェックのついてるメニューアイテムはどれかを調べてその範囲でサーチする、
という実装を目指しているのだけどうまくいきません。
何かヒントがあれば教えてくださいー。
0077名称未設定
03/10/29 19:13ID:bCcw8BSC任意の場所(Application.app/Contents/Resourcesとか)に置いて使う
にはどうすればいいんでしょうか?
0078名称未設定
03/10/30 07:43ID:i+2L5WC/エイリアスを置くくらいしか思い付かん。
007953
03/10/30 14:46ID:Xnho0X1LsetPlaceholderStringを使うには何か前準備が必要なんでしょうか・・・
みんな使えてるの?
0080名称未設定
03/10/30 15:26ID:IEd9v5t8しゃぁねぇなぁ。
そのメソッドを宣言してるクラス名を目をかっぽじってよく見ろ。
継承関係もよく確認しろ。
008153
03/10/30 21:19ID:Xnho0X1Lありがとう、ありがとうございます!
[ [textField cell] setPlaceholderString:@"anString" ]でいけました。感激です。
思い込みって怖いな・・。
あと、メニューから検索範囲を選ぶというのも解決しました。
IBでsearchFieldにMenuTemplateとしてくっつけたメニューにACTIONを設定し、そのアク
ションメソッドの中でMenuTempleteの中のsenderに対応するMenuItem自体にチェックを
つけて、実際に検索する段階ではMenuTemplateの中をどのMenuItemにチェックがついてる
かを確認してその範囲で検索します。
ただ、MenuTempateにチェックをつけるだけでは、現に表示されているメニューには
チェックがついていないので、[sender setState:NSOnState]で、そこにもチェックを
つけておきます。
次からそのメニューにRecentsが加わって更新される際には、MenuTemplateにつけた
チェックがつかわれるので適切に表示されるはず。
・・これでいちおう動いたけど、間違ってたらごめんなさい。
0082名称未設定
03/10/30 21:23ID:NoFrTNj3どうしたら良いのでしょうか。
単にファイルの名称を変更しただけでは、
ビルド時に「Missing file or directory: Hoge_Prefix.h」というエラーが出るので、
何処かで設定を変更しなければならないのだと思いますが、
何処で設定したら良いものか分からないのです。
0084名称未設定
03/10/31 08:06ID:RCFiV/y60085名称未設定
03/10/31 15:55ID:RF5UB+ycNSSoundを使ってサウンドをループさせて鳴らし続けるアプリを作ろうと思うんで
すが…どうすればサウンドをループさせられるかさっぱり分かりません。
バンドルされたサウンドを、playで再生し、stopを押すまでループさせ続けるとい
う感じのアプリです。
一応コードを書いてみたものの動かしたら止まってしまいました…
聴かぬは一生の恥なんで、右も左も分からないまま書いたコードを貼ります。
#import "application.h"
@implementation application
int stopsound;
- (IBAction)play:(id)sender
{
NSSound *mySound = [NSSound soundNamed : @"sound.aiff"];
stopsound = 0;
while(stopsound = 1)
{[mySound play];
}
}
- (IBAction)stop:(id)sender
{
stopsound = 1;
}
@end
0086名称未設定
03/10/31 18:27ID:3z9Nfggrこんな感じで。
aSound と repeat はインスタンス変数。
-(IBAction)play:(id)sender{
[aSound release];
aSound=[[NSSound alloc] initWithContentsOfFile:@"/System/Library/Sounds/Glass.aiff" byReference:YES];
[aSound setDelegate:self];
repeat=YES;
[aSound play];
}
-(IBAction)stop:(id)sender{
repeat=NO;
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat) [aSound play];
}
0087名称未設定
03/10/31 18:32ID:3z9Nfggrプロジェクト->情報を見る->ビルドまでは見つかるのですが、
ビルドの中にプレフィックスヘッダを設定する項目が見つからないのです。
プロジェクトファイルの
情報を見る->スタイル->共通設定の中にプレフィックスヘッダを設定する項目があるので、
こちらで新しいファイルの名称を設定してみましたが、
やはり同じエラーが出てしまいます。
008883
03/10/31 20:05ID:OvxxCFRMあ、これはxCodeで0から生成したプロジェクトの場合ね。
PBで作ったプロジェクトだと
プロジェクト->情報を見る->ビルド->共通設定->プレフィックスヘッダをプリコンパイル
っていうチェックが無い?
こいつにチェックを入れてプレフィックスヘッダの名前を入れると
現在の設定の方にも出てくるみたい。
それだとどう?
0089名称未設定
03/10/31 20:22ID:3z9Nfggrプロジェクト->情報を見る->ビルド
という項目が見つからないのですが……
プロジェクト->情報を見る->スタイル
とは違うのでしょうか?
プロジェクト->情報を見る->スタイル->共通設定の
「プレフィックスヘッダ」にファイル名を入力し、
「プレフィックスヘッダをコンパイル」にチェックを入れてビルドしてみましたが、
やはり同様のエラーが出ます。
009089
03/10/31 20:37ID:3z9Nfggrproject.pbxproj ファイルをテキストエディタで開いて
古いプレフィックスヘッダファイルの名称の書かれている部分を
新しい名称に書き換えることにより解決しました。
0091名称未設定
03/10/31 21:36ID:qZVFWWW0【安心】Macで携帯をバックアップ【快適】
http://pc.2ch.net/test/read.cgi/mac/1040172748
上記のスレで、AU用のUSB←→携帯接続ケーブルの
ドライバを有志で書いてくださる方を探しています。
OS Xでの携帯バックアップ環境の充実のためにも
ぜひともよろしくおねがいします。
009288
03/10/31 21:57ID:OvxxCFRM>プロジェクト->情報を見る->ビルド
>という項目が見つからないのですが……
失礼、
ターゲット->情報を見る->ビルド
でした
009385
03/10/31 22:20ID:RF5UB+ycありがとうございます。早速実装してみたんですが、なぜか2回以上ループしませ
ん…どこか私の設定や記述に問題があったんでしょうか…
0094名称未設定
03/10/31 22:31ID:3z9NfggraSound=[NSSound soundNamed : @"sound.aiff"];
こんな具合にしているのであれば、
aSound=[[NSSound soundNamed : @"sound.aiff"] retain];
こうするとか。
009585
03/11/01 01:04ID:5K4drtJXありがとうございます。色々試行錯誤した結果
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat) [aSound play];
}
を
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
aSound=[NSSound soundNamed : @"sound.aiff"] ;
[aSound setDelegate:self];
if (repeat) [aSound play];
}
に変えたら、ループ再生できました。
しかし、結構な勢いでメモリリークするみたいです…なんかだんだん混乱してきま
した。メモリリークの回避方法を教えてください、お願いしますm(_ _)m
0096名称未設定
03/11/01 01:33ID:Qop2/8Toこれでどう?
-(IBAction)play:(id)sender{
NSSound *aSound=[NSSound soundNamed:@"sound.aiff"];
[aSound setDelegate:self];
repeat=YES;
[aSound play];
}
-(IBAction)stop:(id)sender{
repeat=NO;
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat) [sound play];
}
0098名称未設定
03/11/01 17:14ID:wDxNRsBfdelegateの外に出すとまわるっぽい。
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool
{
if (loop) {
[self playSound];
}
}
- (void) playSound
{
[snd play];
}
- (IBAction) play:(id)sender
{
if (![snd isPlaying]) {
loop = YES;
[self playSound];
}
}
- (IBAction) stop:(id)sender
{
if ([snd isPlaying]) {
loop = NO;
[snd stop];
}
}
sndの生成はinitとかawake辺りで適当に
009985
03/11/05 00:20ID:QcMUfVn5ひとまずこんなふうにしてみましたが、やはり2回以上回りません…申し訳ありませ
んが添削していただけませんか?改行制限の関係上読みにくくてすいません
#import "DigitalOutEnabler.h"
@implementation DigitalOutEnabler
- (id)init{
[super init];
aSound =[[NSSound soundNamed : @"Sosumi.aiff"]retain];
[aSound setDelegate:self];
return self;
}
-(void)dealloc{
[aSound release];
[super dealloc];
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
if (repeat)
[self playSound];
}
- (void) playSound{
[aSound play];
}
010085
03/11/05 00:22ID:QcMUfVn5-(IBAction)play:(id)sender{
if (![aSound isPlaying]) {
repeat = YES;
[self playSound];
}
}
-(IBAction)stop:(id)sender{
if ([aSound isPlaying]) {
repeat = NO;
[aSound stop];
}
}
@end
以上です、お願いします。
0101名称未設定
03/11/05 00:26ID:Aj0t1X6vPBと操作性が違いすぎて訳分かんなくなってきた……。
0102名称未設定
03/11/05 01:22ID:RhqfG/Oh@implementation SoundTest
- (IBAction)soundPlay:(id)sender
{
isLoop = YES;
[NSThread detachNewThreadSelector:@selector(playLoop) toTarget:self withObject:nil];
}
- (IBAction)soundStop:(id)sender
{
isLoop = NO;
[aSound stop];
}
- (void)playLoop
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[aSound play];
[pool release];
}
- (void)applicationDidFinishLaunching: (NSNotification *)notification
{
aSound = [[NSSound soundNamed:@"sound.aiff"] retain];
[aSound setDelegate:self];
}
- (void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool
{
if(isLoop) [NSThread detachNewThreadSelector:@selector(playLoop) toTarget:self withObject:nil];
}
@end
0103名称未設定
03/11/05 08:17ID:OD0ZMocDそれで動くんだったら、
>99-100 の- (void) playSoundを
- (void) playSound
{
[aSound performSelector:@(play) withObject:nil afterDelay:0.0];
}
にしても動きそうだね。
0104名称未設定
03/11/05 14:04ID:HY8nUb6E純正アプリのMainMenu.nibとかってインターフェースビルダーで開けないんですか? 昔開けた気がするんですけど?
0105名称未設定
03/11/05 16:28ID:53MCEOcb英語リソースのnibファイルのみ開けるはずだよ
どういう仕組みになっているのかは知らんけど
0106名称未設定
03/11/05 16:56ID:HY8nUb6E0107名称未設定
03/11/05 20:43ID:VZ4PVviPnibパッケージの中身を覗いてファイルが3個あればIBで開ける。
英語版から残りの2個をコピーしてくれば開ける可能性はあるが、
正常に編集できるかは保証できない。
0108名称未設定
03/11/07 08:25ID:z7sRWAKQプロジェクトウインドウとマニュアルウインドウとクラスブラウザと検索とコンソールを
同一ウインドウで表示するにはどうしたらいいんでしょうか。
つまり、ProjectBuilderの「全て一つのウインドウで…」のような操作感にしたいっていうか
そんな一杯ウインドウ開いてられないんだよう!
15”のXGAなんだよう!
すいません。眠いんで取り乱しました。もうねます。
0110名称未設定
03/11/07 14:16ID:rmI1DUS4だってウインドウのタイトルを見ないと中身がわかんないから。
フォトショとかはエクスポゼ、快適だろうなあ。
0112名称未設定
03/11/08 05:08ID:yIFANJ4kアクションメソッドで例外が発生して
そのメソッドそのものを中断したいんだけど、
NS_HANDLER
NS_VALUERETURN(,IBAction);
NS_ENDHANDLER
このNS_VALUERETURNの第1引数は何を入れればいい?
だいたいIBActionの型の実態は何?
0113名称未設定
03/11/08 06:42ID:ECR16esbそういうのはXCodeで調べたい文字列をコマンドを押しながら
ダブルクリックすればすぐ理解るよ。
で、IBActionはNibDeclarations.hで定義されているとおり、
コンパイル時にvoidで置き換えられます。
0114名称未設定
03/11/09 21:41ID:GjYszI1Oウィンドウメニューの全てを手前に移動がBring All to Frontになってしまいます。
MainMenu.nibのメニューはちゃんと日本語化しているんですけど。
どこを直せばいいかわかる人いたら教えて下さい。
Mac OS X 10.2.8
Developer Tools Dec.2002
よろしくお願いします。
0115名称未設定
03/11/12 02:58ID:0mzE3THNリソースのディレクトリ名もEnglish.lprojじゃなくてJapanese.lprojにしてる?
0116名称未設定
03/11/13 04:50ID:A1KPKcQKMSMutableDataに追加していくとすると、ファイルの終了時の判定
ってどうすればいいんだい?以下のようにしたらアプリが落ちるん
だが。
NSData *buff;
NSData *endOfFile = [NSData data];
NSMutableData *fileData = [NSMutableData data];
NSFileHandle *file
(中略)
buff = [file readDataOfLength:1]
if (![buff isEqualToData:endOfFile])
{
[fileData appendData:buff];
[buff release];
buff = [file readDataOfLength:1];
}
[buf release];
0118116
03/11/13 05:43ID:A1KPKcQK最後の一行だよね。
readDataOfLength:は読み込むファイルの内容がなくなると
空のNSDataオブジェクトを返すからこれをreleaseしたつもりだが。
それとbuildは難なく通るアプリなんだが実行時に
”シグナル 10(SIGBUS)により終了”
とでて落ちるんだけど、どう対処していいんかよく分からないので
どなたか素敵なアドバイスよろしく。
0119名称未設定
03/11/13 06:41ID:nO7i7XtLいわゆるifって条件が合ってれば中の処理をするんですよね?
つていうか、ファイルの終端をバッファサイドでチェックしてるのが分らない
けど単にグルグル回してファイルの終端で判定すればいいんじゃないのでしょうか?
よくわからないけどforでファイルサイズ分だけ回せばいいのではないでしょうか?
0120名称未設定
03/11/13 07:52ID:lWEIcs7hは両方ともいらんだろ。
allocもしくはretainしてないオブジェクトをrelease/autoreleaseしちゃダメ。
buffをすぐに捨てたいんなら
ループの最初でNSAutoreleasePoolを作って
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc] init];
最後に
[pool release];
解放すれば?
0121116
03/11/13 13:02ID:A1KPKcQKということは、readDataOfLength:はいわゆる一時的なNSData
を返すということですか?
0122名称未設定
03/11/13 13:23ID:JZKejQYF返されたオブジェクトのオーナーシップが呼び出し側にあるものは、
[[OneClass alloc...] init...]
[aObject copy...]
[aObject mutableCopy...]
だけです。(alloc... は常にinit... とペアで使わなければなりません。[MUST])
これは自作クラスでも統一するべきです。[SHOULD]??? // MUST かもしれない。
0123120
03/11/13 13:28ID:+v4jty8FreadDataOfLength:に限らずalloc以外で作ったオブジェクトは全てautoreleaseされます。
オーナーシップポリシーについてはあちこちで説明されてるので調べてみよう。
あ、fileDataもほっとくと消えちゃうよ。
後で使いたいときはretainしておくこと。
0124名称未設定
03/11/13 14:31ID:qGd4PYhK>リソースのディレクトリ名もEnglish.lprojじゃなくてJapanese.lprojにしてる?
回答いただきありがとうございます。
nibファイルは全部グローバル化しています。~.lprojに入れておかないと
だめなんでしょうか?
0125名称未設定
03/11/13 14:38ID:zRkHvWS6一部のメニューが英語で表示されるのは当たり前。
0126名称未設定
03/11/13 15:48ID:qGd4PYhKグローバル化している場合には英語モードで起動しているんでしょうか?
0127名称未設定
03/11/13 17:02ID:JJ+Hg+ed0128名称未設定
03/11/13 17:14ID:zRkHvWS6>>126
これに限らずメリケンのいうグローバルってのはアメリカであり英語ってことだ。
日本語モードで起動させたきゃ大人しくJapanese.lproj作りなさい。
0129116
03/11/13 18:19ID:A1KPKcQK"自分で生成したオブジェクトは、自分で解放する "
というのが鉄則のようですね。
それゆねにalloc...,init...,copy....,mutableCopy...
といった自前で生成したオブジェクトは自分で解放
するということですね。
では、readDAtaOfLength:によって返されるオブジェクトは
NSFileHandleのオブジェクトがオーナーと言うことになりますが、
返されたオブジェクトはどのタイミングでreleaseされてるので
しょうか?やはり返す前にautoreleaseしてるんでしょうか?
どこまで保持されるのかよく分からないので。返した後に参照後
即releaseされるのか、返されたルーチンが終了時に消えるのか?
関連することだと思いますが、オブジェクトを返すメソッドは
return [[[object alloc...] init....] autorelease];
とすべきなのでしょうか?
0130名称未設定
03/11/13 18:45ID:dpwjWcrAもしくは
NSFileHandleにオーナシップが移らないメソッドでNSDataのインスタンスを生成した
後者の場合はNSDataクラスの中で既にautoreleaseされてる。
0131名称未設定
03/11/13 18:58ID:JZKejQYF>どこまで保持されるのかよく分からないので。返した後に参照後
>即releaseされるのか、返されたルーチンが終了時に消えるのか?
普通は考えなくて良いです。
メソッド抜けてからも使うのであれば保持、使わないのであればそのまま放っておく。
別にオーナーが複数あっても問題はありません。すべてのオーナーがいなくなった時点でdeallocされます。
返されたオブジェクトが他のオブジェクトに所有されている可能性がありますので勝手にreleaseしてはいけません。
>return [[[object alloc...] init....] autorelease];
使わないのであれば
return [aObject autorelease];
で良いです。
保持している必要があり、かつ他のオブジェクトによって変更されてもいいのなら
return aObject;
でもいいです。
変更されるのがいやなら
return [[aObject copy] autorelease];
とか、専用のクラスメソッドがあるなら、
return [NSArray arrayWithArray:aArray];
みたいな。
013277
03/11/13 19:14ID:4mAwkCMc起動時に(Carbonの)ATSFontActivateFromFileSpecificationを一発呼んでやればよい。
後はNSFontManagerで目的のNSFontが得られるようになる。
0134名称未設定
03/11/13 23:12ID:A1KPKcQK*** Exception handlers were not properly removed.
Some code has jumped or returned out of an NS_DURING...NS_HANDLER region without using the NS_VOIDRETURN or NS_VALUERETURN macros.
とでてとまってしまう。これはNS_DURING...NS_HANDLER間は
return;で返すんじゃなくて必ずNS_VOIDRETURN;または
NS_VALUERETURN;で返す必要があるってことでしょうか?
0135名称未設定
03/11/14 08:03ID:G3lITbj5うん。
0136名称未設定
03/11/14 16:32ID:qbD9Wbbl- (id)method{
return [[[ClassB alloc] initWithClassA: aClass] autorelease];
}
というメソッドがあって、
ClassBはClassA.hをインポートしていて
- (id)initWithClassA: (ClassA*)aClass{
[super init];
item = [aClass retain];
return self;
}
と初期化する場合にfatal error: method definition not in class context
というエラーがでるのですが、どのように修正すればよいものでしょうか?
0137名称未設定
03/11/14 17:56ID:BSbaZ2nB0138136
03/11/14 21:16ID:4vixb8te簡略して書きましたが、実際にはmethodでClassBを生成する際
自分自身のインスタンス変数を引数としています。
なので出来ればクラスメソッドではなくインスタンスメソッドにしたいのです。
0139137
03/11/14 21:54ID:BSbaZ2nBClassBの方に
+ (id)classBWithClassA:(ClassA *)aClass {
return [[[ClassB alloc] initWithClassA: aClass] autorelease];
}
かな。
0140136
03/11/14 22:41ID:3LYklnlQありがとうございます、そうしてみます。
しかし、Smalltalkでは問題なく動作するのに
なんでObjective-Cだとエラーになっちゃうんでしょうね。
0141名称未設定
03/11/14 23:29ID:O30ky1lX普通にできますけど?
> fatal error: method definition not in class context
これって、括弧の閉じ忘れじゃないの?
>しかし、Smalltalkでは問題なく動作するのに
>なんでObjective-Cだとエラーになっちゃうんでしょうね。
比較する意味なし。
0142136
03/11/15 00:19ID:7sbcU5M4試しに
- (id)initWithClassA: (ClassA*)aClass
の部分を
- (id)initWithClassA: (id)aClass
にしたらエラーにならなかったので閉じ忘れではないと思います
0143141
03/11/15 00:42ID:ptvAMNJd#import <Foundation/Foundation.h>
@interface ClassA : NSObject
- (id) method;
@end
// ClassA.m
#import "ClassA.h"
#import "ClassB.h"
@implementation ClassA
- (id) method
{
return [[[ClassB alloc] initWithClassA : self] autorelease];
}
@end
0144141 (2)
03/11/15 00:43ID:ptvAMNJd#import <Foundation/Foundation.h>
@class ClassA;
@interface ClassB : NSObject
{
ClassA *_item;
}
- (id) initWithClassA : (ClassA *) aClass;
@end
// ClassB.m
#import "ClassB.h"
#import "ClassA.h"
@implementation ClassB : NSObject
- (id) initWithClassA : (ClassA *) aClass
{
[super init];
_item = [aClass retain];
return self;
}
@end
0145141 (3)
03/11/15 00:45ID:ptvAMNJd#import <Foundation/Foundation.h>
#import "ClassA.h"
#import "ClassB.h"
int main(int argc, char **argv)
{
NSAutoreleasePool*ap = [[NSAutoreleasePool alloc] init];
ClassA*a;
ClassB*b;
a = [[ClassA alloc] init];
b = [a method];
NSLog([b description]);
[ap release];
return 0;
}
/*
こういうのじゃないの?
インデントは全角空白になってる。
Mac OS X 10.3.1
% cc -o test.o -framework Foundation -I . ClassA.m ClassB.m main.m
% ./test.o
2003-11-15 00:36:48.108 test.o[1112] <ClassB: 0x500d70>
*/
0146136
03/11/15 01:48ID:7sbcU5M4どうもありがとうございました。
014785
03/11/15 16:32ID:8+pVYpYN>>102さんの方法でうまくいきました。相談にのってくださいました皆さまに御礼
申し上げますm(_ _)m
0148名称未設定
03/11/17 13:16ID:kjJ8OvNv- (void)drawRect:(NSRect)rect {
NSDrawWindowBackground(rect);
}
とだけしたのですが、ウィンドウをマウスでリサイズすると、
テクスチャがウィンドウにうまく連動せず、リサイズ前の状態のテクスチャが
タイリングされてしまいます。
これをきちんと連動させるにはどうすればよいのでしょうか?
0149名称未設定
03/11/18 05:14ID:0TUxXa9FHMDTのサンプルコードを参考にいろいろいじってるんだけど
なかなか思うようにいかなくてね。
0150名称未設定
03/11/20 04:45ID:Dd755Y53- (void)viewDidEndLiveResize{
[super viewDidEndLiveResize];
[self display];
}
これでとりあえずリサイズ終わったら描画し直される。
0151148
03/11/20 07:15ID:Hy7aMb9uありがとうございます。
色々試して、とりあえず現状はそんな感じ(setNeedDisplay)で
しのいでるのですが、Safariはどうやってるのかなーと思ってるところです。
class-dumpでSafariを見ると、NSWindowのカテゴリに
-(id)scaledBackgroundというメソッドが追加されてて、
Viewはそれを見てるっぽい感じなんですが、
NSWindowでどういう操作をしているのかわからず・・・
0152名称未設定
03/11/20 16:31ID:srH13EMOもしかしてFSRef使うんですか?
あとラベルの名前を取得する方法ってありますか?
com.apple.Labels.plistに入っているみたいですが、
(ただし自分で設定した名前のみ)
正規の取り出し方法はあるんでしょうか?
0153名称未設定
03/11/22 16:17ID:7q0FmrTNhttp://homepage.mac.com/mkino2/cocoaProg/Foundation/NSBundle/NSBundle.html
ここに書いてある方法より簡単な取り出し方っていうのは無いんでしょうか?
プロジェクトに内蔵してる画像を取り出すわりにはずいぶん複雑に思えたもので...
0155名称未設定
03/11/22 16:38ID:7q0FmrTNですよね。ですよね。
0156名称未設定
03/11/24 21:22ID:n2XZHi2Xsignal, setjmp, longjumpを使えば補足して異常終了させない
ようにすることはできたんですが、
「アプリケーションは予期しない理由で終了しました」
ダイアログを抑止することができません。
これを出さないようにする方法ってあるんでしょうか?
NS_DURING, NS_HANDLER, NS_ENDHANDLERを使ってもだめでした。
0157名称未設定
03/11/25 01:03ID:fx2Bc8j/0159名称未設定
03/11/26 02:52ID:k8O9i62a0160156
03/11/26 11:13ID:SkDocYo40161名称未設定
03/11/28 21:47ID:1dGWYsWGラジオボタンでNSImageInterpolationを変更するプログラムを作ってみたのですが
変更後の画像を見ても補間方法が変わっているようには見えないのです。
ラジオボタンをクリックした時にメソッドが呼ばれて
NSGraphicsContext *gc = [NSGraphicsContext currentContext];
[gc setImageInterpolation: NSImageInterpolationHigh];
とかやってるだけなんですが...NSGraphicsContextの扱い方が間違ってるのでしょうか。
0162名称未設定
03/11/28 21:52ID:EVvuGUN00163名称未設定
03/11/29 15:05ID:zcHa7A5e画像ビューアでよくある、フルスクリーン表示ってどうやって実装したら良いものでしょうか。
0164名称未設定
03/11/29 15:48ID:1piDgw0Bやることは至って簡単で画面いっぱいのNSWindowに切り替えればいいだけです。
しかし普通のWidnowをでかくしただけじゃうまくいきませんのでそれ用のNSWindowを作ります。
やるべきことは、
1,(メインの)画面と同じ大きさで
2,タイトルバーを含む境界線がすべて無いNSWindowを
3,メニューバーよりもDockよりも前に表示する
です。
1,は簡単
NSRect fullscreenRect = [[NSScreen mainScreen] frame];
これをWindowのFrameにすればいいだけ。
2,NSWindowを作るときのstyleMaskにNSBorderlessWindowMaskを渡してあげる。
3,NSWindowのレベルをNSStatusWindowLevelにしてやると出来ます。
あとは出来たNSWidnowにNSViewを貼り付けるだけです。
0165名称未設定
03/11/29 15:52ID:1piDgw0B-(NSWindow*)fullscreenWidnow {
static NSWidnow* result;
NSRect fullscreenRect = [[NSScreen mainScreen] frame];
if( ! result ) {
result = [[NSWindow alloc] initWithContentRect:fullscreenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[result setLevel:NSStatusWindowLevel];
// たいていは黒バックですよね。
[result setBackgroundColor:[NSColor blackColor]];
}
return result;
}
-(void)fullscreenMode {
....
window = [self fullscreenWidnow];
// このviewはNibで作っておくのが楽だと思います。
// contentViewのsubViewにせず直接contentViewに設定してもかまいません。
[[window contentView] addSubview:view];
....
[widnow makeKeyAndOrderFront:self];
....
}
-(void)normalMode {
....
window = [self fullscreenWindow];
[widow orderOut];
[view removeFromSuperview]; // お片づけ
....
}
0167名称未設定
03/11/29 20:57ID:qfxDpF9Q訳あって、ダブルクリック(-openFile:)ではブラウザで開かれてくれない
ファイルをブラウザに投げる必要があるのです。
よろしくお願いします。
0168名称未設定
03/11/29 21:14ID:m0k62x1PLaunch ServiceのLSGetApplicationForInfo()で拾えたような気がします。
どっかで見た気がするんですが、どこで見たか忘れてしまいました。
0169名称未設定
03/11/29 21:19ID:PdB83R+Bでデフォルトのブラウザで開けないだろうか?
0170名称未設定
03/11/29 21:24ID:VUZ7oStO0171167
03/11/29 21:28ID:qfxDpF9Qありがとうございます。調べてみます。
>>169
やってみたのですけどだめでした。openFile:と同じ結果になってしまって。
0172167
03/11/29 21:54ID:qfxDpF9Q0173名称未設定
03/11/29 22:00ID:PdB83R+BNSDictionary *dictionary1=[[defaults persistentDomainForName:@"com.apple.LaunchServices"] objectForKey:@"LSPrefsBindings"];
NSDictionary *dictionary2=[[dictionary1 objectForKey:@"U:http"] objectAtIndex:0];
NSString *identifier=[dictionary2 objectForKey:@"LSBundleIdentifier"];
NSString *filename=[[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:identifier];
Cocoa なら、これでデフォルトブラウザのパスが取得できる。
plist の仕様が変わったら使えんけど。
0174167
03/11/29 22:33ID:qfxDpF9Qいけました。ありがとうございます!
それにしても何をしているのか、中身がいまいちわからんのですけど・・。
LaunchServiceともども、追々学習していきます。
0175名称未設定
03/11/30 00:18ID:eYPeuw5khttp://cocoa.mamasam.com/COCOADEV/2002/09/2/45230.php
ここです。
173はおおざっぱに言うと〜/Library/Preferences/com.apple.LaunchServicesを
読み込んで、httpに関連づけられているアプリケーションのidentiferを得て、
それをNSWorkspaceで処理してるってことですかね。
って、173さん、勝手に書いてすいません。あげくにもし間違ってたら重ねてすいません。
とりあえず〜/Library/Preferences/com.apple.LaunchServicesを実際に開いてみたら
理解が進むんでないでしょうか。
0176名称未設定
03/11/30 00:19ID:eYPeuw5kcom.apple.LaunchServicesじゃなくてcom.apple.LaunchServices.plistっすね。
0177164-165
03/11/30 22:49ID:z4orrtUx誤;3,NSWindowのレベルをNSStatusWindowLevelにしてやると出来ます。
正;3,NSWindowのレベルをNSScreenSaverWindowLevelにしてやると出来ます。
こちらの方がよいようです。
また、2点ほど問題がありました。
1点めはcmd+[TAB]、exposeによるアプリの変更に問題を生じる。
これはNSApplicationのdelegateで
- (void)applicationWillResignActive:(NSNotification *)notification
{
if( フルスクリーンモード ) {
ノーマルモードに変更
}
}
で回避可能です。
これをしないとほかのアプリが見えないにも関わらずアクティブになるというきわめて危険な状態になります。
おそらくユーザーはパニック状態になるでしょう。
フルスクリーンを解除しようにもアプリ自体をcmd+Qで終了させようにもイベントはすべて見えないアクティブアプリに送られてしまいますから。
(ただし、Appleはこれに気づいてないようでiPhotoではこの状態になります。)
2点目はexposeです。iTuneのフルスクリーンモードではexposeは無効化されているようです。
少し調べてみたのですが、exposeのイベントはかなり低レベルで処理されているらしくCocoaAPIでは無効かの方法を見つけられませんでした。
動作から考えるとWindowServerがこれをやってるのは確実なんですがドキュメントが見つからない。。。
0178名称未設定
03/12/01 23:09ID:IEdWMmcQ正確なクロックを得るにはどうしたらいいのでしょうか。
NSTimerをちょっとためしてみたけど、どうも他の
アプリと切り替えたりすると揺れたりします。
アイディア等あれば教えてください。
0179名称未設定
03/12/01 23:44ID:9Qd3JaM8Omniのサイトに精度の高いタイマーのソースが
公開されてた気がする。
……と、これかな。
OmniTimer framework for performing low overhead and high accuracy timing.
ttp://www.omnigroup.com/developer/gamedevelopment/
0181名称未設定
03/12/02 01:24ID:JyvOsmcY今までNSWindowの勉強をさぼっていたせいでかなり難儀しましたが、
なんとか実装できました。本当にありがとうございました。
0182名称未設定
03/12/03 18:44ID:x/rv4abE異なるnibファイル間でメッセージのやり取りはどうやって実現するのでしょうか?
凄い基本的な事かも知れませんがどなたか教えて下さい。
0183名称未設定
03/12/03 18:51ID:EG4i3Fjx0184名称未設定
03/12/04 01:01ID:FO6ZXYAXもしかすると、FirstResponderに送ればいいかもよ。
このことは簡単すぎて、見過ごしているか書いてないことが多い。
0185名称未設定
03/12/04 05:33ID:29QF9aRONSGraphicContextってそもそも何なんでしょうか?
公式の文書もあるにはあるんですが...
http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/index.html
どこかわかりやすい説明があるとこってないでしょうか?
0186名称未設定
03/12/05 01:43ID:glPDxH1cNSAttributedString *aString;
NSURL *url = [NSURL URLWithString:@"http://www.apple.com/"];
NSData *dat;
NSDictionary *dic;
dat = [NSData dataWithContentsOfURL: url];
aString = [[NSAttributedString alloc] initWithHTML:dat documentAttributes:&dic];
[[textOut textStorage] appendAttributedString:aString];
textOutはOutletです
という感じのコードを書いてみたんだけど
htmlのテーブル部分だけがtext読み込みできない・・・
Viewには表示されてるのに、NSLogで見ると抜けてるのです。
(俺があほ? バグ?)
他に何かいい方法ないでしょうか。
0187182
03/12/06 02:06ID:nBaoYn0/すいません。プロバイダ規制等で返事が遅れました。
ノーティフケーションもレスポンダチェーンも幾らか勉強不足なので
今すぐは使えませんが参考になりました。御助言有り難うございました。
ドキュメント側オブジェクトはメインウインドウのデリゲートとしてるので[[NSApp mainWindow]delegate]で取得出来ましたが、
逆からは結局出来ませんでした。
0188名称未設定
03/12/06 09:53ID:8nFfpFga俺もHTMLタグをとりだしたいのだが、結局方法がわからなかった。
しかたないので、NSScanner をつかって、地味にきりだしている。
0189名称未設定
03/12/06 12:05ID:B/SmR9Efドキュメント読んでないけど、テーブルとかは
NSAttributedString の 属性側に入ってるのでは?
0190186
03/12/06 20:18ID:aRxxDJ4oNSScannerか。使ったことないのでやってみます。
俺はrangeOfStringを使ってテーブルタグを検索削除するメソッド書いて
とりあえず成功した。
が、なんか読み込めないSITEとかあるのでwebkitの資料漁ってます。
http://cocoa.karelia.com/Foundation_Categories/NSString/_Flatten__a_string_.m
こんなのも見つけた。
>>189
NSAttributedString の 属性側に入ってるのでは?
リンク先とかはそうなってると思ったけどどうなのかな。
ヒントさんきゅう。
0191名称未設定
03/12/07 03:25ID:bewOrZb5ゴミ箱のpathってどこにあるんでしょうか?
あと10.2と10.3では違ったりしますか?
0192名称未設定
03/12/07 06:35ID:tYeiZdxQ0193名称未設定
03/12/07 20:25ID:F6hElsBJ前にdentomさんとこの板に書かれていたrm安全版という記事にも書かれていたのだけど、
単にmvで、~/.Trashに移動するだけだと同名ファイルが既にあった場合消されちゃうので、
名前も変えてってスクリプトを作ってましたね。
0194193
03/12/07 20:26ID:F6hElsBJ#!/bin/csh -f
if ($#argv > 0) then
set WORKFILE = /tmp/jp_dentom_tra_work
echo 'tell application "Finder"' > $WORKFILE
foreach ARGFILE ($*)
echo -n 'delete POSIX file "' >> $WORKFILE
echo -n $ARGFILE >> $WORKFILE
echo '" as alias' >> $WORKFILE
end
echo 'end tell' >> $WORKFILE
osascript $WORKFILE > /dev/null &
endif
というやつ。適当な名前で、たとえばtraとでもして
tra *.txt
とターミナルで入力すれば、*.txtを全部、ゴミ箱にうつします。
osascriptは実行時間が遅いのでバックグランドで動かすようにしてます。
0195193
03/12/07 20:27ID:F6hElsBJtell application "Finder"
delete POSIX file "file-name" as alias
end tell
この3行がキモ。
0196名称未設定
03/12/07 20:40ID:kgMaYyp50197名称未設定
03/12/07 20:43ID:AFpiyr9v0198名称未設定
03/12/08 00:51ID:Dx3gW6//複数パーティションに分けている場合とか。
CarbonだったらFindFolderあたりで探したはず。
0199名称未設定
03/12/08 00:52ID:Dx3gW6//0200191
03/12/08 02:06ID:Oh8enjz+有り難うございます。
以前どこかで知った筈でしたがど忘れしていました。
>>193〜
ええと、Cocoa専門のプログラム初心者なので
スクリプトもターミナルもCocoaでスクリプトを使う方法もあまり判らないですが、
確かに同名ファイルの場合等、>>196-198さんの事態を考えるとスクリプトでFinderに依頼した方が確実かとも思いますので
>>199さんの方針で書店や図書館等で調べてこようかと思います。
有難うございました。
ちなみに単純にファイル移動のメソッドでゴミ箱に送ろうとしたら出来ませんでした。
単に何か間違えてるのか、そういう仕様なのでしょうか。
0202名称未設定
03/12/08 11:09ID:tcTg/2hO以下、NSWorkspaceを使ってゴミ箱に捨てるサンプル
// /Users/Shared/_removeにあるtemp.c、temp.txtをゴミ箱に捨てる例
NSWorkspace *aWS = [NSWorkspace sharedWorkspace];
NSString *aDir = @"/Users/Shared/_remove";
NSArray *aFile = [NSArray arrayWithObjects:@"temp.c",@"temp.txt",nil];
int aTag;
if([aWS performFileOperation:NSWorkspaceRecycleOperation source:aDir destination:aDir files:aFile tag:&aTag]){
NSLog(@"OK aTag=%d",aTag);
}else{
NSLog(@"NG aTag=%d",aTag);
}
0203202
03/12/08 11:11ID:tcTg/2hOわっちの発案ではない。教えてくれた人、ありがとう。
0204200
03/12/09 05:34ID:HKEiSKNKおかげで何とか実装出来ました。
移動の際、ドック上のゴミ箱アイコンのアクション
(空アイコンからの更新、入った音の発生)が起こらないのが寂しいですが、これで良しとします。
助かりました、有り難うございます。
>>201無視した訳では無かったのですが、
「>>197 NSWork〜がどの様なものか判らないのですが、ゴミ箱処理に関係したものでしたら出来ればもう少し説明をお願いします」
という様な事を書いたのですが編集中に一度消したまま送信してしまいました。>>197さん、すみませんでした。
0205名称未設定
03/12/10 09:33ID:e1rQVPmmもう1つ、ObjectAllocで Call Stacksがシンボルで表示されるときと
アドレスのときの違いはわかりますか?
0206名称未設定
03/12/10 11:00ID:ei6buMrQメニュー
「ObjectAlloc」>「About ObjectAlloc」
Performance 関連の文書にも詳細が載ってたはず。
file:///Developer/Documentation/Performance/Performance.html
0207名称未設定
03/12/10 11:04ID:ei6buMrQAppleEvent(Carbon) で Finder におねがいするのが一番確実。
もっとも、いまは Cocoa だけで手一杯だろうけど。
0208名称未設定
03/12/10 11:16ID:VJzX7IdA0209名称未設定
03/12/10 12:20ID:e1rQVPmmどうも。ここは気付かなかったなあ
>About
に色はありました。
ドキュメントファイルがなかった。
こっちはOSX10.2.8だから?
シンボルの有無はなんなんだろうか。。
0211名称未設定
03/12/13 10:59ID:ohyp+QwZどなたかやり方を教授して貰えませんか?
途中、実装出来たのですが、
表示タイミング等の都合からコードの場所をずらしたり等していたら
スクロールビューの内容が表示されなくなり、夜中から苦戦しています。
勿論、マトリクス等は先に生成してますし、
マトリクスの内容も直接ウインドウに張ると表示されるので出来てますし、
構文エラーもないのですが、
幾ら見直してもおかしい所が見つからず、混乱しています。
下の様な感じなのですが、厳密に張る順番の様な物が有りましたっけ?
PBが破損したのでしょうか?
//マトリクス、ウィンドウ生成後(スクロールも含め全てインスタンス宣言済み)
myScroll = [[[NSScrollView alloc]init]autorelease];
[myScroll setHasVerticalScroller:YES];
[myScroll setDrawsBackground:YES];
[myScroll setDocumentView:myMatrix];
[myWindow setContentView:myScroll];
//[scrollV setVerticalScroller:YES];
0213名称未設定
03/12/13 11:45ID:WCSb4l7sIBでスクロールビュー付けちゃダメなの?
0214名称未設定
03/12/13 12:23ID:6z4JXjnn-[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)
ってエラーがどうしてもでてしまってコンパイルできない。テキストフィールドを1つだけバインディングしてるだけだけれど。
何が原因なんだろ?
当方 Xcode 1.0.1、Interface Builder 2.4(v349) です。
0215214
03/12/13 12:28ID:6z4JXjnn0216211
03/12/13 16:19ID:ohyp+QwZ使ってみましたが駄目でした。
そもそも途中、initで実装出来、順番は変えてもコード自体は殆ど弄ってないので余計原因が判りません。
>>213
メインウインドウのサブウインドウなので自作にしたのですが、
何かIBの使い方を誤解してるでしょうか?
0217名称未設定
03/12/14 14:24ID:0dqJPMXU配列から「Icon(ニューライン文字付き?)」や
「*.txt]等の一部一致した文字列を消す方法を教えて下さい。
後者の*はワイルドカードのつもりですがcocoaでは使えない様ですし
配列の一つ一つをhasSuffixで参照しても出来ませんでした。
もしくはフォルダ名だけを取得する方法が有れば教えてください。宜しくお願いします。
0218217
03/12/14 15:16ID:0dqJPMXUお騒がせしました。本当にすみませんでした。
0219名称未設定
03/12/14 23:43ID:qSRZfyyjXCodeはどこにあるのでしょうか?
買ったままの状態ではインストールされてないのでしょうか?
0220211
03/12/15 00:17ID:vGu8XMuqマトリクスをスクロールビューに貼付ける前に
中身のセル等に自動リサイズする様セットしたのが原因だった様です。
と、一応同じ所でつまずく人の為に書いておきます。
同じくお騒がせしました。
0221名称未設定
03/12/15 02:15ID:ULTu93WZPantherプリインストールマシンなら、/Applicationsフォルダの中にディスクイメージがあるらしい。
あるいはADCオンライン会員になってDownloadする。
0222222
03/12/16 03:01ID:N+ZEq57g(゚Д゚ ) <おいこそが222ゲトー
/◎ ̄旦/ヽ;;;⌒`)
/___/ ※/)≡=-;;;⌒`)⌒`)
/ ※ ※ ※ ※ // ≡≡≡≡= -;;;⌒`)⌒`)
(ー―――――_,ノ ≡=⌒`);;;⌒`)≡=-⌒`)
 ̄ ̄ ̄ ̄ ̄ ̄ ズザー―――
0223名称未設定
03/12/16 18:25ID:qjoNzs9l開いたまま更にダブルクリックするとウインドウが手前に来るというのを実現させたいのですが、
ウインドウが複数に及ぶ場合、ノーティフィケーションやデリゲート等で実現可能なのでしょうか?
メニューのウインドウ項目を取得する様な方法が有れば教えてください。
お願いします。
0224名称未設定
03/12/16 18:30ID:2J/0UMBtって、ウインドウメニューの事が言いたいのか?
NSTableVIewのdoubleActionから
NSWindowのmakeKeyAndOrderFrontを
呼び出せばいいんでないの。
0226名称未設定
03/12/16 19:12ID:qjoNzs9lダブルクリックでウインドウをコントロールするインスタンスを作成して、それがウインドウを生成し、
同時に配列にウインドウ名を追加する事で
そのウインドウ名が配列内に無い場合のみウインドウが開く様にして、
同じウインドウを開かない様にしてるのですが(ウインドウを閉じた時に配列からウインドウ名を削除する)
ウインドウが多種類あるのでmakeKeyAndOrderFrontを送る名を特定出来ない、という事です。
0227名称未設定
03/12/16 19:19ID:2J/0UMBtそりゃ管理のしかたが悪い。
単純にウインドウなりコントローラなりへの参照そのものを
配列に突っ込んどきゃいいのでは。
0228名称未設定
03/12/16 20:08ID:qjoNzs9lすいません、色々勘違いしていました。
(というか結構疲れてるみたいです…)
0229名称未設定
03/12/17 21:52ID:93n9J9VchtmlからNSAttributedStringを作れるんだから反対もできるだろう、というのは安易でしょうか?
0230名称未設定
03/12/19 12:23ID:6OR0d2tYNSTableView の Cell の中に Progress Indicator が
組み込まれていたりするのですが、
そのような NSTableView を作るにはどうすれば良いのでしょうか。
NSCell のサブクラスの中には Progress Indicator は無いようですので、
普通の方法では実現できそうにないような気もしますが。
0231名称未設定
03/12/19 17:05ID:Jx7XA9qISoftware Updateの
>Cell の中に Progress Indicator
UI Element Inspectorで見たところ、イメージCELLっぽいから
自分で書いているようだ。
0232名称未設定
03/12/19 19:54ID:/Exb3moWそれぞれのアプリで頑張らなきゃならんってのはどうにかなんないもんかね。
0233名称未設定
03/12/19 23:26ID:IungXsyxAppleがユーザーインターフェースガイドラインを無視して暴走している方が問題だと思うが。
自前でがんばってもOSのバージョンアップでおかしくなる可能性を考えると、
あんまりがんばる気になれないなあ、俺は。
0234名称未設定
03/12/20 19:15ID:vzt6/8RJ0235164-165
03/12/20 20:33ID:S83SfMJYAppKit/NSFileWrapper.h
0236名称未設定
03/12/20 20:34ID:N7A8X479ttp://homepage.mac.com/troy_stephens/software/objects/IconFamily/
0237234
03/12/21 02:18ID:Ic9uz2II(しかしNSFileWrapperが何なのか調べてる所です)
0238名称未設定
03/12/21 14:51ID:kI0w7HxJExpose中とそうでない時を判定するにはどうしたらいいでしょうか。
ここで、Expose中とはF9〜F11でウインドウが縮小したり、外に移動したりしている時
のことです。
0239名称未設定
03/12/23 00:01ID:EAfSqS4hNSLogを全部とっぱらったら0.1秒位処理が早くなったりするん?
0241名称未設定
03/12/23 01:56ID:moAHNmD+0242名称未設定
03/12/24 01:11ID:M0n2et9R重たい処理(処理A)を行うとカーソルが虹色のくるくる回るやつになり、
処理が終わるまでウインドウのボタンが一切きかなくなります。
(処理A中にはキャンセルフラグが1になると中断する仕掛けが組み込まれてますが、キャンセルフラグを1にするボタンを押せないので結局キャンセルできません。)
WindowsでいうところのApplication->ProcessMessage()のような関数、
すなわち、一旦処理をOS側に戻す関数などcocoa上にありましたら、教えていただきたくお願いします。
0243名称未設定
03/12/24 04:08ID:AeJVNocuキャンセルフラグくらいならThreadにしたほうが良いぞ
0244242
03/12/24 21:50ID:M0n2et9R情報ありがとうございます。
スレッドのサンプルを見ながら、処理Aを32分割してみました。
しかし、結局32個のスレッドが終わるのを待つループで
虹色カーソルが出て、なにも受け付けくれず、事態は全く改善しません
でした。よく考えてみると当然ですね。
スレッドが終わるのを待つループの中でrunloopを使えばよさそうだ!
というのは解ったのですが、いまいちrunloopの使い方がよくわかりません。
runloopのサンプルプログラムの情報などありました、
教えていただきたくおねがいします。
0245名称未設定
03/12/24 23:37ID:+Z6Oft3F単にvoidにくっ付けても効果がない様ですが。
0246230
03/12/25 01:37ID:k0UO5xPuアク禁食らってて遅くなりましたが、ありがとうございました。
自分で描くのは面倒なので断念したいと思います。
>>244
フラグを参照して適宜終了するようなスレッドを
1つだけ走らせれば十分なような気もしますが。
32個のスレッドというのは何か設計に問題が無いですか?
ついでに質問というか疑問なのですが、新たにスレッドを走らせる場合に
NSThread の detachNewThreadSelector:toTarget:withObject:
を使わずに
NSApplication の detachDrawingThread:toTarget:withObject:
を使ったとしたら何か問題があるでしょうか。
後者は自動的に NSAutoreleasePool を用意してくれるので便利なのですが、
どうも名前からすると何かを描画する時に使うことを予定しているようです。
0247名称未設定
03/12/25 01:49ID:/ix/M4nGCreates and executes a new thread, automatically creating an NSAutoreleasePool for the thread.
This method is a convenience wrapper for NSThread’s detachNewThreadSelector:toTarget:withObject:.
0248名称未設定
03/12/25 08:36ID:a31gkzmZ> スレッドが終わるのを待つループ
これが無ければうまくいくでしょうね。
さらに>246さんの
> フラグを参照して適宜終了するようなスレッドを
> 1つだけ走らせれば十分なような気もしますが。
を適用。
あと、NSLockも調べる。
0249名称未設定
03/12/25 09:06ID:a31gkzmZoneway, in, out, inout, byref, bycopy は
プロクシを使った分散オブジェクトのオブジェクト間通信時のみにしか適応されないようです。
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_4_section_5.html
英語の文献しかないみたいです。。。
0250名称未設定
03/12/25 10:14ID:KHRTr3L/かなり試行錯誤しないと理解できないと思う。
あれで分かりづらいのは、DistantObjectとThreadをいっしょに
書いているところだよ。サンプルも何度か書き直されているから
その人も理解していないはず。
通常のアプリでは、2つのThreadの同期で充分だけど、
少し複雑なThread間でメッセージ通信を行いたい時は、DO(Distributed Objects)
にして、互いにRunLoopが必要なんだ。
そのとき、onewayは意味がある。
Win32でいう所のSendMessageとPostMessageだな。
0251名称未設定
03/12/25 18:36ID:pGtjfmI2の音量をいじくるプログラム作りたいんですけど
ボリュームコントロールがよくわかりません
教えてください
言語Objective-Cです
0252名称未設定
03/12/25 22:26ID:rNeUl6yvそれがあれば>>242さんの問題も解決すると思うんだけど
あとNSThreadは広分社のobjective-Cって本に詳しい解説がのってた気がします。
0253名称未設定
03/12/26 00:10ID:37nTHt5/>通常のアプリでは、2つのThreadの同期で充分だけど、
NSThreadでこういうごくふつうのマルチスレッディングってできるんだっけ?
0254名称未設定
03/12/26 01:04ID:DgOIrw5h使ったけど。DOは高度すぎて、よくわからんかった。
0255名称未設定
03/12/26 16:12ID:8hH1M9px手抜きするなら、同期処理がややこい Thread を使わず、NSTimer 使っ
て1秒なり0.1秒なりの単位で繰り返し特定のメソッドを呼び出させる。
もちろん、特定のメソッドではループするのじゃなく適当な単位で処理
できたら即座に return すると。
全て終わったら Timerそのものを invalidate する。
Thread を立てないから Timer で呼び出しているメソッドの実行中は
マウスやキー操作には反応しないけど、「適当な単位」を適宜短くして
おけば気がつかないよ。
0256名称未設定
03/12/26 21:28ID:pssX5oDW>NSThreadでこういうごくふつうのマルチスレッディングってできるんだっけ?
こんな質問が出るとは>250さんの言う通りみたいね。
別にNSConnection を使わなくてもいいいんです。
NSRunLoopも必要なし。
+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;
で普通のメソッド渡してやればそのメソッドは別スレッドで動きます。
NSAutoreleasePoolのインスタンスがいないのでメソッドのはじめで作って最後で捨ててやればいいだけです。
NSRunLoopが走ってないので適宜NSAutoreleasePool を解放してやらないと、
メソッドが終わるまでゴミがたまったままになりますが。
自分でループを回してるんだったら、ループのはじめでNSAutoreleasePoolを確保して、
ループの最後で解放するのが常套手段ですね。
0257名称未設定
03/12/26 22:33ID:No9jXZE7と人に押し付けてみるテスト
0258名称未設定
03/12/27 00:05ID:IOYYYpX5そのへんどうだったかなぁ?
スレッドをdetachするのはいいとして、detachしたスレッドを示すIDが
得られないから、スレッド間通信ができないじゃん、と思った記憶が
あるが。
0259名称未設定
03/12/27 00:26ID:/F8lmja3難しく考えなくても、こんな感じでOKなのでは。
0260名称未設定
03/12/27 13:41ID:Bct3uqZrNSApplicationの
+ (void)detachDrawingThread:(SEL)selector toTarget:(id)target withObject:(id)argument
を使うとNSAutoreleasePoolの確保と解放をこいつが勝手にやってくれるから便利よ。
0262名称未設定
03/12/30 06:17ID:xOUqLKGj0264名称未設定
03/12/30 11:01ID:iFT7eD7e移すことができるようにしようと思っています。
そこで、試しに NSTableView の delegate に
-(BOOL)tableView:(NSTableView *)tv writeRows:(NSArray*)rows toPasteboard:(NSPasteboard*)pboard{
[pboard declareTypes:[NSArray arrayWithObjects:NSStringPboardType,nil] owner:nil];
[pboard setString:@"test" forType:NSStringPboardType];
return YES;
}
というメソッドを書いたのですが、これでは上手くドラッグ&ドロップできません。
NSLog で調べたところ、pboard への文字列の格納は成功しているようですが、
どのようにしたらテキストエディタなどに文字列を受け取らせることができるのでしょうか。
0265名称未設定
03/12/30 11:31ID:PQhRaXf/NSTableViewのサブクラスを作って
draggingSourceOperationMaskForLocalをオーバーライドして
適当な値を返すようにする必要があるらしい。
0266名称未設定
03/12/30 11:58ID:iFT7eD7eありがとうございます。
直ちに実装して解決しました。
他の方のためにも "draggingSourceOperationMaskForLocal" で検索して
参考にしたサイトを貼っておきます。
ttp://wwwa.dcns.ne.jp/〜nito/OSPT/DragAndDrop.html
0267名称未設定
03/12/30 12:05ID:nJzu3GMoこれってどこかにそういうAPIがあるんでしょうか?
今10.3しか環境が無いのですが、こいつにはLAServerにLAJapaneseFastTokenizerってLA環境があるんです。
しかしどこを探してもそれに関する記述がありません。
もしかしてこれが目的の物でかつ隠しAPIでアクセスするようなものなんでしょうか?
0268名称未設定
03/12/30 19:13ID:40H+m5OXドキュメントちょっとみた感じだと、NSAttributedStringのdoubleClickAtIndex:→
nextWordFromIndex:forward:がその機能っぽいね。
0269名称未設定
03/12/30 21:16ID:Rtbwy226UnicodeUtilitiesのUCFindTextBreak()です。
Cocoaの中身は大部分Carbonであることをお忘れなく。
0270名称未設定
03/12/30 22:34ID:FfmwHk4q0271267
03/12/30 23:18ID:VmS5H350ありがとうございます。
双方とも期待通りの動作をいたしました。
Wordにだまされたって感じですね。文節なのに。。。
ダブルクリック時の云々と書いてるので確かにこれらのAPIで取得できるのが正しいとは思うのですが。
> Cocoaの中身は大部分Carbonであることをお忘れなく。
全然忘れてません。
とにかくLAServiceしか目に入ってませんでした。。。
もう年かな。。。
0272名称未設定
04/01/02 07:13ID:QE5QktKMさせたいのですが、そのためのdelegate methodは存在するのでしょうか。
リファレンスを見たのですがどうもそれらしいメソッドはみあたりません。
delegate method以外の方法があれば教えていただけないでしょうか。
0273名称未設定
04/01/02 07:16ID:QE5QktKMお騒がせしました。
0275名称未設定
04/01/04 22:11ID:I0aZ/ruZされなくなるときがあるんだけど、どうすればいい?
クリーンしてもダメなんだよ。
OSX 10.2.8, PB v2.1
0276名称未設定
04/01/06 19:54ID:7fNtQJARビルドできないみたいなんですが
これって普通ですか?
0278名称未設定
04/01/10 13:05ID:TfU85+hhNSSoundだと独立したスレッドで走らせても他のサウンドが再生中のときは
何もしてくれないようなので……
0279名称未設定
04/01/12 16:17ID:hPy0VHMnあまりMacの書籍がないので、for Windowsの書籍でも構わないのでしょうか?
0280名称未設定
04/01/12 16:32ID:eAp8/okTコンパイラの扱い方などは参考になりませんが。
そして基本的な言語仕様を学んだ上で、Macでの考え方を身につけてくださいね。
がんがれ!
0281名称未設定
04/01/12 16:34ID:lfHLwp7UWindows用でもなんでもかまわないと思うけど、要注意なのはGUIを操作する事にばかり注目する
タイプの本だと大半がゴミになると思う。
gccの本とかがいいかもね、OSXでTerminal使ってとかなら。
GUI風味考えるとJavaってのもいいんかね?Java使ってないんでわからん(w
0282名称未設定
04/01/12 16:50ID:hPy0VHMn本当にありがとうございました。頑張ってみます。
ついでに教えてください。
Windows用Mac用関係なくおすすめの書籍の名前を教えていただけませんか?
できればMac用が良いのですが・・・。
0283名称未設定
04/01/12 22:37ID:FJaqB447Cocoa+Objective-CでOO勉強しつつ自己満足なシューティング作りたいなとか
思って、この連休にいろいろサイト漁りしてました。
「Cocoaはやっぱり」にあるCocoaXevi弄ってるんですけどさっぱりですね。
自機追加してキー入力受けて動かすところまでやりたかったんだけど
挫折しちまったい。
FlyObjectコピって(継承は混乱するのでとりあえずまんまコピ)
MyObjectクラスっての作って
XeviViewの初期化メソッドの部分でMyObject初期化して、
drawRectメソッドに自機表示の処理書いて、
……keyDownメソッドからどうやって自機の座標にアクセスしたらいいんでしょう。
別メソッドでallocしたオブジェクトだし……。ここでallocしたら初期化されてなんのこっちゃわからんし。頭が豆腐状態です。
あっという間にNSLogの嵐ですがな。ええん助けて。
ベーマガ世代の趣味グラマなんで見当違いの事言ってる気がしますが
なんか教えてください。具体的な説明頂けなくても抽象的な表現でも構いません。
0284名称未設定
04/01/12 22:43ID:FJaqB447MacOS Xプログラミング入門 Objective-C 萩原剛志氏著 広文社刊
が、BASIC育ちな漏れにもなかなか解りやすいです。
つっても半年で283で投稿した程度の理解度ですが、俺の頭の悪さ差し引けば
結構良書かも。すんなり入れます。
0285名称未設定
04/01/12 23:05ID:/Fw8tt5/1) A4の紙の指定の場所(例えば、左から3cm, 上から 4cm)に
文字を印刷するには、どうしたら良いのですか?
ViewのRectの単位が分からないんです。
2) 何百ページにもわたる文章を印刷する場合、やっぱり
それだけ分の巨大なViewを作成しないといけない?
3) 例えば、カード型データベースを印刷するとして、一人分の
データが1ページに収まるか、2ページ以上になるかは、描いて
みないと分からない場合の処理は?
4) 上の話にも関係するのですが、ドラフト印刷というか、
(何ページ目とか考えずに)1ページずつ、どんどん印刷
するような処理をしたいのですが、可能?
0286283
04/01/12 23:15ID:FJaqB447単にMyObjectをXeviViewに持たせればええやん何電波書いてんだ俺
interfaceにMyObject入れて初期化して動きました。
お騒がせスマソ
0287282
04/01/13 00:21ID:uVP7oe7C本当にありがとうございます。参考にさせていただきます。
0288名称未設定
04/01/13 13:54ID:quI9hz9HObjective CとCocoaフレームワークということだとやはりヒレガス本とかって事になるんだろう
けど、この辺の本の場合前提としてCの知識を要求される事があるので、普通にC言語入門とか
書いてある本をとりあえず1冊買ってきてじっくり読みながら試すというのをやって置くといいん
じゃ無いかな?
IDEの説明とかそういうのが書いてあるやつじゃなくて、できるだけコマンドラインの操作で
済むような(パッと見つまらない感じ?)の本を選べば環境に関わり無く読めると思うのだけど、
途中で日本語の文字列を使うような本は処理系依存の罠があるので、教科書通りに書いたんですが
動きません!とかって質問を2chのスレだのMLだのにポストして過去ログ読め!って怒られる(w
とりあえず素のCの文法を解説してるのを立ち読みして、最後までついてけそうって思える本を
1冊。頑張って最後まで読む(もちろん練習問題とかにでてくる問題を自力でくめるようになるま
で頑張ってみるって意味ね。ただだらだら読むだけじゃだめだろな)。
で、文法のあらましが判ったところでオープンソースのソースをいくつか落としてきてそいつの
ソースをじっくりどういう事をやってんのか理解できるまで読む。で、同じような機能を別の書き方
で実現できるか挑戦してみたり、いろいろ理解を深める方法はあるので、試す。
で、その位行くとObjectiveCの追加部分をちらっと見て、Cocoaのクラスに順に馴染んで行く
感じでやっつけるだけでもだいぶ簡単じゃんか!って思えるようになるとおもう。
とりあえず頑張れ。
0289名称未設定
04/01/13 15:57ID:Ul28f8eIキー入力判定が巧く逝かない感じでつ。引っかかるというか。
サンプルの豊富さからC+SDLに逃げかけてたり
0290名称未設定
04/01/13 17:06ID:Xvj0H55PNSInputServer,NSInputManagerあたりが使えないかな?
0291名称未設定
04/01/13 17:44ID:Ul28f8eI帰ったら早速試してみます。thx
0292285
04/01/13 18:04ID:orSQqLy9printInfo見たら、size in pointと書いてあった。
でも、72point=1in.か、72.27point=1in.か?
そこまでは書いてないなぁ。
0293名称未設定
04/01/13 21:17ID:OZWgBMkDGUI上でプログラムカウンター移動できないんだけど、なんかいい方法ない?
赤いバーをドラッグしても、表示は移動されても実際には移動されない。
(gdb) set $pc=XXXでアドレス設定できるけど、行との関連がわからない。
0294283
04/01/13 23:19ID:VgqRrakK283で「Cocoaはやっぱり」にあるCocoaXevi弄くってた野郎ですが、
なんか何がわかんないのかもわかんなくなってきたのでうpって見ました。
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest.zip
環境はPanther(アップデート最新)+XCode1.1です。
カーソルキーの入力受けて自機を移動しようとして座標をNSLogってるんですが
予期しない動作に。。誰か助けてください。
もし良かったら封書で六花亭のバターサンド送りつけますんで。
参考元のファイルは以下の下の方の奴です。
ttp://www.big.or.jp/~crane/cocoa/
0295名称未設定
04/01/14 00:35ID:aDXn2U8+変数myがnil(空)になってますよ。
というか、せっかくXcodeにはデバッガが付いてるのですから活用しましょう。
そうすればこのバグも簡単に見つかっていたはずですよ。
0296名称未設定
04/01/14 01:28ID:CWTWds0yデバッガ使っても見方が良く解らなかったですが、myが一覧に
ないなあとか思ってた所でした。ドキュメント読んでおくます
うーむ。なんで空なんだろう。
0297名称未設定
04/01/14 13:40ID:AqBIIh4gデバッガ便利ですねぇ。活用せんと間抜けですなこれは。
でもやっぱり俺、オブジェクトの挙動を判ってないみたい。
以前Java齧ってたので、
ttp://kwatch.at.infoseek.co.jp/macosx/objc.html
に助けられつつ基礎から仕切り直してます。
ああ、難しい。けどなんか 楽 し い
0298名称未設定
04/01/14 16:04ID:zSwmLdUHチャレンジ3分デバッキング
1. 暫定で myに代入してみるテスト
my = [ [ MyObject alloc ] init ];//自機初期化。
中央に自機と背景スクロールは表示されるようになった。
2.背景表示をコメントアウトしてみると、
- (void) drawRect : (NSRect) rect {
// [ imgGround dissolveToPoint : NSMakePoint( 0, groundOffset ) fraction : 1.0 ];
自機が2機表示されているようだ
3.っていうかLogに「initialized.」が2回表示されているので、
初期処理からして2重起動されてる様子なんですが。
3分終了。
0299名称未設定
04/01/14 16:25ID:Y0h86p7VnibファイルをIBでリストで見るか、作り直すとわかるかも(GameViewが二つある)
0300294(283)
04/01/14 16:56ID:AqBIIh4gmy = [ [ MyObject alloc ] init ];
でいいのか……。
MyObject *my=[ [ MyObject alloc ] init ];
とかやって混乱してました。
さらにIB慣れてないせいでGameViewが二つあるお馬鹿な状態を
放置してたみたいです。
二日悩み通した部分を3分でデバがれるとは。。みんなありがとう。
追伸:300げと
0301289
04/01/14 21:44ID:CWTWds0y違うみたい。インプットメソッド関連の模様。
どうしたもんかな。
カーソルキーのコードがマスクで取れなきゃ斜め入力もできない。
NSEventMaskFromTypeで調べてみるとカーソル
NS[Left,Right,Up,Down]ArrowFunctionKeyが
1,2,4,8返してるから、これらの入力を判定できればいいんだけど。
keyEventWithType周り調査中……。
0302名称未設定
04/01/14 22:27ID:CWTWds0yttp://www.stripe-net.jp/cocoa-jserv/servlet/main.bbs?page=6
とりあえず解決。タイマー使って切り刻んでるのね。先人達に感謝。
でも、もっとスマートな方法用意ないのかなぁと調査続行してみたり。
0303名称未設定
04/01/14 23:48ID:xemtRx3rCarbonだけどGetKeys()で全部まとめて取得する方法もある。
0304名称未設定
04/01/15 00:04ID:jZQr91IM丁度carbonでgetKeys()ってのばっかりヒットしてました。
carbonのAPIってcocoaベースのプログラムから引っ張れるのかとか
さっぱりわかってないんですが、そんな方面を調べてます。
……もう日付変わっちゃったのか。
続きは明日にします。おやすみなさいー。
0305名称未設定
04/01/15 00:36ID:ierzULNANSResponderのkeyUp:を使えるのでは。
keyDown:が発生したらそのキーを押されたものとして登録する。
keyUp:が発生したらそのキーが離されたとして登録から削除。
ゲームループではこのキーが登録されているかどうかで入力の判定を行う。
こんな感じていけると思った。
ちなみにOSX版のQuakeもイベントハンドリングにCocoa使ってたと記憶している。
http://www.fruitz-of-dojo.de/php/download.php4?dlnr=2
0306名称未設定
04/01/15 01:05ID:jZQr91IMhttp://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040114.zip
まだちょっと引っかかりますね。まぁ初cocoaって事で勘弁してあげます。
あとは弾とか出るようにしてキャラ絵差し替えてオブジェクトの抽象化みたいな事
やろうとして挫折しながらcocoaはやっぱりの管理人にお礼述べつつゲームに
なるように作りこんでみたいと思います。
ほんとcocoaベースのゲームのソースって無いですね。
誰かの参考になるように今後もうp続けて行きたいと思うます。
おやますなさい。
0307名称未設定
04/01/15 01:06ID:jZQr91IMそんな事違うですよ?
0308名称未設定
04/01/15 13:21ID:1mfjuYMn0309名称未設定
04/01/15 23:35ID:jZQr91IMBGMをループさせたいんですが、そういうAPIが見つからなかったんで
「sound:didFinishPlaying:をサウンドオブジェクトからデリゲートされている
クラスに書」きたいのですが(引用:ttp://www.oomori.com/cocoafw/ApplicationKit/NSSound/sound.html)
慌てて萩原本の該当項目読んでもさっぱりわからんです。
定期的に
if([soundBGM isPlaying]==NO)
{
[soundBGM play];
}
やったら案の定、終わってから再生までが微妙に開くし……。
(一応サウンドファイル自体はしっかりループするように設定してます。
以前アプレットで綺麗にループできてた素材なので。)
BGMループさせるのってどうしたらいいでしょうか。。
デリゲート使うのが正解な気がするので勉強中ですが、見当違いな事
やってるんじゃないかという恐れもあるので。
0310名称未設定
04/01/16 00:06ID:19CmJ0Kqfor(int i=0;i<100;i++){}
がエラーになるんですよ。
{
int i;
for(i=0;i<100;i++){}
}
は通るのに。
C++だけど変数宣言はC同様ブロックの先頭のみしかダメなのかな。
0311名称未設定
04/01/16 00:33ID:Rs0aPOyO0313名称未設定
04/01/16 00:49ID:19CmJ0Kqすんませんっ、過去ログ以前に斜め読みしただけですっかり抜けてました。
>>85-86ですね。失礼しました。
でもデリゲートは必要な訳ですね。理解しとかんと……。明日チャレンジしてみます。
たいした変わってない今日の分(てかcocoaはやっぱりのサンプル参照しながら
元通り敵出すようにしただけ+BGMの似非ループ..;)
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040115.zip
0314名称未設定
04/01/16 00:52ID:19CmJ0Kqぐぐると拡張子が.Mまたは.mmの場合にObjective-C++になるみたいですね。
明日拡張子変えて試してみようと思います。
やべ、寝ないと明日も会社遅刻しちまう<ダメ人間
おやすまなさい。
0315名称未設定
04/01/16 10:41ID:4PskyYodOSX 10.0.xまでのProject BuilderにはObjective-C++無かったけど、サポート済み。
>>314
えっと、Xcodeの設定だと
プロジェクト > 情報を見る > GNU C/C++ Compiler > Language > Compile Sources As
が According to File Suffix (ソースファイルの拡張子を見て判断する)
になっているはずなので、固定したいのなら変更することも可能。
0316名称未設定
04/01/16 11:06ID:9vxspmzeリン糞がモアII24M→40Mにアップした事に気づいてないんでしょw
NTT接続をISP経由する場合、申込みとかブリッジしてるだけのはず。
0317316
04/01/16 11:08ID:9vxspmze0318名称未設定
04/01/16 11:28ID:9vxspmze以前どっかで見かけたアメさんのCocoaなシューティングは何だったのかな・・・・。
なんかマウスで動かして操作性悪い上に糞重い奴。
あれ見て、Cocoaでゲームに挑戦するのは難しいという先入観に繋がってた。
俺も何か作ろうかな。Cしか知らんけど。
0319名称未設定
04/01/16 13:37ID:B5r9s7QEコンパイラに-std=c99与えたら多分通ると思うけど。
C99からそういうやつもサポートされてるから。HMDTでも似たような話を見た気がする。
間違ってたらごめん。
0320名称未設定
04/01/17 04:07ID:MjTSupXq今日やったこと:
・IBでカスタムクラスにアウトレット作る方法探すのに手間取ってみた
・怒られる前に画像リソースを書き起こした。急にヘボくなっちった……。
PNG32そのまま使えるってのはいいですねぇ。
・拡張子を.mmにしてObjective-C++にしてみた
>>311,319 拡張子変えると>>310の前者で通りました。
なんか警告でてるけど……。
・ゲームの状態遷移の管理方法を仮実装。
無茶苦茶頭悪い事してる気がする。
・デザインパターンの本買ってきた。
買ってきただけ。
明日やりたい事:
・デリゲート使ったサウンドループ処理をがんばる
・弾と当たり判定まで行けたらいいなぁ
・設計見直さないとまずいのが良く解るこのぐちゃぐちゃなソースを
どうにかするのは一旦ゲームとして仕上がってからにしようと思ってたり
>>318
以前Windows+HSPでゲーム作ってたんですが、
それよりは処理速い感じがしますけど、けっこう一杯一杯です。
ゲーム用途で高速化しようと思ったらOpenGLしか無いのかな……?
ふわぁ。道は長い。
お休みなさい。
0321名称未設定
04/01/17 04:10ID:MjTSupXqhttp://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040116.zip
まぁ、大した進んでないし自戒のためのupに過ぎませんが。
0322名称未設定
04/01/17 05:36ID:7H6Zg2az最近Cocoa&ObjectiveC勉強し始めたんですが、自分はプログラム覚えるには、まず本を読むより、
他人が書いたソース読むほうが早いと思っているので、大変参考になります。
0323名称未設定
04/01/17 09:33ID:Wz126HXHガンガレー!
0324名称未設定
04/01/17 10:06ID:KJYu20AeループするBGMはNSMovieViewをウインドウに貼りつけて、
NSQTMovieLoopingPlaybackモードで再生してやる方が良いかと。
これなら音量調整なんかも簡単ですし。
0325319
04/01/17 11:28ID:kHZIIsqOXcode1.1でそのままコンパイルしてみました。
多分.mmにしたせいで、C++関係の警告が出てると思います。いまいちC++のことは
分かってないけど……"initialization to 'int' from 'float'"とか出てるので型のキャスト関係の
警告が出てると。C++ってその辺きついんだったけ?
IBMからコンパイラが出たねぇ。Objective-Cにも対応してるらしいからこれから出てくる
Cocoaアプリが楽しみ。多分高いんだろうなぁ。
0326名称未設定
04/01/17 14:41ID:c2MU4Kj8とりあえず1点だけ。
初期化時以外に initWithArea: を呼んでますがこれはよくないです。
setArea: を作ってやるのが良いでしょう。
initWithArea: の時もself に対して setArea: を呼べばいいだけです。
やっぱりもう一点(w
共通部分は可能な限りスーパークラスに持たせましょう。
-(void)setArea:(NSRect)area {} // 何もしない 必要ならサブクラスがオーバーライド
-(id)initWithArea:(NSRect)area
{
if( (self=[self init]) ) { // super じゃなく self
[self setArea:area];
}
return self;
}
をスーパークラスが実装していたとすると...
って言うのもありです。
>325さんのキャストの警告回避はC++的には
static_cast<int>(val)
ですね。(int)val より安全になりますしね。
ガンガッテ!
0327名称未設定
04/01/17 14:41ID:1T0oGNMe0328名称未設定
04/01/17 17:43ID:MjTSupXq参考になります。とりあえず警告取れました。
C/C++も合わせて勉強中なので実のところ良く解ってないですが。
>>326
参考になります。設計手直ししてみてます。
共通部分統合してソースがまとまっていくのは楽しいですねえ。
実装は泥沼化してますがw、勉強しつつ頑張ります。
>>327
要はcocoaへのアクセス方法が提供されてるJavaです。
XcodeではJavaのインストラクションは自動補完が効かないです。
利点は手馴れたJavaのAPIも一緒に使える点ですかね。
Cocoaでやるより多少遅い、起動に時間がかかるというデメリットが
あるみたいなのですよ。
たまにJavaのブリッジ部分にバグあると言う方を見かけるのが気になったり。
pure JavaのインターフェイスがInterfaceBuilderで作れたら
面白いのになあ。Java1.5の正式版が出てきたら再挑戦してみようかな。
0329名称未設定
04/01/17 19:26ID:MjTSupXqやったこと
・オブジェクトの設計ちょっと見直し
・敵と自分の弾を出す処理
・当たり判定用の空実装
・訳もわからずながらとりあえずビルド警告対処
今晩以降時間取れれば
・当たり判定を処理してみたい
・動く奴らの処理をオブジェクト指向で纏めたいなあ
・ループ処理に>>324さんの手法を試してみたい
・敵の弾を自機に向かわせたい
>>322
ゲームの参考になるソースが少ないですよね。
他の方の参考になると嬉しいです。まだまだソース汚いですが、
OOならではの設計勉強しつつやるつもりなので気長に見守ってやってくださいw
アルゴリズムの多くが「cocoaはやっぱり」のwebにあったサンプルそのままなんで、
そちらを参考に書き起こしてみるのもありかも。
さて敵の弾を自分に向かわせるには、と。
設計以前に三角関数ってなんだっけという数学レベルにて脳みそ沸騰中です。
0330名称未設定
04/01/17 20:52ID:meJW1K+H@interface Loop : NSObject {
int doLoop;
}
@end
@implementation Loop
-(void)setLoop: (BOOL) flag {
doLoop = flag;
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool
{
NSLog(@"didFinishPlaying");
if (aBool && doLoop) {
[sound play];
}
}
@end
これでループはするよ。mp3の20秒ぐらいのファイルではできなかったけど、aiffならできた。(MacOS X 10.3.2+xcode 1.1)
mp3でちょっとだけ次のループ時に途切れる。音量コントロールもできないし。
0331名称未設定
04/01/18 01:36ID:720HBp/P日本語で書いたコメントがパースエラー起こしたりして偉い面倒なことに……。
0332名称未設定
04/01/18 04:51ID:720HBp/Phttp://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040117-2-app.zip
ソース(というかこれまで通りプロジェクト丸ごと)
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040117-2.zip
やった事:
・音増やした。
・当たり判定実装(なんかちょっとズれを感じたり)
・敵倒せるように。また、自分に弾や敵が当たったら音が出るように(死にません)。
BASIC言語でやってる感覚で処理増設しまくったので、
コードが相当汚くなってます。しかも随分重くなってきた悪寒。
今後やりたい事:
スコア表示、レベルアップ、ゲームオーバー、ボスの実装とかいろいろありますが、
その前に、既にいろいろタコなコーディングが積み重なり過ぎてる気もするので
整理+効率化+オブジェクト指向的な設計見直し、に時間使おうかと思います。
あとうまく実装できてない「きれいなサウンドループ」も処理せんと……。
いいかげん萩原本読破してきます。
その他懸案:
・当たり判定がちょっとヘンな気がする。
・そういやキー入力周りもカクついてるまま放置してるなぁ。
・動く奴らの処理を動的結合とやらで纏めたい。。
>>330
スマソ、そもそもデリゲートされてるクラス云々が良く解ってないので
実装できずでした。
0333名称未設定
04/01/18 08:27ID:7DKBKJiENSSound を使う方法と NSMovieView を使う方法の両方について
BGM をループさせる実験をしてみたけど、
どちらも微妙に切れ目ができる。
サウンドファイルを QuickTime Player でループ再生する時は切れ目はできないので、
実装上の問題という気はするが。
0334319
04/01/18 14:06ID:mr4QBO2Zガンガレ〜。C++はちょこっとかじっただけで自分も勉強中の身でございます。
C++に限らず中途半端もんだけど……Cocoaも最近さわってないし。
日本語のドキュメントがもっと増えてくれるとありがたいけど。
0335名称未設定
04/01/18 22:54ID:720HBp/PNSObjectのサブクラスにはNSImageやNSSoundは入れられないのでしょうか。
スプライトクラスっぽいの実装しようとして、charactorオブジェクトにNSImageを
含めたいのですが、Application Kitの持つクラスは無理なのかな。
エラー
"error:statically allocated instance of Objective-C class 'NSImage'"
に従って
static NSImage charactorImage ;とかやったんですがパースエラー。
タスケテー
0336名称未設定
04/01/18 22:59ID:720HBp/P失礼、もうちょい調査続行しまつ
0337名称未設定
04/01/18 23:26ID:720HBp/Pあー、ポインタこんがらがる……。
0338名称未設定
04/01/19 02:10ID:wjqdB2oHhttp://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040118_2.zip
やった事:リファクタリングみたいなこと(詳細はソース)
コード量減らねぇなぁ。微妙に減ったけどその分コメント増えてもうた。。
0339名称未設定
04/01/19 02:25ID:bQc/FKYh10.2から10.3にアプグレし、
10.2上で作成したプロジェクトを10.3上でXcodeで開いて見るだけして(保存は無し)、
PBで再びビルドした所
warning: Precomp'/System/Library/Cocoa.framework/Headers/Cocoa.P'version number is 15 instead of 25,ignoring precomp
の様な他類似のエラーが出、ビルド出来なくなったのですが
これは10.3になってフレームワークの位置や仕様が変わったという事なのでしょうか?
プロジェクトを開くと同じウインドウが2枚開いたりと動作自体もおかしいのですが。
対処法が全く判らず、大凡でも原因を推察出来る方が居ればアドバイスをお願い出来ないでしょうか?
0341338
04/01/19 13:02ID:wjqdB2oHわからんですが、Xcodeは1.1にうpってますか?
開いて見るだけでもビルド関連のファイルを書き換えられると思うので、
buildフォルダを一旦消してからPBで開きなおしてみては。
>>340
そうですね。まぁ新スレ立てて盛り上げる自信も無いので、
製作記録をweb化しといてマ板かム板あたりの様子をみて移動しようと思ってます。
始めはゲ製作技術の「macでゲームを作るスレ」に移動しようかと思ったのですが、
最近はHSPforMacの話題が中心みたいでちょっと様子見中。
どの道オブジェクト設計の勉強し直しに入ってくるのでしばらくupに至らないかも。
0342名称未設定
04/01/19 13:51ID:0UfvR443どうしても気になるので。
初期化メソッドで
-(id)init....
{
[super init];
...
return self;
}
てな感じでやってますが、危険極まりないので面倒でも
-(id)init
{
if((self=[super init])){
...
}
return self;
}
とやってください。
[super init] が nil を返した場合が考慮された無い。
この場合関係ないが、[super init] が self 以外のインスタンスを返した場合が考慮されてない。
(initメソッドが self 以外を返す場合、 self が release or autorelease されている可能性があります)
というのが問題があります。
ややこしい話になりますが、インスタンスメソッド内で使える self というものはあくまで
メッセージ送信の送信対象のインスタンスであって [super init] によって上書きされることはありません。
単なる引数と同列のものです。
0343名称未設定
04/01/19 15:15ID:wjqdB2oH参考になります。thx!
0344名称未設定
04/01/19 15:50ID:0UfvR443問題点はそこじゃないです。。。
0345名称未設定
04/01/19 16:23ID:wjqdB2oHぎゃあ。
return selfが問題なのかな。。すみません、混乱してます。
NSObjectがinitでself以外 / nilを返す場面というのが
ちょっと解ってないですが、とりあえず鵜呑みでコード直しておきます。
0346339
04/01/19 17:07ID:bQc/FKYh1.1にはうpってます。クリーニングも試し済みですが出来ませんでした。
PBとXcodeって互換性が無いものなのでしょうか?
0347名称未設定
04/01/19 18:14ID:/d21CZzb0348名称未設定
04/01/19 19:01ID:psjde0ejFoo.pbprojをxcodeで開こうとすると
>警告
“Foo.pbproj”は、古いバージョンの Xcode で保存されています。
このバージョンで開くと、プロジェクトは更新され、
古いバージョンの Xcode では読み込めなくなる場合があります。
このプロジェクトを開きますか?
開かない/開く
のダイアログがでるのだが?
ちなみに、xcodeで新規プロジェクトを作ると、プロジェクトファイルは
Foo.xcodeになる。
0349名称未設定
04/01/19 21:18ID:wjqdB2oHスプライトクラスのメソッド自体に画像書かせるのも、
キャラクタ配列一つに集約してEnumeratorで一発処理させるのも、
配列オブジェクトの要素削除・生成でキャラクタの存在を管理するのも、
ことごとく失敗。ザコですか俺。
なんでクラスメソッド作れないんだよう。
エラー294個ってなんだよう。
無理に進めるとBASICでやってた時より効率悪くなりそうなんで、
萩原本のサンプルソース全部手打ちしてObjCの理解度上げてきます。
その間ソースのうpしばらく休止ます。。
0350名称未設定
04/01/19 21:54ID:EJ8LOhqNちょっと大きめのモノを設計するのにも
やはりフローチャート使うんでつか?
それとも今は違う設計図?手法みたいのあるもんなんでそか
オブジェクト指向とかだとクラスとかあって
最初にちゃんとしとかないと大変そう
0351名称未設定
04/01/19 22:16ID:82Lm3MroUMLを調べると幸せになれる可能性あり。
#ObjCでCASEツール作ろうとして挫折したのは気のせいだと思う。
0352名称未設定
04/01/20 17:38ID:whftl9Pn頑張れ、負けるな。
概念の理解っつーオブジェクト指向の最初の壁は突破しとるんだ。
デザインパターン勉強しながら、いったんゲーム離れてツールでも
作ると良いんじゃないかな。
逃げなければ、いつか閃くように書けるようになるさ。
0353名称未設定
04/01/20 23:34ID:B8Ie+ifw>エラー294個
括弧の閉じ忘れとか、余ってるとか、#import <Foundation/Foundation.h>してねーからかも
0354353
04/01/21 14:35ID:F8agSciaAppKit.h内でFoundation.hもimportされてる。スマソ。
0355名称未設定
04/01/21 14:58ID:CQqeGqyICocoaの描画って重たいねえ。NSImageじゃなくて、
もっと軽い描画用APIは無いのかな?
NSBitmapImageRepクラスの使い方調べてみるか。
ていうかRepってなんだ?
0356名称未設定
04/01/21 15:15ID:PKUhasqN常に全画面描画し続けてるからでつ。
キャラクター移動時に元の領域の再描画、移動後のキャラクターの描画だけにすれば相当早くなるとおもいまつ。
初心者の人且つ作り始めなので最適化までは相当時間がかかると重いまつ。
こういう風に情報小出しにしつつマターリと見守ってあげましょう。
> ていうかRepってなんだ?
たぶんレプレゼントのことだと思う。
0357名称未設定
04/01/21 18:09ID:AKDnGqt70358名称未設定
04/01/21 21:28ID:/tRK54sCCocoaとは無関係になっちゃうのが諸刃の刃。
だが素人にもお勧め。(以下ry
0359名称未設定
04/01/21 21:52ID:stWy23583次元やるにしても、最低限どんだけの数学知識が必要なんだろうと
思うと腰引けまくり。
やっぱDirectX相当の事するにはOpenGL叩くしかないんですよねぇ。うーむ。
……とりあえずのらくらとgoogleでサンプル漁ろw
0360名称未設定
04/01/22 00:20ID:jTSmm8y8あんまり書きすぎるとスレ違いなのでこの辺で。
0361名称未設定
04/01/22 00:21ID:txoRB2gGhttp://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040121.zip
大して変わってないけど、まぁのらくら勉強しつつやってます。
むしろこのままボス実装しちゃって完成した事にして
初めから仕切り直そうかと思ってたりして。
初心者なりに設計が滅茶苦茶になっちまってるように思える物で。。
0362名称未設定
04/01/22 00:31ID:txoRB2gGレスthxです。今のうちに三角関数慣れとけば頑張れそうかも。
ム板で参考になりそうなスレ見つけたのでROMっときます。
>>356その他皆様
ヲチthxです(w。今後とも宜しくでつ。
今のとこ描画性能の最適化より設計手法の勉強中心に考えてたりしますが、
実装が安定したり行き詰まった時とかにいろいろ試してみます。
0363名称未設定
04/01/22 09:33ID:iANi0DJKメソッドの名前が違うよ〜。
-makeObjectsPerformじゃなくて-makeObjectsPerformSelector。
メソッド名調べるときはCocoaBrowserかDocoaBrowserを使うと楽。
0365名称未設定
04/01/22 17:54ID:lqxefQR10366名称未設定
04/01/22 18:10ID:TZVMHa5o0367名称未設定
04/01/22 18:41ID:lqxefQR10368名称未設定
04/01/23 01:15ID:bCjcoKh4Interface Builder でボタンの key equivalent を Return に設定したんですが、
ビルドして、リターンキーを押してみてもうまく機能しません。(クリックすると
ちゃんと機能する)ウィンドウ上でちゃんとデフォルトボタンとして点滅している
ので、key equivalent 自体はちゃんと設定されていると思うのですが、どうして
アクションが呼び出されないのでしょうか? 何か他に設定する必要があるの
でしょうか?
こちらの開発環境は Mac OS X 10.2.8 に Developer Tools 2002 December
です。
0369名称未設定
04/01/23 03:30ID:bCjcoKh40370名称未設定
04/01/23 03:57ID:OmsfogHg0371368
04/01/23 05:44ID:6zACGKIOはずなんですが… それに、問題のボタンの隣には command + delete を
key equivalent として割り当ててあるボタンがあるんですけど、こっちは
うまくいってるんです。あ〜、何が問題なのやら…
0372名称未設定
04/01/23 08:20ID:0wAErvEB0374368
04/01/23 16:15ID:8t1l2e8x問題のボタンは割り当てた key equivalent に反応しましたが、
今度は Return を割りあてた隣がダメになりました。
どうやら Return だけ、どのボタンに割り当ててもうまくいかないみたいです。
プログラム以外のところに問題があるのでしょうか? キーボード回りとか…
0376368
04/01/23 16:40ID:8t1l2e8xボタンがちゃんと機能した。Interface Builder 上でのテストでも
Return に反応してちょっとボタンが点滅しているのがわかる。
もしかして、nib ファイルのバージョンかなんかが問題なのか。
ちょっと古いプロジェクトから nib ファイルだけもってきたのが
いけなかったのか?
0377368
04/01/23 17:34ID:jGHWzLEs372 のいうことがずばり正解とですた。
同じウィンドウに TextView があるんですが、こいつのせいでした。
結果を表示させるだけの editable じゃないやつなので、とりあえず
ウィンドウの initialFirstResponder を問題のボタンに設定したら
うまくいきました。
0378名称未設定
04/01/23 18:59ID:whqfOPtmクイズみたいでおもろい。
0379372
04/01/23 20:14ID:pRjSSbjnなんかくれ。そうだなぁ、CocoaのAPI完全和訳キボンヌ
0380368
04/01/23 20:55ID:jGHWzLEs囲む青い枠でボタンが囲まれちゃってなんか変です。点滅はしとるは青い枠で
囲まれとるわで、注意を引きまくりの存在感ありまくりです。
どっかで keyDown: を横取りしてそっからボタンに performKeyEquivalent:
でも送るように手を加えようと思います。
0381名称未設定
04/01/23 21:07ID:eIHUALhM俺にもくれ!!
0382名称未設定
04/01/23 23:40ID:0wAErvEB警告も出ないー 検討つかねぇぇぇ なんでやー うがー
なんかInterfaceBuilderの習得に一番時間掛かってる悪寒
0383名称未設定
04/01/24 00:31ID:zppD3UjFて具体的に何ですか? カスタムビュー?
アウトレットって普通コントローラと接続しませんか?
0384名称未設定
04/01/24 00:39ID:G4EobbF7えーと。
MVCっての調べなおしてきます。ども。
0385名称未設定
04/01/24 01:45ID:G4EobbF7ゲームのスコアを表示する部品配置して、ゲームのメインループ担当してる
カスタムビューから内容書き換えたかっただけですた。お騒がせしてスミマセン
0386名称未設定
04/01/24 02:56ID:G4EobbF7重いのでとりあえず画面サイズ半分にしました。
アプリケーション
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040124-app.zip
プロジェクト+ソース
http://nonchang.net/denshi_dai/cocoa_test/CocoaTest20040124.zip
ゲームの状態遷移の基本的な部分ができました。
時間レベルアップ方式のヒットポイント制です。
操作性の悪さが改善されてないのでレベル10以上いける人は稀だと思います。
だいぶスパゲッティ化してきてます。。
土日はボスキャラ描きつつゆっくり設計見直します。
0387名称未設定
04/01/24 02:57ID:G4EobbF70388368
04/01/24 05:34ID:Thvaxg1iボタンに key equivalent として Return を設定しても機能しないのは
多分、TextView が keyDown: を受け取った際、単に Return だけが
押されていた場合は、テキストの編集に関するものと受け取ってその
イベントをそこでトラップしてしまうため。そこで、下のカテゴリで
keyDown; を単に次のレスポンダへパスするようにしたところ、問題の
ボタンも正常に key equivalent に反応するようになりました。
@interface NSTextView (PassKeyDown)
- (void)keyDown:(NSEvent *)theEvent;
@end
@implementation NSTextView (PassKeyDown)
- (void)keyDown:(NSEvent *)theEvent
{
// 次のレスポンダへイベントをパス
[[self nextResponder] keyDown:theEvent];
}
@end
こういう場合、サブクラスにするべきなんでしょうけど、
そこはめんどくさかったということでひとつ……
0389名称未設定
04/01/24 13:32ID:G4EobbF7ObjectAllocツールの見方を調査中
0390名称未設定
04/01/24 20:48ID:DwJWs0ijそれはひょっとして自前のループの中でがんがん一時オブジェクト(生成時に
autorelease されてるやつ)を生成してるんじゃ……
アプリのメインイベントループの終端までいかないと AppKit が用意している
autorelease pool が解放されないんで、一時オブジェクトがそのままメモリ上に
残ってしまっているのでは?
そういう場合は自前で autorelease pool を用意して、ループのブロックを
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// ループ内の処理
[pool release];
}
とかすると幸せになれるかも。
その辺のことがわかってる人だったらゴメソ
0391名称未設定
04/01/24 22:12ID:G4EobbF7ども。萩原本持ってるんで概念は一読してるんですが、
理解が及んでない感じで試しては落ち試しては落ちを繰り返してます。
けどこの辺は手前で格闘しとかんと身に付かない気もするし、
頑張ってみます。
0392390
04/01/25 15:26ID:3JLXGqzDことですよね。一時オブジェクトとして使い捨てるものと、それでは
都合が悪いものとの峻別ができていないのではないでしょうか?
どの言語でやるんでもメモリ管理はひとつの山場ですんで頑張って下さい。
0393名称未設定
04/01/25 17:47ID:3gQ2irti毎回混乱する。
0395名称未設定
04/01/25 21:14ID:cjqmI/zc0396名称未設定
04/01/25 23:30ID:3gQ2irtiその場はそれでしのげるかも知れんが、そういう不確実な部分を抱えている
というのは何だか不安じゃない? 絶対に自分以外は使わない、というなら
別だけど……
0398名称未設定
04/01/26 08:15ID:DCijJ5i+嘘こけ。俺がぐぐったらこいつがはじめに出てきたぞ。
ぱっと見ただけだけどビンゴじゃないこれ?
ttp://www013.upp.so-net.ne.jp/tanken/Expedition/expedition.html
0399名称未設定
04/01/26 19:26ID:xrTB7N1cけどマジでメモリ使用量増えていくな。
これ、やったら再起動すれば大丈夫?
すげー怖いぞゴルァ
0400名称未設定
04/01/26 22:24ID:XL8K9yo4OSまでメモリリークする事はないよ。見たけどそんなヤバいコードは無い。
単にdeallocの設定が「一切」行われていないのが原因。
配布レベルじゃないとは思うけど、勉強中って言ってるんだし多めに見てやれよ。
0401名称未設定
04/01/26 23:41ID:jSr/RMM/敵の出現、敵と自機の弾の生成で全部allocのみ。
dealloc release全然無いのね。毎ループ増殖しまくり。
これで動作するんだからOSXが偉いのか良くわからん(w
0402名称未設定
04/01/27 00:01ID:6h87jayV0403名称未設定
04/01/27 08:40ID:zs8LQa4lそんな部分に時間をかけずに済めば、それに越したことはない
0404名称未設定
04/01/27 09:06ID:h3jQcBbM0405名称未設定
04/01/27 10:29ID:Bep3Wmx/メモリリークを潰すサンプルと考えればよい。
ゲームで遊ぶスレじゃないんでそこんとこ、よろ。
# サンプルとしては、設計があれだが。。。
# どうしても気になる場合はリファクタリングのサンプルとして。。。
0406名称未設定
04/01/27 10:52ID:VJ3JBTTz変な設計のまま突き進んでる訳じゃないようだし、何度も設計変更
しまくれば経験値上がるだろうな。
ここからソースの整理、メモリリーク潰しの過程を晒してもらえると
価値が出てくるかもな。サンデーグラマーのようだし、まあ煽り気にせず
マターリ頑張ってな。
0407名称未設定
04/01/27 17:05ID:MGa1+e7LプロジェクトスタイルのGenerate Debug Symbols Onに変更しても
デバッグシンボルをONに出来ないんだけど。
PBからXcodeへの変換が不完全?
buildしても最初のタイトル画の表示部分でEXC_BAD_ACCESSで実行できないし。
0408名称未設定
04/01/27 22:37ID:+4anYT/TNSProgressIndicatorとviewDidEndLiveResizeメソッドについて質問させてください。
下記のようにviewDidEndLiveResizeメソッド内でプログレスインジケータを回転(アニメーション)させるtestを呼んだところプログレスインジケータは回転しないのですが、回転しない理由と回転させる方法をご存知の方、教えていただきたくよろしくお願いします。
今のところ、viewDidEndLiveResize以外から呼ばれたtestはきちんと回転します。謎です。
-(void)viewDidEndLiveResize
{
[ self test];
}
-(void)test
{
[progressIndicator startAnimation: self]; //NSProgressIndicator
重く長い処理;
[progressIndicator stopAnimation: self];
}
0409名称未設定
04/01/28 04:42ID:S6/cfRFR0410名称未設定
04/01/28 15:36ID:cs72qT+8一部のアプリケーションは、バンドル名自体は TextEdit.app のように英語ですが、
Finder で表示される時には「テキストエディット」のように日本語で表示されます。
自作のアプリであれをやるにはプロジェクトにどういう設定が必要なんでしょうか?
0411名称未設定
04/01/28 16:25ID:c9hS1mqZCFBundleName = "テキストエディット";/* This is for the localized "short" name in the app menu bar */
CFBundleDisplayName = "テキストエディット";/* This is for the localized "long" name in Finder, etc */
とか?
0412410
04/01/28 16:40ID:cs72qT+8nib ファイルのローカライズと同じ要領で InfoPlist.strings の日本語 variant を
作成して、CFBundleName と CFBundleDisplayName に日本語名を設定しておけば
いいっつーことですね。サンクス
0413408
04/01/28 20:34ID:rZceWFIyさすがにそういうドチョンボはないです。
isDisplayedWhenStopped=NOなので、非動作時はそもそも画面に
表示されないので。
バックグランドではくるくる回転してるけど、
それがフォアグランドで表示されていないような感じなんだけど...
0414名称未設定
04/01/28 20:42ID:S6/cfRFR[progressIndicator display];
を噛ませてみたらどうだろうか。
0415名称未設定
04/01/28 20:55ID:Vat3OCJFビーチボールカーソルは出ていないのか?
0416名称未設定
04/01/28 21:29ID:PsZYBmnrオーバーライドした viewDidEndLiveResize では必ず
[super viewDidEndLiveResize]
を呼べ。
ってドキュメントに書いてあるけど、これは関係ない?
0417408
04/01/28 23:31ID:rZceWFIyいけそうな気がしたのですがダメでした。
助言していただき、ありがとうございます。
>>415
ビーチボールカーソルって虹色のやつですよね?
虹色カーソルは回っています。
ViewDidEndLiveResize以外のルーチンからtestが呼ばれたときも回っているので,
ViewDidEndLiveResize固有の事象ではないと思って放置していました。
関係あるのですかね?
ご指摘感謝します。
>>416
本件は全くのノーケアでした。
testを呼ぶ前に[super viewDidEndLiveResize];を挿入してみましたが、
状況は変わらず、プログレッシブインジケータは表示されるものの、
回ってはくれません。
この辺のドキュメントを読んでみます。
皆さんありがとうございました。
0418408
04/01/29 00:26ID:jcEBM6FHinLiveResize == YESの時
progressIndicatorが回らないような気がしてきました。
NSProgressIndicatorソースコードって
Developerフォルダに入ってたりしますか?
0419名称未設定
04/01/29 06:45ID:3SBH02tM代わりになるのがアクティビティモニタって事なんでしょうか
0420名称未設定
04/01/29 15:02ID:0A15AA8W0421名称未設定
04/01/29 15:05ID:xNGqNVqTid型のオブジェクトにcompare:とかlengthとかのメッセージを送ると
multiple declarations for method 'compare'
という風に警告を受けてしまうのですが、これを回避する方法って無いでしょうか?
実質的に害はないのですが、なんだか気持ち悪いもので。
ちなみにオブジェクトの中身は動的に決まるのでキャストはできません。
0423名称未設定
04/01/29 22:56ID:nu9ErRYD重たい処理を別スレッドで走らせる方法ですこれをやると虹色カーソルが出なくなると思います
これで解決するかどうかはわかりませんが前にNSThreadの話題が出てた事だし参考までに
-(void) viewDidEndLiveResize
{
[self indicatorStart];
}
- (void)threadTest:(id)obj
{
id pool = [[NSAutoreleasePool alloc] init];
重たい処理;
[obj indicatorStop];
[pool release];
}
- (void)indicatorStart
{
[thinkIndicator startAnimation:nil];
//aTargetはレシーバとなるオブジェクトanArgumentはメソッドへの引数
//よく分からん場合は両方ともselfで動かしてみて駄目な場合はNSThread関係のサンプルを色々参考にして下さいな
[NSThread detachNewThreadSelector:@selector(threadTest:)
toTarget:(id)aTarget withObject:(id)anArgument];
}
- (void)indicatorStop
{
[thinkIndicator stopAnimation:nil];
}
ちなみに私はこの重たい処理が下手すると一時間くらいになっちゃうプログラム書いてます。。。
0424名称未設定
04/01/30 10:02ID:Qp26S7Bbメソッド名の補完だけですよね。Project Builder のエディタのプラグインである
ODCompletionDictionary のようなマクロを展開してくれる機能なんかはあるん
でしょうか? もしくは、そういうプラグインをサードパーティが提供することは
可能なんでしょうか?
マクロの辞書鍛えまくったんで、Panther にして IDE を Xcode に移行した後も、
なんとかしてこの辞書を使いたいんですが……
0425名称未設定
04/01/30 10:53ID:6+oMaqrrマクロもenumもインスタンス変数もローカル変数も引数もC関数も補完します。
展開するとマクロの意味がないので展開はしません。
メソッド、関数は引数並びも補完し ctrl+/ で次の引数に移動できます。
これと ctrl+E での行末への移動を使うとかなり快適ですね。
引数を取るマクロは今のところ使ってないので引数並びを補完するかどうか知りません。
0426名称未設定
04/01/30 11:00ID:eUsK3OHh重たい処理をしているあいだは回らないのは当然。並列してふたつの処理
(きみのコードとプログレスバーの処理)はできないから。
たしか、プログレスバーの描画を別スレッドで行うオプションがあったように
思うが、それは試した?
0427424
04/01/30 13:02ID:ePJFZd3Bマクロを展開するというのはプリプロセッサのことをいってるんではなくて、
例えば、init を
- (id)init
{
self = [super init];
if ( self ) {
_initialization_code_
}
return self;
}
に展開する。とかいうようなことです。
自分の場合、クラスやプロトコルの名前をまるごと一般的な実装例に展開するように
辞書に登録しているので、この辞書によるマクロ展開機能が使えないのは痛いなあ
と思っているわけでして……
0428424
04/01/30 13:08ID:ePJFZd3B補完というよりはかな漢字変換みたいな機能のことです。ODCompletionDictionary
の場合、上の例なら init とタイプして escape キーを押すと、下のコードに置換
されます。念のため。
0429421
04/01/30 13:26ID:1WsMd5qbありがとうございます。
そうなんですか。
せっかくの動的結合なのになんだかもったいないですね。
>>418
ウィンドウリサイズのイベントループの中ではインジケータは動かないってことなのかな?
viewDidEndLiveResizeもDidEndとはいってもイベントの中のはずなんで。
viewDidEndLiveResizeの中で直接呼ばないでNSTimerでもかませたらどうでしょう?
ウィンドウリサイズのイベントは終わらせて、別ループでインジケータを走らせるって感じで。
>>426
インジケータのアニメは何もしなくても別スレッドで動いてるもんだと思ってましたが違います?
>>408ではviewDidEndLiveResize以外ではちゃんと回るっていってるし。
0430名称未設定
04/01/30 14:40ID:fwGz9LSpそういうのは「略称展開」とか abbreviation expand とか言うんんじゃないの?
xcodeの標準の機能にはないようだけど、AppleScript書いて代用してみるとか、
ことえりに登録するとかかなぁ。
コード書きに専念するならxcodeは使いにくいので、emacs使ってるよ。
で略称展開の必要感じたら abbrev に登録する。
あんましxcode一本だけにこだわらないほうが幸せになれるんじゃないかな。
0431424
04/01/30 15:18ID:ePJFZd3B前から気になってはいたんで、ちょっと触ってみようかなあ。
でも、Terminal から起動できるものやら X11 上で動くもの、今ちょっと調べて知ったん
だけど、Carbon 版なんてのもあるね。430 さんはどれ使ってんですか?
でも emacs って CUI ベースのエディタですよね。俺、マウスないとなんか不安(笑)
使いこなせればそっちの方が速いとは聞きますけどね。
0432430
04/01/30 15:34ID:fwGz9LSpマウスも*ある程度*は使えるけど、直に使わなくなるでしょう。
一ヶ月辛抱して使ってみそ。
0433424
04/01/30 16:00ID:ePJFZd3B比較的すんなり入っていけそう。とはいえ、各種設定やカスタマイズやら、
手になじむような環境を実現するには emacs lisp が必須…… ってわけで、
Web で情報を収集してきまつ。430 さんありがとう。
0434名称未設定
04/01/31 02:23ID:rd8JfP4ANSArrayとNSDictionaryは分かるんですけど、NSSetとCFBug(NSBagってのはないな)
っていうのはどんな構成で値を保持するもんなんでしょうか?
0435名称未設定
04/01/31 02:25ID:rd8JfP4A0436名称未設定
04/01/31 09:39ID:uABf0LSXmacに乗り換えたのですが、isightを使ったアプリケーションを
趣味で開発してみたいと思い始めました。
そこで質問なのですが、isightの制御するのにはQuickTimeAPIなど
を扱うようですが、RealBasicとCodeWarrirorそれに10.3に付属して
いたDeveloper用の開発環境ではどれがベストなのでしょうか?
0437名称未設定
04/01/31 10:01ID:t6WpTtOXNSArray……順序の概念あり
NSSet ……順序の概念なし
CFBag ……シラネ
>>436
開発言語は何? やっぱ Basic でないとダメなの?
0438名称未設定
04/01/31 12:16ID:Z+jwoGbyObjective-Cでやるとやっぱり最初はオブジェクトの考え方に翻弄されるかも。
まぁ、まずは無料なんだからXcode試してみては。
BasicからCやJava始める時のよく引っかかるポイント
・if文とかでif(a=b){}としても等しさを比較してくれない。if(a==b){}とする。
・行の最後は「;」。
・ポインタで泣かない。
基礎知識得た後でこのページ一読しとくとよさげ
ttp://member.nifty.ne.jp/maebashi/programmer/pointer.html
・クラスで泣かない。
Appleで引っかかるポイント
・MSみたいに日本語資料豊富に用意してないけど泣かない。
0439名称未設定
04/02/01 18:33ID:D3SYSlDn0440410
04/02/02 15:59ID:BBL616D3Project Builder にて InfoPlist.strings の日本語 variant を作り、
CFBundleName, CFBundleDisplayName などにアプリケーションの
日本語名を設定したのですが、ビルドしても、Finder が日本語名で
表示してくれません。他に何か設定が必要なのでしょうか?
どなたか、自作アプリに日本語名を付けた方はいませんか?
0441439
04/02/02 16:15ID:5ZhDcVAFttp://msyk.net/macos/jaguar-localize/
0442410
04/02/02 16:56ID:BBL616D3まず Info.plist のエントリに CFBundleDisplayName を登録する必要が
あったみたい。日本語 variant をいくら設定しても、肝心のキーが Info.plist に
設定されていないとダメなんだね。Info.plist と InfoPist.strings の関係が
ようやくわかったっぽい。
というわけで、無事に日本語名で表示させること成功しました。
439 は的外れなことを言っているが、その情報は役に立ったので一応感謝しておく。
0444名称未設定
04/02/04 20:20ID:bv36sI6a10.3からターミナルで日本語を入力するとバックスラッシュでエスケープされた文字になるけど、
あれをもとの日本語に戻すにはどうすれば良いの?
NSTaskでtarとかzipを実行したときのログを表示したいんだけど、
日本語は全部エスケープされた状態で出てくるもんで。
詳しい人おながい。
0445名称未設定
04/02/05 11:13ID:j+8HxZZP“ウィンドウ設定”の“エミュレーション”で“非アスキーをエスケープする”のチェックをはずす。
あとはこの辺の設定
cat .inputrc
set convert-meta off
set meta-flag on
set output-meta on
それとも、bashなのにtcshの設定ファイルをいじっているとかか?
0446444
04/02/05 20:15ID:4cP99Ehaありゃ、違うんよ。
ターミナルの話じゃなくて、自作のプログラムでエスケープされた文字を読込みたい、ということ。
分かりにくい書き方でゴメソネ。
NSTaskを使ってtarでファイルを圧縮するとき、
NSPipeをつなぐと圧縮中のパス名がPipeから出てくるんだけど、
10.3からは日本語はバックスラッシュでエスケープされた文字が出てきちゃうんで、
それをそのまま表示しても、どのファイルを扱っているのかわけ分からないよね。
なんでエスケープされた文字を日本語に戻したいんだけど、どうすれば良いんでしょうか?
という質問です。
エンコード一発でOKってものじゃなさそうだけど、何か一般的な方法ってある?
あ、UNIX初心者なんで変なこと言ってたらごめん。
0447名称未設定
04/02/05 20:52ID:9/XWI4t8NSASCIIStringEncodingのとこを適切なエンコーディングにすればいいと思う。
ttp://cocoadevcentral.com/articles/000031.php
0448名称未設定
04/02/05 20:54ID:9/XWI4t8dataを全部つないでからNSStringにしたほうがいいかもしんない。
0449名称未設定
04/02/05 22:16ID:jO0prN0f自作のプログラムもなにも、既存のtarをつかうのであれは適切なエンコードを知るには
実行するときの優先言語環境が問題であることに変わり無いとおもうな。
0450446
04/02/05 23:22ID:4cP99EhaNSString *string=[[NSString alloc] initWithData:
[handle readDataToEndOfFile] encoding:NSASCIIStringEncoding];
のことをいっているんだと思うけど、
10.2まではNSUTF8StringEncodingを指定することで日本語が読めた。
10.3だとUTF8ではバックスラッシュでエスケープされた文字が出て来る。
もしかしてエスケープを元に戻してくれるエンコーディングがある?
>>449
なるほど。それは全然考えてなかった。
10.2まではUTFだったんであまり気にしてなかったんだけど、
今回はエスケープ前のエンコーディングも問題になるのかも。
(ただエスケープされた日本語は3byteっぽいのでやっぱりUTF8+エスケープのような気もする)
ちなみにさ、優先言語環境ってtarに影響する?
多言語機能はOSX固有の機能かと思ってたけど。
要はどうやってエスケープをしているのかが分かれば、
それを逆にするだけだと思うんだけど・・・
誰か助けてー
0451名称未設定
04/02/05 23:28ID:H1HXvPkONSDocument のドキュメントに以下のようなサンプルがあったんですけど、
- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType {
NSAssert([aType isEqualToString: MyDocumentType], @"Unknown type");
fileContents = [data copyWithZone:[self zone]];
return YES;
}
これって、なんで渡されてきた data を copy してるんでしょうか?
単純に retain するだけじゃ何か問題あるんでしょうか? copy にかかる手間が
無駄だと思うんですが。
0452名称未設定
04/02/06 00:07ID:z4da/H/hLANG= ; tar --help
LANG=ja_JP.UTF-8 ; tar --help
LANG=ja_JP.eucJP ; tar --help
0453447
04/02/06 00:43ID:QAOJWovTいや、そんなエンコーディングはない。問題点をよくわかってなかったみたいだ。ごめん。
ちなみにpipeからとってきたファイル名ってどうやって表示してる?
標準出力/NSTextViewとか。
0454名称未設定
04/02/06 12:52ID:qKVCxIjLまあ、Apple のサンプルにはけっこう変なのがあるんだけど、
たぶん、以下のどれか。
(1) NSData は immutable だから、copy してもどうせ retain される
だけだべ、と思っている。
(2) data がほんとは NSMutableData のインスタンスかもしれない。
げっ、もしそうだったら、どっかから変更されちゃうかも。
(3) メモリの局所性を高めるために、自身と同じ Zone にメモリを置いておきたい。
まあ、おれは普通に retain するけど。問題が起こるようなら copy
すればいいんじゃね?
てか、まあ、どうせ他のオブジェクトに変換するだろうけど。
0455454
04/02/06 12:55ID:qKVCxIjLほんとに - [NSData copy] が retain するだけかどうか、とか調べてないよ。
0456名称未設定
04/02/06 13:40ID:ST0QQh+Ittp://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2800/2871.html
0457451
04/02/06 15:06ID:psDRf9VN勉強になります。(1), (2), (3) のすべてが考慮されている
という可能性もありますね。もしそうならなかなか奥深い。
こういうのさらっと書かないでコメントとか付けといて欲しいなあ。
0458名称未設定
04/02/06 16:45ID:OHXISCUL(4) retatinしてdataをいじると、dataを参照していた別の誰かが
(いた場合に)困ることがあるから。
ってのが妥当じゃない? 誰がどういう data を
- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
に渡して呼びだすかは少なくとも建前上は知らないんだし。
なので、retain ではなく copy をするのがパターンとして正解と思うな。
自前で決してdataをいじらないなら、retainでもいいんじゃない?
どうでしょう?
0459458
04/02/06 16:54ID:OHXISCULということで(4)は有りえないな。失礼。。。
0460458
04/02/06 16:56ID:OHXISCULなんか恥ずかしい。
0461446
04/02/06 17:31ID:Fc/bbRIGそっか、優先言語=NSBundleによる多言語対応、しか頭に無かったもんで
もうちょっと勉強するよ
>>453
とりあえずNSTextViewに表示してる。
最終的には変わるかもしれないけど、まあ最悪はNSTextに展開してコピーということで。
>>456
おおお、これっぽい。
あとで試してみます!
ベリーさんくす
0462名称未設定
04/02/06 17:38ID:Fc/bbRIG(3)に一票。
Sketchのコード見てると大体NSDocumentと同じzoneにオブジェクトを確保しようとしてるからね。
(2)だったら・・・鬱
ちなみに(3)に投票しといてこんなこというのはあれだけど、
copyWithZone:は意味無いかも。
NSZone *zone=NSCreateZone(NSPageSize(), NSPageSize(), YES);
NSSetZoneName(zone, @"test_zone");
NSData*data=[[NSData allocWithZone:aZone] initWithContentsOfFile:@"/hoge.html"];
NSLog(NSZoneName([data zone]));//(1)
data=[data copyWithZone:aZone];
NSLog(NSZoneName([data zone]));//(2)
(1)(2)ともDefaultMallocZoneが出力される。
0463名称未設定
04/02/06 18:19ID:xtawD1qcaZoneはいつ確保されるんだろう。。。ドキドキ
0465名称未設定
04/02/06 19:33ID:bi/3RXBJ-------
NSZone* zoneA = NSCreateZone(NSPageSize(), NSPageSize(), YES);
NSSetZoneName(zoneA, @"zoneA");
NSZone* zoneB = NSCreateZone(NSPageSize(), NSPageSize(), YES);
NSSetZoneName(zoneB, @"zoneB");
NSData* dataA = [[NSData allocWithZone: zoneA] initWithBytes: 0 length: 0];
NSData* dataB = [[NSData allocWithZone: zoneB] copy];
//^^^^^^ [dataA copyWithZone: zoneB]なら(1)==(2)
NSLog(NSZoneName([dataA zone])); //(1) = zoneA
NSLog(NSZoneName([dataB zone])); //(2) = zoneB
0466462
04/02/06 19:52ID:lVzefGZfなるほど、DefaultMallocZoneで見事に正解だなw
ま、
NSData*data=[[NSData allocWithZone:zone] initWithContentsOfFile:@"/hoge.html"];
NSLog(NSZoneName([data zone]));//(1)
data=[data copyWithZone:zone];
NSLog(NSZoneName([data zone]));//(2)
でもダメだけどね
>これならOKみたいだけど、そうするとcopyWithZoneって???
つうかNSDataだとダメみたい。
NSObjectだとちゃんとzoneをセットできるよ。
0467名称未設定
04/02/06 20:17ID:bi/3RXBJ>>454
(2)だな。
copyWithZoneの挙動は
NSData* dataA のときは retainして、
NSMutableData* dataA のときは copyしてた
0468名称未設定
04/02/06 20:30ID:bi/3RXBJNSMutableData*をNSData*で受けたときね。
0469名称未設定
04/02/06 21:27ID:wuqIcqRO- (IBAction)test:(id)sender
{
NSString *classNamesFilePath;
NSArray *classNames;
NSEnumerator *classNamesEnum;
NSString *className;
NSZone *zone = NSCreateZone( NSPageSize(), NSPageSize(), YES );
NSSetZoneName( zone, @"zone" );
classNamesFilePath = [[NSBundle mainBundle] pathForResource:@"ClassNames" ofType:@"plist"];
classNames = [NSArray arrayWithContentsOfFile:classNamesFilePath];
classNamesEnum = [classNames objectEnumerator];
0470名称未設定
04/02/06 21:28ID:wuqIcqROwhile( (className = [classNamesEnum nextObject]) ) {
NSString *firstObjZoneName, *secondObjZoneName;
Class targetClass = NSClassFromString( className );
id object;
NS_DURING
object = [[targetClass alloc] init];
NS_HANDLER
object = nil; NSLog( @"Can not allocate %@ class!", NSStringFromClass( targetClass ) );
NS_ENDHANDLER
if( ! [object respondsToSelector:@selector(copyWithZone:)] )
continue;
firstObjZoneName = NSZoneName( [object zone] );
object = [object copyWithZone:zone];
secondObjZoneName = NSZoneName( [object zone] );
if( ! [firstObjZoneName isEqualTo:secondObjZoneName] )
NSLog( @"%@ class is poor!", NSStringFromClass( targetClass ) );
}
}
0471名称未設定
04/02/06 21:29ID:wuqIcqROhttp://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html
http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/index.html
のクラスリストからNSScriptClassDescription、NSDistantObject の2つを排除したものを
ASCII形式のプロパティーリストに仕立てた。
排除したのはallocかinitでこけるため。
releaseしてないのはinitで初期化したためかreleaseから帰ってこないものがあったため。
また、NSDataを含むクラスクラスタはテンポラリインスタンスを返してるので参考にはしないでください。
以下結果。
0472名称未設定
04/02/06 21:30ID:wuqIcqRO2004-02-06 21:24:35.397 testCopyWithZone[1135] Can not allocate NSNotification class!
2004-02-06 21:24:35.398 testCopyWithZone[1135] NSAttributedString class is poor!
2004-02-06 21:24:35.400 testCopyWithZone[1135] NSNumberFormatter class is poor!
2004-02-06 21:24:35.400 testCopyWithZone[1135] NSCalendarDate class is poor!
2004-02-06 21:24:35.401 testCopyWithZone[1135] NSCharacterSet class is poor!
2004-02-06 21:24:35.402 testCopyWithZone[1135] Can not allocate NSPropertyListSerialization class!
2004-02-06 21:24:35.403 testCopyWithZone[1135] Can not allocate NSProtocolChecker class!
2004-02-06 21:24:35.403 testCopyWithZone[1135] Can not allocate NSProxy class!
2004-02-06 21:24:35.404 testCopyWithZone[1135] NSDateFormatter class is poor!
2004-02-06 21:24:35.404 testCopyWithZone[1135] NSScanner: nil string argument
2004-02-06 21:24:35.405 testCopyWithZone[1135] Can not allocate NSDistributedLock class!
2004-02-06 21:24:35.458 testCopyWithZone[1135] NSError class is poor!
2004-02-06 21:24:35.460 testCopyWithZone[1135] Can not allocate NSKeyedArchiver class!
2004-02-06 21:24:35.460 testCopyWithZone[1135] Can not allocate NSKeyedUnarchiver class!
2004-02-06 21:24:35.462 testCopyWithZone[1135] NSMutableAttributedString class is poor!
2004-02-06 21:24:35.462 testCopyWithZone[1135] NSMutableCharacterSet class is poor!
2004-02-06 21:24:35.462 testCopyWithZone[1135] NSMutableData class is poor!
2004-02-06 21:24:35.464 testCopyWithZone[1135] NSMutableIndexSet class is poor!
0473名称未設定
04/02/06 21:32ID:wuqIcqRO2004-02-06 21:24:35.464 testCopyWithZone[1135] NSAffineTransform class is poor!
2004-02-06 21:24:36.043 testCopyWithZone[1135] *** Assertion failure in -[NSApplication init], AppKit.subproj/NSApplication.m:932
2004-02-06 21:24:36.061 testCopyWithZone[1135] Can not allocate NSApplication class!
2004-02-06 21:24:36.080 testCopyWithZone[1135] *** +[NSPasteboard alloc]: selector not recognized
2004-02-06 21:24:36.097 testCopyWithZone[1135] Can not allocate NSPasteboard class!
2004-02-06 21:24:36.114 testCopyWithZone[1135] *** -[NSPDFImageRep init]: selector not recognized
2004-02-06 21:24:36.131 testCopyWithZone[1135] Can not allocate NSPDFImageRep class!
2004-02-06 21:24:36.162 testCopyWithZone[1135] *** -[NSBitmapImageRep init]: selector not recognized
2004-02-06 21:24:36.163 testCopyWithZone[1135] Can not allocate NSBitmapImageRep class!
2004-02-06 21:24:36.163 testCopyWithZone[1135] *** -[NSPICTImageRep init]: selector not recognized
2004-02-06 21:24:36.163 testCopyWithZone[1135] Can not allocate NSPICTImageRep class!
2004-02-06 21:24:36.166 testCopyWithZone[1135] NSBrowserCell class is poor!
2004-02-06 21:24:36.166 testCopyWithZone[1135] NSPrinter class is poor!
2004-02-06 21:24:36.325 testCopyWithZone[1135] NSPrintInfo class is poor!
2004-02-06 21:24:36.342 testCopyWithZone[1135] NSButtonCell class is poor!
2004-02-06 21:24:36.358 testCopyWithZone[1135] *** -[NSCachedImageRep init]: selector not recognized
2004-02-06 21:24:36.375 testCopyWithZone[1135] Can not allocate NSCachedImageRep class!
2004-02-06 21:24:36.398 testCopyWithZone[1135] NSCell class is poor!
2004-02-06 21:24:36.399 testCopyWithZone[1135] NSRulerMarker class is poor!
0474名称未設定
04/02/06 21:32ID:wuqIcqRO2004-02-06 21:24:36.665 testCopyWithZone[1135] NSComboBoxCell class is poor!
2004-02-06 21:24:36.686 testCopyWithZone[1135] NSSearchFieldCell class is poor!
2004-02-06 21:24:36.713 testCopyWithZone[1135] NSSecureTextFieldCell class is poor!
2004-02-06 21:24:36.726 testCopyWithZone[1135] NSSegmentedCell class is poor!
2004-02-06 21:24:36.726 testCopyWithZone[1135] Can not allocate NSCustomImageRep class!
2004-02-06 21:24:36.727 testCopyWithZone[1135] NSShadow class is poor!
2004-02-06 21:24:36.728 testCopyWithZone[1135] Can not allocate NSEPSImageRep class!
2004-02-06 21:24:36.728 testCopyWithZone[1135] NSSliderCell class is poor!
2004-02-06 21:24:36.728 testCopyWithZone[1135] NSEvent class is poor!
2004-02-06 21:24:38.881 testCopyWithZone[1135] NSFontDescriptor class is poor!
2004-02-06 21:24:39.067 testCopyWithZone[1135] NSFormCell class is poor!
2004-02-06 21:24:39.084 testCopyWithZone[1135] NSStepperCell class is poor!
2004-02-06 21:24:39.110 testCopyWithZone[1135] NSTableHeaderCell class is poor!
2004-02-06 21:24:39.131 testCopyWithZone[1135] NSImage class is poor!
2004-02-06 21:24:39.146 testCopyWithZone[1135] NSImageCell class is poor!
2004-02-06 21:24:39.163 testCopyWithZone[1135] NSImageRep class is poor!
2004-02-06 21:24:39.180 testCopyWithZone[1135] NSTextAttachmentCell class is poor!
2004-02-06 21:24:39.196 testCopyWithZone[1135] NSMenu class is poor!
2004-02-06 21:24:39.211 testCopyWithZone[1135] NSMenuItem class is poor!
2004-02-06 21:24:39.227 testCopyWithZone[1135] NSTextFieldCell class is poor!
2004-02-06 21:24:39.248 testCopyWithZone[1135] NSMenuItemCell class is poor!
2004-02-06 21:24:39.286 testCopyWithZone[1135] NSTextStorage class is poor!
0475名称未設定
04/02/06 21:33ID:wuqIcqRO0476名称未設定
04/02/07 02:11ID:pkEqiQpmNSString などは「クラスクラスタ」とよばれていて、alloc で
帰ってくるのはたんなる PlaceHolder(場所取り)オブジェクトで、
その次の init... の...部分や引数の内容で実際のオブジェクト
を確保、init の戻り値として返してくるというものだ。
こういったクラスの場合、 +alloc と -init... は同時に呼び、
init...の戻り値を確保してそれを使わないといけない。
+ alloc の戻り値を信じていると馬鹿を見る。
以上、参考まで。
0477名称未設定
04/02/09 00:03ID:aWA9DtdQ無謀にもテキストエディタを作りたいと思い立ち、色々調べているうち、
/Developer/Documentation/Cocoa/TasksAndConcepts/ProgrammingTopics/
BasicEventHandling/Tasks/TextDefaultsAndBindings.html
に行き着きました。Cocoa のテキストシステムの振る舞いを色々設定できるらしい
んですが、ここで紹介されている Text System Defaults って具体的にはどこでどう
設定するんでしょうか。最初は関数かと思ったんですけど、よく見ると辞書のキーの
ようでもあって、なんだかよくわかりません。
0478名称未設定
04/02/09 00:43ID:kncz+ezdNSUserDefaultで設定すれば設定したアプリでのみ有効になります。
Terminalで
% defaults write NSGlobalDomain NSMnemonicsWorkInText -bool YES
てな感じでドメインにNSGlobalDomainを指定すると全アプリが参照するようになります。
確認してませんが、CoreFoundationのCFPreferenceを使うとプログラマブルに設定できるみたいです。
0479477
04/02/09 01:31ID:aWA9DtdQなるほど。UserDefaults に設定を set して sychronize しとけば、その時点から
変更が反映されるということですね。UserDefaults というのはプログラマが自分の
アプリの設定を保存するために使うものだとばかり思っていましたが、フレーム
ワークの振る舞いを規定しているようなその他の情報も色々と管理しているという
ことですね。
0480名称未設定
04/02/09 01:46ID:4mv0NIVS0481名称未設定
04/02/09 02:10ID:kncz+ezdFinderのカラムビュー、info Panel のそれをいってるのであれば、
取得 -> 根性
セット -> 無理
0483480
04/02/09 23:00ID:xroJyZPI取得は判ったのですが、FileWrapperによるセットがいまいち判らないのですが、出来ればご教授をお願い出来ないでしょうか?
0484名称未設定
04/02/11 11:53ID:0pvAeHUjこんなの?
http://www.oomori.com/page/cocoa/0000157.html
ちなみにAppleEventでのセットもできると思う。
http://developer.apple.com/samplecode/Sample_Code/Overview/MoreIsBetter/MoreFinderEvents.c.htm
のMoreFEAddCustomIconToItem
あ、IconSuiteなんで128×128アイコンはダメなんだっけ?
0485483
04/02/12 03:23ID:EWfhguwc色々悪戦苦闘してみたのですが、どうしても上手くいきません…
http://www.oomori.com/page/cocoa/0000157.htmlのサンプルコードの場合、
セットする画像がバンドル内のimage.tiff、セットする先がtestWriteImage.tiffになっているのに
setIcon:でセットする画像がNSAplicationIconになっている辺りや、
アイコンをセットするラッパーがimage.tiffを読み込んでいたり、
書き込んだ後にセットしてる辺り等がそもそも理解出来ないのですが、
サンプルコードに間違いがあるという事はないでしょうか?
0486名称未設定
04/02/12 08:58ID:RzYJAHqJほんとだ
なんか変だね。
setIcon:は使えないかも、っていうのがあった。
http://www.omnigroup.com/mailman/archive/macosx-dev/2002-September/029490.html
で、そこからリンクされている
http://homepage.mac.com/troy_stephens/software/objects/IconFamily/
はどう?
Carbonみたいだけど。
0487名称未設定
04/02/12 14:00ID:gVC+SCyI0488461=446
04/02/12 15:48ID:oAWQEv4tのNSNonLossyASCIIStringEncodingで試しているんだけど、なんかうまくいかない。
エスケープはきちんと処理できてるみたいだけど、日本語は結局文字化けします。
NSNonLossyASCIIStringEncodingの前提がそもそも違うのか、
他に何か問題があるのか、さっぱり分からない・・・
ググってもNSASCIIStringEncodingでエンコードしてる例ばっかりだし。
誰かヘルプ!
0489483
04/02/12 21:17ID:xQnC2oEm情報ありがとうございます。
setIcon:は壊れているんですか・・・
とりあえずこれだけでもFileWrapperで無駄な努力をせずに済んだ様なので助かりました。
iconFamilyの方もDLしてある程度眺めて見ましたが
iconSet:を代行する処理を自作するとなるとRepやBitMap関係の知識が結構要る様ですね。
carbonの知識も皆無に等しいのでもう少し勉強してから再挑戦する事にします。
484さん(=486さん?)、486さんありがとうございました。
ところでiconFamilyはアイコンを付加するソフト位しか概要が判らないですが、
試しに一つ画像ファイルにアイコンを付加してみたらアイコンをセットしても殆ど同じサイズで、
画質が少なくとも目視レベルでは全く劣化していませんでしたがjpegの圧縮処理を画質優先で最適化する様なソフトなのでしょうか?
0490名称未設定
04/02/12 22:14ID:LXoz88w+OSXのウインドウについているような、グラデーションのかかった影って
一般的にはどういう風に描画するの?
四角いウインドウに影を書くくらいなら、色と透明度を変えつつ直線を引い
たらいいんだろうけど、OSXでは適当な形に作ったウインドウでもきれいな影
がついてるじゃない?
あれを自前のViewの中で再現したいんだけどやり方がわからないのです。
リアルタイムで計算しながら描画したいので、最初から半透明のマスクを
作っておく、という以外の方法があれば教えてください。
0492名称未設定
04/02/13 04:22ID:XCz31gIA取っ付きやすいなら挑戦してみようかな
0493名称未設定
04/02/13 11:34ID:sj7vZ0k1>prebinding for iTerm done.
>prebinding for firefox-bin done.
>prebinding for IPMessenger done.
せめてソース公開されている物を、このログがでないように再ビルドしたいのですが
何をkeywordに探していけばいいのでしょうか?
dynamically loaded library云々なのはなんとなく行き当たったけどさっぱりわかりません。
0494名称未設定
04/02/13 11:38ID:5oafApH2影を付けたいオブジェクトを白黒2値にする。
何回もぼかす。
それをαチャンネルとしてオフスクリーンにαブレンディングで描画する。
その上にオブジェクトを描画する。
実際には、処理速度の関係でエッジ抽出してそれを拡散したりする。
0495名称未設定
04/02/13 11:40ID:AsREYMRpどなたか Cocoa の Text System で key bindings をプログラム内で
動的に変更する方法をご存じの方いませんか?
input manager が key bindings を定義した辞書を保持しているらしいことは
わかったのですが、辞書へのアクセッサがないので、どうしたもんかと悩んで
います。NSInputManager のヘッダを見れば、それらしいインスタンス変数が
あることはあるのですが @private となっていて触るに触れません。
Project Builder の環境設定パネルで key bindings の設定ができるんですから、
同じ Cocoa を使ってできないはずはない、と思うのですが……
0496名称未設定
04/02/13 13:34ID:wRP/gNzBあるいは、ld に -prebind フラグを渡してビルドする。統合環境から
ならこっちの方がいいカモな。
ただ、PBX や XCode は deployment でビルドすると -prebind をつけて
くれるはずなのだが、ちゃんと Deployment にしてる? development は
それ以外にも開発向けに色々やっててコードの最適化もよろしくないので、
ビルドするだけなら避ける方がよい。
あと、消極的方法だが、環境変数 DYLD_NO_FIX_PREBINDING を定義する
と fix_prebinding は働かなくなる。ただ Prebinding 抜きになるので
これはお勧めしない。
詳細は /Developer/Documentation/ReleaseNotes/Prebinding.html や
man 1 ld の -prebind あたりを見るヨロシ。
0498495
04/02/13 21:14ID:45Cu5Te3StandardKeyBinding.dict や DefaultKeyBinding.dict を置き換えれば変更できる
ことはわかっているんですが、これらがロードされるタイミングってアプリケーションの
起動時ですよね。問題はメモリ上に NSDictionary とかの形で存在しているこれらの
辞書にアクセスすることなんすよ。
あ、でも例えアクセスできても mutable じゃなかったらどうにもならないんじゃ……
もしかして、これは自力でカスタムクラスを作るしかないのか……
0499495
04/02/13 21:17ID:45Cu5Te3アホだな、オレ。でもアクセッサがないんだよう!
0500490
04/02/13 22:36ID:m0oLQLsSやっぱり直接ピクセルをいじらないと行けないのですね。
ぼかしやエッジ抽出というのが具体的にどうやればいいのかもう少し検討いたします。
0501486
04/02/14 10:30ID:XAfl+lSXI think setIcon: is broken.
なんで断定はしていないが。
>ところでiconFamilyはアイコンを付加するソフト位しか概要が判らないですが、
ソフトじゃなくてアイコンを付加するためのクラスのはず。
(MakeThumnailはiconFamilyクラスを使ってアイコンを付けるサンプルソフト)
ヘッダから想像するにアイコンにしたいイメージを元に
iconFamilyWithThumbnailsOfImage:
でiconFamilyオブジェクトを作成して、
setAsCustomIconForFile:
で目的のファイルにアイコンをセットできるんだと思う。
こいつを使えばわざわざsetIcon:を自作する必要は無いはず。
ただ、使用条件が良くわからないのでHPをよく読んでくれ。
ところで>>488に誰か返事くれ
0502名称未設定
04/02/14 13:33ID:ZtgqMZyV流石にリファレンス見るだけでも吐き気がする様になってきた…
0503名称未設定
04/02/14 15:54ID:h8I/+kcCKeyBindingを調べてみても、動的に変更できるようなものはないようだね。
だからアプリ側で実装するんじゃないかな。
たぶん、CocoaのTextSystemもキーテーブルを入れ替えるようには作られていないと思う。
所詮KeyCodeとSelectorの対データだし、PBなどもそうだけど、そのアプリ独自の拡張
しているショートカット機能もあるわけで。
0504495
04/02/14 20:21ID:Uzhax4pT俺も散々調べてたんだけど、現状ではそういうインターフェースはないみたい。
だから自力で実装することにしたよ。その算段は以下の通り。
とりあえず、DefaultKeyBinding.dict と同じ形式の辞書をロードして自前の
ビューに保持させ、keyDown: で Control やなんかが押されていた場合には
その辞書を参照して selector を割り出し doCommandBySelecter: を呼ぶ。
対応する key binding がない場合はその key event を interpretKeyEvents:
へまわす。(そうしないと日本語入力できないし)
ま、こんなもんでなんとかなりそうかな。
0505495
04/02/14 20:36ID:Uzhax4pTkey event からの対応する編集コマンドの割り出し、実行を interpretKeyEvent: が
一切面倒みてくれるから。調べたところ、Control-X Control-F みたいな連続した
キーストロークにも対応してるんで、こちらは辞書を用意するだけで Emacs みたい
なキーバインド体系を容易に実現できる。
(対応する編集コマンドを作れるかはまた別の話ね……)
と思ったのだが、その肝心の interpretKeyEvent: が参照する key bindings の
辞書に触れず、interpretKeyEvents: へ渡す前に自力で振り分けることに(泣)
連続したキーストロークとか扱おうと思ったら途端に話がややこしくなりそう
なんだよなあ。ま、趣味のプログラミングですんで、地道にやろうと思います。
長レススマソ
0507名称未設定
04/02/16 21:32ID:hMjrII/X画像のサムネイル表示で画像をセットする処理をしてる時の様な
非同期で処理を行う方法を教えて下さい。
スレッドを作らなくても実現出来るらしいですが、
NSTimerとかで実現してるのでしょうか?
具体的な方法が判らないのでご教授お願いします。
0508名称未設定
04/02/16 22:00ID:knx0vXVD、、、えっと、日本語で質問してください。おながいします。
0509名称未設定
04/02/16 22:30ID:hMjrII/Xサムネイル用に並べたボタン群にそれぞれサム画像を入れる処理の際、
画像のサイズや量がある程度以上だと、ビーチボールが出ますよね。
それを非同期で処理してビーチボールが出ない様にしたい、という事なんですが。
ご教授お願いします。
あとスクロールビュー内にマトリクスを埋め込んだ際、
どうしてもマトリクスが一定以上のサイズにならず、
スクロールが途中迄しか表示出来ないのですがどういった手落ちが考えられますか?
以前自作でウインドウやマトリクス、スクロールビューをセットした時には問題なく出来たので
XCodeのバグを疑ってしまうのですが。
0510名称未設定
04/02/17 00:53ID:wceMUdkOま、NSTimerかNSThreadですね。
後半は分からんけど、それが10.3の仕様と割り切って、
10.3で正しく動くように書くしかないかと。
0511名称未設定
04/02/17 19:56ID:/JOedpr5NSTimerだと結局は断続的にレインボウが出ることになると思う。
素直にThreadを使うのが良いかと。
>スレッドを作らなくても実現出来るらしいですが、
の根拠を教えてもらえるとうれしい。
0512名称未設定
04/02/17 20:10ID:5WNjZa6sfopen で開いてちょっとずつ読むとか。
0513名称未設定
04/02/17 22:00ID:QWssc9ok>>スレッドを作らなくても実現出来るらしいですが、
>の根拠を教えてもらえるとうれしい。
イベントループ作ればいい。
for (;;) {
NSEvent* event = [NSApp nextEventMatchingMask: NSAnyEventMask....
//...
[NSApp sendEvent: event];
//...
}
>>509
場合によってはスレッドの方が簡単かも。
0514名称未設定
04/02/18 08:51ID:1YLvCeXv2GBのデータを一気に読み込む等をすれば結局レインボーカーソルが回る罠。
0516名称未設定
04/02/18 15:33ID:5WUzmMExエラーが出て作成できないのですが、何か間違っていることをしているのでしょうか?
0517名称未設定
04/02/18 15:45ID:HT97lAzS新規プロジェクトを生成する時、ソースのテンプレのクラス名をプロジェクト名に置き換えるところにバグがある。
と書いても意味分からないだろうがw、
生成されたソースとヘッダをXcodeで直接(プロジェクトファイルは開かない)開いてみると分かる。
0518516
04/02/18 16:08ID:5WUzmMExどうもありがとうございます。
とりあえず.hファイル3つと.mファイル3つのおかしい所をそれっぽい名前に
書き換えたら問題なく(?)なりました。
他は特に変更しなくてはならない所ないですよね?
0520516
04/02/18 18:57ID:5WUzmMEx0521名称未設定
04/02/18 19:05ID:1YLvCeXvいや、別に2GBだろうがなんだろうが、でかいファイルを一気に読み込めばレインボーが回るよ。
レインボーが回る原因は、 WindowServer上のそのアプリ用のEventキューに変動がないためであって、
for (;;) {
NSEvent* event = [NSApp nextEventMatchingMask: NSAnyEventMask....
// (1)
[NSApp sendEvent: event];
// (2)
}
であっても1,2,の処理が終わらない限りWindowServerからのEventは受け取れないでしょ?
0522509
04/02/19 01:08ID:bcmVA//7代わりにサムネイル画像貼付け処理の際、処理途中で一時的に使ったメモリがスクロール表示範囲内なら普通に順次解放されるのに
スクロール表示範囲外に隠れたサムネイルボタンの貼付ける処理になると解放されない(スクロールして表示させると解放される)現象や、
読み込み途中でウインドウを閉じても正常に動作する様にする処理に頭を悩ませてます。
この場合、メモリの解放処理に繋げるにはボタンが「画面に表示される」際に行っている処理に代わる何かのプロセスが必要なのでしょうか?
>>510
この辺りはなんだか解決しました。
普通にスクロール内ビューのサイズをsetFrameで変更したら出来たのですが
試行錯誤の最初にやった時は何故か出来なかったので原因が今いちハッキリせずスッキリしてませんが。
>> の根拠を教えてもらえるとうれしい。
すいません、何処かでチラっと見た記憶が有ったのですが覚えてません。
ただPixelCatなんかをアクティビティモニタで見る限りスレッドは使ってない様ですね。
0523名称未設定
04/02/19 13:36ID:eCOlSI2w見えていると思っているのは子プロセスでないか?
0524名称未設定
04/02/19 14:03ID:o0B1dbdZスレッド数が書いてあると思ったが...
一回見ただけなので覚えてないが。
top なら th# ってのがスレッド数。
0525名称未設定
04/02/21 14:32ID:NKIuB9JS慣習ってあるのでしょうか?
0526名称未設定
04/02/21 14:48ID:MtpMvE0j慣習とかじゃなくて、完全に別物だと思うが...
0527名称未設定
04/02/21 15:03ID:NKIuB9JS呼ばれる時は違いますが、どこに書いてもかまわないコードってあったりしませんか?
0528517
04/02/21 16:21ID:mmdWQTR10529528
04/02/21 16:24ID:mmdWQTR1nibでインスタンス化したオブジェクトはinit呼ばれないはずだから注意。
0530名称未設定
04/02/21 16:38ID:NKIuB9JS試しにnibにあるコントローラーのinitにNSLog(@"init")と書いたら表示されたのでinitも呼ばれているみたいです。
例えばNotificationの登録はApplicationDidFinishLaunchingに書くのが一般的なのでしょうか?
0531名称未設定
04/02/21 16:40ID:NKIuB9JSよくapplicationDidFinishLaunchingに書かれているのを見ますが、
もしawakeFromNibでNSTextFieldなんかにそのインスタンス変数を
setStringValue:などとしていたら正しい動作をしませんよね?
そういう場合はUserDefaultsからの読み込みはawakeFromNibに書くものなのでしょうか?
0532名称未設定
04/02/21 18:46ID:b8k1eM0Oは解決した?
stray のエラーはおかしな文字コードが紛れ込んでいるせい。
vi とかでファイルを確認するとエスケープシーケンスが付いている部分でエラーを
起こしてるのがわかると思うけど。
0533名称未設定
04/02/21 23:58ID:ye0WnQAg文字が入力できるようになってるってものすごいなあ > XCode。補完きかない
けど、エディタは emacs とか使ったほうがいいかもしれない…。英語環境だと
このエラー出ないのかな?
この環境がタダなのはすごく嬉しいんだけど。
0534名称未設定
04/02/22 20:53ID:bRHIw7kMCocoaでキー判定を行いたいんですけど、どなたか方法をお教え願えませんでしょうか。
また、キーコードなどの調査方法もお教え願えれば幸いです。
0535名称未設定
04/02/22 21:33ID:S6IkzAG/init は「そのオブジェクトそのもの」の初期化につかうべし。
awakeFromNib は、Nibファイルからロードされ終わった後に
呼ばれる。注意点は、メインの Nib はアプリの起動時に1回
呼ばれるだけだが、Nibによっては必要時にロードされるもの
だってあるって事だ。
例えばちょっと込み入ったドキュメントの場合、ドキュメント
を処理するUIを別のNibにまとめておいて、ドキュメントを開
くごとに Nib をロードするという手がある。こういう時に、
awakeFromNib はロードされるごとにそのインスタンスへ送ら
れる。
applicationDidFinishLaunching はアプリケーションが起動
されたとき必ず1回実行される。漏れなら、UserDefaultsの
処理はここに書くな。もちろん、時と場合によりけりなので
一概にはいえんが。
単純なNib一個のアプリならどれを使っても一緒に見えるが、
複数Nibを活用した大きいアプリを書く時にこの三つの区別
は重要になる。
0536名称未設定
04/02/22 21:35ID:S6IkzAG/init は「そのオブジェクトそのもの」の初期化につかうべし。
awakeFromNib は、Nibファイルからロードされ終わった後に
呼ばれる。注意点は、メインの Nib はアプリの起動時に1回
呼ばれるだけだが、Nibによっては必要時にロードされるもの
だってあるって事だ。
例えばちょっと込み入ったドキュメントの場合、ドキュメント
を処理するUIを別のNibにまとめておいて、ドキュメントを開
くごとに Nib をロードするという手がある。こういう時に、
awakeFromNib はロードされるごとにそのインスタンスへ送ら
れる。
applicationDidFinishLaunching はアプリケーションが起動
されたとき必ず1回実行される。漏れなら、UserDefaultsの
処理はここに書くな。もちろん、時と場合によりけりなので
一概にはいえんが。
単純なNib一個のアプリならどれを使っても一緒に見えるが、
複数Nibを活用した大きいアプリを書く時にこの三つの区別
は重要になる。
0537名称未設定
04/02/22 21:36ID:S6IkzAG/長文なのにミスで二重書き込みしちまった。スマソ。
0538名称未設定
04/02/22 21:51ID:S6IkzAG/file:///Developer/Documentation/Cocoa/Conceptual/BasicEventHandling/Concepts/KeyboardInput.html#//apple_ref/doc/uid/20000902
を見るべし。
簡単に言うなら、View などの NSResponder のサブクラスには
keyDown: というメソッドがあり、これにイベントオブジェクト
が引数でひっついてくる。NSView のサブクラス作ったり、delegate
に実装することでこのメソッドを上書きするとキーボードや
マウスからのイベントを奪えるわけだ。
で、ひっついてきた NSEvent オブジェクトに characters を
おくれば(SHIFTなどの修飾キーの影響後の)文字がNSStringで
かえってくる。修飾キーの影響を受けていないのはcharacters
IgnoringModifiers で帰ってくる。
キーコードが欲しければ keyCode メソッドだ。
なお、テキスト入力の場合は IM にイベントを回してあげない
と正しくテキスト入力ができない。手っ取り早く IMに処理を
渡したいなら interpretKeyEvents: メソッドを叩けばいい。
なお、interpretKeyEvents: の引数は NSArray だ。つまり、
一つのイベントごと渡すのではなく、いくつかのイベントを
溜めておいて、NSArray で一気に渡すことができる。まぁ、
あんまり溜めると応答性が悪くなるのでお奨めせんがな(笑)
まぁ、詳しくは NSEvent や NSResponder のリファレンスを
みてくれ。そして、じっくり悩んでくれ。
0540名称未設定
04/02/22 23:35ID:CLYYJ46w>awakeFromNib
質問主じゃないし、
結構ある程度のソフト作れるけど
初心者の頃覚えた少しずれた概念をそのまま深く考えずに修正しないままずーと引きずってた事に気付いたよ
Thx
0541名称未設定
04/02/23 00:03ID:yyaEl5grUserDefaultsからの読み込みを一カ所にまとめる必要はねえ。
つーか、必要ならどこで書こうが読もうがかまわねーよ。
スレッド分けてる場合は排他制御する必要があるがな。
だいたい、NSWindowなんかは設定しとけばロード、アンロード時に
勝手に自分のFrameを書いたり読んだりしてるだろーが。
0542名称未設定
04/02/23 02:55ID:yQ6tPN/I悪いこと言わんから、荻原本とヒレガス本を2冊セットで買おう。
値は張るけど、熟読する価値あり。
539 の今回の質問に対する答えはもちろん、これからぶち当たるであろう、
数々の疑問に対する答えがそこにはある、と思うよ。
最初は素直に本でも買って、体系的にまとまった量の知識を一気に吸収した方が
いいと思う。学習曲線の最も急勾配なところを2ちゃんを頼りに登るなんてのは
あまり賢いやり方と思えない。
以上、あくまで私見ですが、アドバイスでした。
0543名称未設定
04/02/23 11:03ID:6VTKiI7NいきなりObjective-Cの参考書を見てもわかるなら、
C++やるのは後回しにしたいのですが。
現状。
Objective-Cの参考書は「C言語の知識が必要」らしいので
荻原本と一緒に高橋麻奈「やさしいC 第2版」を注文したところです。
(まだ届いてない)
今迄のプログラミング経験はPerl、PHPをかじった程度で、
Javaは全く知りません。
0544名称未設定
04/02/23 11:18ID:SqsNPdSA0546名称未設定
04/02/23 11:23ID:wdqgikKa萩原本でOOPを学ぶということだから、必要がなければ混乱をさけるためにも、
むしろC++のことは勉強しない方がよいと思います。
0547543
04/02/23 11:32ID:6VTKiI7N必要がないなら、混乱を避けるためにも、C++は後回しにします。
0548名称未設定
04/02/23 13:33ID:Qt3H+GI2どうもありがとうございました。
簡単な例しかみたことがなかったため、複雑なプロジェクトになった時に
どのように書くと読みやすいのか悩んでいました。
参考にしてよく考えてみようと思います。
0549名称未設定
04/02/23 22:31ID:yf8cVRy8NSImageの画像を回転させる方法って無いんでしょうか?
簡単な画像ビューワを作っているのですが、回転させる方法がわかりません。
//新しいNSImageを作って
NSImage image = new NSImage(new NSSize(300, 300));
image.lockFocus();
//別のNSImageであるobjimgから画像を貼付ける
objimg.compositeToPointFromRect(new NSPoint(0, 0),
new NSRect(new NSPoint(0, 0), objimg.size()), NSImage.CompositeCopy);
//できればここで回転させたい。
image.unlockFocus();
0550名称未設定
04/02/23 22:49ID:yf8cVRy8drawAtPointとNSAffineTransformでできました。
ってか今日1日潰したのに。。。。
気づくときはあっさりと気づくもんですね。
0551名称未設定
04/02/24 00:06ID:9csFPGX8Xcode Tools v1.1CDのDawnloadを押すとでるSegmentsの中のXcode_Tools_1.1.dmg.binを落として
解凍したんですが、ディスクイメージをマウントする際に
「セグメントが見つかりません、所属不明なパート」
とでてマウントできませんでした。
segments内のすべてを落とさないといけないのでしょうか?
0552名称未設定
04/02/24 03:07ID:4/z4zxXo>>550 そこが Cocoa のおもしろさであり、怖さなのよね。
10年以上の実績があるだけに、一見面倒でも実はある程度
を越えた時にすごく楽になるようよく考えられてる。気が
ついた時には嬉しいが、それを知らず遠回りしていた事ま
で気づいた時は酷く鬱だ。
0553名称未設定
04/02/24 08:45ID:qMgwX0REいや、だから segment なんだって。
segment = 部分、切片 ってそのまんまじゃん。
全部落としてから先頭の segment をダブルクリックで自動的に結合されるはず。
segment に細かく分割されているのは回線が遅い人への配慮。
1つのアーカイブになってるやつもあるはずだけど。
ってかネタ?
0554名称未設定
04/02/24 08:51ID:GqYIthhU以前買った「やっぱり!」本一冊を見ながら、今になって10.2で勉強しています。
配列データをファイルで管理するようなプログラムを組みたいのですが、
もし、それに近いサンプルがあれば書籍や資料を教えていただけませんか。
0555名称未設定
04/02/24 15:50ID:/xjfR+93ヒレガス本 4〜6章あたりが良いかもしれません。
KeyTermとしてはNSCoder, NSArchiverあたり。
0556名称未設定
04/02/25 07:54ID:j2afweZ8inline IMP _METHOD(id __obj, SEL __sel){return [__obj methodForSelector: __sel];}
// _imp = [_obj methodForSelector: _sel]; <<< g++ Bus error
template <typename _Tr = id, typename _Ta1 = id, typename _Ta2 = id, typename _Ta3 = id>
class ImpMethod
{
public:
id_obj;
SEL_sel;
IMP_imp;
ImpMethod<_Tr, _Ta1, _Ta2, _Ta3>(id __obj, SEL __sel) :
_obj(__obj), _sel(__sel), _imp(_METHOD(_obj, _sel)){}
_Tr operator *()
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel);}
_Tr impFunc(_Ta1 __arg1)
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel, __arg1);}
_Tr impFunc(_Ta1 __arg1, _Ta2 __arg2)
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel, __arg1, __arg2);}
_Tr impFunc(_Ta1 __arg1, _Ta2 __arg2, _Ta3 __arg3)
{return ((_Tr (*)(id, SEL, ...))*_imp)(_obj, _sel, __arg1, __arg2, __arg3);}
};
0557つづき
04/02/25 07:54ID:j2afweZ8{
NSMutableArray* ary = [NSMutableArray array];
ImpMethod<void> impAdd(ary, @selector(addObject:));
for (int i = 0; i < 10; i++)
impAdd.impFunc([NSString stringWithFormat: @"%d", i]);
ImpMethod<> impEnu([ary objectEnumerator], @selector(nextObject));
for (id obj; (obj = *impEnu) != nil; )
NSLog(@"%@", obj);
ImpMethod<id, int> impGet(ary, @selector(objectAtIndex:));
ImpMethod<unsigned>impCnt(ary, @selector(count));
for (unsigned c = 0; c < *impCnt; c++)
NSLog(@"%@", impGet.impFunc(c));
NSString* str = @"abcdefg";
ImpMethod<NSComparisonResult, NSString*, unsigned, NSRange>
impCmp(str, @selector(compare:options:range:));
ImpMethod<unsigned int> impLen(str, @selector(length));
for (unsigned int t = 0; t < *impLen; t++)
NSLog(@"match=%d",
(NSOrderedSame == impCmp.impFunc(@"c", NSCaseInsensitiveSearch, NSMakeRange(t, 1))));
}
0558名称未設定
04/02/25 12:35ID:Mp+TlGHm最初の1冊としては一番バランスよくまとまってると思うのだが。
あの本があれば、ヒレガス本要らなくない?
荻原本は一応読んどいたほうがよさそうだけど。
0560名称未設定
04/02/25 13:47ID:Cfaib6zrただ、今はCocoa Programming for Mac OS X second edition in April 2004 が出るまでとりあえず保留。
#HMDT本は想定される読者層から外れちゃったので、ちゃんと評価を下せていない(ので、微妙に薦めづらい)。
#“さっぱり本”みたいにWebページが大量削除されれば多少事情が変わるの かも しれないが。
0561名称未設定
04/02/25 14:18ID:avptayc70562名称未設定
04/02/25 16:41ID:CqySULa9ヒレガス本しか読んでないんすけど、ヒレガス本と比べた場合、
HMDTのおすすめポイントってどこらへん?サンプルアプリが派手目な点??
個人的にはヒレガス本で漏れてるAppKitの細かい部分を補える中級書が欲しい、
けど、和書ではなかなかなさそう。
ということで、Cocoa Programming (SAMS) を読んでます。
網羅している項目も、すぐに使えるサンプルも多く、なかなか良いです。
難点は1000頁を越えるので、かなり重いこと。通勤電車で立読みはつらい。。。
ttp://www.amazon.co.jp/exec/obidos/ASIN/0672322307/
0564名称未設定
04/02/25 17:33ID:UEUQ8f8c0565名称未設定
04/02/25 17:48ID:KLedmtLq0566名称未設定
04/02/25 18:09ID:dRqR+fBBおお、俺も今読んでるぞ、Cocoa Programming。
荻原本、ヒレガス本ときて、次にこれだけど、いい本だよね。
特に Custom Views and Graphics で200ページ近く割いてくれてるのがいい。
NSBezierPath や NSAffineTransform を使った基本的な描画から、簡単な描画
処理の最適化手法まで、手広く、突っ込み過ぎない程度にカバーしてくれてて、
かなり勉強になってる。
今やっと 563 ページ目。ようやく半分。
確か 26 章のサンプルがテトリスなんだよな、楽しみ。
0568名称未設定
04/02/25 23:43ID:pFGC5S8Vいかにして可読性を低下させるか。
および、templateによる、汎化と特化の2面性について。
着想はいいんだけどさ。。。
素直に 普通に IMPとってくりゃいいじゃないのって思う。
0569名称未設定
04/02/26 00:33ID:2rbLyiR1最近、読み込みにやたら時間かかるんだよなぁ
なんでだろ
0570名称未設定
04/02/26 01:08ID:fTCj4SNOgestaltとかないのかな。
0571名称未設定
04/02/26 02:34ID:SqcVaN7Qを格納して、ボタンを押すとその移動量とかをテキストフィールドに表示するというのを試しに作ってみたのですが、
矩形は自由にドラッグで移動できるのにボタンを押しても0となってしまいます。
マウスイベント内やdrawrect内ではデバッガで値を見ても格納されているのに、
ボタンを押すところでは他の座標値も含め0になってしまう原因が判りません(;´Д`)
0572名称未設定
04/02/26 02:58ID:3lYBiShfimplFunc(...)のかわりにoperator()(...)って使えないのかな?
メリットとしてはIMP使うので多少は早くなるのかもしんないのと、
IMPを意識しないでつかえるのと、
あとはSTLとかと組み合わせられそうなことかな?
0574名称未設定
04/02/26 13:14ID:0Y2AdVZtアウトレットをちゃんとつないでないとか
setStringValue:つかってないとか
ボタンのアクションが間違ってるとか
0576名称未設定
04/02/26 17:20ID:fTCj4SNOありがとうございます。
NSString *versionName = [[NSProcessInfo processInfo] operatingSystemVersionString];
ですね。これって、リターン値の比較用コンスタントってどこかに定義されていまうか?
それと
Available in Mac OS X v10.2 and later.
ってことなんですけど、10.1とかはどうやって判定すればよいのでしょうか?
0577名称未設定
04/02/26 17:33ID:aUVWiI4R>This string is human readable, localized, and is appropriate
> for displaying to the user or using in bug emails and such.
> This string is NOT appropriate for parsing
って書いてあるでしょ。
Backward Compatibility を問題にしているのなら、AppKit の
ReleaseNote を読んでごらん。
0578名称未設定
04/02/26 18:38ID:UNw+kG7i>AppKit の
>ReleaseNote を読んでごらん。
ありがとさん。
#import <NSApplication.h>
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_0) {
/* On a 10.0.x or earlier system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_1) {
/* On a 10.1 - 10.1.x system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_2) {
/* On a 10.2 - 10.2.x system */
} else {
/* 10.3 or later system */
}
ってことですね。floorってなんだろう。
The floor() and floorf() functions return the largest integral value less
than or equal to x.
なるほど上は、マイナー番号削って調べる例か。とにかくありがとさん。
0579名称未設定
04/02/28 07:41ID:lWtYtgLWNSScrollView が表示している文字の範囲を range で得たいのですが、
何か良い方法はあるでしょうか?
NSScrollView - documentVisibleRect で rect は得られるのですが、
その rect に含まれる文字の range を得る方法がわからないのです。
0582名称未設定
04/02/29 21:59ID:0T/90Aof赤色の文字を表示するようにしています。しかし、マウスクリックでこの
文字列を選択すると、文字色が黒になってしまい、選択解除しても黒のままです。
AttributedStringで赤色にしているのですが、他に良い方法はありませんか?
あるいは、選択/選択解除のイベントがとれればそれを拾って、赤色に戻しても
かまわないんですが、NSForm/NSFormCell(とその先祖)には該当する
Notificationなどが定義されていないようです。
よろしくお願いします。
0583579
04/02/29 23:22ID:T2eBHavw>文字列が特定の条件を満たすとき 赤色の文字を表示する
Formatter を自作すれば編集中の文字列にあわせてリアルタイムに文字の色を
設定できるよ。Formatter を set するインターフェースは NSControl ( NSForm
の先祖)にあるから、NSForm でも使えると思うけど。
まあ、Matrix ってことで何となくややこしそうではあるね。
上のやり方でうまくいかなかったら NSTextField で代用するのが楽かな。
NSTextField ならデリゲートに textDidChange: を送るようにできるし、
NSControlTextDidChangeNotification も使える。ま、ラベルと一緒に
縦に並べとけば使う側から見て違いもわからんし。
0584名称未設定
04/02/29 23:33ID:T2eBHavw0586名称未設定
04/03/01 18:35ID:qKtjopu/4行2列でタイトル+文字列を配置したいんですが、NSTextFieldだと
ウインドウリサイズしたときに、横に4つならべることになって、
きれいにリサイズできるようにラバーバンドを設定できないんです。
それと、色を変える条件が行ごとに違っているのでNSFormに一括して
ルールを設定することができません。NSFormCellはNSControl一族では
ないのでFormatterを貼れなくてそれでsetAttributedStringすることに
したんです。
>>585
サブクラス化しかないですか。はぁ。
それを使うようにするのは、NSForm -setCellClass:でやればできるの
でしょうか。っていうかやってみます。
アドバイスいただきありがとうございます。
0587583
04/03/02 04:38ID:ipzP48JD> 4行2列でタイトル+文字列を配置したいんですが、NSTextFieldだと
> ウインドウリサイズしたときに、横に4つならべることになって、
> きれいにリサイズできるようにラバーバンドを設定できないんです。
ううむ。ラバーバンドの設定で自分の思うようなリサイズができない場合、
autoresizing に頼るのをやめ、ウィンドウのリサイズに合わせてマニュアルで
やるというのもありでは。NSWindow のデリゲートメソッド
windowWillResize:toSize: はウィンドウのリサイズ中、mouseDragged:
みたいに何度も送られ続けるので、これを使って4行2列を適切にリサイズ
するようにしてみては? drawRect: の要領です。
って、もう Cell のサブクラス書いちゃった?
解決したんならそれはそれでいいですけど、一応代替案ということで。
0588名称未設定
04/03/02 06:40ID:6wuHVp6Mタイトル+文字列をNSViewのSubViewに入れてまとめてしまえば
NSFormCellと同じようにauto resizeできるんじゃないかいな
0589583
04/03/02 07:20ID:ipzP48JD4行2列って
ラベル フィールド ラベル フィールド
ラベル フィールド ラベル フィールド
ラベル フィールド ラベル フィールド
ラベル フィールド ラベル フィールド
こんなのを想像してるんだけど、違うのか?
ラベルとフィールドを組みにしても、2列目の水平位置がやっかいなことに
なりそうじゃない?
つーか、autoresize の機能に proportional な位置決めがあったら
いいなあとかよく思うよ。水平位置は中央、垂直位置は下辺から 1/4 を
維持、みたいな。
0590名称未設定
04/03/02 10:08ID:0k7T8DX0これXcodeで作ったみたいですが
そうなるとCocoa?なのかな? 部分部分でCarbon使ってるとか?
全く無知な自分が推測で言っても恥ずかしいだけですが。
>
> ∧∧
>Γ(,,゚Д゚)
>Σ∪【《〓0☆Ξ=∞ =∞ =∞ =∞ =∞ =∞
>〜て ) _)
>(/
>
>MacOSX対応 ネタシュー「スペースギコハリャーン」
>
>ども、お久しぶりです。
>2年半の月日を経てギコハリャーンシリーズ第2弾をリリースしました。
>ついでに、おまえもなーるたいぷも復活。
>
http://www.geocities.jp/adoveproject/ghgikoharri.html
>NVIDIA系の検証が少ないですが多分大丈夫でしょう;;
個々のパーツはアマチュアLVなのは置いといて
ポテンシャルはもの凄いと思ったです。
0592名称未設定
04/03/04 13:01ID:A1WWmws5( ・∀・)つ旦
0595名称未設定
04/03/05 00:10ID:CcJgKqyN0596名称未設定
04/03/05 03:33ID:vwJttUL6【Yahoo!】OSXでメッセチャット【誰か作って!!】
http://pc.2ch.net/test/read.cgi/mac/1078162637
で問題が発生しています。
そのスレにリンクが張られているソフトの改造をして
ビルドしようとするとエラーが3つでます。
NSLayoutManager.h:68: cannot find protocol declaration for `NSGlyphStorage'
こういったものですが、Cocoaのヘッダの中身でエラーがでるのです。
簡単なことならソースを追いかけていくことができるのですが、
NSGlyphStorageでぐぐっても、ほとんどヒットせず
この問題はまったくお手上げで、どうしたらいいか分かりません。
お助けいただける方、智慧を貸して下さい。
0597名称未設定
04/03/05 03:36ID:Jlu3aYqLということだが、10.2 以前でビルドしようとしているという可能性は?
0598名称未設定
04/03/05 03:44ID:vwJttUL6失礼しました、環境を書いておくべきですね。
私の環境は
・Mac OS X 10.3.2(Panther)
・Xcode 1.1(ヘッダの書き換えとか、勝手な変更は加えていません)
・PowerBook Pismo 500MHz
・RAM : 640MB
ソースは先程のスレのリンクから得ることができます。
改造したポイントもそのスレに書いておきました。
0600名称未設定
04/03/05 05:26ID:l6O2wi/n>別のスレ
charla2 ?
これさ、10.2.8 & PBで作成されているよね。
この環境なら、buildできるよ。
Xcodeで互換オプションなかった?(持ってないので試せない)
(1)プリコンパイルヘッダーMyCocoa.h内で宣言されているから外してみるとか
#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_1
(2) 使われないものなら、存在しない宣言、変数などは偽装する
@protocol NSGlyphStorage{} をつくる
0601名称未設定
04/03/05 05:47ID:bRCpoSKe0602名称未設定
04/03/05 17:14ID:vwJttUL6レスありがとうございます。
MyCocoa.h
#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_1
というのをコメントアウトし、sudo fixPrecompsしたところ通るようになりました。
これから通信部分を日本語に直す作業にとりかかります。
0603名称未設定
04/03/05 17:24ID:vwJttUL6>>599
一度に二つのことをしたので分かりませんが、効果はあったかも知れません。
Cocoaのヘッダがおかしいとは思えないので
プリコンパイルヘッダの混乱は妥当な判断だと思います。
今までCodeWarriorでC++/Carbonやってたもので
あまりXcodeやPBには詳しくないのでやり方を知らなかったのですが。
>>600
> charla2
はい、そうです。
自分が使うわけじゃないのですが、面白そうなのでいじってみることにしました。
>Xcodeで互換オプションなかった?(持ってないので試せない)
これは分かりません。
大抵のものはXcodeで手直しなくビルドできていますから
互換オプションのお世話になったことがないのです。
>(2) 使われないものなら、存在しない宣言、変数などは偽装する
荒技ですね。
該当のヘッダが読まれる直前に書くか、
書き込み禁止のヘッダを操作することになるので躊躇していました。
0604名称未設定
04/03/05 21:46ID:VZRNctZnまだ、実装していません。
自動リサイズ位置決めプログラムのほうが難しそうなんですけど、
なんかサンプルとかありますでしょうか?
>>588
InterfaceBuilderってそういうViewのネストを増やすと、極端に
速度低下してしかも不安定になるので、あんまりしたくないんです。
NSViewのサブクラス化をIBでつくって配置する方法がわかれば
やってみようかとは思うんですけど、よくわからないものですから。
>>589
>ラベル フィールド ラベル フィールド
>ラベル フィールド ラベル フィールド
>ラベル フィールド ラベル フィールド
>ラベル フィールド ラベル フィールド
そうです。一応、同じサイズで作ってNSFormの位置をあわせて
おくと各行の水平位置はあいます。
0605587
04/03/05 22:27ID:l9OewXIy>自動リサイズ位置決めプログラムのほうが難しそう
なんで? ウィンドウの幅から相対的にフィールドの位置と幅なんてすぐに
求められるし、そしたら後は setFrame: するだけでしょ。サンプルがないと実装
できないほどのもんでもないと思いますけど。
つーか、まずはコード書こうよ…… _| ̄|○
0606587
04/03/05 23:18ID:l9OewXIyといっても、1行だけの
ラベル フィールド ラベル フィールド
っていう構成だけど。なんとか2列目の水平位置もうまいこといった。
でもまあ、こっから行を増やすのなんてどうってことないし。
ま、実現できることはわかったので、後は 604 の頑張り次第かな。
でもまあ、これでやったとしても formatter の自作が残っているわけだが……
0607名称未設定
04/03/06 02:24ID:5QzIqt+6http://homepage.mac.com/mkino2/panther/CocoaBindings/masterdetail.html
>たとえば、File's Owner が mediaAssets という Media オブジェクトの集合を管理しているとすると
というのは具体的にどういう状態なんでしょう。
配列をどこにどう設定すればFile's Ownerが管理していることになりますか?
0609名称未設定
04/03/07 19:52ID:kh0UA2Ezstr = [[NSString alloc] initWithData:dat encoding:NSUTF8StringEncoding];
それをそのままwriteToFileでファイルに書き込むんだけど、できたファイルを開いてみると
Shift JISでエンコードされてるみたい。どこが間違ってるんでしょ?
0610名称未設定
04/03/07 20:14ID:pwUySWsNNSStringのwriteToFileは、問題なければdefaultCStringEncodingで書き込む(のかな?)
なので、NSDataのwriteToFileを使う。
str = [[NSString alloc] initWithData:dat encoding:NSUTF8StringEncoding];
としたなら、
[[str dataUsingEncoding:NSUTF8StringEncoding] writeToFile:〜〜];
とでもすればいいだろう(かな?)
0611名称未設定
04/03/07 20:30ID:kh0UA2Ez0612ito
04/03/08 21:00ID:eWAEo4Decommand+ダブルクリックで検索できなくなりました。クラスの階層表示も、からになっています。
NS*の索引が出来てないみたいなんです。
クリーニングや索引の再構築をやってみましたが効果はありません。
前になったときは、プロジェクトを作り直して直ったんだけど、毎回作り直すのは面倒なので...
0613名称未設定
04/03/10 01:12ID:MzrQwgk/具体的には、下図のように一つのウィンドウに4つのビューがあって、
横のスプリットバーでAB<->CD、縦のスプリットバーでAC<->BDと移動させたいのですが、
A<->C、B<->DのあとAC<->BDとすると、AB<->CDがうまく動かないです。
かといって、ABCDをまとめるとA<->B<->C<->Dのように一列になってしまいます。
分かりにくい説明で申し訳ないです;;
AB
CD
0614名称未設定
04/03/10 09:48ID:vJ950ONy2つの SplitView のバーを同期させたいということですよね。
SplitView のデリゲートメソッド splitViewDidResizeSubviews: が使えるはず。
SplitView にはバーの位置を設定するメソッドがないので、バーの位置を同期
させるには対応関係にある SplitView の subview の frame を直接設定した後、
SplitView の再描画を促せばいいと思います。
0615614
04/03/10 10:51ID:vJ950ONyなんかわからないことがあったら聞いて下さい。
0616名称未設定
04/03/11 09:33ID:bE1PeoVjありがとうございます。まだCocoaに詳しくないので、
勉強しながら試してみることにします。
ところでその方法(A<->C、B<->DのあとAC<->BDとして
A<->C、B<->Dを同期させる方法)だと、縦方向にスプリットバーが1つ、
横方向にスプリットバーが2つになって外観を損ねたりはしないのでしょうか?
0617614
04/03/11 20:33ID:hWn4TCr4ええと、こういうのは文章で説明するの難しいですね。
とりあえず、これが完成イメージです。
http://mac.oheya.jp/etc/img-box/img20040311202448.jpg
入れ子になった3つの SplitView があるのでバーは実際には3本
あるわけですが、その内、2本ある水平のバーを同期させることで、
2本のクロスしたバーがあるように見えます。
(1)から(3)は通常の SplitView の動き、
(1)から(2)で2本のバーを同期させています。
外観を損ねるかどうかは画像を見て判断して下さい。
0618614
04/03/11 21:08ID:hWn4TCr4意味です。splitViewDidResizeSubviews: はバーのドラッグ中、繰り返し
呼ばれるのでこういったことが可能になります。
0619名称未設定
04/03/13 11:40ID:/U0BUXOtCocoaでGUIをつけようと試みています。
ところが、そのスクリプトは複数のファイルで出来てるんですが、ファイル間の階層構造が保た
れていなくてはいけないようなのに、フォルダのままProjectBuilderにドロップ→ビルドすると
その中のファイルが全部フォルダから出されてResourcesに入れられてしまいます。
フォルダの階層構造を保ったままResourcesファイルに入れる方法ってありますか?
0620名称未設定
04/03/13 11:57ID:sZyU6+dGTarget 設定の一番下の辺りに Build Phases ってのがあるだろ。
そこに Copy Files Build Phase を追加すれば、アプリケーションラッパに
コピーするファイルとコピー先のサブパスを設定できる。
Project メニューに New Build Pahase > ってのがあるからそっから
Copy Files Build Phase を選べば追加されるよん。
0621619
04/03/13 12:47ID:/U0BUXOt素早いレスありがとうございます。
なるほどなるほど。日本語でいう「ファイルをコピー」というのを追加して
その中に件のファイルを入れてしまえば良い訳ですね。
ありがとう。がんばってみます。
0622620
04/03/13 13:21ID:sZyU6+dG指定したらいい。そしたらフォルダ内の階層構造もそのまま保存されたはず。
0623619
04/03/13 18:30ID:/U0BUXOtPythonなんてわかんないし、あきらめました・・。
ちなみに、そのスクリプトはPluckerというやつで、HTMLをPalmで読めるように整形してくれる
スクリプトでした。一応GUI版もあるんだけどあまり日本語のことを考えてくれてないようなので
自分で作ってみようかなーと。
と思いやってみたら、文字だけは変換できるのに画像は出来ないという変な動き・・。
よく調べたらTerminalで動かしても同じ症状が出てました。
なんでだー、元のGUI版と何が違うんだよー・・・ orz
0624名称未設定
04/03/14 12:13ID:smIz7K1j画像掲示板に相当する、ソースやプロジェクトを匿名で気軽にアップできる
ような板ってないもんでしょうか。質問するにしてもそれに答えるにしても、
ソースやプロジェクトをやり取りできれば便利だと思うんですが。
というか、俺が知らんだけでそういうものは既にあるのかな……
0626名称未設定
04/03/14 18:25ID:QXDXTayIどのクラスのお世話になったらいいですか?
NSImageやNSImageRepにsetSizeしても、ファイルに書き出してみると
サイズは元のままなんですが...
0627名称未設定
04/03/14 18:29ID:wLAKUT53気軽に答えられないからじゃないかなあ。
0628名称未設定
04/03/14 19:05ID:TQgM8Yu6量が多くても全部読むわけじゃなくて、必要なところだけ辿ってくわけで
聞く方は晒せるなら全部晒した方がいいと思う。
全部必要なのか、部分的にあればいいのかは答える方(上級者)が判断することだし。
0629名称未設定
04/03/14 19:39ID:4l4nKXwLうろ覚えなんで間違ってるかも知れないんですが、
保存したい NSImage を setSize
保存したいサイズの NSImage を新たにもう1つ作り、それに対し
lock focus
setSize した方の NSImage をそこへ draw
unlock focus
こんな感じでいけませんかね。
0630名称未設定
04/03/14 21:05ID:QXDXTayIありがとうございます。ばっちり出来ますた!
元のimageにはsetSizeしなくても、drawInRect:で
新しいほうのimageのサイズを指定すれば大丈夫なようです。
0631629
04/03/14 21:51ID:4l4nKXwLみたらサイズが元のままなのは、これらがメモリ上にロードしたイメージ
データ(NSImageRep が持ってます)をどんなサイズでレンダリングするかを
指定するものだからです。
NSImage はこのサイズにあわせて、ベストな NSImageRep からキャッシュ
イメージを作り、自身の描画を要請された時にはこのキャッシュを使います。
(描画の度に NSImageRep の持ってるデータからサイズ変換してたら効率悪いし)
仮に setSize: で NSImageRep の持ってるイメージデータのサイズを
実際に変換してしまったら、一度サイズを縮小したら最後、縮小に伴って
失われた情報を、もう一度ディスクからファイルをロードし直さない限り
復元することができなくなってしまいます。
そんなわけで、NSImage では setSize: される度に、NSImageRep の
データからキャッシュを作り直しているわけです。(実際には、描画の
要請があってからキャッシュを作り直すみたい)
NSImage とか NSImageRep とかのあたりはほんとにややこしくて、
自分も完全に理解しているとは言い難いのですが、とりあえず。
詳しい人、補足、ダメだしあったらおながいしまつ。
0632名称未設定
04/03/15 11:57ID:6Ii7y6yhつくっていたのですが、Cocoaでファイル&フォルダの不可視属性を取得することは
できるのでしょうか?
Carbonを使ってみたのですが、一部のフォルダなどには不可視属性がついていないものも
ありったりして、Finderのように表示させることができません。
どなたか、情報をおもちの方がいらっしゃいましたら教えてください。
お願いします。
0633名称未設定
04/03/15 17:53ID:q7l8yECV警告を吐きました。
ld: warning dynamic shared library: /usr/lib/libSystem.dylib not made
a weak library in output with MACOSX_DEPLOYMENT_TARGET environment
variable set to: 10.1
not made a weak library というのは何か重大な問題でしょうか?
ビルド自体は成功し、モジュールも問題なく動作しますが、この警告が
気になって仕方ありません。こちらの環境は
Mac OS X 10.2.8
Developer Tools December 2002 です。
0634名称未設定
04/03/15 19:05ID:SGOkhT4Wttp://developer.apple.com/ja/qa/qa2001/qa1233.html みれ。
0636633
04/03/15 23:18ID:PZYCuvKo10.1 でも使えるようにしたいので、QA1223 で示されている回避策2で
いこうと思ったのですが・・・
問題の回避策2
>Mac OS X 10.1 以上を対象にビルドする必要がある場合、または、
>ライブラリ A へのウィークリンクを開始したくない場合は、ライブラリ A の
>シンボルへの実際には使われない余分な参照を 1 つ作成して、リンカに
>ライブラリ A に強くリンクさせることができます。
これって具体的にはどうすることなんでしょうか?
ライブラリ A に相当するものは多分インポートしてるフレームワークのどれか
であり、それらに含まれる関数を無駄に呼んでみるとか、クラスのインスタンスを
無駄に作ってみるとかすればいいのかと思い、いろいろやってみたんですがどうも
違うみたいです・・・
リンカとか共有ライブラリの仕組とか、全然わかってない…… (´・ω・`) トホホ
0637名称未設定
04/03/16 01:03ID:lRzwJeuM%nm /usr/lib/libSystem.dylib
とするといろいろなシンボルが表示されますが、よく見るとただのCの標準ライブラリであることが分かりますね。
ですから、この場合、ライブラリAであるところの、Cの標準ライブラリを直接使ってやればよいことが分かります。
使わなくていいものは別に使わなくてもいいので
if( fclose == NULL ) { fprintf( stderr, "You have no C Lib!!¥n" ) }
// 3つも使っちゃいました! fcloseがなくてfprintfがあるなんてどんなシステムなんだろう(w
とかで十分でしょう。最適化で消えないように気をつける必要がありますが。
警告を無視するのでいいのなら、
>>633
>not made a weak library というのは何か重大な問題でしょうか?
べつに問題ありません。
警告の意味は「ld は弱いリンクを作ろうとしましたが、できませんでした。」
Appleの回避策2は ld に弱いリンクを作ろうとさせない。
ってことですから。
作ろうとしなければ警告は出ませんよね?
0638633
04/03/16 01:50ID:q57OVuhdなるほど。Cの標準ライブラリですか。Foudation や AppKit の関数やクラスで
何をやっても駄目なわけだ。かなりアホなことやってました俺。
ttp://developer.apple.com/ja/technotes/tn2064.html
とかも読んでみたものの余計に混乱してしまいまして _| ̄|○
weak link しようとしたけどできなった、ってことは strong link しました
ってことだから、10.1 でも問題ないですよね、そりゃ。
色々勉強になりました。ありがとう。
> 一部のフォルダなどには不可視属性がついていないものも
> ありったりして、Finderのように表示させることができません。
不可視属性がついていないのに表示されないものがある、ということですか?
具体的には何ですかそれは? まさか . で始まるやつとか言うんじゃ……
0640名称未設定
04/03/17 15:39ID:c63EUxA2>>639
起動ディスク直下のusrとかtmpとか.hiddenに影響されるもののことでは
ttp://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2600/2621.html
ttp://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2600/2624.html
0641名称未設定
04/03/17 16:00ID:FvBWDMVlNSTIFFCompressionNone factor:0.0];
bmRep = [[NSBitmapImageRep alloc] initWithData:data];
とやって image から BitmapImageRep を作った後、ピクセルバッファの
アドレスを得て、そこから直接ピクセルをいじって画像にエフェクトをかける
プログラムを書いています。
32 bit のカラー画像なら、メモリ上で R, G, B, A の順で並んでいて、
plane は 1 つ、という前提でプログラムを書いているのですが、果たして
これは保証されているのでしょうか?
NSBitmapImageRep のドキュメントを見ても、initWithData: でインスタンスを
作った場合に、ビットマップデータがメモリ上でどのような構成になるかといった
ことが一切書かれていないので、ちょっと不安になりまして。
情報、もしくはその在り処を知っている方がいたら教えて下さい。
0642名称未設定
04/03/17 17:26ID:OixMsgeT詳しい情報はもってないけど、どうしても不安なら、
独自のNSImageRepのサブクラスを作ればいいのでは?
0643名称未設定
04/03/17 23:50ID:uZ8ILPymレスありがとうございます。
1 pixel 32 bit RGBA 1 plane で正規化された bitmapImageRep を返すような
クラスメソッドでも NSImage にカテゴリとして追加しようかなあと思います。
0644641=643
04/03/17 23:52ID:uZ8ILPym0645名称未設定
04/03/18 23:22ID:sZKwhZNi下記はeventを一つづつ取り出して、そのイベントが何に対する
イベントか判断して実行するか、無視するか決定するルーチンです。
今現在ボタンAなのかスライダーBなのかの判断をイベントが発生した
マウスの座標で行っています。
マウス座標で判定する以外の方法でeventを受け取るコントロールを知る方法はないでしょうか?
ボタンなどのコントロールの数が多くなると、座標判定ルーチンを記述する
のが結構大変です。
もっとスマートな方法をご存知の方は教えていただきたくお願いします。
while(適当にループ){
NSEvent* event = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]
inMode:@"NSDefaultRunLoopMode"
dequeue:YES ];
if([event type] == NSLeftMouseDown){
if(ボタンA の位置でイベントが発生==YES){
[NSApp sendEvent: event];
}else if (スライダーB の位置でイベントが発生==YES){
[NSApp sendEvent: event];
}
}
0647名称未設定
04/03/19 00:03ID:yveiV8c7NSView に hitTest: ってのがあるね。
それか、コントロールの一覧を配列か何かに入れておいて、mouse: inRect: あたりで
順番に調べればいいのでは。
てゆうか、なんでそんな変なことがやりたいの?
たぶん目指してるやりかた自体が全然スマートじゃない。
0648名称未設定
04/03/19 00:46ID:QST7yJ8k0649名称未設定
04/03/19 00:50ID:ECQ0e4+E0650名称未設定
04/03/19 00:59ID:QST7yJ8k全然ものにならなかった苦い思い出がっ!
それを思えば随分とラクチンになったもんだ。いいね、Cocoa。
645 は Application Kit が裏で何をやっているか理解するためにあんな
プログラムを書いているに違いない、
と、好意的に解釈してみる。
0651名称未設定
04/03/23 04:42ID:oSJY7XQX名前を Finder に日本語で表示させるようにしたのですが、Dock では
なぜか英語名になってしまいます。Dock にも日本語で表示させるには
Info.plist に何か別の設定が必要なのでしょうか?
0653名称未設定
04/03/23 06:10ID:uoumliyY0654651
04/03/23 07:37ID:oSJY7XQXそれを参考にして Finder に日本語表示させるところまではきたのですが、
なぜか Dock ではダメなのです。InfoPlist.strings も
CFBundleName = "日本語名";
CFBundleDisplayName = "日本語名";
という感じで、設定に不備はないはずなんですが。
0655名称未設定
04/03/23 10:33ID:HUVAC8iNそれは嘘です。
0657名称未設定
04/03/23 14:53ID:gRZWwbzKObjective-Cなら知ってるんだけど。
0658名称未設定
04/03/23 15:18ID:u7CEFvIQC++というかObjective-C++ならサポートされている。基本はObjective-Cだ。
>>654
本当に設定不備が無いのならキャッシュされているだけかも?
>>657
object Cは存在する。それに“c”と“object”がつく言語はいくつもある。
今回の件には無関係だし、トリビア程度な知識だから知らなくても全然気にするこたぁ、、あるから存分に吊ってくれ。
0659名称未設定
04/03/23 15:41ID:GPeOvRmM0662名称未設定
04/03/24 04:58ID:jRUfl/aiできない。
紛らわしいけどC++とObjective-Cを混ぜて書けるだけで
言語的に融合はしていない。
http://homepage.mac.com/mkino2/spec/objectiveC++/objectiveC++.html
0663名称未設定
04/03/24 16:53ID:gWOz12tY新しいメニューを MyDocument あたりで処理するにはどうすればいいのですか?
0664名称未設定
04/03/24 18:14ID:zSoNO0rJtergetを追加する必要はありません。
ClassタブでFirstResponderを選んでactionを追加。
新メニューのアクションをFirstResopnderのactionにつなぐ。
これだけです。
MyDocumentがactionメソッドを持っていて、且つFirstResponderになっていれば
MyDocumentにアクションが飛んできます。
0665名称未設定
04/03/25 09:48ID:IYMUj6hSありがとうございます。
おかげさまでメニューの追加ができました。
0666名称未設定
04/03/25 22:20ID:JUMFOHhE(1)画像が半透明になってマウスに追従して動きます。
(2)そのまま、テキストエディットにドロップすると画像がペーストされます。
(3)一方デスクトップ上にドラッグドロップするとABC.pngのようにPNGファイルになって保存されます。
上記(1)(2)(3)を行う機能を実装したいのですが、方法がわかりません。
どなたか御教授いただければ幸いです。
試したこと。
dragPromisedFilesOfTypes:fromRect:source:slideBack:event:を使い、
namesOfPromisedFilesDroppedAtDestinationをオーバライドすることで
(3) が実現できました。しかしドラッグ中に表示されるのは(1)の画像ではなく
PNGアイコンになります。さらに(2)は実現できません。
dragImage:at:offset:event:pasteboard:source:slideBack:を使った場合は、
逆に(1),(2) は正しく行えるのですが、(3)が実現できません。
Safariのように(1)(2)(3)を同時に行う方法があれば教えていただきたくお願いします。
0667名称未設定
04/03/26 01:09ID:9hV6Tyd6ペーストボードにNSFilenamesPboardTypeでフルパス(の配列)を
入れておけばdragImageで(3)も可能。
0668名称未設定
04/03/26 01:54ID:S0Bhxg2Ohttp://page7.auctions.yahoo.co.jp/jp/auction/g17765890
0669666
04/03/26 09:05ID:r0/r7A0vありがとうございます。
ファイルが存在する場合はそれで良いような気がしますが、
本ケースでは、ファイル自体が存在しないため(アプリーケッション内のデータとして存在する)
当然ながら、NSFilenamesPboardTypeで名前を指定できないのです。
Safariは一旦テンポラリファイルを作っているのだろうか?
0671名称未設定
04/03/26 12:37ID:4rq5nH99NSFilesPromisePboardType を使う。
どう使うかは知らん
ぐぐればCocoaはやっぱりのpdfが見つかるだろう
0673名称未設定
04/03/30 17:22ID:h+dzWUHaドキュメントのNSViewないしNSWindowから該当のNSDocumentのポインタを得ることはできないのでしょうか。
できるとしたらFirstResponderをたどる方法なのかな・・この辺ご教授いただけると助かります。
0674名称未設定
04/03/30 17:43ID:RuUgzLv40675名称未設定
04/03/30 17:55ID:QlHv+1xp灰色の透明なウィンドウ(音量設定みたいなウィンドウ)を作ろうとして、
#import "MyWindowController.h"
@implementation MyWindowController
- (void)drawRect:(NSRect)rect
{
[window2 makeKeyAndOrderFront :self];
[[window2 contentView] lockFocus];
NSRect rect = [[window2 contentView] frame/*bounds*/];
[[window2 contentView] unlockFocus];
[window2 flushWindow];
}
@end
としてみたのですが MyWindowController.m:9: unused variable `rect'
ウィンドウ自体を透明にすることはできましたが、このようにでてうまく表示されません。
勉強し始めてまだ四日位なのですが、何か基本的なことを見逃してしまっているのでしょうか。
0676名称未設定
04/03/30 17:59ID:QlHv+1xp>ウィンドウ自体を透明にすることはできましたが、このようにでてうまく表示されません。
少し変な言い方でした。
上にかぶせる半透明なウィンドウが表示されない、ということなんです。
0677名称未設定
04/03/30 18:45ID:n4nKEF0a根拠を教えてほしい。
0678名称未設定
04/03/30 21:46ID:+Sbq1mLl0679名称未設定
04/03/30 23:00ID:qTFrMjgTこれで出来たよ。
#import "stdio.h"
#import <AppKit/AppKit.h>
@implementation hoge
-(id)initWithContentRect:(NSRect)contentRect
styleMask:(unsigned int)aStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag {
NSColor *ccol;
ccol=[NSColor colorWithCalibratedRed:1
green:1
blue:1
alpha:0.6];
NSWindow* result = [super initWithContentRect : contentRect
styleMask : NSBorderlessWindowMask
backing : NSBackingStoreBuffered
defer : NO];
//背景にカラーをセット
[result setBackgroundColor : ccol];
[result setLevel : kCGDockWindowLevel]; //Windowの階層レベル(Dock)
[result setAlphaValue : 1]; //透明度をセット
[result setOpaque : NO]; //不透明度
[result setHasShadow : NO]; //影
return result;
}
0681名称未設定
04/03/31 03:29ID:iiIfI//F>unused variable `rect
って単に変数rectを使ってないよ〜、ってことだと思う。
用意したのに使ってないのは何かのミスかもしれないので
教えてくれるのでしょう。
0682名称未設定
04/03/31 08:13ID:Me1cVLbk何を読んで勉強しているのか分からんが
とりあえずこれでも見とけ。
http://developer.apple.com/samplecode/RoundTransparentWindow/RoundTransparentWindow.html
0683名称未設定
04/03/31 14:41ID:XrINcQXXありがとう、やってみますね
>>680
ありがとう
>>681
変数rectでぐぐってみます、ありがとう
>>682
ありがとう
まだ何も分からないのでありがとうしか言えません・・・・
もっと勉強して出直します。どうもありがとうございました!
0684名称未設定
04/03/31 15:24ID:/FoW4DD2変数rectじゃなくて C言語がヒットしても良いから 変数 スコープ でググれ。
ていうか、本買え、本。
その状況じゃ3日後には挫折するぞ。
0685名称未設定
04/03/31 15:28ID:/FoW4DD2あまりの馬鹿さ加減に興奮して、上げてしまったではないか。
ていうか ガンガレ !
0686名称未設定
04/03/31 22:31ID:3ZUvIowgありがとう、変数 スコープですね。
本なんですが、実はXcode入門を買ってしまいまして、当分は買えないかなぁ・・・と
0687675
04/04/01 00:16ID:2uLYEGqq@implementation some
- (void)drawRect:(NSRect)rect
{
[window makeKeyAndOrderFront :self];
[[window contentView] lockFocus];
NSRect rect = [[window2 contentView] frame/*bounds*/];
ここに何を書くかを設定しなきゃいけなかったんですね・・・・
[[window contentView] unlockFocus];
[window flushWindow];
}
やっと気づきました。
根拠を教えてほしい、という言葉が今では身にしみます・・・・・・
もっとCocoaになじめるよう、努力します。
0688名称未設定
04/04/01 00:46ID:F+peyiZy0689名称未設定
04/04/01 17:16ID:37ZG1UnX(文字と文字の間を大きくしたり、逆に文字が重なるようにしたいのです)
0690名称未設定
04/04/01 18:11ID:Ef3XcYvwsee NSTextStorage, NSLyaoutManager, NSTextContainer とか。
http://developer.apple.com/documentation/Cocoa/Conceptual/TextLayout/index.html
とか。
0691名称未設定
04/04/01 21:02ID:I43/OqRV>>690氏のリンクはまさにその辺りの話だと思うんですが、ぶっちゃけよくわかりません。
0692名称未設定
04/04/02 01:06ID:2wYX0uZxList-1(処理内容はサンプル)は正常に動作しますが、同じ動作を期待しつつ、
独立したメソッドで文字列決定を処理させようと思ってList-2のようにすると
コンパイルOKですが実行するとエラーになります。
どこをどうしないといけないんでしょうか。
■ list-1
- (IBAction)myAction1:(id)sender{
NSString*s;
if((random()%10) <= 5) { s = @"AAAA"; } else { s = @"BBBB"; }
[ myOutlet1 setStringValue:s ];
}
■ list-2
- (IBAction)myAction1:(id)sender{
NSString*s;
[ s randomString:5 ];
[ myOutlet1 setStringValue:s ];
}
//
- (NSString *)randomString:(int)iSeparate{
NSString*s;
if((random()%10) <= iSeparate) { s = @"AAAA"; } else { s = @"BBBB"; }
return( s );
}
0694名称未設定
04/04/02 01:48ID:ZzfeRsDXlist-2の、
>[ s randomString:5 ];
って、オブジェクトsにメッセージ"randomString"を送出する、って意味。
NSStringでrandomStringメソッドが定義されていないとだめ。
単に、NSStirng *randomString(int) ; の関数を定義するのではダメか?
- (NSString*)randomString: はどのオブジェクトのメソッド?
0695名称未設定
04/04/02 01:50ID:ZzfeRsDXあぁぁぁ
0696名称未設定
04/04/02 09:14ID:du696CNFNSFontの属性が多くてよくわからないです。
試しにfontHeight=[font ascender]-[font descender]としても
フォントの種類によってうまくいかないですし・・。
0697名称未設定
04/04/02 21:44ID:Yv0ywEVx0698692
04/04/02 23:20ID:ebUl9BJ8それです!ありがとうございました。
言われてみると今の自分、「selfってなんなんだろ」状態でした・・。
>>694-695
コンパイルエラーにならないように試行錯誤した結果が
[ s randomString:5 ];なのでした(←ひどすぎますね)。
NSStirng *randomString(int iSeparate)
これ↑の場合も試して、同じ内容で動作するのを確認できました。
両方使い分けてもいいのですね。ありがとうございました。
0699名称未設定
04/04/03 02:33ID:YIsbXhNT定義していないメソッドを呼んでもコンパイルエラーにならないから
慣れてないと分かりにくいかも知れない。
そのかわり柔軟なdelegateとか定義できるみたい。
C++でテンプレートを駆使してdelegateやってるのを見ると涙ぐましい。
0700名称未設定
04/04/04 22:03ID:Do3WZ3ap設定しているんですが、削除時に以下のエラーメッセージが実行ログ中に出力されます。なんが悪いんでしょうか?
An instance 0x35e2f0 of class MyClass is being deallocated while key value observers are still registered with it. Break on _NSKVODeallocateLog to start debugging.
追加削除のコードはこんな感じ
- (IBAction)add:(id)sender {
MyClass *anObject = [[[MyClass alloc] init] autorelease];
[self registerForChangeNotification:anObject];
[sourceController addObject:anObject];
}
- (IBAction)remove:(id)sender {
MyClass *anObject = [[sourceController selectedObjects]
objectAtIndex:0];
[self unregisterForChangeNotification:anObject];
[sourceController removeObject:anObject];
}
- (void)unregisterForChangeNotification:(id)anObject
{
[anObject removeObserver:self forKeyPath:@"value"];
}
- (void)registerForChangeNotification:(id)anObject {
[anObject addObserver:self
forKeyPath:@"value" options:NULL context:NULL];
}
こうしているのは、このクラス(MyClassとは違う)でMyClassの各インスタンスが
変更されたときに処理をしたいからなんですけど。unregisterがうまくできていない感じです。
sourceControllerはNSArrayControllerです。
0701名称未設定
04/04/05 15:27ID:dQGtNS2z> - (IBAction)add:(id)sender {
> MyClass *anObject = [[[MyClass alloc] init] autorelease];
> [self registerForChangeNotification:anObject];
> [sourceController addObject:anObject];
> }
ここで anObject を -autorelease しているが、大丈夫か?
sourceController の addObject: で retain されていればいいのだが、
そうでなければ直近の AutoreleasePool が release されたときにこの
anObject は dealloc されてしまうぞ。
エラーメッセージから察するに、どこかで retainCount の数え間違い
をしていて、既に解放されたオブジェクトを delete しようとしている
感じだ。
ここらへんの問題を解きたいなら素直に ObjectAlloc.app を使うべし。
0702名称未設定
04/04/05 18:19ID:bSiHsnHiというところから想像すると
anObjectにバインドしているviewオブジェクトがまだあるのに、
勝手にanObjectを解放するな、ということかも。
選択中のオブジェクトを削除するのは
- (void)removeObject:(id)object
ではなくて
- (void)remove:(id)sender
を使うのではないか?
0703名称未設定
04/04/06 01:27ID:Rp3bx5N/ObjectAlloc.app使ってみました。よくわかりませんが、オブジェクトは
消したいところで消えますし、そうでないところではちゃんと残っています。
>702
remove:でも同じです。実は、Master-Detail表示にしているのでそれが
悪いのかもしれないんですけど、よくわかりません。
削除ボタンをNSArrayControllerのremove:に直接バインドしたときには
エラー表示はないのですが、別のオブジェクトにもNSArrayControllerの
数が変わったら通知がいくようにしたいので、add/removeともに
別オブジェクト経由にするようにしています。
0704名称未設定
04/04/06 11:28ID:7EzSwLY5ふと思ったが
> [self unregisterForChangeNotification:anObject];
> [sourceController removeObject:anObject];
これ、逆の順番にしたらどうなる?
0705名称未設定
04/04/07 01:16ID:4pl6QBNU同じでした。アドバイスありがとうございます。
0706名称未設定
04/04/07 14:17ID:DONhoAQ6NSScrollViewにデリゲードがないみたいですので・・。
0707名称未設定
04/04/07 14:42ID:RD1d4D0H結論は忘れたけど、ぐぐれば出てくるんじゃない?
0708名称未設定
04/04/07 15:44ID:Yts/wyzN[[NSNotificationCenter defaultCenter] addObserver:observer selector:@selector(frameChange:) name:NSViewFrameDidChangeNotification object:[scrollview contentView]];
でどうさ。
0709名称未設定
04/04/07 16:00ID:DONhoAQ6ありがとうございます。
NSViewFrameDidChangeNotificationではなくNSViewBoundsDidChangeNotification
にしたら、上手く動作するっぽいことが分かりました。
0710708
04/04/07 16:25ID:Yts/wyzN(NSClipView *)[scrollview contentView] ×
(NSView*)[scrollview documentView] ○
0711名称未設定
04/04/07 17:30ID:lSRMgYqr話の本筋からは若干はなれるんだけどさ、
add: remove:の中でノーティフィケーション登録するよりは
MyClassのinit / deallocのタイミングで登録した方がスマートでは?
MyClassがノーティフィケーションを発行するかなにかして。
そうすれば自前のadd: remove:を準備する必要も無いし。
0712名称未設定
04/04/07 18:13ID:lSRMgYqr>MyClass *anObject = [[sourceController selectedObjects] objectAtIndex:0];
って本当に正解?
今似たようなことやってたら
[[NSArrayController selectedObjects] objectAtIndex:0]
で、NSCFDictionaryが出てきたぞ?
俺の問題かもしれんが
0713712
04/04/07 18:23ID:lSRMgYqr>で、NSCFDictionaryが出てきたぞ?
NSArrayControllerのObject Class Nameを設定し忘れてただけだった。
逝ってきます・・・
0714名称未設定
04/04/08 20:18ID:z7zxMbwKありあがとうございます。試してみましたが、うまくゆきません。
An instance 0x3af970 of class MyClass is being deallocated while key value observers are still registered with it. Break on _NSKVODeallocateLog to start debugging.
unregisterするメソッドにNSLogを書くとこのメッセージの後にデバッグメッセージを表示します。
そしてその後、アプリケーションは異常終了SIGSEGV。
ちなみに、(修正前の)上記メッセージが出ているだけではアプリケーションは
何事もなく動作を続けています。
0715名称未設定
04/04/09 13:33ID:MQmqarYG例えば色を薄くするとかの処理を行いたいときは、どこをいじればよいのでしょうか?
・・下がりまくってるのであげます。
0716名称未設定
04/04/09 15:52ID:FYeAChj30717名称未設定
04/04/09 17:13ID:SY6mUREFそもそもregisterとunregisterに問題があるのでは?
registerしてすぐにunregisterしてもちゃんと動く?
>715
NSWindowDidResignKeyNotification
NSWindowDidResignMainNotification
0718名称未設定
04/04/10 13:36ID:XXEbxbvUありがとうございます。
もちろん、更新処理は呼び出されませんが、同じようにエラーがでました。
そもそもremoveObserverができていないようです。
マニュアル等見直してみます。
0719名称未設定
04/04/10 14:47ID:905CPMTUNSDocument を NSNotificationCenter に observer として登録していたんだが、
NSDocument を閉じる時に observer を解除するのを忘れてしまい、
それでアプリケーションが落ちまくって原因が分からずに困った覚えがある。
NSNotificationCenter が既に存在しない observer に通知を投げようとしてたんだな。
0720名称未設定
04/04/10 19:44ID:GxB5bGeR0721名称未設定
04/04/11 00:12ID:y6w1FBE2[[NSNotificationCenter defaultCenter] removeObserver:self]してる
0722名称未設定
04/04/14 09:26ID:UHzWjM26こういう場合に調べる方法がわからないのでアドバイスかヒントをお願いします。
書籍、Webページ、DevelopTool内のファイル、ヘルプなど、どういった物をどのように活用して
「こういうメソッドがあって、こう使える」と理解していけばいいでしょうか。
0723名称未設定
04/04/14 10:27ID:LIn1rwIwADCのページ見れば一目瞭然だが。
「Text & Font」 って書いてあるし。
Cocoa だけじゃ全部は出来ないけどさ。
盲点なのは 「Unicode Utilities」かな。
0724名称未設定
04/04/15 01:56ID:YUjIVpkvModel Key Pathを items.anItem.title のようにドットで区切ってもdictの中を読んでくれません(itemsとanItemはdict、titleはstringだとして)
prefを保存すると <key>items.anItem.title</key> というようにそのままkeyにされてしまいます。
どのへんが間違っているんでしょうか?
0725名称未設定
04/04/15 11:24ID:3HrQT3oPダルブクリックで名前変更するみたいです。
Finderのように時間を置いて2回クリックすると名前変更するようにして、
ダブルクリックではまた違う動作をさせたいのですが、どうすれば良いのでしょうか?
0726名称未設定
04/04/15 20:18ID:uGbcnDSoModel Key Pathはdictionaryを指定するんじゃなくてdictionaryのkeyを指定するんだ。
>>725
setDoubleAction:でダブルクリックしたときに呼び出すメソッドを指定。
0728名称未設定
04/04/15 22:08ID:ep3CGG5T>NSOutlineViewを使ってるのですが、どうもデフォルトでは
>ダルブクリックで名前変更するみたいです。
IBでアウトラインビューのヘッダをダブルクリックしてEditableのチェックを外す。
>Finderのように時間を置いて2回クリックすると名前変更する
自分でなんとかする
選択状態でさらにクリックされたら該当するセルを編集状態にする、ってところか。
セルを編集状態に切り替える方法は知らない。
調べたら教えてくれ。
>ダブルクリックではまた違う動作をさせたい
setDoubleAction:
0729名称未設定
04/04/15 22:58ID:YUjIVpkvええと、plistの中に
<key>items</key>
<dict>
<key>anItem</key>
<dict>
<key>title</key>
<string>XXXXXX</string>
</dict>
</dict>
こんな感じに設定が入っていて、UserDefaultController経由で
このXXXXXXにバインディングしたいということなんです。
Controller Keyはデフォで values になっていますから
values.items.anItem.title でXXXXXXが取れるかなと思うんですが...
0730名称未設定
04/04/15 23:31ID:cg9uYc0tplistをそういう構造にする必要があるのか。
バインディングしたいてことはkeyの名前は決め打ちなんでしょ?
<key>items.anItem.title</key>
<string>XXXXXX</string>
てすれば楽じゃん
0732名称未設定
04/04/17 12:47ID:VZY2HDFR0733名称未設定
04/04/19 21:50ID:c8vhbK9s(a)Cocoa Application としてIBを使って組んだプログラム。
(b)Foundation Tool として組んだプログラム。
(a)はダブルクリックで、(b)はターミナルからそれぞれ実行できるものとします。
(a)を起動しっぱなしにして、(a)の内部で必要な時に(b)を呼び出して実行する、
という連動方式を考えているんですけど、
(a)から直接(b)を実行するには‥‥どうすればいいのでしょう?
0735名称未設定
04/04/20 01:28ID:E+IgtF4ZappendStringなのですが最初UTF8をエンコーディングに使い、もしnilを返すようだったら
適当なエンコーディングを(MacJapaneseやMacRoman等)推測させたいのですが可能でしょうか。
@implementation NSMutableData (String)
- (void) appendString: (NSString*) value; {
[self appendData: [value dataUsingEncoding: NSUTF8StringEncoding]];
}
@end
0737名称未設定
04/04/20 16:52ID:RjwTIw59SafariやCocoMonarの初期設定みたいに、
アイコンをクリックするだけでぐにょ〜んとウィンドウが伸びちじみして
それぞれのウィンドウを下に表示するのはどうすればいいのでしょうか?
どうか教えてください!
0738名称未設定
04/04/20 17:04ID:jGlmBmYytypedef struct _NSSize {
float width;
float height;
} NSSize;
とありますが、例えば以下のようにして、構造体でオブジェクトを
扱うにはどうすればいいのでしょうか?
(以下の定義の仕方は正しいのでしょうか)
typedef struct _MYStruct {
MyObject *obj;
} MYStruct;
0739名称未設定
04/04/20 18:07ID:zTltcatD> (ry 構造体でオブジェクトを
> 扱うにはどうすればいいのでしょうか?
なぜそのような奇怪なことがやりたいのでしょう?
0742名称未設定
04/04/20 21:14ID:o/lO2gWjそれでできるだろ、きっと。
0743名称未設定
04/04/20 21:19ID:OoJ/C4R9NSWindowの
- (void)setFrame:(NSRect)frameRect display:(BOOL)displayFlag animate:(BOOL)animationFlag
試してないがたぶんこれだろう
0744名称未設定
04/04/20 22:11ID:o1a0IZh0>>736
有難うございますm(_ _)m。
呼び出して待つだけならSystem()、マルチタスクで動かすならNSTask()という感じでしょうか。
後者はタスク管理の壁がそびえ立ってますが、前者なら手近っぽいのでサンプル作ってみます。
探していたらexecve()というのが自分の求めている答えのような気がしてきました‥‥が、
これも試行錯誤してからですね。
0745名称未設定
04/04/20 22:30ID:6uwPzzuA初心者にはおすすめできないのでsystem()が手っ取り早い。
0746名称未設定
04/04/20 22:52ID:+G4q+HL9扱いはどうなっているの?
0748名称未設定
04/04/21 18:04ID:hmS4g+cvメニューやボタンからPanelを表示させるにはどうしたらよいのでしょうか?
0749名称未設定
04/04/21 20:44ID:0WfaqEPD具体的に書いたらどうか。
0750748
04/04/21 21:11ID:hmS4g+cvどういう風に・・・
例えばアバウトダイアログをデフォルトのではなく自作のを表示したり、
普通のパネルを出したりしたいので・・・
0752名称未設定
04/04/21 21:35ID:OS8Qkh41似た用途の関数にstdlib系とunix系があるんですね。
↓横道にそれます・・・
確認用の単純なサンプルを作ろうと思い、Foundation Toolで自動生成されるソースの、
NSLog(@"Hello, World!");の部分をNSBeep();に置き換えてみると、
エラー Undefined symbols:_NSBeep が出ます。
#import <Cocoa/Cocoa.h>や#import <AppKit/AppKit.h>などを試しても同様です。
何をimportすればいいのか、それとも方法が間違いなのか("Foundation" Toolという
プロジェクト区分が気にかかる……)、よく分かりません。
続け質問ですみませんが、指摘をお願いします。
0755名称未設定
04/04/22 12:40ID:xdUJmYNFimportとは別に、必要なフレームワークをプロジェクトに登録する必要がある。
/System/Library/Frameworks/Cocoa.frameworkフォルダを
External Frameworks and Librariesのところにドラッグ&ドロップする。
0756名称未設定
04/04/25 00:37ID:Ir6cr2JG>>754
やっぱそうですね。
>>755
ありがとうございます。frameworkの扱い方の何が自動で何が手動なのか
漠然としていたのですが、助言で視界が開けてきました。
ターミナル無しで実行を確認できるFoundation Toolを(NSBeep()も含め)
数種類作って、Cocoa Applicationからsystem( )で一行コマンドを渡して
それらを実行させてみてみました。問題なしです。
argumentを判別させて結果ファイルを吐き出すところまで動いたので、
あとは結果ファイルをCocoa Application側に読み込ませれば、双方向の
連動ができそうです。
皆様ありがとうございました。m(_ _)m
0757名称未設定
04/04/28 10:02ID:tfG0xXTyhttp://developer.apple.com/ja/documentation/cocoa/Conceptual/ObjectiveC/index.html
http://developer.apple.com/ja/documentation/japanese.html
0758名称未設定
04/04/28 14:08ID:1jltvPS7をぉやっとかぁ。
まぁ、原文と引き当てながら読んでいけば誤訳はなんとかなるって事で。
要するに無いよりマシってことで。
0759名称未設定
04/04/28 14:17ID:tfG0xXTy0760名称未設定
04/04/28 22:34ID:1jltvPS70761名称未設定
04/04/30 19:51ID:/MsFc1+IそれよりPDF版がないのはなんでじゃろ。
0762名称未設定
04/05/01 08:29ID:v9rMgDhI0763名称未設定
04/05/01 16:30ID:lNwaZkML英文のもCocoa関係はHTMLオンリーのが増えて来たね。
どうもPDFを晒しておくと自前印刷する奴ばかりで印刷物が売れないとか思ってるのか
オンライン参照しつつコード書けと言いたいのかわからんが。
PDFあると楽だよね。リファレンス系じゃなくてこういう読み物系は特に。
0764名称未設定
04/05/02 02:21ID:xa+EQfZwようは、テレビのスポーツ番組で解説者がやっているようなことをCocoaとQuickTimeをつかって
やりたいのだけれど誰か参考になるようなサンプルしりませんか?
0765名称未設定
04/05/02 03:55ID:WYaRraZShttp://developer.apple.com/samplecode/Movie_Overlay/Movie_Overlay.html
NSImageからMovieを作る
http://developer.apple.com/samplecode/CocoaCreateMovie/CocoaCreateMovie.html
0766名称未設定
04/05/02 19:58ID:MfIFBWD/0767名称未設定
04/05/02 20:17ID:VsbX5VBA0770名称未設定
04/05/05 14:27ID:k7HLPEP70771名称未設定
04/05/06 03:00ID:LFPiyUjY0772名称未設定
04/05/06 07:38ID:XqSDhuD10773名称未設定
04/05/07 01:41ID:exci8N7o0774名称未設定
04/05/07 09:54ID:2Lr+cUCq0775名称未設定
04/05/08 01:41ID:mMLkAO+e他のアプリケーションがアクティブで、
そのアクティブなウィンドウの座標やサイズを取得するにはどのようにしたらいいのでしょうか。
ご教授お願いします.
0776 ◆x3PtJI4Jik
04/05/08 02:33ID:evr+56Sy#import "Test.h"
@implementation Test
NSMutableString* stringer;
NSMutableArray* nanasisine;
int cnt;
- (IBAction)progress:(id)sender
{
NSString* bun;
NSString* a;
bun=[nanasisine objectAtIndex : cnt];
[stringer appendString : bun ];
[stringer appendString :@"¥n"];
[ writeTexts setStringValue : stringer ];
0777 ◆x3PtJI4Jik
04/05/08 02:33ID:evr+56Syif (cnt==5)
{
[endTexts setEnabled : NO];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Nanasisine"
value :nil
table : nil ];
[stringer appendString : a];
[writeTexts setStringValue : stringer ];
}
}
0778 ◆x3PtJI4Jik
04/05/08 02:34ID:evr+56Sy{
NSString* a;
cnt = 0;
stringer = [NSMutableString string];
nanasisine = [ NSMutableArray array];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Naa"
value :nil
table : nil ];
[ nanasisine addObject : a ];
0779 ◆x3PtJI4Jik
04/05/08 02:35ID:evr+56SylocalizedStringForKey : @"Nannka"
value :nil
table : nil ];
[ nanasisine addObject : a ];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Shindahouga"
value :nil
table : nil ];
[ nanasisine addObject : a ];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Shinoukana"
value :nil
table : nil ];
[ nanasisine addObject : a ];
a=[[NSBundle mainBundle ]
localizedStringForKey : @"Nee"
value :nil
table : nil ];
[ nanasisine addObject : a ];
}
@end
0780 ◆x3PtJI4Jik
04/05/08 02:37ID:evr+56Sy#import <Cocoa/Cocoa.h>
@interface Test : NSObject
{
IBOutlet id endTexts;
IBOutlet id writeTexts;
}
- (IBAction)progress:(id)sender;
@end
ちなみに、endTextsはボタンに
writeTextsはテキストフォームにつながってるアウトレットです
progress:はボタンをクリックした時に発動するアクションです
なぜかうまく動きません
0782 ◆x3PtJI4Jik
04/05/08 02:41ID:evr+56Sy2004-05-08 02:38:55.563 Foo[2581] Invalid parameter not satisfying: aString != nil
ボタンをクリックするとこんなエラーが出ます
ちなみに
そしてテキストフォームにはなんの変化も起こりません
0783名称未設定
04/05/08 02:59ID:n3L7Z4tvstringerとnanasisineを生成したときにretainしとけ
Objective-C をやり続けたいなら retain release alloc dealloc init〜 ファクトリメソッド
をしっかり学べ
0784 ◆x3PtJI4Jik
04/05/08 03:19ID:evr+56Syいまそれを試してみました
[stringer retain];
[nanasisine retain];
をそれぞれ
stringer = [NSMutableString string];
nanasisine = [ NSMutableArray array];
の後に入れてみました
でもやっぱり同じエラーが出ます
0786 ◆x3PtJI4Jik
04/05/08 05:03ID:evr+56Sy現在解決しました
あなたの発言がズバリでした
呼ばれてませんでした
原因を調べた所
×…-(void) applicationDidFinishLanching : (NSNotification *) aNotification
○…-(void) applicationDidFinishLaunching : (NSNotification *) aNotification
のミスでした
しかし、これってなんでメイクした時にエラーになんなかったんだろう...
0787名称未設定
04/05/08 10:52ID:DVaUkT/Dが何かのNotificationから呼ばれるかもしれないから。
0788名称未設定
04/05/08 10:56ID:2buZePqTエラーは出ないけど警告は出てるでしょ?
Obj-Cはダイナミックバインドがあるから、コンパイル時、リンク時に
存在しないメソッドを呼べるのでエラーにできないんだよね。
カテゴリがローダブルバンドル上に存在してるとかあるから。
0789名称未設定
04/05/08 17:22ID:YMMC0UeAすごく初歩なところでつまずいています。
簡単なサンプルを作ろうとしてボタンを配置したのですが、
そこからコネクションを張ろうと思い、コントロールキーを
押しながらドラッグしてもコネクションラインがでません...
本見ながらやってるので、見落としはないと思うのですが何か
設定がいるのでしょうか?
0791sage
04/05/08 21:23ID:zr47uqxF簡単なファイルダウンローダーを作ろうと思い、
NSURL *url = [ NSURL URLWithString : [ vUrl stringValue ] ];
NSURLRequest *req = [ NSURLRequest requestWithURL : url ];
NSURLDownload *dl = [ [ NSURLDownload alloc ] initWithRequest : req delegate : self ]
として、みんな自動でやってくれるので凄く便利なのですが、
User-Agentを残さないのも失礼なことと思いまして、
NSMutableURLRequestを使えばUser-Agentを設定できるかと思ったのですが、
サンプルコードもないし、どうにもこうにもなりません。
NSMutableURLRequestの使い方、ご教授願えないでしょうか?
0792名称未設定
04/05/08 21:51ID:BvQBHnDr0793789
04/05/08 23:29ID:YMMC0UeAいやーそれはなかったです。
試しにCocoa-Java Appでもやってみましたが、同じでした。
なんでですかねぇ・・・(鬱
0795 ◆x3PtJI4Jik
04/05/10 04:07ID:qK8/nGS9ttp://www.pandora.nu/tv/src/img20040510035842.sit
NSButton反応わるっ...
糞ゲーと化してしまったw
0796名称未設定
04/05/10 15:56ID:hX7fF32k作り、-drawInteriorWithFrameを上書きしてみました。
とりあえず望む通りの描画は出来たのですが、こんどはダブルクリックで
編集状態に持っていくことが出来なくなりました。
これを両立させるのってどうやればいいのですか?
NSTextFieldCellのサブクラスにしたのがいけないのでしょうか。
0797796
04/05/11 18:46ID:1wyLqoTpなお、編集状態に持っていける普通のセルはNSTextFieldCellで間違いないことは
その後の調べでわかりました。
かつ、NSTextFieldCellのサブクラスとして作っただけ(何も実装していない)のセルでも
やはり編集状態に出来ないということもわかりました。
編集状態に入る前に、セルの-setUpFieldEditorAttributesが呼ばれるらしいのですが
自前のセルの場合は、これを実装しても、ここに処理が飛んできてくれませんでした。
わざわざ「フィールドエディタをカスタマイズするならこのメソッドを上書きして」と
書いてあるくらいだから呼ばれるのが普通だろうと思ったのですが..,。
うーん、むずい。
0798名称未設定
04/05/11 18:54ID:+9vHBxme0799796
04/05/11 19:25ID:1wyLqoTp一応、NSTextFieldCellでなら普通に編集できているコードで、自前のセルに置き換えてるだけ
なので大丈夫かと思いましたが、念のため自前のセルを-isEditableに常にYESを返すように
してみました。
特に変化はありませんでした(T.T)
0800名称未設定
04/05/11 19:29ID:+9vHBxme-(void)awakeFromNib{
[[[hogeTableView tableColumnWithIdentifier:@"piyo"] dataCell] setEditable:YES];
}
こんな感じにしてみたらどうなる?
0801796
04/05/11 19:43ID:1wyLqoTpサブクラスを作るとデフォルトでeditableがNOにセットされているのでしょうか??
とにかくありがとう!!
0802名称未設定
04/05/12 04:05ID:s8Hz9LiT漏れもぷよ発売に合わせてゲームを作りたい訳だがココアからジョイパッドの入力って読めるのか?
ADCにあるRed_Rocket.sitはカーボンだがやっぱりカーボンから触らないと無理なのか?
0803名称未設定
04/05/12 23:48ID:gxwglvKWNSMatrixのなかにNSTextFieldCell。そのフィールドに入力が有ったらメソッド(?)を呼びたいのですが、
デリゲートをつかうんですよね?んでこの辺かなと、、、
-(void)textDidBeginEditing:(NSNotification *)notification
- (void)textDidEndEditing:(NSNotification *)notification
なんですが、ぜんぜん呼び出されません。
やったことはといえば
IBでNSMatrixからFile's Ownerに線を引っ張って、Outlet >> delegate
MyObject.mに
-(void)textDidBeginEditing:(NSNotification *)notification
{ NSLog(@"123456""); }
なんか基本的に間違ってますか?
0804名称未設定
04/05/13 01:05ID:cKKFd/ixNSControlTextDidEndEditingNotification
を拾ってくればいいんじゃないか。
0806名称未設定
04/05/13 10:45ID:3PJutXzE実はメインの Nib でFile's Owner が NSApplication。
0808名称未設定
04/05/13 13:15ID:YFI2H9knNSMatrixをサブクラス化。delegateと同名のメソッドが
定義されているのでオーバーライドしてdelegateに流す
とかすればいいかな?
0809807
04/05/13 20:31ID:SDTX2CLf適当なこと言ってスマソ。
でもNSMatrixは編集は感知しないんじゃないかなあ?
0810803
04/05/13 21:16ID:f0RPqIvWでもさっぱり意味が分かりません(笑)
>>804さん
-(void)textDidBeginEditing:(NSNotification *)notification
のかわりに
-(void)NSControlTextDidBeginEditingNotification:(NSNotification *)notification
ってことですか?やってもかわりませんでした。
>>805さん
インスタンスは、NSObjectのサブクラス(MyObject)のインスタンスを一つ作っただけです。
サブクラスはNSObjectのしか作ったこと有りません。っていうかまだ作る意味がわかりません。
>>806さん
Nibは一つしかありません。File's Owner は NSApplicationだとおもいます。だめなの??
>>808さん
NSMatrixをサブクラス化。んで、いろいろつないでみたんですけどさっぱりわかりません。
>>807,809さん
CocoaBrowserでNSMatrixのInstanceMethodsってとこみると-textDidEndEditingってのが
あるんだけどだめなのかな?
>>805,806,808あたりだと思うんだけど、むつかしいです。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
ってのは動いたんだけどな。う〜ん。本みてものってないし。
NSMatrixでNSTextFieldCellをたくさん作って、そこに数字をいれてtabKeyを押すと
その数字を評価してくれるってのを作りたいんですけど。
アフォでもわかるように説明もらえないでしょうか?
0811名称未設定
04/05/13 21:17ID:vzXdNwYa// matrix delegate
- (void)controlTextDidBeginEditing:(NSNotification *)aNotification;
- (void)controlTextDidEndEditing:(NSNotification *)aNotification;
Reference NSControlのDelegate Method Typesをみるよろし
matrixからdelegateにconnectつなげるだけでOk
0812807
04/05/13 21:38ID:SDTX2CLf>Nibは一つしかありません。File's Owner は NSApplicationだとおもいます。だめなの??
なんだ、つないでる先が違うよ。
MyObjectをdelegateにしたいのに、NSApplicationをつないでdelegateにしてもダメだろうに。
MyObjectをNSMatrixのdelegateにしないと。
0813803
04/05/13 21:47ID:f0RPqIvWやってみたけどやっぱりだめです。
NSMatrixのサブクラスのインスタンスは必要なんでしょうか?
NSTextFieldCellになんか書いてtabKey押せば呼び出されるはずなんですよね?
0814803
04/05/13 21:57ID:f0RPqIvWてんで見当違いのことやってたようでした。
>>812,813さんのいうようにやったらできました。
そうか、そうやってインスタンスってのが増えていくんだな。
ほうほう。なんかうれしいね。
ありがとうでした。
0815名称未設定
04/05/13 22:02ID:cKKFd/ixdelegate とかの基本的なことは載ってるだろうし。
0816796
04/05/13 22:27ID:2lTJ9fe+自前のセルを描画する時って、強調表示されているかで色を塗り分けないと
いけないですけど、、ハイライト中の2種類の状態、つまり
「ウインドウがアクティブ&コントロールが選択中」と
「ウインドウがデアクティブ&コントロールが選択中」というのは
どうやって見分けるのでしょうか。
とりあえず、isHighlitedで条件分けすれば、選択中かどうかはわかるの
ですが、これではハイライトの2種類の状態を塗り分けることができません。
なにかisHighlited以外の判定メソッドなんかがあるのでしょうか。
0817名称未設定
04/05/13 23:58ID:vzXdNwYa// cellのサブクラス
-(void)drawWithFrame:(NSRect)rect inView:(NSView *)controlView {
if ([self isHighlighted]) {
NSColor * color = [self highlightColorWithFrame:rect inView: controlView];
}
}
NSTableViewでテスト
ウインドウの状態によってhighlightColorWithFrameが
(NSColor*)alternateSelectedControlColor(active)
(NSColor*)secondarySelectedControlColor(deactive)を切り替えて返しますね。
0818816
04/05/14 00:40ID:cLk32CuJおぉ、ありがとうございます。
質問の内容はシステムカラーをそのまま使う方法なのではなかったのですが
デアクティブのときのカラーがsecondarySelectedControlColorだというのを
教えていただいたおかげで突破できました。
-(void)drawWithFrame:(NSRect)rect inView:(NSView *)controlView {
if ([self isHighlighted]) {
if([self highlightColorWithFrame:rect inView: controlView]==[NSColor secondarySelectedControlColor])
//デアクティブの時の描画
else{
//アクティブの時の描画
}
}
}
こんな感じでいきました。とりあえず動いています。
ありがとう〜。
0819817
04/05/14 20:06ID:94j9469S817の方だと他のviewにフォーカスが移るとinacitveになるので、windowのactive, inactiveのみで選択色をコントロールしたい場合
if ([self isHighlighted]) {
if ([[controlView window] isKeyWindow]) {
color = [NSColor selectedControlColor]; // active color
} else {
color = [NSColor secondarySelectedControlColor]; // inactive color
} }
の方がいいかな。
0820名称未設定
04/05/17 19:17ID:CEXQPjwqモディファイアキーを押したかどうかをチェックするいい方法は
ないですか?
senderのNSMenuItemもNSMenuもResponderではないのでどうやって
取り出したらいいものか・・・。今はCarbonと混在させてGetKeys()
で取り出すという姑息で感心しない手段を使っています。
0821名称未設定
04/05/17 19:28ID:0WWOwyZ60822名称未設定
04/05/17 19:29ID:sG7Vk7PFunsigned int flags=[event modifierFlags];
こんな感じ。
0823名称未設定
04/05/17 19:29ID:sG7Vk7PF0824名称未設定
04/05/17 19:47ID:a8odNQwK始める前からモディファイアキーを押してないと取れない
IBのTreat as an alternate to the previous itemを利用して
ふたつMenuItemを作って別のactionに繋げれば楽だしメニュー
の表示も動的に変わって素敵(panther必須だっけか)
0825名称未設定
04/05/17 19:48ID:KbdsjCcvうむ。Treat as alternate...はPanther以降だね。
0826名称未設定
04/05/18 00:43ID:e1SRKFuU0828名称未設定
04/05/18 03:46ID:e1SRKFuU失礼しました。
0830820
04/05/18 11:14ID:rfdShUYVNSEventを使う場合、824が書かれたようにメニューをクリックする前に
モディファイアキーを押していないとイベントを取れず、また、押していた
場合でもメニューをプルダウンしている時にモディファイアキーをはずすと
逆にイベントが残ってしまうという問題がありました。難しいですね。
そこで824の提案のTreat as an alternate to the previous itemを
使うことにしました。ありがとうございました。
0831名称未設定
04/05/18 23:47ID:IiHkJIBghttp://www.kobunsha.co.jp/ じゃ繋がらないが...
0832名称未設定
04/05/19 22:26ID:7O9X0qdYその際、文字列を "abc...ghi" といった形で省略して表示させたいのですが、
どのようにすれば可能でしょうか。
Finder のリスト表示などは、そのような形の省略を行っているので、
どこかに設定する項目があるとは思うのですが。
0833832
04/05/19 22:55ID:7O9X0qdYお騒がせしました。
0834名称未設定
04/05/20 07:38ID:JDSX3JKR0835名称未設定
04/05/21 10:43ID:Ai8hXPHaretainCountはdealloc後では使えませんし、deallocしてもobjectの
ポインタは残骸として残っているのでobjectがnilかどうかでチェック
できません。
今はreleaseでdeallocした後、objectの変数にnilを入れてますけど
他に方法はないのでしょうか?
0836名称未設定
04/05/21 18:22ID:iF+he85U>objectの変数にnilを入れ
それでいいんじゃない。
Objectの実態はCの構造体のポインターだから、インスタンスがなくなったら
存在自体がなくなるわけで、そうするしかないでしょう。
GnuStepならisaが0xdeadfaceになるようだが、Cocoaだと0x357bになるのか?
0838名称未設定
04/05/21 19:56ID:u8174Vfd0839名称未設定
04/05/21 19:56ID:yQJ5zU8C>解放されたことを確認する
ということであればdeallocにNSLog入れるかNotificationを発行するか。
ポインタが指しているオブジェクトが生きているかどうかを見分けるのは無理じゃない?
解放されていたら何をポイントしているのかまったくわからないわけだから。
0840名称未設定
04/05/21 19:59ID:yQJ5zU8Chttp://www.google.com/
0842名称未設定
04/05/21 21:59ID:RMGaMnFz16進数でありながら単語っぽい、すごい発想だなぁ。
0844名称未設定
04/05/22 14:00ID:q+GDWRyK別にnil代入にこだわらなくても自分で管理しやすいように設計すれば良い。
ただ、AutoreleasePoolにまかせられない局面が多発するような事態は
設計がダメダメな可能性が大
0846名称未設定
04/05/24 17:30ID:JgmoDEsJ以下のファイルを MyClass.h とします。
#import <Carbon/Carbon.h>
class MyClass
{
public:
MyClass();
~MyClass();
};
としまして、MyDocument.m (Objective-C)に
#import "MyClass.h"
と表記してコンパイルしても
error: parse error before "MyClass"
error: syntax error before '{' token
とかいうエラーが出てコンパイルできません。
一体どうすれば良いのでしょうか・・。
0847名称未設定
04/05/24 17:50ID:ObOnTGkkソースファイルの拡張子を .mm にする。次が参考になるかもね。
Cocoa_With_Carbon_or_CPP
ttp://developer.apple.com/samplecode/Cocoa_With_Carbon_or_CPP/Cocoa_With_Carbon_or_CPP.html
0848名称未設定
04/05/24 18:45ID:o878uCjwたとえば、mkinoさんとこのObj-C最適化のとこに載ってるみたいな、
クラスメソッドでオブジェクトを作らずに、allocとreleaseを使うとか
autoreleaseを使わないとか。そんな感じの。
0849名称未設定
04/05/24 22:55ID:ByojBbx+とかをつかって、遅い原因が何かを調べる。
原因があってそして個々に対策がある。
それがいやならG5 3GHzが出るのをまてば、お手軽に動作速度は向上する。
0850名称未設定
04/05/25 00:51ID:jw/iO6MI小手先の最適化よりもアルゴリズムの見直しが先決。
以前見たのでは配列の先頭から1個ずつちんたら検索せんでも
バイナリサーチすりゃいいとか、ハッシュテーブル使えとか
アドバイスしたら?はぁなにそれ?とか論外な状況だったことあり。
0851848
04/05/25 08:03ID:rSbyyP2zCHUD、使い方がよくわからん・・。何かで解説が見れないものだろうか。
0852名称未設定
04/05/25 10:17ID:JiJJrptnご自身が示したHMDTの訳物の最初の方に書いてる Sampler を使うのが第一歩。
完全なOOP(?)を目指すのか、速度のためにそれを犠牲にするか。
Obj-Cの場合、ダイナミックバインドのおかげでメソッド化せずに、
コピペしまくるほうが格段に速くなったりしますからね。
ある意味コピペ厨最強言語。(w
0853名称未設定
04/05/29 11:30ID:vFrIZuF1アルゴリズム改良にも、どこが遅いのかを知るのは重要。
Shark上げといて、ターゲット実行中(重い処理中)に、Start=>5秒後=>Stopでサンプリング。
あとは見りゃわかるでしょ。
0854名称未設定
04/05/29 16:06ID:+IRhfLe+どんどん追加するから、追加でオーバーする分を
superViewをsetFrameSizeでサイズ変更ってやると
サイズ変更で増えた分の領域になにも表示されなくなるのよね。
再描画のタイミングを何回も見直したんで、その問題じゃないと思うんだけど。
リサイズしないで、superViewのサイズを2000とかにしておくと
追加されたViewは問題なく表示されるので、追加する部分の問題でもないと思う。
順番的には、
追加後のsuperViewのサイズを先に計算
superViewをリサイズ
subViewを追加
ってやってます。
誰かなにかアドバイスください。
0855名称未設定
04/05/29 17:54ID:2wJm4qz6と聞いてみる。でもやっぱりC++とかじゃないと無理なのかな?
0856名称未設定
04/05/29 18:04ID:ItIoR4Uj全然分からないが、
-(void)setNeedsDisplay:(BOOL)flag;
を YES にするとかは?
>>855
作れるだろうが、既に存在するものを改めて作ってもなあ……
0861名称未設定
04/05/29 21:22ID:cqytOwaCXgridでおながいします。
0862名称未設定
04/05/30 06:35ID:uvDjaKplべつにC++で普通に開発できますよ。
正確にはC++じゃなくてObjective-C++なんだけど。
まあ、win板で「Cで開発って可能ですか?」と言っている奴もいるしなあ。
0863名称未設定
04/05/31 15:42ID:EQ4/rYJQ具体的には自作のNSControlで値を編集する時
準拠するにはどうしたらいいのかわからないんですが
0864名称未設定
04/05/31 15:51ID:EQ4/rYJQcommitEditing
objectDidEndEditing:
discardEditing
objectDidBeginEditing:
の四つのメソッドの使うタイミングが掴めないんです。
0865名称未設定
04/06/01 00:17ID:vaCykl2cASSで皮でも被せとけ。
0866名称未設定
04/06/01 21:24ID:uC37oA7hDevTools付属のサンプルSketchは見てみたんですが、
NSImageやCGContextを経由しているようには見えませんでした。
文字を書いたOpenGLのテクスチャを作ろうと思ってます。
0867名称未設定
04/06/01 22:46ID:Cpyg4Er3NSViewのサブクラス
- (void)drawRect:(NSRect)rect {
NSRect imagerect = {0, 0, 128, 128};
NSImage * image;
NSFont * font = [NSFont systemFontOfSize: 14];
NSDictionary * fontdic = [NSMutableDictionary dictionaryWithObjectsAndKeys: font,
NSFontAttributeName, [NSColor blackColor], NSForegroundColorAttributeName, nil];
image = [[NSImage allocWithZone:nil] init];
[image setSize: imagerect.size];
[image lockFocus];
[[NSColor blueColor] set];
[@"Draw String" drawAtPoint: NSMakePoint(0, 0) withAttributes: fontdic];
[image unlockFocus];
[image drawAtPoint:NSZeroPoint fromRect: imagerect operation:NSCompositeSourceOver fraction:1.0f];
}
NSView&OpenGL関連だがこれ読んでおくといいかも
ttp://developer.apple.com/ja/qa/qa2001/qa1325.html
ttp://developer.apple.com/qa/qa2001/qa1325.html
0868866
04/06/02 04:21ID:qsJaWMAbできないみたいだったのでスルーしていました。
今回、僕がわからなかったのは、
NSImageにlockFocusすることで描画開始できるってことだったみたいです。
とても参考になりました。ありがとうございます。
0869名称未設定
04/06/04 18:36ID:oCyT3pcQ0870名称未設定
04/06/07 18:11ID:JO+qKJgn0871名称未設定
04/06/07 18:56ID:1yeWGMtd俺も知りたい。
http://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/600/644.html
のWWDCのセッションというのはどうなったんだろう?
いまだにNDAなのかな?
0873名称未設定
04/06/08 00:57ID:HyUvPUyC早くできるようになると良いね。
漏れは描画させた後編集の必要が無いので自分で強引1文字つづ描画しました。
ATUIでは確かに実現できるらしいが、サンプル見て挫折。
0874名称未設定
04/06/08 06:18ID:e5RS5xq6さすがにTigerでは縦書きも実装されると思いますが。
>漏れは描画させた後編集の必要が無いので自分で強引1文字つづ描画しました。
この場合、縦書き用のグリフまたはCIDはどうやって取得するのでしょうか?
0875869
04/06/08 17:12ID:iTkMcTXE>>873さんではないんですが、多分
-drawGlyphsForRange:(NSRange)range atPoint:(NSPoint)point @ NSLayoutManager
でrange=NSMakeRange( location, 1 )で一文字づつ書ける。
グリフのIDはわざわざ取得しなくてもいいかも知れないです。
ただ、これで縦書きすると、一文字分グリフの位置がずれてしまうという面倒が在り、
さらに、縦書きエディタを作ろうとすると、ATOK、或いはプラットフォームの
漢字かな変換サーバーをトラップする時に、NSTextViewのmarkedTextの位置に下線(縦書きだと横線)を
引いたりする処理がやたら面倒。
アップルがNSLayoutManager、NSTextContainerのNSLineSweepDirectionのNSLineSweepDownを
早くサポートしてくれればいいんですが。
0876名称未設定
04/06/08 17:35ID:e5RS5xq6確かに一文字毎に描画できますが、これでは横書き用のグリフを表示してしまい約物とか平仮名カタカナ等縦と横で字形が違う文字で問題になります。
そこである文字コードに対応する縦書き用字形のグリフIDが欲しくなりますが、Cocoaではその方法が提供されていない様ですので諦めていました。誰かご存じないですか?
やっぱりATSUIを直接触らないとダメなんでしょうかね。
0877869
04/06/11 02:13ID:yaV8bhe9今こそこそ仕事の後ドキュメントプリントしながら勉強してまつ。
CocoaからMacプログラムはじめたのでCarbonはさぱーり。
今日は眠いんで寝ますがCocoaからもCarbon呼べるみたいなので、
やり方分かったら書き込みます。
0878名称未設定
04/06/14 00:28ID:m5gE1MpPsocketからNSFileHandleを取得して、そこに -writeDataしてるのですが、送信途中で
相手から接続が切られた場合、SIGPIPEが発生して強制終了させられてしまいます。
ググって見たところ、このSIGPIPEは無視するのが一般的だそうですが、writeDataの時の
SIGPIPEを無視する方法が分かりません。
NSFileHandleは諦めて、send()でMSG_NOSIGNALを指定すれば無視できるらしいと知り
やってみましたが、MSG_NOSIGNALがOSXでは使えないようでコンパイルが通りませんでした。
これってどう解決したら良いのでしょうか?
0879869
04/06/14 05:55ID:rAuKGJ6T失礼な質問かもしれませんけど、
signal()関数にSIGPIPE用のハンドラ指定してます?
#include<signal.h>
#include<errno.h>
extern int errno;
void sigpipeHandler( int signo )
{
return; // 無視
}
int main(void) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
errno = 0;
if( signal( SIGPIPE, sigpipeHandler ) == SIG_ERR )
{
if( errno != 0 )
printf("Error: %s\n", strerror(errno) );
else
printf("Unknown error\n");
}
// TODO
これでとりあえずは無視されると思います。
NSFileHandleが-writeData:でサブプロセス、又はサブスレッドを作成しててもその作成前に
シグナルハンドラを指定してやれば、それがそのまま受け継がれるはず。
シグナル関係はピアソンの詳解UNIXプログラミングの10章を参考にするといいはずです。
つかFoundation Kit、シグナル処理用のメソッドを
Target-Selectorの指定でレジスタできると便利と思うんだけど。
@protocol NSSignalHandlerまだー?
0880名称未設定
04/06/14 22:57ID:wyXJC9gtヒレガスたん、めちゃくちゃ男前だねw
0881名称未設定
04/06/14 23:38ID:8JjtAan70882878
04/06/15 00:00ID:vGxvf9qjありがとうございます。無事、無視してくれるようになりました。
それでもデバッグ中たまにSIGPIPEで落ちるのだけど、これは私がシグナル関係を全く知らない
ためにきっと変な扱いをしてるのでしょう。
ネットワークプログラミングも、やってみれば何とかなるものですね。
やる前はもっと敷居が高いかと思ってました。NSFileHandleのおかげでもあるけど。
あと、おすすめの本(本、ですよね?)はぜひ買って読んでみます。
0885869
04/06/15 10:39ID:UwK+DliKどういたしまして。詳解UNIXは本ですよ。
http://www.pearsoned.co.jp/washo/unix/wa_uni12-j.html
>>880
スティールボールランに出てる人ですか?
0886869
04/06/15 15:25ID:UwK+DliK縦書き用のグリフじゃないかもだけど、NSGlyphのグリフIDなら、
NSFontの内部メソッド_defaultGlyphForChar:で入手できるみたいでつ。
パブリッククラスなら、
#include<objc/objc-class.h>でずるして、
void *iterator = NULL;
struct objc_method_list *m_list = NULL;
int i;
while( ( m_list = class_nextMethodList( theClass, &iterator ) ) != NULL ) {
for( i = 0; i < m_list->method_count; i++ ) {
struct objc_method method = m_list->method_list[i];
SEL method_sel = method.method_name;
NSLog(@"%@\n", NSStringFromSelector(sel) );
}
}
で内部メソッドも入手できるっぽい。
ただ、これだとグリフの描画はNSBezierPathを使うことになるはず。
CocoaPrograming.netのサンプルの14章のTextRenderingを参照してください。
本もってなくてもサンプルはダウンロードできます。
0887876
04/06/15 16:56ID:2+/Z2c4tレスありがとうございます。Cocoa Programingは私も持っているのですが必要に応じて拾い読みしかしていないので、この部分はあまり読んでいませんでした。
そこでじっくり読んでみましたが、残念ながら_defaultGlyphForCharでは縦書き用グリフは無理みたいですね。指定できないですから。
ちなみに現在グリフIDとそれの描画はNSLayoutManagerの以下のmethodを使っています。
- (NSGlyph)glyphAtIndex:(unsigned)glyphIndex;
- (void)showPackedGlyphs:(char *)glyphs length:(unsigned)glyphLen glyphRange:(NSRange)glyphRange atPoint:(NSPoint)point font:(NSFont *)font color:(NSColor *)color printingAdjustment:(NSSize)printingAdjustment;
Cocoaでこの問題をクリアにコーディングするにはNSGlyphStorageのlayoutOptionsに縦書きが追加される事が必要なのかなと考えておりまして、Tigerに期待している状態です。
Tigerのリリースが遅いようならATSUIを勉強しようかな。
0888878
04/06/16 21:26ID:rpIphs7Rで作ろうと思ったのですが、2G以上のデータは作れないとかの制限があったりしますか?
どちらのメソッドも2G以上のファイルを指定するとnilしか返ってこないみたいなのですけど・・・。
こんなもの?
0889888
04/06/16 21:28ID:rpIphs7R0890名称未設定
04/06/16 21:30ID:qGMX3GHmhttp://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSData.html#//apple_ref/doc/uid/20000172/CIAEAJGI
に
>An NSData object stores immutable data in the form of bytes.
>The size of the data is subject to a 2GB limit.
って書いてあった。
0891888
04/06/16 21:50ID:rpIphs7Rありがとうございました。
さて、どうしようかな。CFDataでも作ればいけるのだろうか。
がんばって調べてみます。
0892869
04/06/18 09:23ID:+PWzOO82サンプルあった。6GBオッケー。
http://developer.apple.com/samplecode/MapLargeFile/MapLargeFile.html
ただ、これUnixのシステムコールのmmap呼んでるだけなので、
void*型のバッファから、ファクトリメソッドでNSDataやCFData作ろうとしてもエラーになるかもしんない。
いまソースコンパイルできる状況に無いんであとはわかんないでつ。
NSDataのデータの限界量はリソースリミットいじっても変わんないんだろうか?
0893名称未設定
04/06/19 10:40ID:W1DLEpfB質問させて下さい
テーブルビューに表示させたテキストを
ダブルクリックで選択して、テキスト内容を変更したいのですが
どうすれば良いのでしょうか?
0894名称未設定
04/06/19 10:48ID:vnvCriX21. TableView の dataCell の isEditable を YES にする。
2. -(void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex; を TableView の dataSource に実装する。
0896名称未設定
04/06/19 17:40ID:VspCrrlGいきなりつまずいたので少し質問させてください...
コード打ち込み終わりビルドすると、
Linking/Users/×××/test/build/test.app/Content/MacOS/test(1個のエラー)
can't locate file for:-Icrt1.o
とでてコンパイルできません(泣
(×××はユーザー名、testはアプリ名です)
そんなファイル探してもないし...
だれか解決法しっていたらおしえてくださひ...
0897名称未設定
04/06/19 17:45ID:3QfztTHmプロジェクトの位置を変えてみるとかしてみては?
見当違いだったらすまぬ。
0898名称未設定
04/06/19 18:42ID:xpXNCezg打ち込んだコードを晒せ。
0899名称未設定
04/06/19 19:27ID:VspCrrlG全部英語にかえても駄目でした...
>>898
どんなコードでもエラーが出るんです(汗
極端な話、雛形をコンパイルしてもでます...
環境がおかしいんでしょうか?
0901名称未設定
04/06/19 20:51ID:3szCbxRHどうしたらいいんでしょうか。
0902901
04/06/19 23:19ID:3szCbxRHでできたわ。
調べるのに一苦労。みんなどうやって調べてるの?
0903名称未設定
04/06/19 23:59ID:vnvCriX2あるいは、その逆。
0904888
04/06/20 18:18ID:1EkQRQzH困ってる本人が見つけられなかったものを見つけてしまうなんてすごいすね。
おそらく現在NSDataを使ってるメソッドは、unixのシステムコールで代用が利くと思うので
なんとかいけそうな感じです。
あと、知ってる人がいたら自分のIPアドレスを調べる方法を教えてくれるとうれしいです。
SystemConfiguration.frameworkの方でシステム環境設定のネットワークの「IPアドレス」欄に
直に書いてあるアドレスは読めそうなのですが、DHCPで割り当てられたアドレスの取得方法が
わからないです。(SystemConfigurationではDHCPで取得する、ということしか書いてない?)
0905名称未設定
04/06/20 18:51ID:H+gdt0eB0906904
04/06/20 20:55ID:1EkQRQzH即レスサンクスです!
NSHost *host = [NSHost currentHost];
NSArray *adressArray = [host addresses];
で、無事いけました。こんなに簡単だったとは・・(汗)
0907名称未設定
04/06/21 06:27ID:/UciLCtp-Icrt1.oじゃなくて-lcrt1.oだろうけど、それ、OSはプリインスコ? だったらOSをCDから
入れ直せば(復元じゃなくて)直るかも。それか10.3ならXcode 1.2を入れれば直るかも。
あるはずの/usr/lib/crt1.oが無いってことだと思うんだけど。
0908904
04/06/21 22:55ID:RhVacwK0Cocoaで、NSImageからJPEGのデータを作成するには、
[[ NSBitmapImageRep alloc] initWithData : [anImage TIFFRepresentation]]とかして、TIFF
に変換したあと、[ imageRep representationUsingType:NSJPEGFileType properties:dictionary]
などとしないといけないようですが、ここで作ったImageRepがいつまでたっても解放されて
くれないようです。
メモリリークにもなってないみたいなのに、画像を一枚変換するごとに5MBづつアプリケーション
の使用メモリが増えていく・・・。なんとかなりませぬか。
周辺コードはこんな感じです。
image = [[NSImage alloc] initWithContentsOfFile:anPath];
imageRep =[[ NSBitmapImageRep alloc] initWithData : [image TIFFRepresentation]];
[image release];
[ imageRep setAlpha:NO];
returnData =[ imageRep representationUsingType:NSJPEGFileType properties:dictionary];
[imageRep release];
0909904
04/06/21 23:20ID:RhVacwK0今検証していて気づいたのですが、いつまでたっても解放されないというのは正確ではなく
そのアプリケーションをアクティブにしたら200MBのメモリが一気に解放されました。
いままでtopで監視してただけなので気づきませんでした。
でも、サーバーとして作っているのでアクティブにしないと解放されないのでは困ってしまいます。
強制的にリフレッシュ(?)するような方法ってあるのでしょうか。
0910名称未設定
04/06/22 00:05ID:ZmPwSPFB想像で済まないが、
returnDataが AutoreleasePoolに入っていて、Eventが来た(アクティブ)時に解放されている
かな?
これが当たりなら、次のどちらかをやってみる
1.returnDataがループにあるんなら、ループ内でローカルなAutoreleasePoolでかこってみる。
2..returnDataがAutoreleasePoolに入らないように実装する。
0911904
04/06/22 00:49ID:KB8/D6jW今回は1で解決しました。
returnDataは直後でそのまま返り値として使われているのですが、その戻っていった先のメソッド
の中を局所的な自動解放プールでかこってやればすぐに解放されるようになりました。
うーん、Cocoaは奥が深い。
0913名称未設定
04/06/22 17:11ID:6uje2EVLNSToolbarItem* toolbarItem;
toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemId] autorelease];
NSPopUpButton *button = [[NSPopUpButton alloc] init];
[[button cell] setControlSize:NSMiniControlSize];
[button addItemWithTitle:@"Item1"];
[button addItemWithTitle:@"Item2"];
[toolbarItem setView:button];
みたいな感じにしたのですが、これだと文字の大きさが大きいままなのです。
文字も周りに合わせて小さくするにはどうすればいいのでしょうか?
また、選択が変更された場合にメッセージを送るにはどうすればいいのでしょうか?
0914名称未設定
04/06/22 17:49ID:vmRhp+Veやった事無いですがfontのサイズを落とす必要があるのでは。私はPopUpButtonをIBで用意したので簡単にMiniサイズに変更できました。
>選択が変更された場合にメッセージを送るにはどうすればいいのでしょうか?
Action methodを用意してsetAction:,setTarget:で設定すればOKかと。
0915名称未設定
04/06/23 20:01ID:rR3wcvar作っているのですが、カスタムビューがスクロールビューのコンテンツ
よりも小さい時、余白の部分がグレーで表示されるのですが、このグレー
を変更させる方法はありませんか?
貼付けたカスタムビューもdrawRect:内でEraseRect()で消去しないと
グレーのままです。毎回EraseRect()を呼び出すのもみっともない・・・
0916名称未設定
04/06/25 19:32ID:OSVaJly4エロい人説明して...
0917名称未設定
04/06/25 19:32ID:OSVaJly4NSDistributedNotificationCenterのNSNotificationSuspensionBehaviorの4つの定数の意味が全然分かんない...
エロい人説明して...
0918名称未設定
04/07/01 13:46ID:8TFXQYnF0920名称未設定
04/07/02 01:30ID:eckU6uvBNSString *s = @"test";
[s drawAtPoint:NSMakePoint(0,0) withAttributes:nil];
こんな感じで文字列は描画できるわけだが、
これだと、左の点から右に文字列が描画されていくよね。
それで、質問なのですが、
「指定した点を中央として、文字列を中央寄せで描画するには
どうしたらいいだろうか?」
もしくは、
「文字列の描画するときの、文字列全体のピクセル幅の求め方」
分かる人お願いします。m(_ _)m
0921名称未設定
04/07/02 02:00ID:6uEkK0ym>文字列を中央寄せで描画する
指定した点.x -= 描写したい文字列のwidth / 2;
>「文字列の描画するときの、文字列全体のピクセル幅の求め方」
単一フォントなら
width = [nsfont widthOfString: 描写したい文字列];
使ったことないけどNSAttributedStringなら
-(NSSize)[NSAttributedString Additions size];
-(NSSize)[NSString Additions sizeWithAttributes:(NSDictionary *)attributes];
ですかね。
0922名称未設定
04/07/02 02:06ID:2G/RgjVndrawAtPoint:withAttributes: ではなく、
drawInRect:withAttributes: を使ったらどうだろうか。
1. 指定した点が中央になるように Rect を配置する
2. Attributes の属性として中央寄せの NSParagraphStyle を与える
てな感じで可能だと思うが。
0924名称未設定
04/07/02 02:53ID:6TJ7jXed「文字列の描画するときの、文字列全体のピクセル幅の求め方」
は[s sizeWithAttributes:nil]でどうでしょう?
これで良ければ
「指定した点を中央として、文字列を中央寄せで描画」
も出来るはず。
0925名称未設定
04/07/02 08:44ID:hBhQFrgIdrawInRect...で文字列を表示するときに、システムの設定に関わらず
アンチエイリアスを切る方法はどうやればいいのでしょう。
図形を描画するときにはNSGraphicContetxtでアンチエイリアスを切
れるようですがこの場合は効果ありませんでした。
0926名称未設定
04/07/02 15:40ID:R9IqcnvGSCNibObjectInfo
ってなんですかね。
検索しても一件もヒットせず。
0927名称未設定
04/07/02 22:48ID:u1N3GPvT>「文字列の描画するときの、文字列全体のピクセル幅の求め方」
ここにいる懸命なプログラマの人にはわかっていると思うけど、
もちろん「ピクセル幅」はそれでは求められないですね。
0928921
04/07/02 23:08ID:6uEkK0ym-(NSSize)[NSAttributedString Additions size]; × 互換維持用ってドキュメントにあった。
-(NSSize)[NSString(Additions) sizeWithAttributes:(NSDictionary *)attributes]; ○
ノイズ スマソ
0929921
04/07/02 23:37ID:6uEkK0ym[nsfont widthOfString: 描写したい文字列]; × 互換維持用ってドキュメントにあった
> -(NSSize)[NSAttributedString Additions size]; × 互換維持用ってドキュメントにあった。
これはなかったことに ...
0930924
04/07/03 09:39ID:5KXitfUYそうですか・・・。では正しい方法を教えてください。
0932924
04/07/03 22:01ID:5KXitfUY文字列のアンチエイリアスはNSGraphicsContextで切れますよ。
↓こんな感じでどうでしょう?
- (IBAction)test:(id)sender
{
NSGraphicsContext *gc = [NSGraphicsContext currentContext];
NSString *s = @"test";
[self lockFocus];
[gc setShouldAntialias:NO];
[s drawInRect:NSMakeRect(0,0,200,200)
withAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Helvetica" size:50]
forKey:NSFontAttributeName]];
[self unlockFocus];
}
0933925
04/07/03 22:43ID:+FmT0CBPあれ、これでいけましたか?
こちらではうまくいかないのですが・・・。
違いと言えば、こちらではNSImageをallocして、それにlockFocusして、setShouldAntialias
してから文字列を描画していることくらいだと思うのですが、うまくいきません。
もうすこし調べてみます。ありがとう。
0934932
04/07/04 00:27ID:CMWl3gpF補足ですが
上のメソッドはNSViewを継承したクラスに記述したものです。
したがって,lockFocusはNSViewのものが呼び出されています。一番の違いはここのような気がします。
0935名称未設定
04/07/04 01:24ID:a/NWLP0WNSImage を lockFocus した"あとに" カレントグラフィクスコンテクスト を取得しましょう。
NSGraphicsContext の currentContext メソッドは現在フォーカスを持つグラフィクスコンテクストを取得します。
0936925
04/07/04 07:53ID:dE9ocDtU>currentContext メソッドは現在フォーカスを持つグラフィクスコンテクストを取得します
なるほど、そういわれれば納得。
いろいろありがとうございました。>>932,935
0937名称未設定
04/07/04 23:28ID:REV1lBkGアウトラインビューで指定したアイテムを選択させたいのですが、
どうもうまくいきません。
テーブルビューでは行の番号で指定して選択できたのですが、
アウトラインだとその方法ではできませんでした。
助言お願いいたします。
0938名称未設定
04/07/06 14:41ID:DL0Az12d落としてきたものの、解凍して出来たソレは何をどうしたらいいの
かゼロから勉強せねば訳の分からぬ世界でした。
こちらのスレを参考に、頑張ってコンパイルまでたどり着けるよう
頑張ります。
0939名称未設定
04/07/06 14:49ID:DL0Az12dまずはオライリーのCocoa本を探しに行かねば。
0941名称未設定
04/07/06 15:59ID:DL0Az12d恥ずかしながらそういった事さえ分かっておりませんでした(Xcodeで
Cocoaアプリケーションを自分でも作れるらしい、程度の考え方でした)。
現在Photoshop Elementsの「Web書き出し..」.で作成したGIFファイルを
PIXTURE STUDIOにて配付されているgif2png 2.3.2でPNGに変換する方法
をとっている(二度手間ですが、不要なヘッダの取捨選択やガンマ値チャ
ンクを書き込めたりWeb書き出しのPNG保存より小さく保存できるため)の
ですが、この工程をgif2pngそのものをCocoaアプリにする事でAppleScript
なりアクションで制御出来ないだろうかと思ったのです。
0942940
04/07/06 16:09ID:iszmCYsz>ですが、この工程をgif2pngそのものをCocoaアプリにする事でAppleScript
gif2pngがシェルのコマンドなら、そのままAppleScriptから
呼び出しできますよ。多分。
http://developer.apple.com/ja/technotes/tn2065.html
画像の合成とか必要なら、
http://www.google.com/search?q=imageMagick&num=100&hl=ja&ie=UTF-8&lr=lang_ja&sa=X&oi=lrtip7
ImageMagickなんてどうでしょう。
AとBの画像を合成して、tif書き出しなんかを行った事あります。
ただ少し遅かったですけど。
あと依存するライブラリがヤヤコシカッタような・・・。
cocoaな話であれば、合成/加工からファイルの生成までの
一連の自動化を行うアプリを作るのなんて面白いかも。
0943名称未設定
04/07/09 01:44ID:RpoFYEqPScrollVIew内のViewに画像を多数表示させたいんですが
いいサンプルか書籍はありますか?
自分でも挑戦してみたんですがスクロールさせると描画が乱れてしまいます。
0944869
04/07/10 16:12ID:AmAb0xQt固定サイズのサブビューをぺたぺた貼っていくのがはやいかもしんない。
変な例だけどDeveloper/Sample/AppKitについてるテキストエディットのMultiplePagesViewあたりを
参考にするとよいのでは。
0945名称未設定
04/07/10 17:05ID:iQLbyi/F0946名称未設定
04/07/12 19:18ID:zJJ7HG6K自分なりのメソッドを作って拡張したのですが、
一つの.m、.hファイルに付け足していったので、ソースコードが長くて不便です。
機能ごとにソースファイルを分割したいのですが、まずはじめに
何をすればよいかよくわかりません。
レベル的にもCをちょっとかじった程度です。
自学したいので参考となるURLや書籍、サンプルコードはないでしょうか…
0947名称未設定
04/07/12 19:58ID:nbtTFRhy入門書を読んで勉強するしかないけど、.m, .hで分けるということなら
クラス毎にファイルに分ければいい。Objective-Cで書いてるなら。
入門書はいくつも買わないでとりあえず一つだけ買って攻略する。
あとは慣れ。実践で憶えていくしかない。Cocoaならヒレガス本がお薦め。
HappyMacintoshDevelopingTimeがいいという人もいるけど、あれはちょっと
初心者には向いてないと思う。初心者が読む部分の説明が良くない。
0948名称未設定
04/07/12 20:08ID:zVJvNWxg>機能ごとにソースファイルを分割したい
カテゴリだな。
荻原本読んどけ。
初めは少々難しいが、あとになって必ず役に立つ。
0949名称未設定
04/07/12 20:26ID:zJJ7HG6K>クラス毎にファイルに分ければいい。Objective-Cで書いてるなら。
分割したいクラスの部分を既存のソースファイルから切り取って
xxx.h、xxx.mに保存してビルドすれば良いということですか?
分割したファイルと分割元ファイルをimportなりなんなりで
クラス同士の関連付けする必要はないのでしょうか?
>あとは慣れ。実践で憶えていくしかない。Cocoaならヒレガス本がお薦め。
ヒレガス本探してきますλ....
0950名称未設定
04/07/12 20:29ID:zJJ7HG6Kカテゴリって言うんですね…
検索キーがわからなくて難儀してました。
調べてみます。
>>947-948
色々ありがとうございます(TдT)
0951名称未設定
04/07/13 21:05ID:/hcMHNhq↑
ここ見ながらやってるのですが、
MainMenu.nibって奴をダブルクリックしても
インフォパネルってのがデフォールトで開かな
いんですけど、どうやって開くのでしょうか?
0952名称未設定
04/07/13 21:15ID:8VSQuQXN0953名称未設定
04/07/13 21:38ID:/hcMHNhq習うより慣れろって感じっすね。<InterfaceBuilder
0954名称未設定
04/07/14 01:04ID:XDlN+1hLCarbon もさっぱり!!!
0956名称未設定
04/07/15 18:17ID:EIfWDnn6表示させたいけど起動中に落ちてしまう…
インターフェースビルダーで、windowのインスタンスを2つ作るだけじゃダメなんですかね…
0958名称未設定
04/07/17 00:09ID:fqiKlTs5初心者の自分も躓いた点を書いとく
p282のパネルにボタンを格子状に配置する際、オプションキーを押しながらドラッグ
となってるが正しくは、オプションキーを押しながらオブジェクト(ボタン)のリサイズハンドルを
ドラッグだった…
オプションキーを押しながらオブジェクトをドラッグしてもオブジェクトが
コピーされるだけで2時間ぐらい悩まされた(-ωー)
Interface Builderのヘルプを検索してようやく気づく…
新しいのは良くなってるんかねえ…
0960名称未設定
04/07/17 16:33ID:KdfKLLGJ0961名称未設定
04/07/18 08:32ID:p/suTzR3DiskArbitrationRegister failed: 1102
ていうエラーメッセージが必ず出てしまいます。その後問題なく起動します。
AppleのサイトではCarbonのTipsにしか載ってないんですけど、どなたかこのエラーが
何なのか御存知の方いませんか?
NSTextViewをサブクラス化してるくらいで、別に変わったことはしてないですけど。
0962名称未設定
04/07/24 03:56ID:T9KFdhRI[image lockFocus];
[str drawAtPoint:point withAttributes:dicAttr];
[image unlockFocus];
できたimageの解像度は72dpiになっています。
解像度を落とさずに文字を描画したいんですが、どのように
したら良いのでしょうか。ご存知のかたお教え下さい。
0963名称未設定
04/07/24 06:20ID:Qvrr2z750964名称未設定
04/07/24 09:49ID:K5vclZtB>解像度を落とさずに文字を描画
自分も同じ悩み持ちです。
読み込んだイメージの解像度を72dpiに変換すると同時に、
倍率を計算して、drawAtPointする時にNSAffineTransform
で倍率指定ってのが回避策か?と妄想中。
>>963
ぜひ、解像度が絡んだ場合の解決方法を教えてくださいまし。
0965869
04/07/24 20:44ID:3zzuSVAUWindowsのGDI+でもそうですけど、Appleの描画環境は
Device Independent + Resolution Independentです。
つまり、Cocoaレベルから解像度をいじることはできないはずです、多分。
0966名称未設定
04/07/25 00:38ID:VfXPUdId0967名称未設定
04/07/25 01:33ID:hIabkCZQというかQuartzはPDFベースだから・・・
0968869
04/07/26 11:39ID:qtwfIU8cすんません逝ってきます
0969名称未設定
04/07/26 18:48ID:uF5saXaphttp://pc5.2ch.net/test/read.cgi/tech/1052186697/
0970名称未設定
04/07/28 20:45ID:fGsKXR4Q実行しようとすると「stderr is not a tty」等と怒られてしまいます。
調べてみると出力先の問題だということは何となくわかったんですが
こういう場合どうしたらいいんでしょうか?
0971名称未設定
04/07/29 00:15ID:ETseezzEstderrがttyを前提としているコマンドって何だろう?
0972名称未設定
04/07/29 15:13ID:3mTSEHNC実行した時にパスワードの入力を求めてくるものなので
出力先が端末(?)でないと駄目、というようなことらしいです。
NSPipeだと無理なんでしょうか?
0973名称未設定
04/07/29 15:18ID:3mTSEHNCNSTaskとNSPipeで対話型コマンドを実行する場合について?
http://cocoa.mamasam.com/COCOADEV/2002/01/1/21162.php
0975名称未設定
04/07/29 17:34ID:3mTSEHNCパスワードがかかってる場合、実行するとTerminalではそれを入力するように
いわれるんですが、NSTaskとNSPipeでそれを受けたい&答えたいというわけで。
0976名称未設定
04/07/29 17:43ID:ccbu77apコマンド名を書けない訳は?
とあるコマンドである場合は別な方法で実行できるとだけ書いておこう。
0977名称未設定
04/07/29 19:18ID:+/x2QT6W2chでソフトから個人を特定されたくないってのもあり得るんだから、
あんまり追いつめるのも気の毒。
>>975
有名なコマンドなら直接APIを呼ぶなりソースをゲットするなり
それなりの方法もあるよ。そのぶん面倒臭いけど。
0978名称未設定
04/08/06 04:08ID:h1Bmx+9i0979名称未設定
04/08/06 12:05ID:dE8JCgrGとにかくよく落ちる。
returnしても落ちるし、""と入力するだけで落ちたりする。
どうも文法を解釈するときが怪しいんだけど。。。
環境設定を変えると不安定になるという噂を聞いたけど、
同じような症状になった人はいませんかね?
OSは10.2.8です。
0980名称未設定
04/08/06 12:30ID:uu8Mk5iE0981名称未設定
04/08/06 13:19ID:f8Up1MuxジャガーまでのProjectBuilderとパンサー以降のXcodeでの違いは?
レス数が950を超えています。1000を超えると書き込みができなくなります。