個人的メソッドファミリまとめ
メソッドファミリとは
「こういう条件満たしてるメソッドが返すオブジェクトは、ARCはんがオーナーシップが発生するとみなすでぇ!」みたいな感じ。
返り値やメソッドの種類などに関する制約を満たした上で、セレクタがある条件を満たしたメソッドのこと。
メソッドファミリに属するメソッドの返り値のオブジェクトには、ARCによってオーナーシップが発生するものと解釈される。
セレクタの条件
セレクタの先頭に下線があればそれを無視した上で、
- セレクタの最初の要素がメソッドファミリ名に一致するか、
- メソッドファミリ名からはじまり、小文字以外の文字が続く。
init | ◯ |
initToMemory | ◯ |
initWithData | ◯ |
_init:locale: | ◯ |
initialize | ☓ |
initWithString:locale: | ☓ |
do_initWithDate: | ☓ |
メソッドファミリ
保持可能なオブジェクトへのポインタを返さなければならないメソッド
(※保持可能なオブジェクト= objective-c のオブジェクトまたはブロックオブジェクト)
- alloc メソッドファミリ
- copy メソッドファミリ
- mutableCopy メソッドファミリ
- new メソッドファミリ
インスタンスメソッドで、objective-c のポインタタイプを返さなければならず、返り値は id 型か、宣言しているクラスのスーパークラスかサブクラスへのポインタでなければならないメソッド
- init メソッドファミリ