Có và không. Đúng là việc id x
chỉ định x làm con trỏ, nhưng nói rằng các quy tắc chuyển đổi kiểu con trỏ được áp dụng là sai vì "id" có các quy tắc chuyển đổi kiểu đặc biệt. Ví dụ: với một void *
con trỏ, bạn không thể làm điều này:
void *x;
char *y = x; // error, this needs an explicit cast
Ngược lại, có thể với id:
id x;
NSString *y = x;
Xem thêm cách sử dụng id loại trong các ví dụ mục tiêu c .
Ngoài Objective C "hiện đại", nó được ưu tiên sử dụng instancetype
thay vì "id" trên các phương thức "init". Thậm chí có một công cụ chuyển đổi tự động trong Xcode để thay đổi điều đó. Đọc về instancetype: Sẽ có lợi nếu bắt đầu sử dụng instancetype thay vì id?
void*