2012-07-26 19 views
6

Ứng dụng của tôi theo dõi người dùng với CLLocationManager. Trong cuộc gọi đại biểu số didUpdateToLocation Tôi làm tất cả những điều thú vị về việc lưu vị trí của họ. Tuy nhiên, tôi cần một cách để kiểm tra xem họ có dừng lại không. Rằng tôi có thể dừng ghi lại các địa điểm và xem xét chuyến đi của họ. Vì vậy, tôi có một số NSTimer trong CCLocationManager được thêm và xóa mỗi lần didUpdateToLocation được gọi. Rằng nó sẽ được bắt đầu khi người dùng dừng lại và CLLocationManager ngừng nhận được gọi.NSTimer và NSRunLoop

Cách duy nhất mà tôi từng có thể nhận được các NSTimer làm việc là để làm:

[[NSRunLoop mainRunLoop] addTimer:userStoppedMovingTimer forMode:NSRunLoopCommonModes]; 

Sau đó, để xoá bỏ nó:

[userStoppedMovingTimer invalidate]; 

Tôi chưa bao giờ phải thêm bộ hẹn giờ như thế này trong quá khứ. Ai đó có thể làm sáng tỏ vì sao nó lại là?

+0

Nếu bạn tạo bộ hẹn giờ với '+ scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:', đây không phải là vấn đề. –

Trả lời

8

Từ documentation:

Có ba cách để tạo ra một bộ đếm thời gian:

  1. Sử dụng scheduledTimerWithTimeInterval:invocation:repeats: hoặc scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: lớp phương pháp để tạo bộ đếm thời gian và lịch trình nó trên đường chạy trốn hiện tại lặp lại ở chế độ mặc định là .

  2. Sử dụng timerWithTimeInterval:invocation:repeats: hoặc timerWithTimeInterval:target:selector:userInfo:repeats: lớp phương pháp để tạo ra các đối tượng hẹn giờ mà không lên kế hoạch nó trên một vòng lặp chạy. (Sau tạo ra nó, bạn phải thêm bộ đếm thời gian để một vòng lặp chạy bằng tay bằng cách gọi các addTimer:forMode: phương pháp của đối tượng NSRunLoop tương ứng.)

  3. Phân bổ bộ đếm thời gian và khởi tạo nó bằng cách sử dụng phương pháp initWithFireDate:interval:target:selector:userInfo:repeats:. (Sau khi tạo nó, bạn phải thêm bộ đếm thời gian để một vòng lặp chạy bằng tay bởi gọi phương thức addTimer:forMode: của tương ứng NSRunLoop đối tượng.)

Có thể bạn đang sử dụng tùy chọn 1 trước đây, và bây giờ bạn đang sử dụng tùy chọn 2 hoặc 3.

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