/// A pointer that strongly references an object, ensuring it won't be deallocated. pubstruct StrongPtr(*mut Object);
impl StrongPtr { /// Constructs a `StrongPtr` to a newly created object that already has a /// +1 retain count. This will not retain the object. /// When dropped, the object will be released. /// Unsafe because the caller must ensure the given object pointer is valid. pubunsafefn new(ptr: *mut Object) -> Self {
StrongPtr(ptr)
}
/// Retains the given object and constructs a `StrongPtr` to it. /// When dropped, the object will be released. /// Unsafe because the caller must ensure the given object pointer is valid. pubunsafefn retain(ptr: *mut Object) -> Self {
StrongPtr(runtime::objc_retain(ptr))
}
/// Autoreleases self, meaning that the object is not immediately released, /// but will be when the autorelease pool is drained. A pointer to the /// object is returned, but its validity is no longer ensured. pubfn autorelease(self) -> *mut Object { let ptr = self.0;
mem::forget(self); unsafe {
runtime::objc_autorelease(ptr);
}
ptr
}
/// Returns a `WeakPtr` to self. pubfn weak(&self) -> WeakPtr { unsafe { WeakPtr::new(self.0) }
}
}
impl Drop for StrongPtr { fn drop(&mutself) { unsafe {
runtime::objc_release(self.0);
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.