pub struct TVApplicationController { /* private fields */ }TVApplicationController only.Expand description
The TVApplicationController class establishes the JavaScript environment to provide a centralized point of control and co-ordination. The class bridges the UI, navigation stack, storage and event handling from JavaScript.
See also Appleโs documentation
Implementationsยง
Sourceยงimpl TVApplicationController
impl TVApplicationController
Sourcepub unsafe fn initWithContext_window_delegate(
this: Allocated<Self>,
context: &TVApplicationControllerContext,
window: Option<&UIWindow>,
delegate: Option<&ProtocolObject<dyn TVApplicationControllerDelegate>>,
) -> Retained<Self>
๐Deprecated: Please use SwiftUI or UIKitAvailable on crate feature objc2-ui-kit only.
pub unsafe fn initWithContext_window_delegate( this: Allocated<Self>, context: &TVApplicationControllerContext, window: Option<&UIWindow>, delegate: Option<&ProtocolObject<dyn TVApplicationControllerDelegate>>, ) -> Retained<Self>
objc2-ui-kit only.Initializes and returns application controller given the launch context. Optionally window can be passed, and in that case TVApplicationController acts like an application delegate, and handles the JavaScript application lifecycle events e.g. onResume, onSuspend. If window is not provided, caller is responsible for hosting the navigationController.
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>
pub unsafe fn window(&self, mtm: MainThreadMarker) -> Option<Retained<UIWindow>>
objc2-ui-kit only.pub unsafe fn context(&self) -> Retained<TVApplicationControllerContext>
pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn TVApplicationControllerDelegate>>>
๐Deprecated: Please use SwiftUI or UIKitAvailable on crate feature objc2-ui-kit only.
objc2-ui-kit only.Returns the navigation controller which is bridged from JavaScript. Native controllers can also be pushed onto this controller.
Sourcepub unsafe fn evaluateInJavaScriptContext_completion(
&self,
evaluation: &DynBlock<dyn Fn(NonNull<JSContext>)>,
completion: Option<&DynBlock<dyn Fn(Bool)>>,
)
๐Deprecated: Please use SwiftUI or UIKitAvailable on crate features block2 and objc2-javascript-core only.
pub unsafe fn evaluateInJavaScriptContext_completion( &self, evaluation: &DynBlock<dyn Fn(NonNull<JSContext>)>, completion: Option<&DynBlock<dyn Fn(Bool)>>, )
block2 and objc2-javascript-core only.Adds the block to the JavaScript execution queue and invokes completion block once the evaluation block has finished execution. JSContext is valid within the scope of evaluation block and should not be referenced by the application outside the block.
Parameter evaluation: Block to evaluate in JavaScript execution queue.
Parameter completion: Invoked after the evaluation block has been executed.
evaluated is YES if the block was evaluated; NO otherwise.
Sourcepub unsafe fn stop(&self)
๐Deprecated: Please use SwiftUI or UIKit
pub unsafe fn stop(&self)
Stops the application lifecycle. appController:didStopWithOptions: is called once the JSContext has finished execution and has released all itโs resources. The delegate must wait before releasing the controller. The controller cannot be reused after calling stop.
Methods from Deref<Target = NSObject>ยง
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesnโt recognize.
See Appleโs documentation for details.
Methods from Deref<Target = AnyObject>ยง
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
ยงPanics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
ยงExample
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
๐Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
ยงSafety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
ยงMutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable โunder the hoodโ.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Appleโs documentation on mutability and on
isKindOfClass: for more details.
ยงGeneric classes
Objective-C generics are called โlightweight genericsโ, and thatโs because they arenโt exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
ยงPanics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you donโt need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
ยงExamples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementationsยง
Sourceยงimpl AsRef<AnyObject> for TVApplicationController
impl AsRef<AnyObject> for TVApplicationController
Sourceยงimpl AsRef<NSObject> for TVApplicationController
impl AsRef<NSObject> for TVApplicationController
Sourceยงimpl Borrow<AnyObject> for TVApplicationController
impl Borrow<AnyObject> for TVApplicationController
Sourceยงimpl Borrow<NSObject> for TVApplicationController
impl Borrow<NSObject> for TVApplicationController
Sourceยงimpl ClassType for TVApplicationController
impl ClassType for TVApplicationController
Sourceยงconst NAME: &'static str = "TVApplicationController"
const NAME: &'static str = "TVApplicationController"
Sourceยงtype ThreadKind = <<TVApplicationController as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<TVApplicationController as ClassType>::Super as ClassType>::ThreadKind
Sourceยงimpl Debug for TVApplicationController
impl Debug for TVApplicationController
Sourceยงimpl Deref for TVApplicationController
impl Deref for TVApplicationController
Sourceยงimpl Hash for TVApplicationController
impl Hash for TVApplicationController
Sourceยงimpl Message for TVApplicationController
impl Message for TVApplicationController
Sourceยงimpl NSObjectProtocol for TVApplicationController
impl NSObjectProtocol for TVApplicationController
Sourceยงfn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Sourceยงfn hash(&self) -> usize
fn hash(&self) -> usize
Sourceยงfn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Sourceยงfn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref