Nhân vật @
không được sử dụng trong C hoặc C định danh ++, vì vậy nó được sử dụng để giới thiệu các từ khóa ngôn ngữ mục tiêu-C theo cách không xung đột với các từ khóa của các ngôn ngữ khác. Điều này cho phép phần "Mục tiêu" của ngôn ngữ tự do xen kẽ với phần C hoặc C++. Vì vậy, với rất ít ngoại lệ, bất cứ lúc nào bạn nhìn thấy @
trong một số mã Objective-C, bạn đang xem xét các cấu trúc Objective-C chứ không phải là cấu trúc C hoặc C++.
Các trường hợp ngoại lệ chính là id
, Class
, nil
và Nil
, thường được coi là từ khóa ngôn ngữ mặc dù họ cũng có thể có một hoặc typedef
#define
phía sau họ. Ví dụ, trình biên dịch thực sự xử lý id
đặc biệt về các quy tắc chuyển đổi kiểu con trỏ nó áp dụng cho các khai báo, cũng như quyết định có tạo các rào cản viết GC hay không.
trường hợp ngoại lệ khác là in
, out
, inout
, oneway
, byref
và bycopy
; chúng được sử dụng làm chú thích lớp lưu trữ trên tham số phương thức và kiểu trả về để làm cho các đối tượng phân tán hiệu quả hơn. (Họ trở thành một phần của chữ ký phương pháp có sẵn từ thời gian chạy, mà DO có thể nhìn vào để xác định làm thế nào để serialize tốt nhất một giao dịch.) Ngoài ra còn có các thuộc tính trong @property
tờ khai, copy
, retain
, assign
, readonly
, readwrite
, nonatomic
, getter
và setter
; chúng chỉ hợp lệ trong phần thuộc tính của tuyên bố @property
.
Nguồn
2008-08-25 08:36:29
tại sao @ được sử dụng trước khi @ interface và @ kết thúc? –