Struct UIApplication

Source
#[repr(C)]
pub struct UIApplication { /* private fields */ }
Available on crate features UIApplication and UIResponder only.
Expand description

Implementations§

Source§

impl UIApplication

Source

pub fn main( principal_class_name: Option<&NSString>, delegate_class_name: Option<&NSString>, mtm: MainThreadMarker, ) -> !

The entry point to UIKit applications.

Creates the application object and the application delegate and sets up the event cycle.

See Apple’s documentation for more details.

§Example

Create an application delegate and launch the application.

use objc2::MainThreadMarker;
use objc2::rc::{Allocated, Retained};
use objc2::{define_class, msg_send, ClassType, DefinedClass, MainThreadOnly};
use objc2_foundation::{NSNotification, NSObject, NSObjectProtocol, NSString};
use objc2_ui_kit::{UIApplication, UIApplicationDelegate};

#[derive(Default)]
struct AppState {
    // Whatever state you want to store in your delegate.
}

define_class!(
    // SAFETY:
    // - `NSObject` does not have any subclassing requirements.
    // - `AppDelegate` does not implement `Drop`.
    #[unsafe(super(NSObject))]
    #[thread_kind = MainThreadOnly]
    #[ivars = AppState]
    struct AppDelegate;

    impl AppDelegate {
        // Called by `UIApplication::main`.
        #[unsafe(method_id(init))]
        fn init(this: Allocated<Self>) -> Retained<Self> {
            let this = this.set_ivars(AppState::default());
            unsafe { msg_send![super(this), init] }
        }
    }

    unsafe impl NSObjectProtocol for AppDelegate {}

    unsafe impl UIApplicationDelegate for AppDelegate {
        #[unsafe(method(applicationDidFinishLaunching:))]
        fn did_finish_launching(&self, _notification: &NSNotification) {
            println!("did finish launching!");

            // Do UI initialization in here, such as creating windows, views, etc.
        }

        #[unsafe(method(applicationWillTerminate:))]
        fn will_terminate(&self, _notification: &NSNotification) {
            println!("will terminate!");

            // Tear down your application state here.
        }
    }
);

fn main() {
    let mtm = MainThreadMarker::new().unwrap();
    let delegate_class = NSString::from_class(AppDelegate::class());
    UIApplication::main(None, Some(&delegate_class), mtm);
}
Source§

impl UIApplication

Source

pub fn sharedApplication(mtm: MainThreadMarker) -> Retained<UIApplication>

Source

pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn UIApplicationDelegate>>>

Source

pub unsafe fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn UIApplicationDelegate>>, )

Setter for delegate.

Source

pub unsafe fn beginIgnoringInteractionEvents(&self)

👎Deprecated: Use UIView’s userInteractionEnabled property instead
Source

pub unsafe fn endIgnoringInteractionEvents(&self)

👎Deprecated: Use UIView’s userInteractionEnabled property instead
Source

pub unsafe fn isIgnoringInteractionEvents(&self) -> bool

👎Deprecated: Use UIView’s userInteractionEnabled property instead
Source

pub unsafe fn isIdleTimerDisabled(&self) -> bool

Source

pub unsafe fn setIdleTimerDisabled(&self, idle_timer_disabled: bool)

Setter for isIdleTimerDisabled.

Source

pub unsafe fn openURL(&self, url: &NSURL) -> bool

👎Deprecated
Source

pub unsafe fn canOpenURL(&self, url: &NSURL) -> bool

Source

pub unsafe fn openURL_options_completionHandler( &self, url: &NSURL, options: &NSDictionary<UIApplicationOpenExternalURLOptionsKey, AnyObject>, completion: Option<&DynBlock<dyn Fn(Bool)>>, )

Available on crate feature block2 only.
Source

pub unsafe fn sendEvent(&self, event: &UIEvent)

Available on crate feature UIEvent only.
Source

pub unsafe fn keyWindow(&self) -> Option<Retained<UIWindow>>

👎Deprecated: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
Available on crate features UIView and UIWindow only.
Source

pub fn windows(&self) -> Retained<NSArray<UIWindow>>

👎Deprecated: Use UIWindowScene.windows on a relevant window scene instead
Available on crate features UIView and UIWindow only.
Source

pub unsafe fn sendAction_to_from_forEvent( &self, action: Sel, target: Option<&AnyObject>, sender: Option<&AnyObject>, event: Option<&UIEvent>, ) -> bool

Available on crate feature UIEvent only.
Source

pub unsafe fn isNetworkActivityIndicatorVisible(&self) -> bool

👎Deprecated: Provide a custom network activity UI in your app if desired.
Source

pub unsafe fn setNetworkActivityIndicatorVisible( &self, network_activity_indicator_visible: bool, )

👎Deprecated: Provide a custom network activity UI in your app if desired.
Source

pub unsafe fn supportedInterfaceOrientationsForWindow( &self, window: Option<&UIWindow>, ) -> UIInterfaceOrientationMask

Available on crate features UIOrientation and UIView and UIWindow only.
Source

pub unsafe fn statusBarOrientationAnimationDuration(&self) -> NSTimeInterval

👎Deprecated: Use viewWillTransitionToSize:withTransitionCoordinator: instead.
Source

pub fn statusBarFrame(&self) -> CGRect

👎Deprecated: Use the statusBarManager property of the window scene instead.
Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn applicationIconBadgeNumber(&self) -> NSInteger

👎Deprecated: Use -[UNUserNotificationCenter setBadgeCount:withCompletionHandler:] instead.
Source

pub unsafe fn setApplicationIconBadgeNumber( &self, application_icon_badge_number: NSInteger, )

👎Deprecated: Use -[UNUserNotificationCenter setBadgeCount:withCompletionHandler:] instead.
Source

pub unsafe fn applicationSupportsShakeToEdit(&self) -> bool

Source

pub unsafe fn setApplicationSupportsShakeToEdit( &self, application_supports_shake_to_edit: bool, )

Source

pub unsafe fn applicationState(&self) -> UIApplicationState

Source

pub unsafe fn backgroundTimeRemaining(&self) -> NSTimeInterval

Source

pub unsafe fn beginBackgroundTaskWithExpirationHandler( &self, handler: Option<&DynBlock<dyn Fn()>>, ) -> UIBackgroundTaskIdentifier

Available on crate feature block2 only.
Source

pub unsafe fn beginBackgroundTaskWithName_expirationHandler( &self, task_name: Option<&NSString>, handler: Option<&DynBlock<dyn Fn()>>, ) -> UIBackgroundTaskIdentifier

Available on crate feature block2 only.
Source

pub unsafe fn endBackgroundTask(&self, identifier: UIBackgroundTaskIdentifier)

Source

pub unsafe fn setMinimumBackgroundFetchInterval( &self, minimum_background_fetch_interval: NSTimeInterval, )

👎Deprecated: Use a BGAppRefreshTask in the BackgroundTasks framework instead

The system guarantees that it will not wake up your application for a background fetch more frequently than the interval provided. Set to UIApplicationBackgroundFetchIntervalMinimum to be woken as frequently as the system desires, or to UIApplicationBackgroundFetchIntervalNever (the default) to never be woken for a background fetch.

This setter will have no effect unless your application has the “fetch” UIBackgroundMode. See the UIApplicationDelegate method application:performFetchWithCompletionHandler: for more.

Source

pub unsafe fn backgroundRefreshStatus(&self) -> UIBackgroundRefreshStatus

When background refresh is available for an application, it may launched or resumed in the background to handle significant location changes, remote notifications, background fetches, etc. Observe UIApplicationBackgroundRefreshStatusDidChangeNotification to be notified of changes.

Source

pub unsafe fn isProtectedDataAvailable(&self) -> bool

Source

pub unsafe fn userInterfaceLayoutDirection( &self, ) -> UIUserInterfaceLayoutDirection

Available on crate feature UIInterface only.
Source

pub unsafe fn preferredContentSizeCategory( &self, ) -> Retained<UIContentSizeCategory>

Available on crate feature UIContentSizeCategory only.
Source

pub unsafe fn connectedScenes(&self) -> Retained<NSSet<UIScene>>

Available on crate feature UIScene only.
Source

pub unsafe fn openSessions(&self) -> Retained<NSSet<UISceneSession>>

Available on crate feature UISceneSession only.
Source

pub unsafe fn supportsMultipleScenes(&self) -> bool

Source

pub unsafe fn activateSceneSessionForRequest_errorHandler( &self, request: &UISceneSessionActivationRequest, error_handler: Option<&DynBlock<dyn Fn(NonNull<NSError>)>>, )

Available on crate features UISceneSessionActivationRequest and block2 only.

Asks the system to activate an existing scene, or create a new scene and associate it with your app.

  • Parameters:
  • request: The activation request.
  • errorHandler: A handler to be called if the request fails.
Source

pub unsafe fn requestSceneSessionActivation_userActivity_options_errorHandler( &self, scene_session: Option<&UISceneSession>, user_activity: Option<&NSUserActivity>, options: Option<&UISceneActivationRequestOptions>, error_handler: Option<&DynBlock<dyn Fn(NonNull<NSError>)>>, )

👎Deprecated: Please use activateSceneSessionForRequest:errorHandler:
Available on crate features UISceneOptions and UISceneSession and block2 only.
Source

pub unsafe fn requestSceneSessionDestruction_options_errorHandler( &self, scene_session: &UISceneSession, options: Option<&UISceneDestructionRequestOptions>, error_handler: Option<&DynBlock<dyn Fn(NonNull<NSError>)>>, )

Available on crate features UISceneOptions and UISceneSession and block2 only.
Source

pub unsafe fn requestSceneSessionRefresh(&self, scene_session: &UISceneSession)

Available on crate feature UISceneSession only.
Source§

impl UIApplication

Methods declared on superclass NSObject.

Source

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

Source

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

Source§

impl UIApplication

UIRemoteNotifications.

Source

pub unsafe fn registerForRemoteNotifications(&self)

Source

pub unsafe fn unregisterForRemoteNotifications(&self)

Source

pub unsafe fn isRegisteredForRemoteNotifications(&self) -> bool

Source

pub unsafe fn registerForRemoteNotificationTypes( &self, types: UIRemoteNotificationType, )

👎Deprecated: Use -[UIApplication registerForRemoteNotifications] and UserNotifications Framework’s -[UNUserNotificationCenter requestAuthorizationWithOptions:completionHandler:]
Source

pub unsafe fn enabledRemoteNotificationTypes(&self) -> UIRemoteNotificationType

👎Deprecated: Use -[UIApplication isRegisteredForRemoteNotifications] and UserNotifications Framework’s -[UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:] to retrieve user-enabled remote notification and user notification settings
Source§

impl UIApplication

UILocalNotifications.

Source

pub unsafe fn presentLocalNotificationNow( &self, notification: &UILocalNotification, )

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter addNotificationRequest:withCompletionHandler:]
Available on crate feature UILocalNotification only.
Source

pub unsafe fn scheduleLocalNotification( &self, notification: &UILocalNotification, )

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter addNotificationRequest:withCompletionHandler:]
Available on crate feature UILocalNotification only.
Source

pub unsafe fn cancelLocalNotification(&self, notification: &UILocalNotification)

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter removePendingNotificationRequestsWithIdentifiers:]
Available on crate feature UILocalNotification only.
Source

pub unsafe fn cancelAllLocalNotifications(&self)

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter removeAllPendingNotificationRequests]
Source

pub unsafe fn scheduledLocalNotifications( &self, ) -> Option<Retained<NSArray<UILocalNotification>>>

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter getPendingNotificationRequestsWithCompletionHandler:]
Available on crate feature UILocalNotification only.
Source

pub unsafe fn setScheduledLocalNotifications( &self, scheduled_local_notifications: Option<&NSArray<UILocalNotification>>, )

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter getPendingNotificationRequestsWithCompletionHandler:]
Available on crate feature UILocalNotification only.
Source§

impl UIApplication

UIUserNotificationSettings.

Source

pub unsafe fn registerUserNotificationSettings( &self, notification_settings: &UIUserNotificationSettings, )

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter requestAuthorizationWithOptions:completionHandler:] and -[UNUserNotificationCenter setNotificationCategories:]
Available on crate feature UIUserNotificationSettings only.
Source

pub unsafe fn currentUserNotificationSettings( &self, ) -> Option<Retained<UIUserNotificationSettings>>

👎Deprecated: Use UserNotifications Framework’s -[UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:] and -[UNUserNotificationCenter getNotificationCategoriesWithCompletionHandler:]
Available on crate feature UIUserNotificationSettings only.
Source§

impl UIApplication

UIRemoteControlEvents.

Source§

impl UIApplication

UINewsstand.

Source

pub unsafe fn setNewsstandIconImage(&self, image: Option<&UIImage>)

👎Deprecated: Newsstand apps now behave like normal apps on SpringBoard
Available on crate feature UIImage only.
Source§

impl UIApplication

UIShortcutItems.

Source

pub unsafe fn shortcutItems( &self, ) -> Option<Retained<NSArray<UIApplicationShortcutItem>>>

Available on crate feature UIApplicationShortcutItem only.
Source

pub unsafe fn setShortcutItems( &self, shortcut_items: Option<&NSArray<UIApplicationShortcutItem>>, )

Available on crate feature UIApplicationShortcutItem only.

Setter for shortcutItems.

Source§

impl UIApplication

UIAlternateApplicationIcons.

Source

pub unsafe fn supportsAlternateIcons(&self) -> bool

Source

pub unsafe fn setAlternateIconName_completionHandler( &self, alternate_icon_name: Option<&NSString>, completion_handler: Option<&DynBlock<dyn Fn(*mut NSError)>>, )

Available on crate feature block2 only.
Source

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

Source§

impl UIApplication

UIStateRestoration.

Source

pub unsafe fn extendStateRestoration(&self)

Source

pub unsafe fn completeStateRestoration(&self)

Source

pub unsafe fn ignoreSnapshotOnNextApplicationLaunch(&self)

Source

pub unsafe fn registerObjectForStateRestoration_restorationIdentifier( object: &ProtocolObject<dyn UIStateRestoring>, restoration_identifier: &NSString, )

Available on crate feature UIStateRestoration only.
Source§

impl UIApplication

This impl block contains no items.

DefaultApplication.

Source§

impl UIApplication

UIApplicationDeprecated.

Source

pub unsafe fn isProximitySensingEnabled(&self) -> bool

👎Deprecated
Source

pub unsafe fn setProximitySensingEnabled(&self, proximity_sensing_enabled: bool)

👎Deprecated
Source

pub unsafe fn setStatusBarHidden_animated(&self, hidden: bool, animated: bool)

👎Deprecated: Use -[UIViewController prefersStatusBarHidden]
Source

pub unsafe fn setStatusBarOrientation( &self, status_bar_orientation: UIInterfaceOrientation, )

👎Deprecated: Explicit setting of the status bar orientation is more limited in iOS 6.0 and later
Available on crate feature UIOrientation only.

Setter for [statusBarOrientation][Self::statusBarOrientation].

Source

pub unsafe fn setStatusBarOrientation_animated( &self, interface_orientation: UIInterfaceOrientation, animated: bool, )

👎Deprecated: Explicit setting of the status bar orientation is more limited in iOS 6.0 and later
Available on crate feature UIOrientation only.
Source

pub unsafe fn setStatusBarStyle(&self, status_bar_style: UIStatusBarStyle)

👎Deprecated: Use -[UIViewController preferredStatusBarStyle]

Setter for [statusBarStyle][Self::statusBarStyle].

Source

pub unsafe fn setStatusBarStyle_animated( &self, status_bar_style: UIStatusBarStyle, animated: bool, )

👎Deprecated: Use -[UIViewController preferredStatusBarStyle]
Source

pub unsafe fn setStatusBarHidden(&self, status_bar_hidden: bool)

👎Deprecated: Use -[UIViewController prefersStatusBarHidden]

Setter for [isStatusBarHidden][Self::isStatusBarHidden].

Source

pub unsafe fn setStatusBarHidden_withAnimation( &self, hidden: bool, animation: UIStatusBarAnimation, )

👎Deprecated: Use -[UIViewController prefersStatusBarHidden]
Source

pub unsafe fn setKeepAliveTimeout_handler( &self, timeout: NSTimeInterval, keep_alive_handler: Option<&DynBlock<dyn Fn()>>, ) -> bool

👎Deprecated: Please use PushKit for VoIP applications instead of calling this method
Available on crate feature block2 only.
Source

pub unsafe fn clearKeepAliveTimeout(&self)

👎Deprecated: Please use PushKit for VoIP applications instead of calling this method

Methods from Deref<Target = UIResponder>§

Source

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

Source

pub unsafe fn canBecomeFirstResponder(&self) -> bool

Source

pub unsafe fn becomeFirstResponder(&self) -> bool

Source

pub unsafe fn canResignFirstResponder(&self) -> bool

Source

pub unsafe fn resignFirstResponder(&self) -> bool

Source

pub unsafe fn isFirstResponder(&self) -> bool

Source

pub unsafe fn touchesBegan_withEvent( &self, touches: &NSSet<UITouch>, event: Option<&UIEvent>, )

Available on crate features UIEvent and UITouch only.
Source

pub unsafe fn touchesMoved_withEvent( &self, touches: &NSSet<UITouch>, event: Option<&UIEvent>, )

Available on crate features UIEvent and UITouch only.
Source

pub unsafe fn touchesEnded_withEvent( &self, touches: &NSSet<UITouch>, event: Option<&UIEvent>, )

Available on crate features UIEvent and UITouch only.
Source

pub unsafe fn touchesCancelled_withEvent( &self, touches: &NSSet<UITouch>, event: Option<&UIEvent>, )

Available on crate features UIEvent and UITouch only.
Source

pub unsafe fn touchesEstimatedPropertiesUpdated(&self, touches: &NSSet<UITouch>)

Available on crate feature UITouch only.
Source

pub unsafe fn pressesBegan_withEvent( &self, presses: &NSSet<UIPress>, event: Option<&UIPressesEvent>, )

Available on crate features UIEvent and UIPress and UIPressesEvent only.
Source

pub unsafe fn pressesChanged_withEvent( &self, presses: &NSSet<UIPress>, event: Option<&UIPressesEvent>, )

Available on crate features UIEvent and UIPress and UIPressesEvent only.
Source

pub unsafe fn pressesEnded_withEvent( &self, presses: &NSSet<UIPress>, event: Option<&UIPressesEvent>, )

Available on crate features UIEvent and UIPress and UIPressesEvent only.
Source

pub unsafe fn pressesCancelled_withEvent( &self, presses: &NSSet<UIPress>, event: Option<&UIPressesEvent>, )

Available on crate features UIEvent and UIPress and UIPressesEvent only.
Source

pub unsafe fn motionBegan_withEvent( &self, motion: UIEventSubtype, event: Option<&UIEvent>, )

Available on crate feature UIEvent only.
Source

pub unsafe fn motionEnded_withEvent( &self, motion: UIEventSubtype, event: Option<&UIEvent>, )

Available on crate feature UIEvent only.
Source

pub unsafe fn motionCancelled_withEvent( &self, motion: UIEventSubtype, event: Option<&UIEvent>, )

Available on crate feature UIEvent only.
Source

pub unsafe fn remoteControlReceivedWithEvent(&self, event: Option<&UIEvent>)

Available on crate feature UIEvent only.
Source

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

Source

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

Source

pub unsafe fn buildMenuWithBuilder( &self, builder: &ProtocolObject<dyn UIMenuBuilder>, )

Available on crate feature UIMenuBuilder only.
Source

pub unsafe fn validateCommand(&self, command: &UICommand)

Available on crate features UICommand and UIMenuElement only.
Source

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

Source

pub unsafe fn editingInteractionConfiguration( &self, ) -> UIEditingInteractionConfiguration

Source

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

Available on crate features UICommand and UIKeyCommand and UIMenuElement only.
Source

pub unsafe fn inputView(&self) -> Option<Retained<UIView>>

Available on crate feature UIView only.
Source

pub unsafe fn inputAccessoryView(&self) -> Option<Retained<UIView>>

Available on crate feature UIView only.
Source

pub unsafe fn inputAssistantItem(&self) -> Retained<UITextInputAssistantItem>

Available on crate feature UITextInput only.

This method is for clients that wish to put buttons on the Shortcuts Bar, shown on top of the keyboard. You may modify the returned inputAssistantItem to add to or replace the existing items on the bar. Modifications made to the returned UITextInputAssistantItem are reflected automatically. This method should not be overridden. Goes up the responder chain.

Source

pub unsafe fn inputViewController( &self, ) -> Option<Retained<UIInputViewController>>

Available on crate features UIInputViewController and UIViewController only.
Source

pub unsafe fn inputAccessoryViewController( &self, ) -> Option<Retained<UIInputViewController>>

Available on crate features UIInputViewController and UIViewController only.
Source

pub unsafe fn textInputMode(&self) -> Option<Retained<UITextInputMode>>

Available on crate feature UITextInput only.
Source

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

Source

pub unsafe fn reloadInputViews(&self)

Source

pub unsafe fn userActivity(&self) -> Option<Retained<NSUserActivity>>

Source

pub unsafe fn setUserActivity(&self, user_activity: Option<&NSUserActivity>)

Setter for userActivity.

Source

pub unsafe fn updateUserActivityState(&self, activity: &NSUserActivity)

Source

pub unsafe fn restoreUserActivityState(&self, activity: &NSUserActivity)

Source

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

Source

pub unsafe fn activityItemsConfiguration( &self, ) -> Option<Retained<ProtocolObject<dyn UIActivityItemsConfigurationReading>>>

Available on crate features UIResponder_UIActivityItemsConfiguration and UIActivityItemsConfigurationReading only.
Source

pub unsafe fn setActivityItemsConfiguration( &self, activity_items_configuration: Option<&ProtocolObject<dyn UIActivityItemsConfigurationReading>>, )

Available on crate features UIResponder_UIActivityItemsConfiguration and UIActivityItemsConfigurationReading only.

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

Available on crate feature UIIndirectScribbleInteraction only.

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

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,

Available on crate feature UIIndirectScribbleInteraction only.

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 UIApplication

Source§

fn as_ref(&self) -> &AnyObject

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

impl AsRef<NSObject> for UIApplication

Source§

fn as_ref(&self) -> &NSObject

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

impl AsRef<UIApplication> for UIApplication

Source§

fn as_ref(&self) -> &Self

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

impl AsRef<UIResponder> for UIApplication

Source§

fn as_ref(&self) -> &UIResponder

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

impl Borrow<AnyObject> for UIApplication

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for UIApplication

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<UIResponder> for UIApplication

Source§

fn borrow(&self) -> &UIResponder

Immutably borrows from an owned value. Read more
Source§

impl ClassType for UIApplication

Source§

const NAME: &'static str = "UIApplication"

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

type Super = UIResponder

The superclass of this class. Read more
Source§

type ThreadKind = dyn MainThreadOnly

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 UIApplication

Source§

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

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

impl Deref for UIApplication

Source§

type Target = UIResponder

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl Hash for UIApplication

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 UIApplication

Source§

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

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

impl NSObjectProtocol for UIApplication

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 UIApplication

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 UIApplication

Source§

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

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

impl UIResponderStandardEditActions for UIApplication

Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

unsafe fn updateTextAttributesWithConversionHandler( &self, conversion_handler: UITextAttributesConversionHandler, )
where Self: Sized + Message,

Available on crate features UIResponder and block2 only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

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

Available on crate feature UIResponder only.
Source§

unsafe fn showWritingTools(&self, sender: &AnyObject)
where Self: Sized + Message,

Available on crate feature UIResponder only.
Source§

impl DowncastTarget for UIApplication

Source§

impl Eq for UIApplication

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,