ASAccessorySession

Struct ASAccessorySession 

Source
pub struct ASAccessorySession { /* private fields */ }
Available on crate feature ASAccessorySession only.
Expand description

Manages accessories.

See also Apple’s documentation

Implementations§

Source§

impl ASAccessorySession

Source

pub unsafe fn accessories(&self) -> Retained<NSArray<ASAccessory>>

Available on crate feature ASAccessory only.

An array of previously-selected accessories for this application.

To monitor for changes in this list, use your event handler to watch for the events ASAccessoryEventType/accessoryAdded, ASAccessoryEventType/accessoryChanged, and ASAccessoryEventType/accessoryRemoved.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn pickerDisplaySettings( &self, ) -> Option<Retained<ASPickerDisplaySettings>>

Available on crate feature ASPickerDisplaySettings only.

Settings that affect the display of the accessory picker.

Use this property to configure settings like the picker timeout.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn setPickerDisplaySettings( &self, picker_display_settings: Option<&ASPickerDisplaySettings>, )

Available on crate feature ASPickerDisplaySettings only.

Setter for pickerDisplaySettings.

This is copied when set.

§Safety

This might not be thread-safe.

Source

pub unsafe fn activateWithQueue_eventHandler( &self, queue: &DispatchQueue, event_handler: &DynBlock<dyn Fn(NonNull<ASAccessoryEvent>)>, )

Available on crate features ASAccessoryEvent and block2 and dispatch2 only.

Activate the session and start delivering events to an event handler.

  • Parameters:
  • queue: The dispatch the session uses to deliver events to eventHandler.
  • eventHandler: A closure or block that receives events generated by the session. Each callback to the event handler provides an ASAccessoryEvent as a parameter, and expects no return value.
§Safety

queue possibly has additional threading requirements.

Source

pub unsafe fn invalidate(&self)

Invalidate the session by stopping any operations.

This call breaks any retain cycles. The session is unusable after calling invalidate.

Source

pub unsafe fn showPickerWithCompletionHandler( &self, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate feature block2 only.

Present a picker that shows accessories managed by a Device Discovery Extension in your app.

Use this method when your app includes a <doc ://com.apple.documentation/documentation/devicediscoveryextension> for its supported accessories. If your app doesn’t use DDE, call showPickerForDisplayItems:completionHandler: with an array of ASPickerDisplayItem-c.class instances instead.

The session’s event handler receives events when this picker displays and dismisses, as well as when the person using the app picks an accessory.

  • Parameters:
  • completionHandler: A block or closure that the picker calls when it completes the operation. The completion handler receives an <doc ://com.apple.documentation/documentation/Foundation/NSError> instance if the picker encounters an error.
Source

pub unsafe fn showPickerForDisplayItems_completionHandler( &self, display_items: &NSArray<ASPickerDisplayItem>, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate features ASPickerDisplayItem and block2 only.

Present a picker that shows discovered accessories matching an array of display items.

The session’s event handler receives events when this picker displays and dismisses, as well as when the person using the app picks an accessory.

To migrate previously-configured accessories to AccessorySetupKit, add instances of ASMigrationDisplayItem to the displayItems array.

  • Parameters:
  • displayItems: An array of ASPickerDisplayItem instances describing accessories your app can set up. The picker displays only discovered accessories that match the properties of items in this array.
  • completionHandler: A block or closure that the picker calls when it completes the operation. The completion handler receives an <doc ://com.apple.documentation/documentation/Foundation/NSError> instance if the picker encounters an error.
Source

pub unsafe fn finishAuthorization_settings_completionHandler( &self, accessory: &ASAccessory, settings: &ASAccessorySettings, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate features ASAccessory and ASAccessorySettings and block2 only.

Finish authorization of a partially-setup accessory.

Use this method in scenarios where an accessory has multiple wireless interfaces. For example, when an accessory has both Bluetooth and Wi-Fi, and your descriptor may only provides an SSID prefix. In this case, the Bluetooth interface onboards first and your app needs to then finish authorization with the full SSID.

Source

pub unsafe fn failAuthorization_completionHandler( &self, accessory: &ASAccessory, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate features ASAccessory and block2 only.

End authorization of a partially-configured accessory as a failure.

Source

pub unsafe fn removeAccessory_completionHandler( &self, accessory: &ASAccessory, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate features ASAccessory and block2 only.

Removes an accessory.

  • Parameters:
  • accessory: The accessory to remove.
  • completionHandler: A block or closure that executes after the remove operation completes. The completion handler receives an <doc ://com.apple.documentation/documentation/Foundation/NSError> instance if the remove operation encounters an error.
Source

pub unsafe fn renameAccessory_options_completionHandler( &self, accessory: &ASAccessory, rename_options: ASAccessoryRenameOptions, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate features ASAccessory and block2 only.

Displays a view to rename an accessory.

To rename a Wi-Fi SSID with this method, use the option ASAccessory/RenameOptions/ssid.

  • Parameters:
  • accessory: The accessory to rename.
  • renameOptions: Options that affect the behavior of the rename operation.
  • completionHandler: A block or closure that executes after the rename operation completes. The completion handler receives an <doc ://com.apple.documentation/documentation/Foundation/NSError> instance if the rename operation encounters an error.
Source

pub unsafe fn updateAuthorization_descriptor_completionHandler( &self, accessory: &ASAccessory, descriptor: &ASDiscoveryDescriptor, completion_handler: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate features ASAccessory and ASDiscoveryDescriptor and block2 only.

Displays a view to upgrade an accessory with additional technology permissions.

Call this method to upgrade previously-added SSID-based accessories to use WiFi Aware.

  • Parameters:
  • accessory: The accessory to update.
  • descriptor: An updated descriptor that the picker uses to add new technology authorization for the provided accessory.
  • completionHandler: A block or closure that executes after the picker is shown. The completion handler receives an <doc ://com.apple.documentation/documentation/Foundation/NSError> instance if the upgrade operation encounters an error. In Swift, you can omit the completion handler by calling the method asynchronously and catching any error thrown by the method.
Source§

impl ASAccessorySession

Methods declared on superclass NSObject.

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn new() -> Retained<Self>

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

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());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use 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.

Source

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<ASAccessorySession> for ASAccessorySession

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<AnyObject> for ASAccessorySession

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSObject> for ASAccessorySession

Source§

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for ASAccessorySession

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for ASAccessorySession

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl ClassType for ASAccessorySession

Source§

const NAME: &'static str = "ASAccessorySession"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = NSObject

The superclass of this class. Read more
Source§

type ThreadKind = <<ASAccessorySession as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for ASAccessorySession

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for ASAccessorySession

Source§

type Target = NSObject

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for ASAccessorySession

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for ASAccessorySession

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl NSObjectProtocol for ASAccessorySession

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for ASAccessorySession

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for ASAccessorySession

Source§

const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl DowncastTarget for ASAccessorySession

Source§

impl Eq for ASAccessorySession

Source§

impl Send for ASAccessorySession

Source§

impl Sync for ASAccessorySession

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,