Tôi đang tìm kiếm một số mã nguồn từ một bên thứ ba và liên tục nhìn thấy một cú pháp mới đối với tôi. Về cơ bản họ đang tách các câu lệnh bằng dấu phẩy thay vì dấu chấm phẩy. Nó biên dịch và làm việc, nhưng tôi không hiểu nó đang làm gì. Có vẻ như vậyTrong mục tiêu-C, dấu phẩy làm gì khi được sử dụng làm dấu phân tách câu lệnh?
if(url)[url release], url = nil;
và họ cũng sử dụng nó mà không có sự nếu đôi khi
[url release], url = nil;
gì đang xảy ra ở đây?
Điều này không hữu ích trong trường hợp này và chỉ gây khó đọc hơn. Trường hợp nó có thể hữu ích là nếu một số chuyển nhượng đã xảy ra với hai biến với một bản phát hành, như: var1 = [var2 release], var2 = nil; nhưng ngay cả trong trường hợp này, một khối sẽ làm cho nó sạch hơn, dễ đọc hơn nhiều và dễ dàng hơn nhiều để gỡ lỗi. –
Đồng ý về sự không rõ ràng của ví dụ đầu tiên, nhưng thứ hai không quá tệ trong việc thực hiện dealloc, mặc dù dấu chấm phẩy thay vì dấu phẩy sẽ làm điều tương tự. Tôi tìm thấy nó dễ dàng hơn để đọc cho một danh sách dài các bản phát hành, bởi vì bạn không có dòng xen kẽ làm hai việc khác nhau. Về mặt ngữ nghĩa, phát hành một đối tượng và đặt nó thành nil giống như một thao tác đơn (hoặc nên là nếu bạn muốn tránh zombie). –