Tôi có một khối mã được truy cập thường xuyên và từ luồng chính hoặc một số luồng nền khác. Tôi cần đảm bảo rằng mã này chỉ được xử lý một lần.@synchronized() và sự khác biệt của NSLock
Tôi hiện đang sử dụng khối @synchronized(self) { }
nhưng tôi không chắc chắn liệu đó có cung cấp sự bảo vệ chính xác hay không. Nó khác với cá thể NSLock
như thế nào?
Cuối cùng, bất kỳ ai cũng có thể đề xuất cách tôi có thể bảo vệ phương pháp của mình không? Phương pháp này là trong đại biểu ứng dụng của tôi, và tôi truy cập nó từ chủ đề khác nhau bằng cách gọi:
[[[UIApplication sharedApplication] delegate] myMethod];
Rất cám ơn,
Mike
Cảm ơn sự giúp đỡ của bạn! Có đúng không khi nào sử dụng 'self'? Tự trong trường hợp này sẽ trỏ đến ứng dụng đại biểu, không có vấn đề gì đang gọi nó? Tôi đang bối rối là tại sao bạn phải vượt qua một cái gì đó vào nó! –
Bạn sử dụng (self) nếu bạn muốn khóa "per instance" và [YourClass class] nếu bạn muốn khóa "per class". (self) có nghĩa là việc thực thi phần quan trọng cần được đồng bộ hóa cho đối tượng hiện tại (cụ thể). –
Ahhh, tôi hiểu rồi! Cảm ơn bao giờ hết :-) –