2013年5月31日金曜日

WPFでTextBoxやRichTextBoxにファイルをドラッグ&ドロップするには

WPFのTextBoxってのは非常に優秀で何もしなくてもテキストのドラッグ&ドロップに対応しているんですね。解除用のフラグは見当たりませんでしたけど。。。
おかげでファイルのドラッグ&ドロップを実装する場合、テキストのドラッグ&ドロップイベント処理が邪魔をしてしまうので少しこつが必要です。

[コツ]

  1. DragEventArgs.Handled=false;でテキストのドラッグ&ドロップイベントハンドラーを機能しなくする。

このエントリーをはてなブックマークに追加

2013年5月3日金曜日

ARCを使わないObjective-Cのメモリ管理はこうすればリークも不正落ちも怖くない

Objective-Cはガベージコレクションを搭載していないので、メモリ管理が結構たいへんですがルールを決めてしまえばそんなに大変ではなくなるので楽してメモリ管理する方法をまとめてみました。

[前提条件]

  1. xcode4.5以上を使用する。

[ポイント概要]

  1. プロパティ記述時の属性(retain assign copy)を使い分ける
  2. alloc時にはautoreleaseを記述する
  3. 自クラス内のインスタンス変数へアクセスする時はプロパティを使用する
  4. retain、copy属性のプロパティはdealloc内でnilを代入する

[ポイント詳細]


ポイント1:プロパティの記述時の属性(retain assign copy)を使い分ける

ヘッダーファイルのクラス宣言内に記述するプロパティの属性を正しく使い分けます。

  1. object型はretainを指定する
  2. NSString型はcopyを指定する
  3. プリミティブ型はassignを指定する
  4. delegateはassignを指定する

※Objective-Cで使用できる主なプリミティブ型
short (signed short)
unsigned short
int (signed int)
unsigned int
float
double
char
BOOL

ポイント2:alloc時にはautoreleaseを記述する

オブジェクトをallocしたら必ずautoreleaseを記述します。


ポイント3:自クラス内のインスタンス変数へアクセスする時はプロパティを使用する

プロパティを使用しない場合、メモリリークや解放済みのオブジェクトへのアクセスが発生する可能性が高くなります。


ポイント4:retain、copy属性のプロパティはdeallocないでnilを代入する

retain、copy属性が指定されたプロパティはdeallocでnilを代入しないとメモリリークが発生してしまいます。


◎autoreleaseを記述しない方がいい場合

例外としてループ(for、while)内でオブジェクトを生成する場合はメモリ節約の観点からautoreleaseを使用しない方が良いでしょう。

このエントリーをはてなブックマークに追加

2013年5月1日水曜日

ラズベリーパイにGitをインストールする方法俺メモ

ラズベリーパイにGitをインストールする方法をメモっとく

[手順概要]

  1. piでログインする(sudoの権限があるユーザー)
  2. gettextをインストールする(Gitインストールにmsgfmtコマンドが必要なので)
  3. Gitをインストールする

[手順詳細]

1.piでログインする

 全ユーザーでGitを使用したいので「/usr/lib/git」へインストールします。
 その為にsudo権限のあるユーザーでログインする必要があります。

2.gettextをインストールする

   2.1.次のコマンドを順次実行すればok
      $cd /tmp/
      $wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz
      $tar zxvf gettext-0.18.2.tar.gz 
      $./configure --prefix=/usr --disable-csharp
      $make
      $sudo make install
      ※gettext-0.18.2.tar.gzはインストールするバージョンによって変わります

3.Gitをインストールする

   3.1.次のコマンドを順次実行すればok
      $cd /tmp/
      $wget http://git-core.googlecode.com/files/git-1.8.2.1.tar.gz
      $tar xvfz git-1.8.2.1.tar.gz
      $cd git-1.8.2.1/
      $sudo mkdir -p /usr/lib/git
      $sudo ./configure --prefix=/usr/lib/git
      $sudo make all install
      $cd /usr/bin/
      $sudo ln -s /usr/lib/git/bin/git ./git
      ※git-1.8.2.1.tar.gzはインストールするバージョンによって変わります

このエントリーをはてなブックマークに追加