Your approach seems to be a completely wrong use of optionals (have you been writing in Java or any other language with implicit nullability?) since you’re giving up type-safety of Swift. Do you use implicitly unwrapped optionals for delegates too?
Giving up type-safety? Sorry, but I don't understand this in the current context.
As for delegates: if the delegate can be 'nil' during normal operations, then it should be a regular optional as per rule #3.