Mục lục:
Video: Hoảng loạn khi gặp "CHỊ GOOGLE" ngoài đời thật I Thử Thử Thiệt Thiệt 2025
Bạn có thể thiết lập một thuộc tính thuộc tính khi khai báo một tài sản cho ứng dụng iOS của bạn. Hãy xem để khám phá thêm chi tiết về các thuộc tính mà bạn có thể đặt khi lập trình.
Định nghĩa ngữ nghĩa / quyền sở hữu
Các thuộc tính này chỉ định cách quản lý lưu trữ biến dụ như thế nào:
-
mạnh (tương tự như giữ lại, được sử dụng trước đó ARC) tạo ra một phương thức accessor có nghĩa là đối tượng này sẽ được giữ lại trong khi nó nằm trong phạm vi (hoặc cho đến khi nó được đặt thành nil). Đây là giá trị mặc định.
-
yếu (tương tự như gán, đã được sử dụng trước đó với ARC) tạo một accessor sử dụng công việc đơn giản. Bạn thường sử dụng thuộc tính này cho các kiểu vô hướng như NSInteger và CGRect, hoặc (trong một môi trường được tính tham chiếu) đối với các đối tượng bạn không sở hữu - ví dụ các đại biểu - và để tránh các vấn đề về chu trình lưu giữ.
-
sao chép chỉ định rằng một bản sao của đối tượng nên được sử dụng để chuyển nhượng. Giá trị trước đó được gửi đi một thông báo phát hành.
Bản sao được thực hiện bằng cách gọi phương thức sao chép. Thuộc tính này chỉ hợp lệ đối với các kiểu đối tượng, nó phải thực hiện giao thức NSCopying.
Đối với các thuộc tính đối tượng, bạn phải chỉ định rõ ràng một trong các kiểu được liệt kê trước đó; nếu không, bạn sẽ có được một cảnh báo trình biên dịch. Vì vậy, bạn cần suy nghĩ về hành vi quản lý bộ nhớ bạn muốn, và gõ hành vi rõ ràng.
Khả năng ghi
Các thuộc tính sau xác định xem một thuộc tính có một bộ bổ sung cài đặt có liên quan hay không. Họ là những người cùng loại.
-
readwrite chỉ ra rằng thuộc tính cần được xử lý như read / write. Thuộc tính này là mặc định. Phương pháp getter và setter được tổng hợp tự động.
-
chỉ ra rằng tài sản là chỉ đọc. Chỉ có một phương pháp getter được tổng hợp. Nếu bạn thực hiện accessors riêng của bạn, chỉ có một phương pháp getter là bắt buộc. Nếu bạn cố gắng gán một giá trị sử dụng cú pháp dấu chấm, bạn sẽ gặp phải lỗi biên dịch.
Tên phương thức của bộ truy cập
Bạn sẽ nhớ rằng các tên mặc định cho các phương thức getter và setter liên kết với một thuộc tính là PropertyName và setPropertyName:, tương ứng. Ví dụ, đối với chuyến đi bất động sản, accessors là chuyến đi và setTrip:. Tuy nhiên, bạn có thể đặt tên tùy chỉnh thay thế. Cả hai tùy chọn và có thể xuất hiện với bất kỳ thuộc tính nào khác (ngoại trừ chỉ đọc và trong trường hợp setter =):
-
getter = getterName chỉ định tên của bộ nạp cho thuộc tính. Getter phải trả về một kiểu phù hợp với kiểu thuộc tính và không lấy thông số.
-
setter = setterName chỉ định tên của accessor thiết lập cho thuộc tính. Phương thức setter phải lấy một tham số duy nhất của một kiểu khớp với kiểu thuộc tính và phải trả về void.
Thông thường, bạn nên chỉ định các tên phương thức accessor là tuân thủ mã hóa giá trị khóa. Một lý do phổ biến để sử dụng trang trí trang trí là tuân thủ quy ước isPropertyName cho các giá trị Boolean.
Nếu bạn có một thuộc tính Boolean được gọi theo thứ tự chữ cái mà bạn sử dụng để theo dõi cách một mảng các tên được sắp xếp, thì trình getter mặc định sẽ được sắp xếp theo thứ tự chữ cái. Sử dụng quy ước đặt tên, bạn sẽ tạo một phương thức accessor được gọi làAlphabetically, một chút rõ ràng hơn.
Nguyên tử
Bạn có thể sử dụng thuộc tính này để xác định rằng các phương thức accessor không phải là nguyên tử. (Không có từ khóa biểu thị nguyên tử) Điều này liên quan đến các vấn đề đồng thời. Nếu bạn chỉ định nonatomic, một accessor tổng hợp cho một thuộc tính đối tượng đơn giản trả về giá trị trực tiếp. Nếu không, một bộ tổng hợp có được accessor cho một đối tượng sở hữu sử dụng một khóa và giữ lại và autoreleases giá trị trả lại.
