人生ずっと勉強

人生ずっと勉強ですね。 https://twitter.com/KiyotakaGoto

個人的メソッドファミリまとめ

詳解 Objective-C 2.0 第3版より。

メソッドファミリとは

「こういう条件満たしてるメソッドが返すオブジェクトは、ARCはんがオーナーシップが発生するとみなすでぇ!」みたいな感じ。

返り値やメソッドの種類などに関する制約を満たした上で、セレクタがある条件を満たしたメソッドのこと。
メソッドファミリに属するメソッドの返り値のオブジェクトには、ARCによってオーナーシップが発生するものと解釈される。

セレクタの条件

セレクタの先頭に下線があればそれを無視した上で、

  • セレクタの最初の要素がメソッドファミリ名に一致するか、
  • メソッドファミリ名からはじまり、小文字以外の文字が続く。
init
initToMemory
initWithData
_init:locale:
initialize
initWithString:locale:
do_initWithDate:

メソッドファミリ

保持可能なオブジェクトへのポインタを返さなければならないメソッド

(※保持可能なオブジェクト= objective-c のオブジェクトまたはブロックオブジェクト)

  • alloc メソッドファミリ
  • copy メソッドファミリ
  • mutableCopy メソッドファミリ
  • new メソッドファミリ

インスタンスメソッドで、objective-c のポインタタイプを返さなければならず、返り値は id 型か、宣言しているクラスのスーパークラスかサブクラスへのポインタでなければならないメソッド

  • init メソッドファミリ