2012-01-16 38 views
6

tôi đang trải qua "Pro. Objective-C Patterns Thiết kế dành cho iOS" của Chung và thấyÝ nghĩa của "vùng" trong copyWithZone :?

_sharedSinglton = [[super allocWithZone: NULL] init];

tôi nhìn vào tài liệu của Apple cho NSCopying là tốt, nhưng có thể không thực sự hiểu những gì một KHU thực sự có nghĩa.

Trả lời

7

NSZone đã lỗi thời, nhưng trở lại trong NEXTSTEP ngày, NSZone là một nỗ lực nhằm đưa khái niệm "khu vực malloc" vào Cocoa. Dưới đây là một số tài liệu mô tả cách hoạt động khi được bật: http://www.cocoadev.com/index.pl?NSZone

+0

vì vậy, khác biệt như thế nào để chỉ định 'vùng' là' NULL' và 'Mặc định'? –

+3

Tôi vừa tra cứu sách và báo giá trên Google. Tôi nghĩ rằng lý do họ sử dụng '-allocWithZone:' trong trường hợp này là mẫu đơn của họ đã quá tải '-alloc', và họ muốn một cách dễ dàng để tránh sự ghi đè' -alloc' của họ. '-allocWithZone:' né tránh ghi đè (vì chúng không bao giờ override phương thức đó) nhưng không thay đổi bất kỳ hành vi nào so với '-alloc' bình thường bởi vì các vùng đã lỗi thời và không làm gì cả. Về cơ bản, đây là một thủ thuật để tránh ghi đè của riêng mình '-alloc' một cách dễ dàng, và phần khu vực là không liên quan. – StilesCrisis

+0

cảm ơn @StilesCrisis vì lời giải thích; vì vậy, chúng ta có thể liên kết 'Zone' như một' autorelease' pool (không có chức năng autorelease) không? –