アーカイブ

2010 年 11 月 のアーカイブ

NSTableViewのcustomCell

2010 年 11 月 12 日 コメントはありません

NSTableViewのセルについてかなり悩まされたのでメモしておく。

まず、Cocoa Touchと同様に

  • NSTableViewDataSource
  • NSTableViewDelegate

の2つのプロトコルがある。

Cocoa TouchではreuseIdentifierを使ってcellのインスタンスを再利用するようになっているが、CocoaではNSTableColumnにsetDataCell:したcellを再利用するようになる。

#pragma mark NSTableViewDataDelegate
- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    return [tableColumn dataCell];
}

注意したいのが、NSTableViewの各カラムで使用されるセルは再利用されるということ。つまり同じインスタンスを使い回している。
NSTextFieldCellやNSImageCellなどのtextやimageは列と行に対応したobjectValueをセットしてやる。
イメージやテキストを含んだcell(NSCell)はInterfaceBuilderで作れない。
NSCellを継承したCustomCellクラスを作りコードでtextやimageを描画してやる必要がある。また、cellはobjectValueを1つしか受け取れない。

- (id)tableView:objectValueForTableColumn:row:

id型で返すことになるのでAlbumオブジェクトのようなtitle, song等を含むオブジェクトを返してやる。
あとはCustomCellクラスでAlbunオブジェクトの情報を描画してやればいい。

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView

こんな感じ。

カテゴリー: Cocoa, Mac App, Objective-C タグ:

Bonjourって不思議

2010 年 11 月 2 日 コメントはありません

Macを使っていると知らず知らずのうちに同じネットワーク内のPCやサーバーを見つけてくれる。これすごく不思議。

Bonjourっていう技術が使われているんだけど、これについてはRefernceでが2冊、サンプルコードが1つ公開されてる。

ReferenceのほうはBonjourの仕組みとNSNetServiceクラスとNSNetServiceBrowserクラスについて解説してる。これはがんばって読んでおかないといけない内容だろうね。

サンプルはクライアント/サーバー型で画像ファイルが送受信できる内容になっていてこれをベースにすればなんでも出来そうな予感。他にもパスコードやら暗号化やら追加する必要があるだろうけど。

あ〜、ちょっとだけでも関わっておけば良かった、と後悔してるけど今となっては仕方ない。

カテゴリー: Cocoa, Mac, Objective-C タグ:

Mac appを練る

2010 年 11 月 2 日 コメントはありません

iPhoneのApp Storeのローンチを経験したデベロッパーには周知の事実だと思いますが、Mac App Storeも同様にスタートダッシュが肝心。

受託でちまちまとiPhone appを作っていた企業さんもウカウカしてられませんぜ。イヒヒ。

・・・ということで自分もMac appを計画中。だいたい企画はできてきた。

これはすごい!というものではないけれど、これをベースに機能を追加していければいいと思う。

その他にも気になることがあってね。

iPhone appのVerUpは基本無料になってる。

ただ、Mac appでこのモデルを採用できるかということ。 既存のMacソフトだとMajor Version Upの際は新規ライセンスが必要になるよね。Mac App Storeでもこの方式を採用してくれないと正直困る。Mac appはiPhone appよりも開発コストがかかるし、機能追加の新バージョンを無料で提供しますよ〜というのは、デベロッパもAppleも大儲けできないよね。

11月の動きに注目だの。

カテゴリー: Mac タグ: