Tôi đang làm việc trên ứng dụng iOS đầu tiên của mình và đã chạy trong lần tìm kiếm đầu tiên Tôi không thể tìm thấy câu trả lời hay cho.Mục tiêu C & iOS: chạy bộ hẹn giờ? NSTimer/Chủ đề/NSDate/etc
Vấn đề: Tôi có một tùy chỉnh UIGestureRecognizer
và để tất cả có dây đúng cách và tôi có thể chạy mã cho mỗi lần chạm trong số @selector
sau khi nhận dạng. Điều này đã được tốt cho hầu hết mọi thứ, nhưng đó là một chút quá nhiều đầu vào cho người khác.
Mục tiêu của tôi: Để tạo bộ hẹn giờ kích hoạt tại một khoảng thời gian được chỉ định để chạy logic và để có thể hủy tính năng này tại thời điểm chạm bị hủy.
Tại sao tôi hỏi ở đây: Có rất nhiều khả năng cho các giải pháp, nhưng không có giải pháp nào nổi bật là tốt nhất để triển khai. Cho đến nay nó có vẻ như
performSelector
(và một số biến thể về vấn đề này)NSThread
NSTimer
NSDate
- Operation Queues
- Tôi nghĩ rằng tôi thấy một số người khác cũng ...
Từ tất cả các nghiên cứu, một số hình thức làm cho một sợi có vẻ là con đường để đi, nhưng tôi đang ở một mất mát mà tại đó sẽ làm việc tốt nhất cho tình trạng này.
Ví dụ về triển khai: NSPoint
được thực hiện sau mỗi 0.10 giây và khoảng cách giữa điểm trước đó và điểm hiện tại được thực hiện. [Lấy khoảng cách giữa mọi điểm đã mang lại kết quả rất lộn xộn].
Mã liên quan:
- (void)viewDidLoad {
CUIVerticalSwipeHold *vSwipe =
[[CUIVerticalSwipeHold alloc]
initWithTarget:self
action:@selector(touchHoldMove:)];
[self.view addGestureRecognizer:vSwipe];
[vSwipe requireGestureRecognizerToFail:doubleTap];
}
...
- (IBAction)touchHoldMove:(UIGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
}
if (sender.state == UIGestureRecognizerStateBegan) {
}
//other stuff to do goes here
}
Lưu ý: Nó được coi là thực hành tốt để thiết lập bộ đếm thời gian để không sau khi vô hiệu hóa nó: [theTimer invalidate]; theTimer = nil; – Groot