IOBluetoothServiceBrowserController

Struct IOBluetoothServiceBrowserController 

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

A NSWindowController subclass to display a window to search for and perform SDP queries on bluetooth devices within range.

This NSWindowController subclass will bring up a generic Bluetooth search and SDP browsing window allowing the user to find devices within range, perform SDP queries on a particular device, and select a SDP service to connect to. The client application can provide NSArrays of valid service UUIDs to allow, and an NSArray of valid device types to allow. The device type filter is not yet implemented.

See also Apple’s documentation

Implementations§

Source§

impl IOBluetoothServiceBrowserController

Source

pub unsafe fn serviceBrowserController( in_options: IOBluetoothServiceBrowserControllerOptions, mtm: MainThreadMarker, ) -> Option<Retained<IOBluetoothServiceBrowserController>>

Available on crate features objc2 and IOBluetoothUIUserLib only.

Allocator work Bluetooth Service Browser window controller.

Parameter inOptions: Bit field for options to set in the newly allocated controller. Currently no options are available.

Returns: a new instance of the IOBluetoothServiceBrowserController Controller, nil if unsuccessful.

Source

pub unsafe fn browseDevices_options( out_record: Option<&mut Option<Retained<IOBluetoothSDPServiceRecord>>>, in_options: IOBluetoothServiceBrowserControllerOptions, mtm: MainThreadMarker, ) -> c_int

👎Deprecated
Available on crate features objc2 and IOBluetoothUIUserLib and objc2-io-bluetooth only.

WARNING This method has been deprecated in favor of -setOptions:, -runModal and -getResults.

Parameter outRecord: Pointer to a (IOBluetoothSDPServiceRecord *) object. This will get allocated and returned to the client if the user selects a service.

Parameter inOptions: For future expansion. Currently no options defined.

Returns: IOReturn -

kIOReturnSuccess - on successful completion.

kCanceledErr - User canceled.

This method allocates and runs the browser window as a modal window waiting for the user to either select a service, or cancel the browser window.

§Safety

out_record might not allow None.

Source

pub unsafe fn browseDevicesAsSheetForWindow_options_window( out_record: Option<&mut Option<Retained<IOBluetoothSDPServiceRecord>>>, in_options: IOBluetoothServiceBrowserControllerOptions, in_window: Option<&NSWindow>, mtm: MainThreadMarker, ) -> c_int

👎Deprecated
Available on crate features objc2 and IOBluetoothUIUserLib and objc2-io-bluetooth only.

WARNING This method has been deprecated in favor of - beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:.

Parameter outRecord: Pointer to a (IOBluetoothSDPServiceRecord *) object. This will get allocated and returned to the client if the user selects a service.

Parameter inOptions: For future expansion. Currently no options defined.

Parameter inWindow: The window to be used as the anchor of the sheet.

Returns: IOReturn - kIOReturnSuccess - on successful completion. kCanceledErr - User canceled.

This method will allocate and run the IOBluetoothServiceBrowserController browser window as a sheet for a window.

§Safety
  • out_record might not allow None.
  • in_window might not allow None.
Source

pub unsafe fn withServiceBrowserControllerRef( service_browser_controller_ref: Option<&IOBluetoothServiceBrowserControllerRef>, mtm: MainThreadMarker, ) -> Option<Retained<IOBluetoothServiceBrowserController>>

Available on crate features objc2 and IOBluetoothUIUserLib only.

Method call to convert an IOBluetoothServiceBrowserControllerRef into an IOBluetoothServiceBrowserController *.

Parameter serviceBrowserControllerRef: IOBluetoothServiceBrowserControllerRef for which an IOBluetoothServiceBrowserController * is desired.

Returns: Returns the IOBluetoothServiceBrowserController * for the given IOBluetoothServiceBrowserControllerRef.

§Safety

service_browser_controller_ref might not allow None.

Source

pub unsafe fn getServiceBrowserControllerRef( &self, ) -> Option<Retained<IOBluetoothServiceBrowserControllerRef>>

Available on crate features objc2 and IOBluetoothUIUserLib only.

Returns an IOBluetoothServiceBrowserControllerRef representation of the target IOBluetoothServiceBrowserController object.

Returns: Returns an IOBluetoothServiceBrowserControllerRef representation of the target IOBluetoothServiceBrowserController object.

Source

pub unsafe fn discover( &self, out_record: Option<&mut Option<Retained<IOBluetoothSDPServiceRecord>>>, ) -> c_int

👎Deprecated
Available on crate features objc2 and objc2-io-bluetooth only.

Invoke an already created window controller to display, and run the modal dialog.

WARNING This method has been deprecated in favor of -runModal and -getResults.

Parameter outRecord: Pointer to a (IOBluetoothSDPServiceRecord *) object. This will get allocated and returned to the client if the user selects a service.

Returns: IOReturn - kIOReturnSuccess - on successful completion. kCanceledErr - User canceled.

This method will run the IOBluetoothServiceBrowserController browser window modally.

§Safety

out_record might not allow None.

Source

pub unsafe fn discoverAsSheetForWindow_withRecord( &self, sheet_window: Option<&NSWindow>, out_record: Option<&mut Option<Retained<IOBluetoothSDPServiceRecord>>>, ) -> c_int

👎Deprecated
Available on crate features objc2 and objc2-io-bluetooth only.

Invoke an already created window controller to display, and run the modal dialog.

WARNING This method has been deprecated in favor of -beginSheetModalForWindow:… and -getResults.

Parameter sheetWindow: The window to use for the anchor of the sheet..

Parameter outRecord: Pointer to a (IOBluetoothSDPServiceRecord *) object. This will get allocated and returned to the client if the user selects a service.

Returns: IOReturn - kIOReturnSuccess - on successful completion. kCanceledErr - User canceled.

This method will run the IOBluetoothServiceBrowserController browser window as a sheet for the window passed to it in sheetWindow.

§Safety
  • sheet_window might not allow None.
  • out_record might not allow None.
Source

pub unsafe fn discoverWithDeviceAttributes_serviceList_serviceRecord( &self, device_attributes: *mut IOBluetoothDeviceSearchAttributes, service_array: Option<&NSArray>, out_record: Option<&mut Option<Retained<IOBluetoothSDPServiceRecord>>>, ) -> c_int

👎Deprecated
Available on crate features objc2 and objc2-io-bluetooth only.

Invoke an already created window controller to display, and run the modal dialog.

WARNING This method has been deprecated in favor of -setSearchAttributes:, -addAllowedUUID:, -runModal and -getResults.

Parameter deviceArray: A NSArray of valid device type objects to allow. Not implemented yet.

Parameter serviceArray: A NSArray of valid UUIDs to allow. The array should contain NSData objects specifying the UUID to allow. We currently only support 16-bit short UUID forms, but will allow for any of the 16, 32 or full 128-bit UUID forms.

Parameter outRecord: Pointer to a (IOBluetoothSDPServiceRecord *) object. This will get allocated and returned to the client if the user selects a service.

Returns: IOReturn - kIOReturnSuccess - on successful completion. kCanceledErr - User canceled.

This method will run the IOBluetoothServiceBrowserController browser window as a sheet for the window passed to it in sheetWindow.

§Safety
  • device_attributes must be a valid pointer.
  • service_array generic should be of the correct type.
  • service_array might not allow None.
  • out_record might not allow None.
Source

pub unsafe fn setOptions( &self, in_options: IOBluetoothServiceBrowserControllerOptions, )

Available on crate features objc2 and IOBluetoothUIUserLib only.

Modify the options for the window controller.

Parameter inOptions: Bit field to set the options to.

Returns: None.

This method will set the options for the browser to new values.

Source

pub unsafe fn runModal(&self) -> c_int

Available on crate feature objc2 only.

Runs the service browser panel in a modal session to allow the user to select a service on a Bluetooth device.

The controller will use the panel attributes to filter what devices the user sees. The allowed UUIDs will be used to validate the selection the user makes. The user will only be able to select services that match the allowed UUIDs. Only when a selection has been validated (or the panel cancelled), will this method return.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns kIOBluetoothUISuccess if a successful, validated service selection was made by the user. Returns kIOBluetoothUIUserCanceledErr if the user cancelled the panel. These return values are the same as NSRunStoppedResponse and NSRunAbortedResponse respectively. They are the standard values used in a modal session.

Source

pub unsafe fn beginSheetModalForWindow_modalDelegate_didEndSelector_contextInfo( &self, sheet_window: Option<&NSWindow>, modal_delegate: Option<&AnyObject>, did_end_selector: Option<Sel>, context_info: *mut c_void, ) -> c_int

Available on crate feature objc2 only.

Runs the service browser panel as a sheet on the target window.

This function works the same way as -[NSApplication beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:]. The didEndSelector has a similar prototype as in NSApplication except that the first argument is the IOBluetoothServiceBrowserController object instead of the window: -(void)sheetDidEnd:(IOBluetoothServiceBrowserController *)controller returnCode:(int)returnCode contextInfo:(void *)contextInfo. The returnCode parameter will either be kIOBluetoothUISuccess or kIOBluetoothUIUserCancelledErr as described in -runModal.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter sheetWindow: NSWindow to attach the service browser panel to as a sheet.

Parameter modalDelegate: Delegate object that gets sent the didEndSelector when the sheet modal session is finished.

Parameter didEndSelector: Selector sent to the modalDelegate when the sheet modal session is finished.

Parameter contextInfo: User-definied value passed to the modalDelegate in the didEndSelector.

Returns: Returns kIOReturnSuccess if the sheet modal session was started.

§Safety
  • sheet_window might not allow None.
  • modal_delegate should be of the correct type.
  • modal_delegate might not allow None.
  • did_end_selector must be a valid selector.
  • context_info must be a valid pointer.
Source

pub unsafe fn getResults(&self) -> Option<Retained<NSArray>>

Available on crate feature objc2 only.

Returns the result of the user’s selection.

There will only be results if the panel has been run, the user has successfully made a selection and that selection has been validated. If kIOBluetoothUISuccess was returned for the session, there should be valid results. Currently only a single device is allowed to be selected, so the results array will only contain one object. However in the future multiple selection will be supported.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns an NSArray of IOBluetoothSDPServiceRecord objects corresponding to the user’s selection. If the user cancelled the panel, nil will be returned.

Source

pub unsafe fn getOptions(&self) -> IOBluetoothServiceBrowserControllerOptions

Available on crate features objc2 and IOBluetoothUIUserLib only.

Returns the option bits that control the panel’s behavior.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns the option bits set by setOptions:

Source

pub unsafe fn setSearchAttributes( &self, search_attributes: *const IOBluetoothDeviceSearchAttributes, )

Available on crate features objc2 and objc2-io-bluetooth only.

Sets the search attributes that control the panel’s search/inquiry behavior.

The device search attributes control the inquiry behavior of the panel. They allow only devices that match the specified attributes (i.e. class of device) to be displayed to the user. Note that this only covers attributes returned in an inquiry result and not actual SDP services on the device.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter searchAttributes: Attributes to control the panel’s inquiry behavior.

§Safety

search_attributes must be a valid pointer.

Source

pub unsafe fn getSearchAttributes( &self, ) -> *const IOBluetoothDeviceSearchAttributes

Available on crate features objc2 and objc2-io-bluetooth only.

Returns the search attributes that control the panel’s search/inquiry behavior.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns the search attributes set by setSearchAttributes:

§Safety

The returned struct field 4 struct field 2 Array TODO.

Source

pub unsafe fn addAllowedUUID(&self, allowed_uuid: Option<&IOBluetoothSDPUUID>)

Available on crate features objc2 and objc2-io-bluetooth only.

Adds a UUID to the list of UUIDs that are used to validate the user’s selection.

The user’s device selection gets validated against the UUIDs passed to -addAllowedUUID: addAllowedUUIDArray:. Each call to those methods essentially adds a filter that the selected device gets validated with. If any of the filters match, the device is considered valid. If they all fail, the device is not valid and the user is presented with an error code that the device does not support the required services. The UUID passed to -addAllowedUUID: is the only UUID that must be present in the device’s SDP service records. Alternatively, all of the UUIDs in the UUID array passed to -addAllowedUUIDArray must be present.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter allowedUUID: UUID that a device may contain to be selected

§Safety

allowed_uuid might not allow None.

Source

pub unsafe fn addAllowedUUIDArray(&self, allowed_uuid_array: Option<&NSArray>)

Available on crate feature objc2 only.

Adds an array of UUIDs to the list of UUIDs that are used to validate the user’s selection.

The user’s device selection gets validated against the UUIDs passed to -addAllowedUUID: addAllowedUUIDArray:. Each call to those methods essentially adds a filter that the selected device gets validated with. If any of the filters match, the device is considered valid. If they all fail, the device is not valid and the user is presented with an error code that the device does not support the required services. The UUID passed to -addAllowedUUID: is the only UUID that must be present in the device’s SDP service records. Alternatively, all of the UUIDs in the UUID array passed to -addAllowedUUIDArray must be present.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter allowedUUIDArray: An NSArray of UUIDs that all must be present in a device for it to be selectable.

§Safety
  • allowed_uuid_array generic should be of the correct type.
  • allowed_uuid_array might not allow None.
Source

pub unsafe fn clearAllowedUUIDs(&self)

Available on crate feature objc2 only.

Resets the controller back to the default state where it will accept any device the user selects.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Source

pub unsafe fn setTitle(&self, window_title: Option<&NSString>)

Available on crate feature objc2 only.

Sets the title of the panel when not run as a sheet.

The panel title should be localized for best user experience.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter windowTitle: Title of the device selector panel.

§Safety

window_title might not allow None.

Source

pub unsafe fn getTitle(&self) -> Option<Retained<NSString>>

Available on crate feature objc2 only.

Returns the title of the device selector panel (i.e. what was set in -setTitle:).

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns the title of the device selector panel.

Source

pub unsafe fn setDescriptionText(&self, description_text: Option<&NSString>)

Available on crate feature objc2 only.

Sets the description text that appears in the device selector panel.

The description text should be localized for best user experience.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter descriptionText: String that appears in the description section of the device selector panel.

§Safety

description_text might not allow None.

Source

pub unsafe fn getDescriptionText(&self) -> Option<Retained<NSString>>

Available on crate feature objc2 only.

Returns the description text that appears in the device selector panel (i.e. what was set in -setDescriptionText:).

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns the description text of the device selector panel.

Source

pub unsafe fn setPrompt(&self, prompt: Option<&NSString>)

Available on crate feature objc2 only.

Sets the title of the default/select button in the device selector panel.

The prompt text should be localized for best user experience.

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Parameter prompt: String that appears in the default/select button in the device selector panel.

§Safety

prompt might not allow None.

Source

pub unsafe fn getPrompt(&self) -> Option<Retained<NSString>>

Available on crate feature objc2 only.

Returns the title of the default/select button in the device selector panel (i.e. what was set in -setPrompt:).

NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.

Returns: Returns the default button title of the device selector panel.

Source§

impl IOBluetoothServiceBrowserController

Methods declared on superclass NSWindowController.

Source

pub unsafe fn initWithWindow( this: Allocated<Self>, window: Option<&NSWindow>, ) -> Retained<Self>

Available on crate feature objc2 only.
Source

pub unsafe fn initWithCoder( this: Allocated<Self>, coder: &NSCoder, ) -> Option<Retained<Self>>

Available on crate feature objc2 only.
§Safety

coder possibly has further requirements.

Source

pub unsafe fn initWithWindowNibName( this: Allocated<Self>, window_nib_name: &NSNibName, ) -> Retained<Self>

Available on crate feature objc2 only.
Source

pub unsafe fn initWithWindowNibName_owner( this: Allocated<Self>, window_nib_name: &NSNibName, owner: &AnyObject, ) -> Retained<Self>

Available on crate feature objc2 only.
§Safety

owner should be of the correct type.

Source

pub unsafe fn initWithWindowNibPath_owner( this: Allocated<Self>, window_nib_path: &NSString, owner: &AnyObject, ) -> Retained<Self>

Available on crate feature objc2 only.
§Safety

owner should be of the correct type.

Source§

impl IOBluetoothServiceBrowserController

Methods declared on superclass NSResponder.

Source

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

Available on crate feature objc2 only.
Source§

impl IOBluetoothServiceBrowserController

Methods declared on superclass NSObject.

Source

pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>

Available on crate feature objc2 only.

Methods from Deref<Target = NSWindowController>§

Source

pub fn windowNibName(&self) -> Option<Retained<NSString>>

Source

pub fn windowNibPath(&self) -> Option<Retained<NSString>>

Source

pub fn owner(&self) -> Option<Retained<AnyObject>>

Source

pub fn windowFrameAutosaveName(&self) -> Retained<NSString>

Source

pub fn setWindowFrameAutosaveName(&self, window_frame_autosave_name: &NSString)

Setter for windowFrameAutosaveName.

This is copied when set.

Source

pub fn shouldCascadeWindows(&self) -> bool

Source

pub fn setShouldCascadeWindows(&self, should_cascade_windows: bool)

Source

pub unsafe fn document(&self) -> Option<Retained<AnyObject>>

§Safety

This is not retained internally, you must ensure the object is still alive.

Source

pub unsafe fn setDocument(&self, document: Option<&AnyObject>)

Setter for document.

§Safety
  • document should be of the correct type.
  • This is unretained, you must ensure the object is kept alive while in use.
Source

pub fn setDocumentEdited(&self, dirty_flag: bool)

Source

pub fn shouldCloseDocument(&self) -> bool

Source

pub fn setShouldCloseDocument(&self, should_close_document: bool)

Setter for shouldCloseDocument.

Source

pub fn synchronizeWindowTitleWithDocumentName(&self)

Source

pub fn windowTitleForDocumentDisplayName( &self, display_name: &NSString, ) -> Retained<NSString>

Source

pub fn window(&self) -> Option<Retained<NSWindow>>

Source

pub fn setWindow(&self, window: Option<&NSWindow>)

Setter for window.

Source

pub fn isWindowLoaded(&self) -> bool

Source

pub fn windowWillLoad(&self)

Source

pub fn windowDidLoad(&self)

Source

pub fn loadWindow(&self)

Source

pub fn close(&self)

Source

pub unsafe fn showWindow(&self, sender: Option<&AnyObject>)

§Safety

sender should be of the correct type.

Source

pub unsafe fn dismissController(&self, sender: Option<&AnyObject>)

§Safety

sender should be of the correct type.

Methods from Deref<Target = NSResponder>§

Source

pub unsafe fn nextResponder(&self) -> Option<Retained<NSResponder>>

§Safety

This is not retained internally, you must ensure the object is still alive.

Source

pub unsafe fn setNextResponder(&self, next_responder: Option<&NSResponder>)

Setter for nextResponder.

§Safety

This is unretained, you must ensure the object is kept alive while in use.

Source

pub unsafe fn tryToPerform_with( &self, action: Sel, object: Option<&AnyObject>, ) -> bool

§Safety
  • action must be a valid selector.
  • object should be of the correct type.
Source

pub unsafe fn noResponderFor(&self, event_selector: Sel)

§Safety

event_selector must be a valid selector.

Source

pub fn acceptsFirstResponder(&self) -> bool

Source

pub fn becomeFirstResponder(&self) -> bool

Source

pub fn resignFirstResponder(&self) -> bool

Source

pub fn flushBufferedKeyEvents(&self)

Source

pub unsafe fn showContextHelp(&self, sender: Option<&AnyObject>)

§Safety

sender should be of the correct type.

Source

pub unsafe fn supplementalTargetForAction_sender( &self, action: Sel, sender: Option<&AnyObject>, ) -> Option<Retained<AnyObject>>

§Safety
  • action must be a valid selector.
  • sender should be of the correct type.
Source

pub fn undoManager(&self) -> Option<Retained<NSUndoManager>>

Source

pub unsafe fn presentError_modalForWindow_delegate_didPresentSelector_contextInfo( &self, error: &NSError, window: &NSWindow, delegate: Option<&AnyObject>, did_present_selector: Option<Sel>, context_info: *mut c_void, )

§Safety
  • delegate should be of the correct type.
  • did_present_selector must be a valid selector.
  • context_info must be a valid pointer or null.
Source

pub fn presentError(&self, error: &NSError) -> bool

Source

pub fn willPresentError(&self, error: &NSError) -> Retained<NSError>

Source

pub unsafe fn performTextFinderAction(&self, sender: Option<&AnyObject>)

§Safety

sender should be of the correct type.

Source

pub unsafe fn newWindowForTab(&self, sender: Option<&AnyObject>)

§Safety

sender should be of the correct type.

Source

pub unsafe fn showWritingTools(&self, sender: Option<&AnyObject>)

§Safety

sender should be of the correct type.

Source

pub fn performMnemonic(&self, string: &NSString) -> bool

👎Deprecated: This has always returned NO and had no effect on macOS

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<AnyObject> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn as_ref(&self) -> &AnyObject

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

impl AsRef<IOBluetoothServiceBrowserController> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn as_ref(&self) -> &Self

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

impl AsRef<NSObject> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn as_ref(&self) -> &NSObject

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

impl AsRef<NSResponder> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn as_ref(&self) -> &NSResponder

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

impl AsRef<NSWindowController> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn as_ref(&self) -> &NSWindowController

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

impl Borrow<AnyObject> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSResponder> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn borrow(&self) -> &NSResponder

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSWindowController> for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

fn borrow(&self) -> &NSWindowController

Immutably borrows from an owned value. Read more
Source§

impl ClassType for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

const NAME: &'static str = "IOBluetoothServiceBrowserController"

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

type Super = NSWindowController

The superclass of this class. Read more
Source§

type ThreadKind = <<IOBluetoothServiceBrowserController 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 IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

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

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

impl Deref for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

type Target = NSWindowController

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl Hash for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
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 IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

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

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

impl NSCoding for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

unsafe fn encodeWithCoder(&self, coder: &NSCoder)
where Self: Sized + Message,

Safety Read more
Source§

unsafe fn initWithCoder( this: Allocated<Self>, coder: &NSCoder, ) -> Option<Retained<Self>>
where Self: Sized + Message,

Safety Read more
Source§

impl NSObjectProtocol for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
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 NSSeguePerforming for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

unsafe fn prepareForSegue_sender( &self, segue: &NSStoryboardSegue, sender: Option<&AnyObject>, )
where Self: Sized + Message,

Safety Read more
Source§

unsafe fn performSegueWithIdentifier_sender( &self, identifier: &NSString, sender: Option<&AnyObject>, )
where Self: Sized + Message,

Safety Read more
Source§

unsafe fn shouldPerformSegueWithIdentifier_sender( &self, identifier: &NSString, sender: Option<&AnyObject>, ) -> bool
where Self: Sized + Message,

Safety Read more
Source§

impl PartialEq for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
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 IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

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

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

impl DowncastTarget for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.
Source§

impl Eq for IOBluetoothServiceBrowserController

Available on crate feature objc2 only.

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<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<'a, T> MainThreadOnly for T
where T: ClassType<ThreadKind = dyn MainThreadOnly + 'a> + ?Sized,

Source§

fn mtm(&self) -> MainThreadMarker

Get a MainThreadMarker from the main-thread-only object. Read more
Source§

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

Allocate a new instance of the class on the main thread. Read more
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,