12
[self.foo setBlock:^{ 
    [self doSomething]; // causes warning 
}]; 

soTại sao thư gửi đi gây ra cảnh báo chu kỳ lưu giữ trong ARC, nhưng tập hợp thuộc tính thì không?

[self.foo setBlock:^{ 
    self.bar = baz;  // does not cause warning 
}]; 

Cảnh báo là "Chụp self mạnh trong khối này là khả năng dẫn đến một chu kỳ giữ lại."

Cả hai đều không dẫn đến tham chiếu mạnh mẽ?

+0

nếu thay đổi ví dụ thứ hai thành '[self setBar: baz];', bạn có nhận được cảnh báo không? –

+0

Có, nếu tôi đặt thuộc tính thông qua cú pháp đó thì tôi làm. – Aaron

+16

Lỗi trình biên dịch. Có khả năng được sửa trong phiên bản sau. – bbum

Trả lời

1

Đây là lỗi trình biên dịch và bạn nên gửi báo cáo lỗi với Apple.

Cả hai đều giống nhau, a.b = c chỉ là một cách khác để viết [a setB: c]. Nếu trình biên dịch xử lý một cách khác với trình biên dịch này thì đây là lỗi.

+0

Tại sao downvoted này lại ?? –

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