2011-12-02 34 views

Trả lời

6

Chúng hoàn toàn khác nhau.

Đầu tiên lấy con trỏ đối tượng từ từ điển, sau đó diễn giải con trỏ dưới dạng BOOL. Điều này có nghĩa là bất kỳ con trỏ nào không phải là nil sẽ được hiểu là YESnilNO. Trong ví dụ cụ thể, vì từ điển không thể chứa nil con trỏ, bạn sẽ chỉ nhận được YES từ dòng mã này.

Biểu tượng thứ hai lấy cùng một đối tượng từ từ điển, sau đó gửi thông báo boolValue cho đối tượng đó. Có lẽ, và nếu đối tượng nhận ra thông báo, điều đó sẽ dẫn đến một phiên bản BOOL của đối tượng.

Là một ví dụ cụ thể, nếu từ điển chứa một NSNumber kết hợp với phím @"boolValue", các NSNumber sẽ nhận được thông báo boolValue, và nếu nó không phải là zero trở YES, nếu không NO.

Vì vậy, để trả lời câu hỏi của bạn, bạn nên sử dụng biểu mẫu thứ hai. Việc đưa con trỏ đến một số BOOL hiếm khi có ý nghĩa gì.

6

Không, chúng không giống nhau. Sự khác biệt là thứ hai là đúng, thứ nhất là không.

Trong dòng đầu tiên, bạn chỉ cần đưa con trỏ đến BOOL tương đương với kiểm tra nếu con trỏ là không hoặc không có gì để thực hiện với giá trị thực sự được lưu trữ trong đối tượng.

3
[[dictionary objectForKey:@"boolValue"] boolValue]; 

không phải là diễn viên, nhưng gọi phương thức trên NSNumber, trả về một bool. Bên trong một dàn diễn viên có thể có liên quan - nhưng chi tiết triển khai không công khai.

Các vấn đề liên quan