Changelog History
-
v2.1.1
October 06, 2020 -
v2.1.0
February 22, 2020 -
v2.0.3
June 19, 2019 -
v2.0.2
May 13, 2019 -
v2.0.1
April 19, 2019 -
v2.0.0 Changes
April 06, 2019π βοΈβοΈβοΈThis release contains some breaking changes.
β Warning
π The initial design of
Task
refers toTimer
: It will be implicitly held by an internal object, if you want to remove it, you need to explicitly call theinvalidate/cancel
method.
But soon, I realized that it was easy to ignore this feature and caused memory leaks.
So in 2.0.0,Task
is no longer automatically held, that is, if no external variables are explicitly pointed to it, this task will be destroyed.π Fixed
- Calculation issue in
every(_ weekday: Weekday)
andevery(_ monthday: Monthday)
.
β Added
TaskCenter
. From now on, you can use your own task center to manage tasks.task.executionDates
. Records the date each time the task is executed.- β More tests.
β Removed
task.timeline
. All timeline properties are now accessible directly from the task.plan.do(host: obj)
. Since tasks are no longer implicitly held by task centers, I don't think the host mechanism is necessary.
β‘οΈ Updated
- Some renaming, to make the api more swift!
- Calculation issue in
-
v1.0.0 Changes
September 26, 2018β± Rename struct
Schedule
toPlan
It is not wise to let a type have the same name as framework.β Remove
ParasiticTask
0οΈβ£ Now, each constructor has thehost
parameter(default is nil).β Add
RunLoopTask
β± Before 1.x, Schedule will execute tasks on a global dispatch queue when time is up by default. Now tasks will be executed on the current thread, its implementation is based on RunLoop, which means that you need to ensure that the current thread has a runloop available. So it is still recommended to use dispatch queue to construct the task. -
v0.1.1
September 18, 2018 -
v0.1.0
August 28, 2018 -
v0.0.9
August 26, 2018