Sau khi đọc rất nhiều bài viết, SO bài viết và ứng dụng demo thực hiện để kiểm tra các thuộc tính tài sản Variable, tôi quyết định đặt tất cả các thông tin thuộc tính cùng
- nguyên tử // mặc định
- nonatomic
- strong = giữ lại // mặc định
- yếu = unsafe_unretained
- giữ lại
- assign // mặc định
- unsafe_unretained
- bản sao
- readonly
- readwrite // mặc định
nên dưới đây là link bài viết chi tiết nơi bạn có thể tìm thấy tất cả các thuộc tính nêu trên, mà bướng bỉnh sẽ giúp bạn. Rất cám ơn tất cả những người đưa ra câu trả lời hay nhất ở đây !!
Variable property attributes or Modifiers in iOS
- giữ lại = mạnh
- nó được giữ lại, giá trị cũ được phát hành và nó được gán
- giữ lại quy định các giá trị mới phải được gửi -retain về chuyển nhượng và giá trị cũ đã gửi -release
- giữ lại là giống như mạnh mẽ.
- táo nói nếu bạn viết giữ lại, nó sẽ tự động chuyển đổi/hoạt động như chỉ mạnh.
- phương pháp như "alloc" bao gồm tiềm ẩn "giữ lại"
Ví dụ:
@property (nonatomic, retain) NSString *name;
@synthesize name;
- gán
- assign là mặc định và chỉ thực hiện phân bổ biến số
- gán là thuộc tính thuộc tính cho trình biên dịch biết cách tổng hợp việc thực thi setter của thuộc tính
- Tôi sẽ sử dụng gán cho các đặc tính nguyên thủy C và yếu cho các tham chiếu yếu tới các đối tượng Objective-C.
Ví dụ:
@property (nonatomic, assign) NSString *address;
@synthesize address;
readonly
- tuyên bố tài sản của bạn như readonly bạn nói với trình biên dịch để không tạo ra phương pháp setter tự động.
- Cho biết rằng thuộc tính là chỉ đọc.
- Nếu bạn chỉ định chỉ đọc, chỉ cần có phương thức getter trong khối @implementation. Nếu bạn sử dụng chỉ thị @synthesize trong khối @implementation, chỉ có phương thức getter được tổng hợp. Hơn nữa, 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 lỗi trình biên dịch.
Ví dụ:
@property (nonatomic, readonly) NSString *name;
@synthesize name;
- readwrite
- setter và getter tạo ra.
- Cho biết rằng thuộc tính phải được coi là đã đọc/ghi.
- Thuộc tính này là mặc định.
- Cả hai phương thức getter và setter đều được yêu cầu trong khối @implementation. Nếu bạn sử dụng chỉ thị @synthesize trong việc thực hiện khối , các phương thức getter và setter được tổng hợp.
Ví dụ:
@property (nonatomic, readwrite) NSString *name;
@synthesize name;
Xem thêm: [Atomic vs tính nonatomic] (http://stackoverflow.com/questions/588866/atomic-vs-nonatomic-properties) – PengOne
Xem thêm : Mục tiêu c 101 (giữ lại và gán) @ http://stackoverflow.com/questions/1380338/objective-c-101-retain-vs-assign-nsstring –