cuốn sách gpt4 ai đã làm

objective-c - 在 Objective-C 中打印 &object 和 object 的区别

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 00:37:43 29 4
mua khóa gpt4 Nike

NSLog(@"%p", &object);NSLog(@"%p", object); Sự khác biệt là gì?

Cả hai dường như in ra một địa chỉ bộ nhớ, nhưng tôi không chắc đâu là địa chỉ bộ nhớ thực của đối tượng.

câu trả lời hay nhất

Đây là cách tôi muốn tưởng tượng nó:

Bạn có thể coi bộ nhớ như một dải liền kề chứa địa chỉ của từng khối có sẵn.

NSObject *a = nil;
NSObject *b = nil;

ba
vv
+--------------+----------+--, ,-+----------+----------+
|
+----------+----------+-` `--+----------+----------+
^ ^ ^ ^
0x05aa2 0x05aaa 0x07bf0 0x07bf8

NSLog(@"%p %p", b, &b); //=> 0x0 0x07bf0

chúng tôi có hai NSObject * các biến cục bộ của loại. cả hai đều được giao không, vậy nội dung là 0x0. Bạn có thể thấy rằng cả hai biến đều có địa chỉ bộ nhớ0x07bf00x07bf8.

Sau đó, nếu chúng ta tạo một thể hiện của đối tượng và đặt nó vào hỗn hợp, chúng ta sẽ nhận được

NSObject *a = nil;
NSObject *b = [[NSObject phân bổ] init];

[NSObject]ba
vvv
+--------------+----------+--, ,-+----------+----------+
| | ******* |
+----------+----------+-` `--+----------+----------+
^ ^ ^ ^
0x05aa2 0x05aaa 0x07bf0 0x07bf8
^/
\ /
`-------------'

NSLog(@"%p %p", b, &b); //=> 0x05aaa 0x07bf0

Ngoại trừ bây giờ có b nhọn NSObject Đối với một ngoại lệ thực sự, chúng ta khai báo các biến cục bộ giống như trước.

Vì loại này là NSObject * Chúng tôi biết chúng tôi có một con trỏ tới đối tượng, vì vậy khi bạn làm như vậy NSLog(@"%p", b); Khi bạn nhận được địa chỉ bộ nhớ b Sau đó lấy địa chỉ bộ nhớ trong nội dung của nó và theo nó đến NSObject Sau đó in kết quả của địa chỉ bộ nhớ của nó. Khi bạn thực thi &b khi bạn thực sự chỉ đang thực hiện bước đầu tiên và đối với biến thực tế b Địa chỉ bộ nhớ của bộ nhớ được yêu cầu.

Bạn sẽ có thể thấy các địa chỉ bộ nhớ này liên quan với nhau như thế nào

Về object-c - sự khác biệt giữa in &object và object trong Objective-C, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/23768453/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress