So if you initialize a Timer object myTime and you add as a parameter [1.0, 4.0, 10.0] it will fire at the first, fourth and tenth second? Why is the creation of a new Timer object required then?userInfo is for the user to decide. The user in this case is the developer. An example might be a timer that's meant to go off at a set of times that are not regular, say 1 sec, then 4 secs, then 10 secs. The userInfo could be an array holding those times and each time the timer goes off it sets the next time to go off from the list. When the timer is first created the array is created and the userInfo is set to the timer. Then the array could have one value removed. Then a new timer is created with the new array. And so on.
In most cases there are other ways to accomplish things that the userInfo might be used for but sometimes it's the most convenient way. It's kind of like the userInfo in NSNotification and NSError. Use it for whatever you want.
interestingThe userInfo property of the timer can be used and abused however you like. Basically it exists for people who are reluctant to use global scope variables but want to persist some value/object for some period of time.
It's especially useful when you have two separate timers that trigger/act upon the same function to accomplish different tasks. Thus, the timer function will exhibit either completely or partially different behavior depending on what was passed in via user info.