Video: Tuyệt đối CẤM ĂN NƯỚC MẮM kẻo rước họa vào thân, nhiều người vẫn ăn mà không biết sự thật này 2025
Tuyên bố các biến thể cho các ứng dụng iOS yêu cầu mỗi cá thể có riêng của nó Biến các biến dụ được tạo ra cho mỗi cá thể (nói cách khác, mỗi trường hợp nhận một bản sao của các biến này)
Trong lớp PostfixCalculator, các biến thể là biểu thức
-
, đó là (một con trỏ tới) một đối tượng NSString
-
calculatorStack, đó là (cũng là một con trỏ) tới một đối tượng StackOfInteger
Phạm vi của một biến xác định nơi nó có thể được được sử dụng Có 9 lựa chọn: được bảo vệ: Các biến thể thể hiện rõ và có thể trực tiếp được gọi đến (được sử dụng) trong tất cả các phương thức của một lớp và bất kỳ lớp con nào
-
được bảo vệ là phạm vi mặc định. > private: Các biến này chỉ được sử dụng trong lớp đã xác định chúng.
công cộng: Các biến này có thể được hiển thị và có thể là chúng ta ed trong bất kỳ lớp học hoặc phương pháp khác.
-
-
gói: Các biến này chỉ có thể truy cập được trong thư viện mà chúng được định nghĩa.
Hãy xem một ví dụ từ PostfixCalculator: -
@interface PostfixCalculator: NSObject {@ công khai NSString * biểu thức; @private StackOfInteger * calculatorStack;} -d
Ở đây, biểu thức được khai báo như một biến thể hiện công khai, trong khi calculatorStack được khai báo là private.
Để mọi biến được bảo vệ, và ghi các phương thức accessor cho các biến bạn muốn hiển thị bên ngoài phân cấp lớp.
Để kiểm soát truy cập nhiều hơn:Khai báo một cách rõ ràng các biến là tư nhân.
-
Cung cấp các phương pháp accessor cho các biến bạn muốn tạo ra ở bên ngoài lớp học.
-
Nếu có thể, hãy tránh xa các chú thích các biến như là công cộng và gói.
-
Ngẫu nhiên, để truy cập một biến thể trong phạm vi công cộng, bạn sử dụng con trỏ tới toán tử thành viên (aka the arrow operator->). Giả sử biểu thức biến trong giao diện PostfixCalculator được khai báo như sau:
-
biểu thức công khai NSString *;
Bạn truy cập vào nó như sau:
-
myExpression = myCalculator-> biểu thức;
Mặt khác, nếu biến được khai báo là private (hoặc là mặc định của protected), bạn phải sử dụng một phương thức accessor để lấy giá trị, như được trình bày ở đây:
NSString * myExpression = [myCalculator getExpression];
Một số trình biên dịch Object-C, chẳng hạn trình biên dịch gcc hiện tại trên máy Mac, chưa thực thi phạm vi riêng tư.Thay vào đó, chúng chỉ tạo ra một cảnh báo nếu bạn sử dụng một biến khai báo là private bên ngoài lớp mà nó được khai báo. Cảnh báo tương tự như sau:
cảnh báo: dụ biến … is @private; đây sẽ là một lỗi khó khăn trong tương lai.
Mặt khác, trình biên dịch bên trong Xcode làm đúng và nói: biến Instance … là private.
