2010-07-19 20 views
7

nếu tôi thiết lập một runloop như thế:làm cách nào để dừng hẹn giờ được kích hoạt runloop?

NSRunloop* loop = [NSRunloop currentRunLoop]; 
[runLoop addTimer:anyTimer forMode:NSDefaultRunLoopMode]; 

Tôi có thể dừng lại không? hoặc là cách duy nhất để bỏ qua thông báo tôi sử dụng để kích hoạt hành động tiếp theo?

ok, tôi đưa ra một ví dụ cho vấn đề này:

-(void)blinkeffekt:(double)pollingTime{ 

NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 

if (pollingTime != 0) { 
    NSTimeInterval interval =(double)pollingTime/1000; 
    NSTimer timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(polling) userInfo:nil repeats:YES]; 
    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode]; 
} 
else { 

    [timer invalidate]; 
} 

}

chắc chắn, sau đây là một số lỗi - không có câu hỏi. nhưng tôi nghĩ, nó cho thấy vấn đề của tôi. và điều này không thực sự giải quyết được với các câu trả lời cho đến bây giờ.

tôi cần chạy bộ hẹn giờ và dừng lại sau. và lý tưởng ra khỏi một hàm khác trong lớp. nhưng sau đó tôi không thể truy cập "hẹn giờ" nữa và runloop không cho phép để tìm ra, nếu như một "tin nhắn" có sẵn. và nó sẽ vô cùng hiệu quả, nếu tôi sẽ đăng ký cho mỗi cuộc gọi của chức năng một bộ đếm thời gian mới.

Trả lời

19

Bạn cần gửi tin nhắn không hợp lệ đến bộ hẹn giờ để xóa nó khỏi RunLoop.

See Doc

[anyTimer invalidate]; 
+0

có trước đây, tôi đã phải gắn bộ đếm thời gian cho đối tượng, rằng tôi không mất các tài liệu tham khảo. nhưng có, vì vậy nó hoạt động – nico

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