Đây là phần mở rộng của nhiệm vụ này: Is it possible to create a category of the "Block" object in Objective-C.Khối Obj-C có thể tự thực thi không?
Về cơ bản trong khi có vẻ như có thể tạo danh mục trên các khối, thông qua NSObject hoặc NSBlock, tôi đang gặp khó khăn khi hiểu cách khối có thể tự đánh giá. Ví dụ được đưa ra trong câu trả lời cho câu hỏi cuối cùng:
- (void) doFoo {
//do something awesome with self, a block
//however, you can't do "self()".
//You'll have to cast it to a block-type variable and use that
}
ngụ ý rằng nó có thể bằng cách nào đó đúc tự cho một biến khối, nhưng làm thế nào người ta sẽ thực hiện khối chính nó? Ví dụ, nói rằng tôi đã làm một loại trên NSBlock và trong một phương pháp đã làm:
NSBlock* selfAsBlock = (NSBlock*)self;
Có bất kỳ thông điệp nào tôi có thể gửi đến selfAsBlock để có khối đánh giá?
Có bạn có thể. Bạn có thể tìm thấy thêm trong này (đã có trên SO) http://stackoverflow.com/questions/4824613/is-there-a-self-pointer-for-blocks –
Tôi không thấy cách giải quyết vấn đề này. Câu trả lời đó dường như tập trung vào cách gọi một khối từ bên trong định nghĩa khối riêng của nó. Tôi đang nói về việc đánh giá một khối từ chính đối tượng khối. Chỉ cần một chút cụ thể hơn, những gì tôi hy vọng đạt được với điều này là có thể thêm các phương thức để chặn (hoặc trên NSObject hoặc NSBlock) để thực hiện luồng điều khiển dựa trên khối (nghĩa là [block whileTrueDo: block]). Để làm điều này, tôi cần khối để đánh giá lại chính nó trong phương pháp. – donalbain