Long-term solution for accidental retain cycles from strong references in closures

The ease of accidentally creating retain cycles has similarly been my #1 frustration with Swift, as I also try to avoid unnecessary weak self. A specific case where it bit me was when trying to implement RAII-like resource management (my resources wouldn't get cleaned up because of an accidental retain cycle). I posted about it here and learned about noncopyable types for which the compiler makes you be explicit about memory management. This was really exciting to me. I'm sure it won't solve every case, but in some cases, you don't need to rely on ARC if you make your types noncopyable and are explicit about ownership. It led me to start learning Rust so I can better understand that memory management model.