pub struct IOUSBHostPipe { /* private fields */ }IOUSBHostIOSource and IOUSBHostPipe only.Expand description
The IOUSBHostIOSource representing a USB endpoint
This class provides functionality to transfer data across USB.
See also Apple’s documentation
Implementations§
Source§impl IOUSBHostPipe
impl IOUSBHostPipe
Sourcepub unsafe fn originalDescriptors(
&self,
) -> NonNull<IOUSBHostIOSourceDescriptors>
Available on crate feature objc2-io-kit only.
pub unsafe fn originalDescriptors( &self, ) -> NonNull<IOUSBHostIOSourceDescriptors>
objc2-io-kit only.Retrieve the Original descriptor used when creating the pipe.
Returns: IOUSBHostIOSourceDescriptors pointer
Sourcepub unsafe fn descriptors(&self) -> NonNull<IOUSBHostIOSourceDescriptors>
Available on crate feature objc2-io-kit only.
pub unsafe fn descriptors(&self) -> NonNull<IOUSBHostIOSourceDescriptors>
objc2-io-kit only.Retrieve the current descriptor controlling the endpoint.
Returns: IOUSBHostIOSourceDescriptors pointer
Sourcepub unsafe fn adjustPipeWithDescriptors_error(
&self,
descriptors: NonNull<IOUSBHostIOSourceDescriptors>,
) -> Result<(), Retained<NSError>>
Available on crate feature objc2-io-kit only.
pub unsafe fn adjustPipeWithDescriptors_error( &self, descriptors: NonNull<IOUSBHostIOSourceDescriptors>, ) -> Result<(), Retained<NSError>>
objc2-io-kit only.Adjust behavior of periodic endpoints to consume a different amount of bus bandwidth
Periodic (interrupt and isochronous) endpoints reserve bus bandwidth when they are
created, which takes into account max packet size, burst size, and the endpoint
service interval. If a function driver knows the endpoint will not use all of the
allocated bandwidth, the
adjustPolicy
method may be used to reduce the
bandwidth reserved for the endpoint. The original endpoint descriptors should be
copied and modified to adjust max packet size, mult, burst, and interval, and then
passed to
adjustPolicy
. The altered descriptors must pass
validateEndpointDescriptor(…)
from the kernel for policy changes to be
processed.
Parameter descriptors: Reference to an IOUSBHostIOSourceDescriptors describing the
new endpoint policy
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
descriptors must be a valid pointer.
Sourcepub unsafe fn idleTimeout(&self) -> NSTimeInterval
pub unsafe fn idleTimeout(&self) -> NSTimeInterval
Retrieve the current idle suspend timeout. See
setIdleTimeoutReturns: The amount of time after all pipes are idle to wait before suspending the device,
Sourcepub unsafe fn setIdleTimeout_error(
&self,
idle_timeout: NSTimeInterval,
) -> Result<(), Retained<NSError>>
pub unsafe fn setIdleTimeout_error( &self, idle_timeout: NSTimeInterval, ) -> Result<(), Retained<NSError>>
Sets the desired idle suspend timeout for the interface
Once the interface is considered idle, it will defer electrical suspend of the device for the specified duration.
Parameter idleTimeout: The amount of time after all pipes are idle to
wait before suspending the device.
Returns: YES on success. An IOReturn error code will be reported on failure.
Sourcepub unsafe fn clearStallWithError(&self) -> Result<(), Retained<NSError>>
pub unsafe fn clearStallWithError(&self) -> Result<(), Retained<NSError>>
Clear the halt condition of the pipe.
When a bulk or interrupt USB endpoint encounters any IO error other than a timeout, it transitions to a Halted state which must be cleared to perform additional IO on the endpoint. This method will clear the halted condition for the endpoint, including sending a CLEAR_TT_BUFFER control request (USB 2.0 11.24.2.3) to an intermediate hub if required. All pending IO on the endpoint will be aborted, and the data toggle for the endpoint will also be reset. ClearStall is not required for control endpoints.
Returns: YES on success, an IOReturn error code will be reported on failure
Sourcepub unsafe fn sendControlRequest_data_bytesTransferred_completionTimeout_error(
&self,
request: IOUSBDeviceRequest,
data: Option<&NSMutableData>,
bytes_transferred: *mut NSUInteger,
completion_timeout: NSTimeInterval,
) -> Result<(), Retained<NSError>>
Available on crate feature objc2-io-kit only.
pub unsafe fn sendControlRequest_data_bytesTransferred_completionTimeout_error( &self, request: IOUSBDeviceRequest, data: Option<&NSMutableData>, bytes_transferred: *mut NSUInteger, completion_timeout: NSTimeInterval, ) -> Result<(), Retained<NSError>>
objc2-io-kit only.Send a request on a control endpoint
This method will send a synchronous request on a control endpoint, and will not return until the request is complete.
Parameter request: IOUSBDeviceRequest structure.
Parameter data: An NSMutableData* defining the memory to use for the request’s data phase.
Parameter bytesTransferred: An NSUInteger reference which will be updated with the byte count
of the completed data phase.
Parameter completionTimeout: Timeout of the request. If 0, the request will never timeout.
The default value is IOUSBHostDefaultControlCompletionTimeout.
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
bytes_transferred must be a valid pointer or null.
Sourcepub unsafe fn sendControlRequest_data_bytesTransferred_error(
&self,
request: IOUSBDeviceRequest,
data: Option<&NSMutableData>,
bytes_transferred: *mut NSUInteger,
) -> Result<(), Retained<NSError>>
Available on crate feature objc2-io-kit only.
pub unsafe fn sendControlRequest_data_bytesTransferred_error( &self, request: IOUSBDeviceRequest, data: Option<&NSMutableData>, bytes_transferred: *mut NSUInteger, ) -> Result<(), Retained<NSError>>
objc2-io-kit only.Send a request on a control endpoint
This method will send a synchronous request on a control endpoint, and will not return until the request is complete.
Parameter request: IOUSBDeviceRequest structure.
Parameter data: An NSMutableData* defining the memory to use for the request’s data phase.
Parameter bytesTransferred: An NSUInteger reference which will be updated with the byte count
of the completed data phase.
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
bytes_transferred must be a valid pointer or null.
Sourcepub unsafe fn sendControlRequest_error(
&self,
request: IOUSBDeviceRequest,
) -> Result<(), Retained<NSError>>
Available on crate feature objc2-io-kit only.
pub unsafe fn sendControlRequest_error( &self, request: IOUSBDeviceRequest, ) -> Result<(), Retained<NSError>>
objc2-io-kit only.Send a request on a control endpoint
This method will send a synchronous request on a control endpoint, and will not return until the request is complete.
Parameter request: IOUSBDeviceRequest structure.
Returns: YES on success, an IOReturn error code will be reported on failure
Sourcepub unsafe fn enqueueControlRequest_data_completionTimeout_error_completionHandler(
&self,
request: IOUSBDeviceRequest,
data: Option<&NSMutableData>,
completion_timeout: NSTimeInterval,
error: Option<&mut Option<Retained<NSError>>>,
completion_handler: IOUSBHostCompletionHandler,
) -> bool
Available on crate features IOUSBHostDefinitions and block2 and objc2-io-kit only.
pub unsafe fn enqueueControlRequest_data_completionTimeout_error_completionHandler( &self, request: IOUSBDeviceRequest, data: Option<&NSMutableData>, completion_timeout: NSTimeInterval, error: Option<&mut Option<Retained<NSError>>>, completion_handler: IOUSBHostCompletionHandler, ) -> bool
IOUSBHostDefinitions and block2 and objc2-io-kit only.Enqueue a request on a control endpoint
This method will enqueue an asynchronous request on a control endpoint. If successful, the provided completion routine will be called to report the status of the completed IO. Completions will be serviced in the IOUSBHostCompletionHandler on the IOUSBHostInterface’s dispatch queue.
Parameter request: Reference IOUSBDeviceRequest structure.
Parameter data: An NSMutableData* defining the memory to use for the request’s data phase.
Parameter completionTimeout: Timeout of the request. If 0, the request will
never timeout. The default value is IOUSBHostDefaultControlCompletionTimeout.
Parameter completionHandler: an IOUSBHostCompletionHandler
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
completion_handler must be a valid pointer or null.
Sourcepub unsafe fn enqueueControlRequest_data_error_completionHandler(
&self,
request: IOUSBDeviceRequest,
data: Option<&NSMutableData>,
error: Option<&mut Option<Retained<NSError>>>,
completion_handler: IOUSBHostCompletionHandler,
) -> bool
Available on crate features IOUSBHostDefinitions and block2 and objc2-io-kit only.
pub unsafe fn enqueueControlRequest_data_error_completionHandler( &self, request: IOUSBDeviceRequest, data: Option<&NSMutableData>, error: Option<&mut Option<Retained<NSError>>>, completion_handler: IOUSBHostCompletionHandler, ) -> bool
IOUSBHostDefinitions and block2 and objc2-io-kit only.Enqueue a request on a control endpoint
This method will enqueue an asynchronous request on a control endpoint. If successful, the provided completion routine will be called to report the status of the completed IO. Completions will be serviced in the IOUSBHostCompletionHandler on the IOUSBHostInterface’s dispatch queue.
Parameter request: Reference IOUSBDeviceRequest structure.
Parameter data: An NSMutableData* defining the memory to use for the request’s data phase.
Parameter completionHandler: an IOUSBHostCompletionHandler
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
completion_handler must be a valid pointer or null.
Sourcepub unsafe fn enqueueControlRequest_error_completionHandler(
&self,
request: IOUSBDeviceRequest,
error: Option<&mut Option<Retained<NSError>>>,
completion_handler: IOUSBHostCompletionHandler,
) -> bool
Available on crate features IOUSBHostDefinitions and block2 and objc2-io-kit only.
pub unsafe fn enqueueControlRequest_error_completionHandler( &self, request: IOUSBDeviceRequest, error: Option<&mut Option<Retained<NSError>>>, completion_handler: IOUSBHostCompletionHandler, ) -> bool
IOUSBHostDefinitions and block2 and objc2-io-kit only.Enqueue a request on a control endpoint
This method will enqueue an asynchronous request on a control endpoint. If successful, the provided completion routine will be called to report the status of the completed IO. Completions will be serviced in the IOUSBHostCompletionHandler on the IOUSBHostInterface’s dispatch queue.
Parameter request: Reference IOUSBDeviceRequest structure.
Parameter completionHandler: an IOUSBHostCompletionHandler
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
completion_handler must be a valid pointer or null.
Sourcepub unsafe fn abortWithOption_error(
&self,
option: IOUSBHostAbortOption,
) -> Result<(), Retained<NSError>>
Available on crate feature IOUSBHostDefinitions only.
pub unsafe fn abortWithOption_error( &self, option: IOUSBHostAbortOption, ) -> Result<(), Retained<NSError>>
IOUSBHostDefinitions only.Abort pending I/O requests.
This method will abort all pending I/O requests. If
option
includes
IOUSBHostAbortOptionSynchronous
, this method will block any new IO
requests unless they are submitted from an aborted IO’s completion routine.
Parameter option: IOUSBHostAbortOption by default IOUSBHostAbortOptionSynchronous is used
Returns: YES on success, an IOReturn error code will be reported on failure
Sourcepub unsafe fn abortWithError(&self) -> Result<(), Retained<NSError>>
pub unsafe fn abortWithError(&self) -> Result<(), Retained<NSError>>
Abort pending I/O requests.
This method will abort all pending I/O requests. If
option
includes
IOUSBHostAbortOptionSynchronous
, this method will block any new IO
requests unless they are submitted from an aborted IO’s completion routine.
Returns: YES on success, an IOReturn error code will be reported on failure
Sourcepub unsafe fn sendIORequestWithData_bytesTransferred_completionTimeout_error(
&self,
data: Option<&NSMutableData>,
bytes_transferred: *mut NSUInteger,
completion_timeout: NSTimeInterval,
) -> Result<(), Retained<NSError>>
pub unsafe fn sendIORequestWithData_bytesTransferred_completionTimeout_error( &self, data: Option<&NSMutableData>, bytes_transferred: *mut NSUInteger, completion_timeout: NSTimeInterval, ) -> Result<(), Retained<NSError>>
Send an IO request on the source
This method will send a synchronous request on the IO source, and will not return until the request is complete.
Parameter data: An NSMutableData* containing the buffer to use for the transfer. nil will send a zero length packet.
Parameter bytesTransferred: NSUInteger pointer which will be updated with the bytes transferred
during the request
Parameter completionTimeout: Timeout of the request. If 0, the request will never timeout.
Must be 0 for interrupt pipes and streams.
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
bytes_transferred must be a valid pointer or null.
Sourcepub unsafe fn enqueueIORequestWithData_completionTimeout_error_completionHandler(
&self,
data: Option<&NSMutableData>,
completion_timeout: NSTimeInterval,
error: Option<&mut Option<Retained<NSError>>>,
completion_handler: IOUSBHostCompletionHandler,
) -> bool
Available on crate features IOUSBHostDefinitions and block2 only.
pub unsafe fn enqueueIORequestWithData_completionTimeout_error_completionHandler( &self, data: Option<&NSMutableData>, completion_timeout: NSTimeInterval, error: Option<&mut Option<Retained<NSError>>>, completion_handler: IOUSBHostCompletionHandler, ) -> bool
IOUSBHostDefinitions and block2 only.Enqueue an IO request on the source
This method is used to issue an asynchronous I/O request on a bulk or interrupt pipe.
Parameter data: An NSMutableData* containing the buffer to use for the transfer. nil will send a zero length packet.
Parameter completionTimeout: Timeout of the request. If 0, the request will never timeout.
Must be 0 for interrupt pipes and streams.
Parameter completionHandler: an IOUSBHostCompletionHandler
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
completion_handler must be a valid pointer or null.
Sourcepub unsafe fn sendIORequestWithData_frameList_frameListCount_firstFrameNumber_error(
&self,
data: &NSMutableData,
frame_list: NonNull<IOUSBHostIsochronousFrame>,
frame_list_count: NSUInteger,
first_frame_number: u64,
) -> Result<(), Retained<NSError>>
👎DeprecatedAvailable on crate feature IOUSBHostDefinitions only.
pub unsafe fn sendIORequestWithData_frameList_frameListCount_firstFrameNumber_error( &self, data: &NSMutableData, frame_list: NonNull<IOUSBHostIsochronousFrame>, frame_list_count: NSUInteger, first_frame_number: u64, ) -> Result<(), Retained<NSError>>
IOUSBHostDefinitions only.Send a request on an isochronous endpoint
This method is used to issue isochronous requests. The caller allocates and initializes an array of IOUSBHostIsochronousFrame structures, which is used to describe the frames that will be transferred. See
IOUSBHostIsochronousFramefor information regarding structure initialization requirements and usage.
Parameter data: An NSMutableData* to be used as the backing store for the I/O.
Parameter frameList: Pointer first element in an IOUSBHostIsochronousFrame array. The array
must contain at least frameListCount elements.
Parameter frameListCount: Number of elements in
frameList
.
Parameter firstFrameNumber: Frame number which this request should begin on. The current frame
number can be queried via
[IOUSBHostObject getFrameNumber]
If 0, the transfer will start on the next available frame (XHCI only).
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
frame_list must be a valid pointer.
Sourcepub unsafe fn enqueueIORequestWithData_frameList_frameListCount_firstFrameNumber_error_completionHandler(
&self,
data: &NSMutableData,
frame_list: NonNull<IOUSBHostIsochronousFrame>,
frame_list_count: NSUInteger,
first_frame_number: u64,
error: Option<&mut Option<Retained<NSError>>>,
completion_handler: IOUSBHostIsochronousCompletionHandler,
) -> bool
👎DeprecatedAvailable on crate features IOUSBHostDefinitions and block2 only.
pub unsafe fn enqueueIORequestWithData_frameList_frameListCount_firstFrameNumber_error_completionHandler( &self, data: &NSMutableData, frame_list: NonNull<IOUSBHostIsochronousFrame>, frame_list_count: NSUInteger, first_frame_number: u64, error: Option<&mut Option<Retained<NSError>>>, completion_handler: IOUSBHostIsochronousCompletionHandler, ) -> bool
IOUSBHostDefinitions and block2 only.Send a request on an isochronous endpoint
This method is used to issue isochronous requests. The caller allocates and initializes an array of IOUSBHostIsochronousFrame structures, which is used to describe the frames that will be transferred. See
IOUSBHostIsochronousFramefor information regarding structure initialization requirements and usage.
Parameter data: An NSMutableData* to be used as the backing store for the I/O.
Parameter frameList: Pointer first element in an IOUSBHostIsochronousFrame array. The array
must contain at least frameListCount elements.
Parameter frameListCount: Number of elements in
frameList
.
Parameter firstFrameNumber: Frame number which this request should begin on. The current frame
number can be queried via
[IOUSBHostObject frameNumberWithTime]
If 0, the transfer will start on the next available frame (XHCI only).
Parameter completionHandler: an IOUSBHostIsochronousCompletionHandler
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
frame_listmust be a valid pointer.completion_handlermust be a valid pointer or null.
Sourcepub unsafe fn sendIORequestWithData_transactionList_transactionListCount_firstFrameNumber_options_error(
&self,
data: &NSMutableData,
transaction_list: NonNull<IOUSBHostIsochronousTransaction>,
transaction_list_count: NSUInteger,
first_frame_number: u64,
options: IOUSBHostIsochronousTransferOptions,
) -> Result<(), Retained<NSError>>
Available on crate feature IOUSBHostDefinitions only.
pub unsafe fn sendIORequestWithData_transactionList_transactionListCount_firstFrameNumber_options_error( &self, data: &NSMutableData, transaction_list: NonNull<IOUSBHostIsochronousTransaction>, transaction_list_count: NSUInteger, first_frame_number: u64, options: IOUSBHostIsochronousTransferOptions, ) -> Result<(), Retained<NSError>>
IOUSBHostDefinitions only.Send a request on an isochronous endpoint
This method is used to issue isochronous requests. The caller allocates and initializes an array of IOUSBHostIsochronousTransaction structures, which is used to describe the frames that will be transferred. See
IOUSBHostIsochronousTransactionfor information regarding structure initialization requirements and usage.
Parameter data: An NSMutableData* to be used as the backing store for the I/O.
Parameter transactionList: Pointer to the first element in an IOUSBHostIsochronousTransaction
array. The array must contain at least transactionListCount elements.
Parameter transactionListCount: Number of elements in
transactionList
.
Parameter firstFrameNumber: Frame number which this request should begin on. The current frame
number can be queried via
[IOUSBHostObject getFrameNumber]
If 0, the transfer will start on the next available frame (XHCI only).
Parameter options: Flags that specify additional behavior for every transaction in this transfer.
See
IOUSBHostIsochronousTransferOptionsfor more details.
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
transaction_list must be a valid pointer.
Sourcepub unsafe fn enqueueIORequestWithData_transactionList_transactionListCount_firstFrameNumber_options_error_completionHandler(
&self,
data: &NSMutableData,
transaction_list: NonNull<IOUSBHostIsochronousTransaction>,
transaction_list_count: NSUInteger,
first_frame_number: u64,
options: IOUSBHostIsochronousTransferOptions,
error: Option<&mut Option<Retained<NSError>>>,
completion_handler: IOUSBHostIsochronousTransactionCompletionHandler,
) -> bool
Available on crate features IOUSBHostDefinitions and block2 only.
pub unsafe fn enqueueIORequestWithData_transactionList_transactionListCount_firstFrameNumber_options_error_completionHandler( &self, data: &NSMutableData, transaction_list: NonNull<IOUSBHostIsochronousTransaction>, transaction_list_count: NSUInteger, first_frame_number: u64, options: IOUSBHostIsochronousTransferOptions, error: Option<&mut Option<Retained<NSError>>>, completion_handler: IOUSBHostIsochronousTransactionCompletionHandler, ) -> bool
IOUSBHostDefinitions and block2 only.Send a request on an isochronous endpoint
This method is used to issue isochronous requests. The caller allocates and initializes an array of IOUSBHostIsochronousTransaction structures, which is used to describe the frames that will be transferred. See
IOUSBHostIsochronousTransactionfor information regarding structure initialization requirements and usage.
Parameter data: An NSMutableData* to be used as the backing store for the I/O.
Parameter transactionList: Pointer to the first element in an IOUSBHostIsochronousTransaction
array. The array must contain at least transactionListCount elements.
Parameter transactionListCount: Number of elements in
transactionList
.
Parameter firstFrameNumber: Frame number which this request should begin on. The current frame
number can be queried via
[IOUSBHostObject frameNumberWithTime]
If 0, the transfer will start on the next available frame (XHCI only).
Parameter options: Flags that specify additional behavior for every transaction in this transfer.
Parameter completionHandler: an IOUSBHostIsochronousTransactionCompletionHandler
Returns: YES on success, an IOReturn error code will be reported on failure
§Safety
transaction_listmust be a valid pointer.completion_handlermust be a valid pointer or null.
Sourcepub unsafe fn enableStreamsWithError(&self) -> Result<(), Retained<NSError>>
pub unsafe fn enableStreamsWithError(&self) -> Result<(), Retained<NSError>>
Enable streams for the IOUSBHostPipe
This method changes the operational mode of the IOUSBHostPipe to allow streaming endpoint transfers, and must be called before copyStream will return any IOUSBHostStream objects.
Returns: YES on success, an An IOReturn error will be returned if the pipe, device, or underlying host controller does not support streams.
Sourcepub unsafe fn disableStreamsWithError(&self) -> Result<(), Retained<NSError>>
pub unsafe fn disableStreamsWithError(&self) -> Result<(), Retained<NSError>>
Disable streams for the IOUSBHostPipe
This method changes the operational mode of the IOUSBHostPipe to disable streaming endpoint transfers. Calling this method will synchronously abort any outstanding calls on existing IOUSBHostStream objects, and therefore all stream contexts should first be set as non-active on the device via an out-of-band (class-defined) mechanism (USB 3.1 8.12.1.4).
Returns: YES on success, An IOReturn error will be returned if streams were not enabled for this IOUSBHostPipe.
Sourcepub unsafe fn copyStreamWithStreamID_error(
&self,
stream_id: NSUInteger,
) -> Result<Retained<IOUSBHostStream>, Retained<NSError>>
Available on crate feature IOUSBHostStream only.
pub unsafe fn copyStreamWithStreamID_error( &self, stream_id: NSUInteger, ) -> Result<Retained<IOUSBHostStream>, Retained<NSError>>
IOUSBHostStream only.Return the stream associated with
streamID
This method will return the stream associated with
streamID
.
The caller must release the IOUSBHostStream when finished using it.
[IOUSBHostPipe enableStreams]
must be called before this
method will return a stream object.
Parameter streamID: Stream ID in the range of 1 to
max
, where
max
can be retrieved by calling
getEndpointMaxStreams
with
the endpoint descriptors.
Returns: Pointer to an IOUSBHostStream object or nil. nil may be returned if either the device or the underlying host controller do not support that stream ID.
Source§impl IOUSBHostPipe
Methods declared on superclass IOUSBHostIOSource.
impl IOUSBHostPipe
Methods declared on superclass IOUSBHostIOSource.
Methods from Deref<Target = IOUSBHostIOSource>§
Sourcepub unsafe fn hostInterface(&self) -> Retained<IOUSBHostInterface>
Available on crate features IOUSBHostInterface and IOUSBHostObject only.
pub unsafe fn hostInterface(&self) -> Retained<IOUSBHostInterface>
IOUSBHostInterface and IOUSBHostObject only.Retrieve the source’s IOUSBHostInterface
Returns: IOUSBHostInterface pointer that the IOSource was created from.
Sourcepub unsafe fn deviceAddress(&self) -> NSUInteger
pub unsafe fn deviceAddress(&self) -> NSUInteger
Retrieve the device’s address
Returns: Current address of the device
Sourcepub unsafe fn endpointAddress(&self) -> NSUInteger
pub unsafe fn endpointAddress(&self) -> NSUInteger
Retrieve the IOSource’s endpoint address
Returns: Current address of the endpoint
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 IOUSBHostPipe
impl AsRef<AnyObject> for IOUSBHostPipe
Source§impl AsRef<IOUSBHostIOSource> for IOUSBHostPipe
impl AsRef<IOUSBHostIOSource> for IOUSBHostPipe
Source§fn as_ref(&self) -> &IOUSBHostIOSource
fn as_ref(&self) -> &IOUSBHostIOSource
Source§impl AsRef<IOUSBHostPipe> for IOUSBHostPipe
impl AsRef<IOUSBHostPipe> for IOUSBHostPipe
Source§impl AsRef<NSObject> for IOUSBHostPipe
impl AsRef<NSObject> for IOUSBHostPipe
Source§impl Borrow<AnyObject> for IOUSBHostPipe
impl Borrow<AnyObject> for IOUSBHostPipe
Source§impl Borrow<IOUSBHostIOSource> for IOUSBHostPipe
impl Borrow<IOUSBHostIOSource> for IOUSBHostPipe
Source§fn borrow(&self) -> &IOUSBHostIOSource
fn borrow(&self) -> &IOUSBHostIOSource
Source§impl Borrow<NSObject> for IOUSBHostPipe
impl Borrow<NSObject> for IOUSBHostPipe
Source§impl ClassType for IOUSBHostPipe
impl ClassType for IOUSBHostPipe
Source§const NAME: &'static str = "IOUSBHostPipe"
const NAME: &'static str = "IOUSBHostPipe"
Source§type Super = IOUSBHostIOSource
type Super = IOUSBHostIOSource
Source§type ThreadKind = <<IOUSBHostPipe as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<IOUSBHostPipe as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for IOUSBHostPipe
impl Debug for IOUSBHostPipe
Source§impl Deref for IOUSBHostPipe
impl Deref for IOUSBHostPipe
Source§impl Hash for IOUSBHostPipe
impl Hash for IOUSBHostPipe
Source§impl Message for IOUSBHostPipe
impl Message for IOUSBHostPipe
Source§impl NSObjectProtocol for IOUSBHostPipe
impl NSObjectProtocol for IOUSBHostPipe
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