SKLightNode

Struct SKLightNode 

Source
pub struct SKLightNode { /* private fields */ }
Available on crate feature SKLightNode and crate feature SKNode and crate feature objc2-app-kit and macOS only.
Expand description

Implementations§

Source§

impl SKLightNode

Source

pub unsafe fn isEnabled(&self) -> bool

Enables or disables lighting contribution from this light node.

Set to YES; sprites using this light will be lit with the ambient color and the light color, with a falloff in intensity according to the falloff property.

Set to NO; this light does not contribute any lighting.

If no lights are active on a sprite it will be drawn normally, as if not lit.

The default value is YES.

See: lightColor

See: falloff

See: categoryBitMask

Source

pub unsafe fn setEnabled(&self, enabled: bool)

Setter for isEnabled.

Source

pub unsafe fn lightColor(&self) -> Retained<NSColor>

Diffuse and Specular color of the light source, defaults to opaque white.

The alpha component of the color is ignored.

If using shaders bind a uniform to this property to use scene based custom lighting.

See: SKUniform

See: falloff

Source

pub unsafe fn setLightColor(&self, light_color: &NSColor)

Setter for lightColor.

Source

pub unsafe fn ambientColor(&self) -> Retained<NSColor>

Ambient color of the light source, defaults to black.

If you had only a single light in the scene with an ambient color of opaque white and a light color of black, it would appear as if the scene was rendered without lighting.

The alpha component of the color is ignored. The color is not affected by falloff or surface normals.

See: lightColor

Source

pub unsafe fn setAmbientColor(&self, ambient_color: &NSColor)

Setter for ambientColor.

Source

pub unsafe fn shadowColor(&self) -> Retained<NSColor>

Color of the shadow casted on occluded objects, defaults to half opacity black.

The alpha component of the color is used for blending with the regions that are in shadow.

See: SKSpriteNode.shadowCastBitMask

See: SKSpriteNode.shadowedBitMask

Source

pub unsafe fn setShadowColor(&self, shadow_color: &NSColor)

Setter for shadowColor.

Source

pub unsafe fn falloff(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

Falloff in intensity of the light over distance, defaults to 1. The falloff does not affect the ambient color nor the shadow color.

See: lightColor

Source

pub unsafe fn setFalloff(&self, falloff: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for falloff.

Source

pub unsafe fn categoryBitMask(&self) -> u32

The category of the light, which determines the group(s) a light belongs to. Any node that has its corresponding light and shadow bitmasks set to an overlapping value will be lit, shadow casting or shadowed by this light.

See: SKSpriteNode.lightingBitMask

See: SKSpriteNode.shadowCastBitMask

See: SKSpriteNode.shadowedBitMask

Source

pub unsafe fn setCategoryBitMask(&self, category_bit_mask: u32)

Setter for categoryBitMask.

Source§

impl SKLightNode

Methods declared on superclass SKNode.

Source

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

Source

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

Support coding and decoding via NSKeyedArchiver.

§Safety

a_decoder possibly has further requirements.

Source

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

Source

pub unsafe fn nodeWithFileNamed( filename: &NSString, mtm: MainThreadMarker, ) -> Option<Retained<Self>>

Source

pub unsafe fn nodeWithFileNamed_securelyWithClasses_andError( filename: &NSString, classes: &NSSet<AnyClass>, mtm: MainThreadMarker, ) -> Result<Retained<Self>, Retained<NSError>>

§Safety

classes generic probably has further requirements.

Source§

impl SKLightNode

Methods declared on superclass NSObject.

Source

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

Methods from Deref<Target = SKNode>§

Source

pub unsafe fn frame(&self) -> CGRect

Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn calculateAccumulatedFrame(&self) -> CGRect

Available on crate feature objc2-core-foundation only.

Calculates the bounding box including all child nodes in parents coordinate system.

Source

pub unsafe fn position(&self) -> CGPoint

Available on crate feature objc2-core-foundation only.

The position of the node in the parent’s coordinate system

Source

pub unsafe fn setPosition(&self, position: CGPoint)

Available on crate feature objc2-core-foundation only.

Setter for position.

Source

pub unsafe fn zPosition(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

The z-order of the node (used for ordering). Negative z is “into” the screen, Positive z is “out” of the screen. A greater zPosition will sort in front of a lesser zPosition.

Source

pub unsafe fn setZPosition(&self, z_position: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for zPosition.

Source

pub unsafe fn zRotation(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

The Euler rotation about the z axis (in radians)

Source

pub unsafe fn setZRotation(&self, z_rotation: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for zRotation.

Source

pub unsafe fn xScale(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

The scaling in the X axis

Source

pub unsafe fn setXScale(&self, x_scale: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for xScale.

Source

pub unsafe fn yScale(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

The scaling in the Y axis

Source

pub unsafe fn setYScale(&self, y_scale: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for yScale.

Source

pub unsafe fn speed(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

The speed multiplier applied to all actions run on this node. Inherited by its children.

Source

pub unsafe fn setSpeed(&self, speed: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for speed.

Source

pub unsafe fn alpha(&self) -> CGFloat

Available on crate feature objc2-core-foundation only.

Alpha of this node (multiplied by the output color to give the final result)

Source

pub unsafe fn setAlpha(&self, alpha: CGFloat)

Available on crate feature objc2-core-foundation only.

Setter for alpha.

Source

pub unsafe fn isPaused(&self) -> bool

Controls whether or not the node’s actions is updated or paused.

Source

pub unsafe fn setPaused(&self, paused: bool)

Setter for isPaused.

Source

pub unsafe fn isHidden(&self) -> bool

Controls whether or not the node and its children are rendered.

Source

pub unsafe fn setHidden(&self, hidden: bool)

Setter for isHidden.

Source

pub unsafe fn isUserInteractionEnabled(&self) -> bool

Controls whether or not the node receives touch events

Source

pub unsafe fn setUserInteractionEnabled(&self, user_interaction_enabled: bool)

Source

pub unsafe fn focusBehavior(&self) -> SKNodeFocusBehavior

Determines how this node participates in the focus system. The default is SKNodeFocusBehaviorNone.

Source

pub unsafe fn setFocusBehavior(&self, focus_behavior: SKNodeFocusBehavior)

Setter for focusBehavior.

Source

pub unsafe fn parent(&self) -> Option<Retained<SKNode>>

The parent of the node.

If this is nil the node has not been added to another group and is thus the root node of its own graph.

Source

pub unsafe fn children(&self) -> Retained<NSArray<SKNode>>

The children of this node.

Source

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

The client assignable name.

In general, this should be unique among peers in the scene graph.

Source

pub unsafe fn setName(&self, name: Option<&NSString>)

Setter for name.

This is copied when set.

Source

pub unsafe fn scene(&self) -> Option<Retained<SKScene>>

Available on crate features SKEffectNode and SKScene only.

The scene that the node is currently in.

Source

pub unsafe fn physicsBody(&self) -> Option<Retained<SKPhysicsBody>>

Available on crate feature SKPhysicsBody only.

Physics body attached to the node, with synchronized scale, rotation, and position

Source

pub unsafe fn setPhysicsBody(&self, physics_body: Option<&SKPhysicsBody>)

Available on crate feature SKPhysicsBody only.

Setter for physicsBody.

Source

pub unsafe fn userData(&self) -> Option<Retained<NSMutableDictionary>>

An optional dictionary that can be used to store your own data in a node. Defaults to nil.

§Safety

The returned generic should be of the correct type.

Source

pub unsafe fn setUserData(&self, user_data: Option<&NSMutableDictionary>)

Setter for userData.

§Safety

user_data generic should be of the correct type.

Source

pub unsafe fn reachConstraints(&self) -> Option<Retained<SKReachConstraints>>

Available on crate feature SKReachConstraints only.

Kinematic constraints, used in IK solving

Source

pub unsafe fn setReachConstraints( &self, reach_constraints: Option<&SKReachConstraints>, )

Available on crate feature SKReachConstraints only.

Setter for reachConstraints.

This is copied when set.

Source

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

Available on crate feature SKConstraint only.

Optional array of SKConstraints Constraints are evaluated each frame after actions and physics. The node’s transform will be changed to satisfy the constraint.

Source

pub unsafe fn setConstraints(&self, constraints: Option<&NSArray<SKConstraint>>)

Available on crate feature SKConstraint only.

Setter for constraints.

This is copied when set.

Source

pub unsafe fn attributeValues( &self, ) -> Retained<NSDictionary<NSString, SKAttributeValue>>

👎Deprecated
Available on crate feature SKAttribute only.

Optional dictionary of SKAttributeValues Attributes can be used with custom SKShaders. DEPRECATED: Attributes are only available for node classes supporting SKShader (see SKSpriteNode etc.).

Source

pub unsafe fn setAttributeValues( &self, attribute_values: &NSDictionary<NSString, SKAttributeValue>, )

👎Deprecated
Available on crate feature SKAttribute only.

Setter for attributeValues.

This is copied when set.

Source

pub unsafe fn valueForAttributeNamed( &self, key: &NSString, ) -> Option<Retained<SKAttributeValue>>

👎Deprecated
Available on crate feature SKAttribute only.
Source

pub unsafe fn setValue_forAttributeNamed( &self, value: &SKAttributeValue, key: &NSString, )

👎Deprecated
Available on crate feature SKAttribute only.
Source

pub unsafe fn setScale(&self, scale: CGFloat)

Available on crate feature objc2-core-foundation only.

Sets both the x & y scale

Parameter scale: the uniform scale to set.

Source

pub unsafe fn addChild(&self, node: &SKNode)

Adds a node as a child node of this node

The added node must not have a parent.

Parameter node: the child node to add.

Source

pub unsafe fn insertChild_atIndex(&self, node: &SKNode, index: NSInteger)

Source

pub unsafe fn removeChildrenInArray(&self, nodes: &NSArray<SKNode>)

Source

pub unsafe fn removeAllChildren(&self)

Source

pub unsafe fn removeFromParent(&self)

Source

pub unsafe fn moveToParent(&self, parent: &SKNode)

Source

pub unsafe fn childNodeWithName( &self, name: &NSString, ) -> Option<Retained<SKNode>>

Source

pub unsafe fn enumerateChildNodesWithName_usingBlock( &self, name: &NSString, block: &DynBlock<dyn Fn(NonNull<SKNode>, NonNull<Bool>)>, )

Available on crate feature block2 only.
Source

pub unsafe fn objectForKeyedSubscript( &self, name: &NSString, ) -> Retained<NSArray<SKNode>>

Simplified shorthand for enumerateChildNodesWithName that returns an array of the matching nodes. This allows subscripting of the form: NSArray *childrenMatchingName = node[ “ name“]

or even complex like: NSArray siblingsBeginningWithA = node[ “ ../a“]

Parameter name: An Xpath style path that can include simple regular expressions for matching node names.

See: enumerateChildNodesWithName:usingBlock:

Source

pub unsafe fn inParentHierarchy(&self, parent: &SKNode) -> bool

Source

pub unsafe fn runAction(&self, action: &SKAction)

Available on crate feature SKAction only.
Source

pub unsafe fn runAction_completion( &self, action: &SKAction, block: &DynBlock<dyn Fn()>, )

Available on crate features SKAction and block2 only.
Source

pub unsafe fn runAction_withKey(&self, action: &SKAction, key: &NSString)

Available on crate feature SKAction only.
Source

pub unsafe fn hasActions(&self) -> bool

Source

pub unsafe fn actionForKey(&self, key: &NSString) -> Option<Retained<SKAction>>

Available on crate feature SKAction only.
Source

pub unsafe fn removeActionForKey(&self, key: &NSString)

Source

pub unsafe fn removeAllActions(&self)

Source

pub unsafe fn containsPoint(&self, p: CGPoint) -> bool

Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn nodeAtPoint(&self, p: CGPoint) -> Retained<SKNode>

Available on crate feature objc2-core-foundation only.

Returns the node itself or a child node at the point given. If the receiver is returned there is no child node at the given point.

Returns: a child node or self at the given location.

Source

pub unsafe fn nodesAtPoint(&self, p: CGPoint) -> Retained<NSArray<SKNode>>

Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn convertPoint_fromNode( &self, point: CGPoint, node: &SKNode, ) -> CGPoint

Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn convertPoint_toNode( &self, point: CGPoint, node: &SKNode, ) -> CGPoint

Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn intersectsNode(&self, node: &SKNode) -> bool

Source

pub unsafe fn isEqualToNode(&self, node: &SKNode) -> bool

Source

pub unsafe fn isAccessibilityElement(&self) -> bool

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityElement(&self, accessibility_element: bool)

Available on crate feature SKNode_NSAccessibility only.
Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityRole(&self, accessibility_role: Option<&NSString>)

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilityRole.

This is copied when set.

Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityRoleDescription( &self, accessibility_role_description: Option<&NSString>, )

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilityRoleDescription.

This is copied when set.

Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilitySubrole( &self, accessibility_subrole: Option<&NSString>, )

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilitySubrole.

This is copied when set.

Source

pub unsafe fn accessibilityFrame(&self) -> CGRect

Available on crate features SKNode_NSAccessibility and objc2-core-foundation only.
Source

pub unsafe fn setAccessibilityFrame(&self, accessibility_frame: CGRect)

Available on crate features SKNode_NSAccessibility and objc2-core-foundation only.

Setter for accessibilityFrame.

Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityParent( &self, accessibility_parent: Option<&AnyObject>, )

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilityParent.

This is a weak property.

§Safety

accessibility_parent should be of the correct type.

Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityChildren( &self, accessibility_children: Option<&NSArray>, )

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilityChildren.

This is copied when set.

§Safety

accessibility_children generic should be of the correct type.

Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityHelp(&self, accessibility_help: Option<&NSString>)

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilityHelp.

This is copied when set.

Source

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

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityLabel( &self, accessibility_label: Option<&NSString>, )

Available on crate feature SKNode_NSAccessibility only.

Setter for accessibilityLabel.

This is copied when set.

Source

pub unsafe fn isAccessibilityEnabled(&self) -> bool

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn setAccessibilityEnabled(&self, accessibility_enabled: bool)

Available on crate feature SKNode_NSAccessibility only.
Source

pub unsafe fn accessibilityHitTest( &self, point: CGPoint, ) -> Option<Retained<AnyObject>>

Available on crate features SKNode_NSAccessibility and objc2-core-foundation only.

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 fn performKeyEquivalent(&self, event: &NSEvent) -> bool

Source

pub fn mouseDown(&self, event: &NSEvent)

Source

pub fn rightMouseDown(&self, event: &NSEvent)

Source

pub fn otherMouseDown(&self, event: &NSEvent)

Source

pub fn mouseUp(&self, event: &NSEvent)

Source

pub fn rightMouseUp(&self, event: &NSEvent)

Source

pub fn otherMouseUp(&self, event: &NSEvent)

Source

pub fn mouseMoved(&self, event: &NSEvent)

Source

pub fn mouseDragged(&self, event: &NSEvent)

Source

pub fn mouseCancelled(&self, event: &NSEvent)

Source

pub fn scrollWheel(&self, event: &NSEvent)

Source

pub fn rightMouseDragged(&self, event: &NSEvent)

Source

pub fn otherMouseDragged(&self, event: &NSEvent)

Source

pub fn mouseEntered(&self, event: &NSEvent)

Source

pub fn mouseExited(&self, event: &NSEvent)

Source

pub fn keyDown(&self, event: &NSEvent)

Source

pub fn keyUp(&self, event: &NSEvent)

Source

pub fn flagsChanged(&self, event: &NSEvent)

Source

pub fn tabletPoint(&self, event: &NSEvent)

Source

pub fn tabletProximity(&self, event: &NSEvent)

Source

pub fn cursorUpdate(&self, event: &NSEvent)

Source

pub fn magnifyWithEvent(&self, event: &NSEvent)

Source

pub fn rotateWithEvent(&self, event: &NSEvent)

Source

pub fn swipeWithEvent(&self, event: &NSEvent)

Source

pub fn beginGestureWithEvent(&self, event: &NSEvent)

Source

pub fn endGestureWithEvent(&self, event: &NSEvent)

Source

pub fn smartMagnifyWithEvent(&self, event: &NSEvent)

Source

pub fn changeModeWithEvent(&self, event: &NSEvent)

Source

pub fn touchesBeganWithEvent(&self, event: &NSEvent)

Source

pub fn touchesMovedWithEvent(&self, event: &NSEvent)

Source

pub fn touchesEndedWithEvent(&self, event: &NSEvent)

Source

pub fn touchesCancelledWithEvent(&self, event: &NSEvent)

Source

pub fn quickLookWithEvent(&self, event: &NSEvent)

Source

pub fn pressureChangeWithEvent(&self, event: &NSEvent)

Source

pub fn contextMenuKeyDown(&self, event: &NSEvent)

Handle a key event that should present a context menu at the user focus.

Most applications should not override this method. Instead, you should customize the context menu displayed from a keyboard event by implementing menuForEvent: and selectionAnchorRect, or showContextMenuForSelection:, rather than this method.

You should only override this method when you do not want the system-provided default behavior for the context menu hotkey, either for a specific key combination, or for the hotkey in general. For example, if your application already provides a different behavior for control-Return (the default context menu hotkey definition), and you want to preserve that behavior, you should override this method to handle that specific key combination, and then return without calling super. Note that the user may customize the hotkey to a different key combination, so in this example, if any other key combination is passed to your method, you would call super.

An implementation of this method should call [super contextMenuKeyDown:event] to pass the request up the responder chain. If the message reaches the application object, NSApplication’s implementation of this method will send showContextMenuForSelection: to the responder chain. If you do not call super, then no further handling of the key event will be performed.

Note: In some cases, showContextMenuForSelection: will be called without a prior call to contextMenuKeyDown:. This occurs when a view receives an Accessibility ShowMenu action, or when the user has created a Cocoa Text key binding to map a different key combination to the showContextMenuForSelection: action.

Parameter event: The key down event that matches the system-wide context menu hotkey combination.

See also: showContextMenuForSelection:

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 interpretKeyEvents(&self, event_array: &NSArray<NSEvent>)

Source

pub fn flushBufferedKeyEvents(&self)

Source

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

§Safety

sender should be of the correct type.

Source

pub fn helpRequested(&self, event_ptr: &NSEvent)

Source

pub fn shouldBeTreatedAsInkEvent(&self, event: &NSEvent) -> bool

Source

pub fn wantsScrollEventsForSwipeTrackingOnAxis( &self, axis: NSEventGestureAxis, ) -> bool

Source

pub fn wantsForwardedScrollEventsForAxis( &self, axis: NSEventGestureAxis, ) -> bool

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 fn validateProposedFirstResponder_forEvent( &self, responder: &NSResponder, event: Option<&NSEvent>, ) -> bool

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 SKLightNode

Source§

fn as_ref(&self) -> &AnyObject

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

impl AsRef<NSObject> for SKLightNode

Source§

fn as_ref(&self) -> &NSObject

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

impl AsRef<NSResponder> for SKLightNode

Source§

fn as_ref(&self) -> &NSResponder

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

impl AsRef<SKLightNode> for SKLightNode

Source§

fn as_ref(&self) -> &Self

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

impl AsRef<SKNode> for SKLightNode

Source§

fn as_ref(&self) -> &SKNode

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

impl Borrow<AnyObject> for SKLightNode

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for SKLightNode

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSResponder> for SKLightNode

Source§

fn borrow(&self) -> &NSResponder

Immutably borrows from an owned value. Read more
Source§

impl Borrow<SKNode> for SKLightNode

Source§

fn borrow(&self) -> &SKNode

Immutably borrows from an owned value. Read more
Source§

impl ClassType for SKLightNode

Source§

const NAME: &'static str = "SKLightNode"

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

type Super = SKNode

The superclass of this class. Read more
Source§

type ThreadKind = <<SKLightNode 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 CopyingHelper for SKLightNode

Source§

type Result = SKLightNode

The immutable counterpart of the type, or Self if the type has no immutable counterpart. Read more
Source§

impl Debug for SKLightNode

Source§

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

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

impl Deref for SKLightNode

Source§

type Target = SKNode

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl Hash for SKLightNode

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 SKLightNode

Source§

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

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

impl NSCoding for SKLightNode

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 NSCopying for SKLightNode

Source§

fn copy(&self) -> Retained<Self::Result>
where Self: Sized + Message + CopyingHelper,

Returns a new instance that’s a copy of the receiver. Read more
Source§

unsafe fn copyWithZone(&self, zone: *mut NSZone) -> Retained<Self::Result>
where Self: Sized + Message + CopyingHelper,

Returns a new instance that’s a copy of the receiver. Read more
Source§

impl NSObjectProtocol for SKLightNode

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 NSSecureCoding for SKLightNode

Source§

impl PartialEq for SKLightNode

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 SKLightNode

Source§

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

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

impl DowncastTarget for SKLightNode

Source§

impl Eq for SKLightNode

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,