Cố gắng theo dõi best practices của ReactiveCocoa để cập nhật giao diện người dùng của tôi theo giờ, mỗi giờ. Đây là những gì tôi đã có:Thực hiện hành động theo giờ, mỗi giờ, với ReactiveCocoa
NSDateComponents *components = [[[NSCalendar sharedCalendar] calendar] components:NSMinuteCalendarUnit fromDate:[NSDate date]];
// Generalization, I know (not every hour has 60 minutes, but bear with me).
NSInteger minutesToNextHour = 60 - components.minute;
RACSubject *updateEventSignal = [RACSubject subject];
[updateEventSignal subscribeNext:^(NSDate *now) {
// Update some UI
}];
[[[RACSignal interval:(60 * minutesToNextHour)] take:1] subscribeNext:^(id x) {
[updateEventSignal sendNext:x];
[[RACSignal interval:3600] subscribeNext:^(id x) {
[updateEventSignal sendNext:x];
}];
}];
Điều này có một số sai sót rõ ràng: đăng ký và gửi thủ công và chỉ "cảm thấy sai". Bất kỳ ý tưởng về làm thế nào để làm cho điều này "phản ứng" hơn?
Điều này là thông minh, nhưng chúng tôi thực sự khuyên bạn nên [soạn thảo các toán tử hiện tại] (https://github.com/ReactiveCocoa/ReactiveCocoa/blob/master/Documentation/DesignGuidelines.md#compose-existing-operators-when-possible) bất cứ khi nào có thể, thay vì viết những cái mới từ đầu. Trong số những thứ khác, điều đó có nghĩa là bạn sẽ nhận được bất kỳ sửa lỗi nào miễn phí. –
Tôi nhận ra rằng tôi đã đi lạc lối các khuyến nghị, nhưng thói quen cũ chết cứng. Cảm ơn lời nhắc nhở nhẹ nhàng. –
Đừng lo! Bạn luôn có thể gửi yêu cầu kéo nếu bạn cho rằng nó cũng là tiêu chuẩn. :) –