Hãy cẩn thận với thuật ngữ "vô hướng" này. Thuộc tính NSString * cũng là một con trỏ, giống như ví dụ bạn đã cung cấp với một con trỏ tới BOOL.
Từ docs Apple: (The Objective-C Programming Language)
Nếu bạn chỉ định retain
hoặc copy
và không chỉ định nonatomic
, sau đó trong một môi trường tham khảo-tính, một tổng hợp lấy accessor cho một thuộc tính đối tượng sử dụng một khóa và giữ lại và tự động trả lại giá trị trả về —giấy lementation sẽ tương tự như sau:
[_internal lock]; // lock using an
object-level
lock
id result = [[value retain] autorelease];
[_internal unlock];
return result;
Bạn không thể áp dụng một khóa đối tượng cấp ở cái gì đó không phải là một đối tượng, vì vậy (không) nguyên tử trong thuộc tính của các loại nguyên thủy về cơ bản không có hiệu lực.
Bạn có thể kết luận rằng nguyên tử chỉ áp dụng cho đối tượng tài sản, và điều này được củng cố trong các tài liệu:
Nếu bạn chỉ định nonatomic
, một accessor tổng hợp cho một tài sản đối tượng chỉ đơn giản trả về giá trị trực tiếp.
Để làm rõ xem bạn có nên chỉ định một hay khác: về mặt kỹ thuật, tài sản mà không có một nonatomic
được coi nguyên tử, nhưng hãy nhớ rằng nó không có ý nghĩa với nhiều loại nguyên thủy. Vì vậy, bạn có thể muốn tiết kiệm một số đánh máy và tránh nonatomic
trong những điều này.
Rất tiếc. Tôi có nghĩa là để làm cho những giá trị BOOL, không phải con trỏ. Đang cập nhật ... – ma11hew28
Tôi vẫn chưa rõ một chút. Vì vậy, tôi không nên chỉ định 'nonatomic' cho các kiểu nguyên thủy? – ma11hew28
Bạn thực sự không cần phải có bất kỳ thuộc tính nào cho các kiểu nguyên thủy. Điều anh ấy nói là bạn chỉ yêu cầu nonatomic cho các đối tượng, không phải các kiểu nguyên thủy. Vì vậy, @property BOOL someBool; hoạt động tốt. –