【マック】Macintoshプログラミング質問箱
■ このスレッドは過去ログ倉庫に格納されています
三|三
イ `< ,..-──- 、 _|_
 ̄ /. : : : : : : : : : \ |_ ヽ
∧ /.: : : : : : : : : : : : : : ヽ (j )
/ \ ,!::: : : :,-…-…-ミ: : : : :',
{:: : : : :i '⌒' '⌒' i: : : : :} _ヽ_∠
└┼┘ {:: : : : | ェェ ェェ |: : : : :} lニl l |
. |_|_| , 、 { : : : :| ,.、 |:: : : :;! l─| l 亅
__ ヽ ヽ. _ .ヾ: :: :i r‐-ニ-┐ | : : :ノ _
/ } >'´.-!、 ゞイ! ヽ 二゙ノ イゞ‐′ l `ヽ
´⌒) | −! \` ー一'´丿 \ l/⌒ヽ
-' ノ ,二!\ \___/ /`丶、 _ノ
/\ / \ /~ト、 / l \
/ 、 `ソ! \/l::::|ハ/ l-7 _ヽ
/\ ,へi ⊂ニ''ー-ゝ_`ヽ、 |_厂 _゙:、
∧  ̄ ,ト| >‐- ̄` \. | .r'´ ヽ、
,ヘ \_,. ' | | 丁二_ 7\、|イ _/ ̄ \ C言語のスーパーセットだからそら共存できるよ
たとえば文字列を扱うNSStringはstringWithCStringって初期化メソッドでconst charから作れるし
そのインスタンスにcStringメッセージを送ればconst charを吐き出すし
Objective-Cを覚えたくないなら使わないで好きにファイル作って設定保存すればいいけど Xcodeってフレームワーク追加したらプロジェクトの種類(cocoaとかiOS)きにせず
そのフレームワークのライブラリが使えるようになるってこと?
Objective-Cを使えるなら使いたいけど、Adobe用のプラグイン(.plugin)を吐き出す形で
どうやるのかが分からない状態。
既存のCプロジェクトに何を追加すれば、objective-cのコードで記述できるようになるのかな。
あれ、ファイル名を .mm にして、FoundationをインポートしたらObjective-Cでかけるようになったけど
あってるかな。 CommandLineベースのプロジェクトでNSUserDefaultsを使うことに成功したんだけど
これで保存した値ってどこにあるplistに保存されるの? コマンドラインベースのプログラムから
ポップアップウィンドウを表示する方法ってある?
或る場合、参考になるサイトなど教えていただければうれしい。 >>455
あってる
C言語でstdio.hを読み込むように、Cocoaを使うには
#import <Foundation/Foundation.h>
するだけ
>>456
プログラムのデータはMacならユーザフォルダ内の不可視フォルダ、Libraryにだいたい保存される >>455
拡張子 .mm は Objective-C++ と言って、Objective-C と C++ の両方使えるよ。 テーブルビューの、セルをデキューって具体的に何をしてるのでしょうか?
セルをキャッシュして再利用するのはわかるんですけど、セルのどこからどこまでを再利用してるのかわかりません。
セルに書いた文字まで全てキャッシュされているのでしょうか。
よくわかっていないので質問文も曖昧です・・・すいません。 プロジェクトを新規作成して、xibファイルがなかったのでそれもつくって、
Interface builderで背景を置いたんですが、実行しても表示されません…
どうやったら表示されるんでしょうか…? すみません事故解決しました。
4.2からはstoryboardから出来るんですね。 ここは Mac プログラミングのスレなんだが。
iPhone プログラミングのスレは Mac 板にあるよ。 ユーザーがアプリのインストールするフォルダを変えてしまう場合を
想定した質問です。
Macにはレジストリがありませんが、インストーラを起動したとき、
インストーラが「既に自アプリがインストールされているかどうか」
を判断して動作を変更する方法はあるのでしょうか?(既にインス
トールされていますと表示したり、本体を起動したりする)
大抵のアプリはApplicationsの下にインストールされますが、
少ないながらも開発系のツールなどは、デフォ以外にユーザー
がインストールする場所を変える例もあるので。 -[NSWorkspace absolutePathForAppBundleWithIdentifier:]
で探す。
アプリの名前を変えられていても見つけられます
バンドルIDが登録されるタイミングが良く分からないので
もしかすると一度も起動されていない場合は見つからないかも。 最初にMainMenu.xibが作られるが、ここのmenuのdelegateを設定しても、
menuWillOpenとかdelegateが呼ばれない。
なんでだ・・・ メニューの階層構造は
Main Menu
Menu Item - MyApp
Menu - MyApp
Menu Item - About MyApp
...
Menu Item - File
Menu - File
...
Menu Item - Edit
Menu - Edit
...
みたいになってるけど、Main Menu じゃなくて Menu - MyApp とか Menu - File とかの
delegate を設定したら menuWillOpen: 呼ばれたよ。 >>472
うまくいった!
なんか過疎スレっぽいからあきらめてたのに即レスうれしい。
マジで困ってたので・・・ありがとう(´;ω;`)ブワッ あ、あともう1点
[NSApp runForModal:modalWindow]
[mainWindow close] or [mainWindow orderOut:nil];
みたいにモーダルダイアログを表示して、それが閉じられたらメインのウィンドウを閉じる。
メインウィンドウは最後の1枚になるウィンドウで閉じられるとアプリ終了する。
このようにしてるんだけど、画面にclose呼んだ後もウィンドウが残ってしまう。
ウィンドウをクリックすると消える。その後、アプリも終了する。
イベントループと絡んでるのかな。
perfomSelector afterDelay使ってcloseしてもダメ・・・解決方法がわからない。 >>473
新mac板にもプログラミングのスレッドあるよ。cocoaはさっぱりとか。
>>474
runModalForWindow: はモーダル処理が終わるまで処理が戻ってこない。
クローズボタンが押された時点ではまだモーダルウインドウは閉じずに stopModalでモーダル処理を終了させて、
モーダルウインドウを閉じるのは runModalForWindow: から帰ってきてからにするといいっぽい。
ってか、runModalForWindow: よりも beginModalSessionForWindow: とか beginSheet:modalForWindow:... の方がいいんじゃない? >>475
>>474の件もbeginModalSessionForWindow使ったらうまくいった。
重ね重ねありがとう。
iOSは3年くらいやってて熟知してるんだけど、
CocoaはiOSの劣化版SDKに見えるね・・・仕方ないけど。
xcode って .hに宣言書いたらワンタッチで .mに写してくれたりしないの? GKに関してなんだけど、プログラム起動するとき、開発者コードと署名をチェックする為に、起動の
たびにアップルのサーバーに問い合わせるのだろうか? NSImageってどうやって使うの?
Xcode 3.2.6なんだけど、何故か表示できない。
xibでcustom view追加しないで表示したいんだけど出来ない。
コレできないとゲーム作れないよー(´・ω・`)ショボーン
-(void)drawInRect:(NSRect)dirtyRect{
NSImage *outPutImage = [NSImage imageNamed:@"sample.jpg"];
[outPutImage drawAtPoint:NSMakePoint(0, 0)
fromRect:NSMakeRect(0,0,100,100)
operation:NSCompositeSourceOver
fraction:1.0];
}
誰か教えてー >>481
drawInRect:??
drawRect:じゃないのか?
質問です。
Objective-CでMacOS Xアプリの作成をしようとしている初心者です。
プログラムの実行中に、タイトルバーの文字を状態などに応じて変更したい
のですが、やり方を教えてください。
NSWindow の -setTitle: じゃ駄目なの? おお、早速の回答ありがとうございます。
やってみます、ありがとうございました。 ファイルアクセスについて質問です。
1.WindowsAPIの CreateFile()で指定できる下記属性について、Macでは代わりになる
手段はありますか?
・FILE_FLAG_NO_BUFFERING
・FILE_FLAG_RANDOM_ACCESS
・FILE_FLAG_SEQUENTIAL_SCAN
2.WindowsAPIの CreateFile()では、属性にFILE_FLAG_OVERLAPPEDを指定することで、
非同期アクセスができるのですが、Macではファイルの非同期アクセスを行う方法
はありますか?
CFStream や NSStream で出来る。 >>486
UNIXなんだから相当する機能はPOSIX APIにあるよ。
WindowsAPIなんて特殊APIの考え方は捨てな。 > 487,488
回答ありがとうございます。
POSIX APIを調査してみました。
open()に設定するフラグで、
FILE_FLAG_NO_BUFFERING → O_DIRECT
FILE_FLAG_OVERLAPPED → O_ASYNC( fcntl()で設定する )
でOKですか?
・FILE_FLAG_RANDOM_ACCESS
・FILE_FLAG_SEQUENTIAL_SCAN
これらについては、まだ見当たるものが見つかっていません。
O_RANDOMとO_SEQUENTIALというフラグがあったけど、MacOS Xに対応しているのか不明
です。 キャッシュのバイパスや先読みの使用はfcntl()で指示できる。
非同期I/OはPOSIX AIO等でもできるけど、thread使うべきでしょ。 PHPでCocoaAPIへアクセスしたいのですが
現在そのようなブリッジが存在しません。
ないなら作ってみようかと思いPyObjcのソースコードを眺めていたのですが
全体像がなかなか掴めません。
グーグルでMacRubyやPyObjcを検索してもブリッジ間の仕組みを詳しく解説しているような情報も存在しません。
もしご存知の方がいらっしゃいましたら教えて頂きたいのですが、
こういったライブラリーは最終的にobjective-cのソースコードを吐き出すジェネレータのような仕組みになっているのでしょうか?
もっとスマートな別の方法が存在するのでしょうか?
ヨロシクお願いします。 普通C関数呼び出しのインターフェースがある。
PHP なら PHP Extension 使え。
つーかスレチ。PHP のスレで訊け 今、Lion+Xcode4.3.3で開発しています。
Mountain Lionがリリースされましたが、私のiMacは7/24購入なので8/24まで
の無償アップグレード対象なのですが、アップグレードしても開発に影響は
ありませんか?アップグレードすべきですか?
>>498
今開発中のプロジェクトファイルが使えなくなったり、作ったプログラムが
Lionで動かなかったりしたら困るので、躊躇してるんです。
何せMac初めてなので、ビクビクしてるんですけど、大丈夫ってことですか?
アップデート試して、それで駄目なら Time Machine 使って戻ればいいじゃん。 TimeMachineというのがあるのですね、調べてみます。
ありがとうございました。 499です。MountainLionのコンテンツコードを入手できました。
Appleサポートに問い合わせたら、コンテンツコードさえ入手できていれば、
期限はないそうなので、今の開発が一段落したらゆっくりアップデートする
ことにします。
>>503
だから別ボリュームに入れて、MLとLionどっちも
動作検証できるようにすればいいでしょ?
むしろすぐやるべき。 AVFoundationのビデオ再生は、なぜ映像ソースをURLでしか指定できないのか?
メモリ内のデータからから再生したり、ソースのアクセス方法をアプリが制御したりしたいのだが… cocoaでアプリケーション(.app)でエラーの数値(1とか)を返して
それをシェルの$?受け取りたいんだけど、なんか出来ない。
main文のラストをreturn 1にすればいいかと思ったが、なんか
ブレーク張ってもここに来てないみたいだし……
なんかいい方法ってないかな? exit(1) してもアプリが 1 を返さないの? >>507
うん。やってみたけど、返さない。
appを開くためにopenコマンド使ってるのが悪いのかな。 >>508
……どう考えてもそれが原因だろ。
直接 Hoge.app/Contents/MacOS/Hoge 叩けよ。 >>509
おぉ、できたわ……ありがとう。
なるほど、その発想に行かなかった俺がバカだったわか。すまん。 インテルコンパイラって付属のコンパイラに比べてプログラムの実行速度は速くなりますか? 先生質問です。日本語マックでシステム既定の日本語フォント名を取得する方法はありませんか。
私が試みたのは以下の方法です。
1. CTFontCreateUIFontForLanguage(kCTFontSystemFontType, 13, "ja_JP")
2. [[NSFont systemFontOfSize:13] familyName]
どちらの方法でも"Lucida Grande"が返ってきてしまいました。「ヒラギノ角ゴ Pro」が返ってくる方法を探しています。
なにかよいお知恵を貸せ 色々試したが無理っぽいな。
CTFontRef font = CTFontCreateUIFontForLanguage(kCTFontSystemFontType, 13, CFSTR("ja-Jpan-JP"));
多分 Lucida Grande が正解なのだろう。 ありがとうございます (´△`)
その後
localfont = CTFontCreateForString(systemfont, CFSTR("あ"), CFRangeMake(0,1));
CFShow(CTFontCopyFamilyName(localfont));
を試してみると.Aqua Kanaが出て来ました。待望の置き換え先のフォントです。
え、ヒラギノじゃないの?
これですとローカル文字列「あ」をどこかから探して喰わせてやらなければなりませんし、少々まんどくちゃい。
Windowsで言うところのフォントリンクの情報はどこの埋まっているの。 リンクってこれのことかね?
CTFontCopyDefaultCascadeListForLanguages(font, NULL);
AquaKanaとかHiraKakuProN-W3の名前が入った CTFontDescriptorRef の配列が返ってくる。 ( 'o') をを!まさにそれです!ありがたいです!
でもこれすごく新しいAPIですね……うーん。 ふと思ったのだが、
「システム既定の日本語フォント名」という前提条件を設定した時点で、「ヒラギノ角ゴ Pro」であることが確定しているんじゃないのか?
ランタイムでそれを取得することに、何か意味でもあるの? ( 'A`) エキゾチックな環境ではエキゾチックなフォントを自動的に使うようにしたかったの。
JUCEというフレームワークを今回某案件に使うことになったのですけれども、これが黙っていると漢字などが豆腐になります。
アプリ内では、UI文字列はともかくユーザのファイルツリーなども表示したりしますのでこれはよろしくない。
んでちょこちょこ実験してみたら、LookAndFeelというクラスに漢字フォントのタイプフェイス名を明示的に指定してやればよいというところまでわかっていたのです。 >>521
それフレームワークが糞なだけだから。
ATSUIやCoreText正しく使ってればそんな事にはならない。ファイル名はUnicode
だから漢字が描画できても他の言語でまた豆腐になるよ。 あっそうか、日本語環境で日本語フォントを指定できても他言語から持ってきたファイル名とか余裕で化けますね。
うわあどうしよ。フレームワーク側をいじるべきなのか……。 >>523
ユーザー側に、使うフォントを選択してもらうしかないのでは?
それでも、複数言語が混在しているテキストだとどうにもならないけどね。 簡単な質問失礼
Macのc言語でシューティングのようなもの作りたいんだが
conio.hがなくてkbhit関数使えないから、自機が動かないと敵機も動かないって状況に。
キーボード入力を見張りつつ、プログラムを止めない関数はない? XCode4.5.2で自動保存(auto-save)解除の設定はどこにありますか?
GeneralのところにもBehaviorsにも見当たりません。
ちなみにこのバージョンBiuldタブがなくBehaviorsタブに集約されてます。 ターミナルでシコシコ文字だして遊ぶのに飽きたんで
簡単な動的なプログラミングをしたいと思ってるんだけどオススメの環境とかあったら教えて欲しいです。
とりあえず作りたいものとしては物理方程式を適当に当てはめて衝突やら引力についてシミュレーションしてみたい。 >>530
そもそもXcodeに自動保存なんてあったっけ?
>>531
「動的なプログラミング」っていったい何? >>532
言い方がおかしかったかな
動的というか動くプログラムが作りたいってことです。 >>533
それで、その「動くプログラム」っていったい何?
ちなみに、エラーやらバグやらでまともに実行できないものを「動かないプログラム」と言うと思うのだが。 >>534
ああ、確かにそう考えると言い方が悪かったな。
なんて言えば正解なのかはわからないがゲームとかシミュレーションだとかみたいに映像として動かせるのもが作りたいというとこです。 >>536
以前はあったのか。
デフォルトで「有効」のようだが、気づかなかったなぁ。
ところで、なぜそれを「無効」にしようとしているの?
特に邪魔になるような機能ではないと思うけど?
>>535
> 簡単な動的なプログラミングをしたいと思ってるんだけどオススメの環境とかあったら教えて欲しいです。
「動的なプログラミング」 => 「動く映像」なのは分った。
では次に「環境」っていったい何?
おまえが使用しているOSが分らないと、皆目検討がつかないんだけど。 >>538
開発環境という意味なら、単純にXcode + Cocoaがオススメです。 >>537
無効にしたい理由は、
GithubからオープンソースのアプリのソースをDLして参考用にXCodeのワークスペースに入れて
いじくったり検証したりしてるんですが、その都度上書き保存されるのが嫌なので・・
まあ、改変してないオリジナルのソースはGithubにもローカルにもあるので無くなることはないので
ものすごく困ってる訳じゃないんですが、色々と不便なので >>540
Xcodeに限らず、最近のAppleは自動保存を押してるから、offにできなくても不思議はないような。
(開発者向けなんだから余計なことするなって気持ちも分かるけど…)
ちゃんとバージョン管理されてるなら自動保存で問題ないと思うんだが。
あと、ソースをいじって検証してるってことは、いじったソースをコンパイルして動かしてるってことだよね?
コンパイルするには一旦ソースを保存する必要があるから、やっぱり自動保存で問題ない筈。 >>540
そもそも編集したソースコードを保存せずにビルドするのは不可能だ。
スナップショット機能を使うか、ローカルでリポジトリを作るしかない。 >>541
>>542
レスありがとうございます
おっしゃるとおりビルドの時は保存しないとなりませんね。
XibファイルをIBのグラフィカルな画面でいじくり回してる時に
保存せずに終了、みたいなことが出来たらなと思っただけです
ありがとうございました。
(しかし、まぁマイナーバージョンアップで今まであった設定項目をドラスティックに消さなで欲しい・・・) >>539
やはりXcode ですか。
前に一度使ってみたときにファイルやらがたくさんあり複雑そうで諦めたことがあったので少し敬遠していたのですが再挑戦してみようと思います。
ありがとうございました。 Mac App Storeに登録するためにSandBox化しているのですが、ちょっと行き詰まっています。
アプリの大まかな流れは、
ユーザーがアプリへファイル(複数可)をNSOpenPanelか、アプリアイコン及びNSViewサブクラスへのドラッグ&ドロップにて受け渡します。
そのファイルをコマンドラインにてバンドル内のバイナリへNSTaskで受け渡して書き出し
みたいな感じです。
Entitlementsの設定は、User Selected File, Music, Pictures, Movies, DownloadsすべてRead/Writeにしています。
ファイルの保存場所は、設定画面内にてファイルと同じディレクトリあるいは、NSOpenPanelで選択したディレクトリを選択出来ます。
ここで、NSOpenPanelで保存先を選択した場合は問題ないのですが、ファイルと同じディレクトリを選んだ場合、Entitlementsで指定した場所以外(Desktop等)への書き出しが出来ません。
続く.… 続き
あたりまえと言われればそれまでなんですが、User Selected Fileはあくまでファイル単体であって、その親ディレクトリは含まれないんでしょうか?
なお、NSURLのbookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope includingResourceValuesForKeys:nil relativeToURL:nil error:error でブックマークを作り、
[url startAccessingSecurityScopedResource] を使っての同じファイル名での上書きはどのディレクトリ上でも出来ることを確認しましたが、処理の都合上拡張子やファイル名が変わってしまうので理想的ではありません。
理想は、いちいちダイアログで保存場所を選択せずにドラッグ&ドロップでそのファイルと同じディレクトリに処理済みのファイルを保存みたいな、サクッと終わらせたいアプリなんですが、
もし方法があれば教えてもらえないでしょうか?お願いします。 >>548
それがSandbox
いやならMacAppStoreを通さずに独自販売 >>549
やはり無理みたいですね。
出来るだけ手間のかからないUIを考えようと思います。
ありがとうございました。 Macで線や図形を書いてグリグリ動かす(編集する)ようなアプリを作りたいのですが
どうやって作るのかよく分かりません。
(アプリのイメージとしては、MindNodeというマインドマップ作成ソフトのような感じ)
開発環境はXCodeを使って、言語はObjective-Cで、Cocoaライブラリを使うのかなー?
というまでは見当がつきますが、具体的にどうすればいいのかサッパリです。
(線を書いたりする機能はCocoaに含まれるのか? とか)
よいチュートリアルなどあれば教えてください。 >>551
すべてCocoaのAppKitでいける
"Apple sketch example"でググれば幸せになれる
ただしObjective-Cをしっかり読めないとツラいが >>551
あとチュートリアルならAaron HillegassのCOCOAプログラミングが人気高い ■ このスレッドは過去ログ倉庫に格納されています