Lần duy nhất bạn sẽ thấy sự khác biệt hiệu suất là nếu bạn không đánh dấu thuộc tính là "nonatomic". Sau đó @synthesize sẽ tự động thêm mã đồng bộ xung quanh cài đặt thuộc tính của bạn, giữ cho chuỗi đó an toàn - nhưng chậm hơn để đặt và truy cập.
Như vậy chủ yếu là bạn có thể muốn xác định một tài sản như:
@property (nonatomic, giữ lại) NSString * myProp;
Cá nhân tôi thấy ký hiệu dấu chấm thường hữu ích từ quan điểm của bạn không phải suy nghĩ về cách viết phương thức setter chính xác, không hoàn toàn tầm thường ngay cả đối với người định cư không phải vì bạn cũng phải nhớ giải phóng giá trị cũ đúng cách. Sử dụng mã mẫu giúp bạn nhưng bạn luôn có thể mắc lỗi và thường là mã lặp đi lặp lại làm lộn xộn các lớp. Một mô hình cần lưu ý: nếu bạn tự xác định setter (thay vì để @synthesize tạo ra nó) và bắt đầu có các tác dụng phụ khác của việc thiết lập một giá trị, bạn nên đặt phương thức bình thường thay vì gọi bằng cách sử dụng ký hiệu đặc tính.
Thuộc tính sử dụng ngữ nghĩa dường như truy cập trực tiếp đến giá trị thực của người gọi và bất kỳ thứ gì thay đổi từ đó sẽ được thực hiện qua gửi tin nhắn, không truy cập vào thuộc tính (mặc dù cả hai đều gửi tin nhắn).
Nguồn
2008-09-15 05:44:32