pub struct SNTimeDurationConstraint { /* private fields */ }SNTimeDurationConstraint only.Expand description
Constrains CMTime durations to a subset of legal values.
SNTimeDurationConstraint is a union type, which, based on the value of its type property, may assume one of several forms. Instance properties may be used to extract information from an object, but certain properties are only valid to exercise under certain circumstances. Before accessing a particular property, refer to its documentation to understand what type value is required in order for that property to be valid.
See also Apple’s documentation
Implementations§
Source§impl SNTimeDurationConstraint
impl SNTimeDurationConstraint
Sourcepub unsafe fn type(&self) -> SNTimeDurationConstraintType
pub unsafe fn type(&self) -> SNTimeDurationConstraintType
The time constraint type.
The value of this property dictates whether or not other properties associated with this class can be validly accessed. Please refer to the documentation of other individual properties to understand their relationship to this one. This property is always valid to access.
Sourcepub unsafe fn enumeratedDurations(&self) -> Retained<NSArray<NSValue>>
pub unsafe fn enumeratedDurations(&self) -> Retained<NSArray<NSValue>>
If the constraint type is enumerated, then the set of discrete allowable time durations.
- Returns: If the constraint type is enumerated, an array of CMTime structures (boxed in NSValue instances) representing the set of allowable time durations. The durations will always be provided sorted in order of ascending time. If the constraint type is not enumerated, an empty array will be returned.
The type property should be queried before this property is accessed. This property will only yield meaningful values if the constraint type is considered to be ‘enumerated’. The constraint type is considered to be ‘enumerated’ if the type property is equal to SNTimeDurationConstraintTypeEnumerated.
Sourcepub unsafe fn durationRange(&self) -> CMTimeRange
Available on crate feature objc2-core-media only.
pub unsafe fn durationRange(&self) -> CMTimeRange
objc2-core-media only.If the constraint type is range, then the range of allowable window durations.
- Returns: If the constraint type is range, a CMTimeRange representing the range of allowable window durations. If the constraint type is not range,
kCMTimeRangeInvalid.
The type property should be queried before this property is accessed. This property will only yield meaningful values if the constraint type is considered to be ‘range’. The constraint type is considered to be ‘range’ if the type property is equal to SNTimeDurationConstraintTypeRange.
Sourcepub unsafe fn initWithEnumeratedDurations(
this: Allocated<Self>,
enumerated_durations: &NSArray<NSValue>,
) -> Retained<Self>
pub unsafe fn initWithEnumeratedDurations( this: Allocated<Self>, enumerated_durations: &NSArray<NSValue>, ) -> Retained<Self>
Initializes an enumerated-type constraint.
-
Parameter enumeratedDurations: A discrete set of duration values (represented as CMTime values boxed in NSValue instances) permitted by this constraint.
-
Returns: An instance whose
typeisSNTimeDurationConstraintTypeEnumerated, and which constrains duration values to the provided set of discrete values.
Sourcepub unsafe fn initWithDurationRange(
this: Allocated<Self>,
duration_range: CMTimeRange,
) -> Retained<Self>
Available on crate feature objc2-core-media only.
pub unsafe fn initWithDurationRange( this: Allocated<Self>, duration_range: CMTimeRange, ) -> Retained<Self>
objc2-core-media only.Initializes a range-type constraint.
-
Parameter durationRange: A continuous range of duration values (represented as CMTime values) permitted by this constraint.
-
Returns: An instance whose
typeisSNTimeDurationConstraintTypeRange, and which constrains durations values to the provided range.
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>
pub unsafe fn new() -> Retained<Self>
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for SNTimeDurationConstraint
impl AsRef<AnyObject> for SNTimeDurationConstraint
Source§impl AsRef<NSObject> for SNTimeDurationConstraint
impl AsRef<NSObject> for SNTimeDurationConstraint
Source§impl Borrow<AnyObject> for SNTimeDurationConstraint
impl Borrow<AnyObject> for SNTimeDurationConstraint
Source§impl Borrow<NSObject> for SNTimeDurationConstraint
impl Borrow<NSObject> for SNTimeDurationConstraint
Source§impl ClassType for SNTimeDurationConstraint
impl ClassType for SNTimeDurationConstraint
Source§const NAME: &'static str = "SNTimeDurationConstraint"
const NAME: &'static str = "SNTimeDurationConstraint"
Source§type ThreadKind = <<SNTimeDurationConstraint as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SNTimeDurationConstraint as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for SNTimeDurationConstraint
impl Debug for SNTimeDurationConstraint
Source§impl Deref for SNTimeDurationConstraint
impl Deref for SNTimeDurationConstraint
Source§impl Hash for SNTimeDurationConstraint
impl Hash for SNTimeDurationConstraint
Source§impl Message for SNTimeDurationConstraint
impl Message for SNTimeDurationConstraint
Source§impl NSObjectProtocol for SNTimeDurationConstraint
impl NSObjectProtocol for SNTimeDurationConstraint
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref