@@ -285,10 +285,27 @@ */ - (nullable id)performSelector: (SEL)selector withObject: (nullable id)object1 withObject: (nullable id)object2; +/*! + * @brief Performs the specified selector with the specified objects. + * + * @param selector The selector to perform + * @param object1 The first object that is passed to the method specified by the + * selector + * @param object2 The second object that is passed to the method specified by + * the selector + * @param object3 The third object that is passed to the method specified by the + * selector + * @return The object returned by the method specified by the selector + */ +- (nullable id)performSelector: (SEL)selector + withObject: (nullable id)object1 + withObject: (nullable id)object2 + withObject: (nullable id)object3; + /*! * @brief Checks two objects for equality. * * Classes containing data (like strings, arrays, lists etc.) should reimplement * this! @@ -733,10 +750,29 @@ - (void)performSelector: (SEL)selector withObject: (nullable id)object1 withObject: (nullable id)object2 afterDelay: (of_time_interval_t)delay; +/*! + * @brief Performs the specified selector with the specified objects after the + * specified delay. + * + * @param selector The selector to perform + * @param object1 The first object that is passed to the method specified by the + * selector + * @param object2 The second object that is passed to the method specified by + * the selector + * @param object3 The third object that is passed to the method specified by the + * selector + * @param delay The delay after which the selector will be performed + */ +- (void)performSelector: (SEL)selector + withObject: (nullable id)object1 + withObject: (nullable id)object2 + withObject: (nullable id)object3 + afterDelay: (of_time_interval_t)delay; + #ifdef OF_HAVE_THREADS /*! * @brief Performs the specified selector on the specified thread. * * @param selector The selector to perform @@ -778,10 +814,31 @@ onThread: (OFThread *)thread withObject: (nullable id)object1 withObject: (nullable id)object2 waitUntilDone: (bool)waitUntilDone; +/*! + * @brief Performs the specified selector on the specified thread with the + * specified objects. + * + * @param selector The selector to perform + * @param thread The thread on which to perform the selector + * @param object1 The first object that is passed to the method specified by the + * selector + * @param object2 The second object that is passed to the method specified by + * the selector + * @param object3 The third object that is passed to the method specified by the + * selector + * @param waitUntilDone Whether to wait until the perform finished + */ +- (void)performSelector: (SEL)selector + onThread: (OFThread *)thread + withObject: (nullable id)object1 + withObject: (nullable id)object2 + withObject: (nullable id)object3 + waitUntilDone: (bool)waitUntilDone; + /*! * @brief Performs the specified selector on the main thread. * * @param selector The selector to perform * @param waitUntilDone Whether to wait until the perform finished @@ -816,10 +873,29 @@ - (void)performSelectorOnMainThread: (SEL)selector withObject: (nullable id)object1 withObject: (nullable id)object2 waitUntilDone: (bool)waitUntilDone; +/*! + * @brief Performs the specified selector on the main thread with the specified + * objects. + * + * @param selector The selector to perform + * @param object1 The first object that is passed to the method specified by the + * selector + * @param object2 The second object that is passed to the method specified by + * the selector + * @param object3 The third object that is passed to the method specified by the + * selector + * @param waitUntilDone Whether to wait until the perform finished + */ +- (void)performSelectorOnMainThread: (SEL)selector + withObject: (nullable id)object1 + withObject: (nullable id)object2 + withObject: (nullable id)object3 + waitUntilDone: (bool)waitUntilDone; + /*! * @brief Performs the specified selector on the specified thread after the * specified delay. * * @param selector The selector to perform @@ -860,10 +936,31 @@ - (void)performSelector: (SEL)selector onThread: (OFThread *)thread withObject: (nullable id)object1 withObject: (nullable id)object2 afterDelay: (of_time_interval_t)delay; + +/*! + * @brief Performs the specified selector on the specified thread with the + * specified objects after the specified delay. + * + * @param selector The selector to perform + * @param thread The thread on which to perform the selector + * @param object1 The first object that is passed to the method specified by the + * selector + * @param object2 The second object that is passed to the method specified by + * the selector + * @param object3 The third object that is passed to the method specified by the + * selector + * @param delay The delay after which the selector will be performed + */ +- (void)performSelector: (SEL)selector + onThread: (OFThread *)thread + withObject: (nullable id)object1 + withObject: (nullable id)object2 + withObject: (nullable id)object3 + afterDelay: (of_time_interval_t)delay; #endif /*! * @brief This method is called when @ref resolveClassMethod: or * @ref resolveInstanceMethod: returned false. It should return a target