NSMutableArrayのzoneメソッドについて
質問
現在「Objective-Cのプログラミング概要」というAppleが作ってるドキュメントを読んでいます。
その中で、サブクラス作成方法において複合オブジェクトを用いたサブクラス作成例(P17〜)のinitメソッドに出てくる「zone」がどこから出てきたのか理解できずに困っています。
「zone」はどこから出てきたのでしょか?
不明点のサンプルコード抜粋
- init {
self = [super init];
if (self) {
embeddedArray = [[NSMutableArray allocWithZone:[self zone]] init];
}
return self;}
サンプルコード抜粋元資料
https://developer.apple.com/jp/documentation/CocoaEncyclopedia.pdf
推測
わからないなりに推測してみました。
NSMutableArrayはNSArrayを継承したサブクラス、更にNSArrayはNSObjectを継承したサブクラスであるため、[self zone]
でNSObjectのzone
メソッドにメッセージを送れる。
また、allocWithZone
メソッドもNSObjectを継承しているため、メッセージをおくれる。
なお、資料が古いため過去requiredだったzone
がそのまま使われており、現在は使えない状態である。
推測の根拠
よろしくおねがいします!