.. title:: clang-tidy - objc-nsinvocation-argument-lifetime objc-nsinvocation-argument-lifetime =================================== Finds calls to ``NSInvocation`` methods under ARC that don't have proper argument object lifetimes. When passing Objective-C objects as parameters to the ``NSInvocation`` methods ``getArgument:atIndex:`` and ``getReturnValue:``, the values are copied by value into the argument pointer, which leads to incorrect releasing behavior if the object pointers are not declared ``__unsafe_unretained``. For code: .. code-block:: objc id arg; [invocation getArgument:&arg atIndex:2]; __strong id returnValue; [invocation getReturnValue:&returnValue]; The fix will be: .. code-block:: objc __unsafe_unretained id arg; [invocation getArgument:&arg atIndex:2]; __unsafe_unretained id returnValue; [invocation getReturnValue:&returnValue]; The check will warn on being passed instance variable references that have lifetimes other than ``__unsafe_unretained``, but does not propose a fix: .. code-block:: objc // "id _returnValue" is declaration of instance variable of class. [invocation getReturnValue:&self->_returnValue];