itok's Lab

昔の開発ネタを記録として残してます

2007-02-01から1ヶ月間の記事一覧

デフォルトアプリに飛んできたイベントを受け取る

さて、デフォルトアプリとしての設定もでき、任意の scheme に従う URL を受け取ることができるようになったわけですが、ではどうやってそれを受け取ったらいいのか、という話。これには AppleEvent の枠組みを使います。Cocoa でいえば、NSAppleEventManage…

デフォルトアプリとして設定する

デフォルトブラウザとかデフォルトメーラーとかのデフォルトアプリとして設定する方法。前述の「デフォルトアプリとして認識してもらう方法」も参照してください(この設定も必要なので)。 これは実のところ関数を呼び出すだけです。が、Info.plist の方に…

NSTimer を使う

ごくごく基本的なことなんですが、何度かはまってしまったので、備忘録として。 NSTimer の生成にはおおまかに2種類のメソッドがあります。 // NSTimer 1: +(NSTimer*) scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL…

デフォルトアプリの候補として認識してもらう

デフォルトブラウザとかデフォルトメーラーとか、そういうデフォルトアプリの候補として認識してもらう方法。こういうのはその対応する URL の scheme 部分が関係しているわけですが、それぞれのアプリケーションで「私はこの scheme を受け取れますよ」って…

table の特定行を再描画

テーブルネタが続きますけれど、NSTableView でデータを読み込むのは reloadData: があって、NSOutlineView だとこれにくわえて reloadItem: っていうのがあるわけですが、データの読み込みというよりは特定の行に対して単なる再描画を行いたい場合は、これ…

table上の任意のcellが表示されるようにスクロール

NSTableView や NSOutlineView で任意の cell が表示されるようにスクロールさせる。 // column 指定 -(void) scrollColumnToVisible:(int)columnIndex // row 指定 -(void) scrollRowToVisible:(int)rowIndex

TableのcellにToolTipを指定する

table や outline の上にマウスカーソルを持っていったときに表示される ToolTip を指定します。これ、10.3以前では非常にややこしいことになっていたんですが、10.4になってようやくそれ用の delegate メソッドが登場しました。 // NSTableView -(NSString*…

faulting とその解除

一つのオブジェクトを参照するために、それに関連するすべてのオブジェクトツリーを永続層から読み込んで構築するのは無駄が多い。そのため、Core Data では実際に参照された時だけ関連オブジェクトをメモリ上に配置する仕組みを取り入れている。これが faul…

NSArray にフィルタリング

CoreData に伴って導入された Predicate というクエリー言語。なにもデータベースにアクセスする時だけ使うのではなくて、NSArray から条件にあったものだけを抽出したりするのにも使えます。 // NSArray -(NSArray*) filteredArrayUsingPredicate:(NSPredic…

OutlineViewの幅を自動調整させない

OutlineView 上で item を開いたり閉じたりしていると、勝手に column の幅が調整されて広くなったり狭くなったりします。これがデフォルトの挙動なんだけれど、これをとめてもらいましょう。 // -(void) setAutoresizesOutlineColumn:(BOOL)resize [outline…

NSURLDownloadでダウンロード-1

ダウンロードクラス NSURLDownload を使ってみましょう。非同期に DL することを目的とした DL クラスとなります。非同期なんでその経過を知るために delegate を用いてメッセージのやり取りをするわけです。 では、まずオブジェクトの生成と DL の開始。 1:…

NSStringとSEL型の相互変換

以前同じような題名でC文字列とSEL型の相互変換について書いてましたけれど、よくよく見てみると、普通にNSStringからも変換できる関数マクロがあるみたいですね。今更知った自分にショック。 SEL NSSelectorFromString(NSString* aSelectorName); NSString*…

領域ごとにマウスカーソルを設定する

ある view 内のある領域だけ、特別なカーソルを設定する場合。例えば独自に resize の仕組みを実装していて、view の端に来た時にマウスカーソルを resize 用のカーソルに変えるとか。これ、マウスの動きを監視する必要があるのかと思ったら、それ専用のメソ…

接続中の iPod を確認する

書きだして思ったけれど、手元にある iPod は 3G と初代 Shuffle、、、全然情報が古いかもしれない・・・(まあ、いいか、メモだし) iPodシリーズには大きくわけて2種類あります。shuffleとそれ以外。違いはといえば、表面上ではiTunesからPodcastを自動登…

WebViewのコンテンツソースをとりだす

WebView に表示中のコンテンツのソースをとりだします。WebFrame に表示中のコンテンツオブジェクトをとりだすメソッドがあって、 // WebFrame -(WebDataSource*) dataSource; んで、この WebDataSource から NSData を取り出せばOK。 // WebDataSource -(NS…

返事のある notification

「通知(notification)」という仕組みはデザインパターンとしても有名でかつ非常に基本的。お互いに相手を知らないオブジェクト間のメッセージとして、非常に重宝しています。最近の言語、というかその言語が動く基本フレームワークにはたいがい仕組みとし…

ログイン項目への追加

OSX

「ログイン時に起動」するためにはその設定をあるファイルに書き込んでおく必要があります。そのファイルというのが ~/Library/Preferences/loginwindow.plist。開いてもらうとわかりますが、AutoLaunchedApplicationDictionary というキーの元に各起動アプ…