Compartir a través de


NSObject Clase

Definición

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

[Foundation.Register("NSObject", true)]
public class NSObject : Foundation.INSObjectProtocol, IDisposable, IEquatable<Foundation.NSObject>
type NSObject = class
    interface INSObjectProtocol
    interface INativeObject
    interface IDisposable
    interface IEquatable<NSObject>
Herencia
NSObject
Derivado
Atributos
Implementaciones

Comentarios

Esta es la clase base que se usa para enlazar clases objective-C a clases de C#. Simplemente la subclases de NSObject generará una clase que se puede pasar a Objective-C.

La clase NSObject de C# y sus subclases son representaciones administradas de las instancias subyacentes de Objective-C. El puntero al objeto Objective-C de código no administrado se almacena en la Handle propiedad .

Es importante tener en cuenta que actualmente, el compilador no admite subclases genéricas de NSObject.

Registro de clases

Al crear una subclase de NSObject, esta subclase se registra con el runtime de Objective-C con un nombre basado en el nombre de tipo completo de .NET, que es un detalle de implementación. Si necesita asegurarse de que una clase de C# se expone con un nombre específico en el runtime de Objective-C, puede aplicar el T:ObjCRuntime.RegisterAttribute a la clase y especificar el nombre que desea que tenga la clase.

Lo anterior se suele usar en los casos en los que se quiere hacer referencia a la clase por su nombre en algún código objective-C, cuando se usan archivos XIB y Storyboard del Generador de interfaz o cuando se usa una configuración de serialización de Objective-C (por ejemplo, al usar NSCoder).

//
// This exposes the C# class _MySampleView as the Objective-C MyView
//
[Export ("MyView")]
public class _MySampleView : UIView {

}

Métodos objective-C

En general, las clases MonoTouch asignan una a una a las clases de Objective-C subyacentes. Por ejemplo, la clase de C# "MonoTouch.Foundation.NSObject" se asigna a la clase Objective-C "NSObject". Pero los métodos son diferentes. Los métodos de Objective-C no se traducen bien en métodos de C#, por lo que se han modificado en general para que coincidan con el lenguaje C#, las expresiones de C# y las directrices de diseño de .NET Framework.

Los métodos objective-C se exponen a C# como métodos virtuales que tienen aplicados los métodos T:ObjCRuntime.ExportAttribute . El compilador usa este atributo para asignar nombres de C# a nombres de Objective-C. Estos atributos se muestran en la documentación de la API sobre cada función, para ayudarle a identificar a qué método Objective-C llama a un método de C# determinado.

Para modificar el comportamiento de una clase, use las expresiones estándar de C#: cree una subclase e invalide los métodos que desea modificar y usar la "base". característica de idioma para llamar opcionalmente a la clase base.

public class MyView : UISlider {
	public override void Draw (RectangleF rect)
	{
		// Let the base class draw first
		base.Draw (rect);

		// Our custom code
		var ctx = UIGraphics.GetCurrentContext ();
		UIColor.Gray.SetColor ();
		ctx.StrokeEllipseInRect (rect);
	}
}

De forma predeterminada, solo los métodos que se han sobrescrito se exponen al mundo objective-C. Si desea exponer un método arbitrario de C# al mundo de Objective-C, debe aplicar T:ObjCRuntime.ExportAttribute al método público. Y esto se puede hacer tanto en métodos estáticos como en métodos de instancia. Una vez aplicado el atributo, el método se expondrá a Objective-C y las operaciones de serialización de tipos de datos estándar compatibles con el runtime estarán disponibles para esos métodos.

//
// Exposes the class StringUtilities to Objective-C with the 
// method:
//    - (NSString *) joinArray:(NSArray *) stringArray withSeparator:(NSString *sep);
//
// Used like this:
//   id utilities = [[StringUtilities alloc] init];
//   NSLog (@"Joined: %@", [utilities joinArray:users withSeparator:@", "]);
//
public class StringUtilities : NSObject {
	[Export ("joinArray:withSeparator:")]
	public string Join (string [] array, string separator)
	{
		return string.Join (separator, array);
	}
}

Ciclo de vida

El NSObject de C# y sus subclases son contenedores administrados para el objeto Objective-C subyacente. Se crean a partir de C#, cuando se crea una nueva instancia mediante el operador "new" o cuando se muestra un objeto no administrado existente en el mundo de C#.

Al crear un objeto a partir de C# con el operador "new", el objeto será propiedad inicial de C#, y C# conservará una referencia al objeto. Esta referencia solo se quitará cuando el recolector de elementos no utilizados determine que no hay referencias administradas pendientes a ella o cuando se llama manualmente al método Dispose en el objeto .

Los NSObject de C# también se crean a petición cuando se invoca un método o una propiedad que devuelve un NSObject. En este momento, el entorno de ejecución examinará una memoria caché de objetos y determinará si ya se ha expuesto un NSObject de Objective-C determinado al mundo administrado o no. Si se ha expuesto el objeto, se devolverá el objeto existente; de lo contrario, se invocará un constructor que tome intPtr como parámetro para construir el objeto.

Los "elementos del mismo nivel" puros para los objetos de marco (aquellos objetos que son meramente representaciones de C# de un objeto Objective-C y que no tienen ningún estado asociado administrado adicional) se pueden volver a crear mediante el tiempo de ejecución a petición mediante el constructor mencionado antes.

Las subclases de usuario de NSObjects a menudo contienen estado de C#, por lo que cada vez que el tiempo de ejecución de Objective-C realiza una operación de "retención" en uno de estos objetos, el tiempo de ejecución crea un GCHandle que mantiene activo el objeto administrado, incluso si no hay referencias visibles de C# al objeto. Esto simplifica la reserva de un montón, ya que el estado se conservará automáticamente para usted.

La operación Dispose en un NSObject siempre quitará la referencia al objeto Objective-C subyacente, pero no destruirá el estado administrado, esto solo ocurrirá cuando tanto el código administrado como el código no administrado hayan liberado los objetos. Esto es ligeramente diferente de .NET, porque en .NET una vez que se elimina un objeto, no es posible invocar ningún método en el objeto, ya que se considera inútil. No es el caso de NSObjects.

Adopción de protocolos

En MonoTouch, la mayoría de los protocolos objective-C se asignan a clases que tienen aplicado t T:ObjCRuntime.ModelAttribute . Y la forma en que adopta un protocolo es mediante la subclases y sobrescribir los métodos que desea adoptar.

Hay algunos casos excepcionales en los que quiere adoptar un protocolo ad hoc por su cuenta. Si necesita adoptar un protocolo Objective-C, debe usar en la AdoptsAttribute clase y proporcionar el nombre del protocolo que desea adoptar. Normalmente, al adoptar un protocolo, también tendrá que enumerar todos los selectores de Objective-C que está adoptando mediante T T:ObjCRuntime.ExportAttribute.

[Adopts ("NSLocking")]
public class MyLockeingObject : NSObject {
	[Export ("lock")]
	public void Lock ()
	{
		// ...
	}

	[Export ("unlock")]
	public void Unlock ()
	{
		// ...
	}
}

Codificación de valor de clave

La codificación key Value es un mecanismo que permite acceder a las propiedades de un objeto por su nombre, en lugar de acceder a ellos directamente con un método de C#.

Para exponer una propiedad de C# al sistema de codificación de Key-Value lo único que necesita hacer es agregar T T:ObjCRuntime.ExportAttribute a la propiedad. Los nombres solo deben contener caracteres ASCII, empezar con una letra minúscula y no deben contener espacios.

public class CircleLayer : CALayer {
	[Export ("radius")]
	public double Radius { get; set; }

	// ...
}

Use los métodos M:Foundation.ValueForKey(Foundation.NSString);* para buscar una propiedad con un nombre y usar las funciones M:Foundation.SetValueForKey(Foundation.NSObject, Foundation.NSString);*" métodos para establecer el valor de la propiedad especificada. Por ejemplo, podría llamar a foo. ValueForKey ("user") para obtener el valor de la propiedad user en un objeto .

Además, puede usar rutas de acceso de clave para que el tiempo de ejecución llame repetidamente a ValueForKey o SetValueForKey. Las claves se separan mediante un punto. Por ejemplo, la ruta de acceso clave "user.address.phone.mobile" solicitaría la propiedad user y, a continuación, solicitaría la propiedad address en el usuario, solicitaría la propiedad phone en la dirección y, por último, solicitaría la propiedad móvil en el teléfono y, por último, usaría el resultado como valor. Se usa M:Foundation.ValueForKeyPath(Foundation.NSString);* para buscar una propiedad mediante una ruta de acceso clave y se usa M:Foundation.SetValueForKeyPath(Foundation.NSObject, Foundation.NSString);* para establecer un valor mediante una ruta de acceso clave.

Cuando se usan rutas de acceso clave, si se produce un error en una búsqueda, SetValueForUndefinedKey(NSObject, NSString) se invocará al establecer un valor y ValueForUndefinedKey(NSString) se invocará al buscar un valor. Ambos métodos generan de forma predeterminada una excepción objective-C, puede modificar ese comportamiento reemplazando los métodos.

Observación de valor clave

La observación del valor de clave es un mecanismo implementado por NSObject que se puede usar para supervisar los cambios realizados en un NSObject a través del sistema de codificación de valores de clave.

Para que la clase observe una notificación, debe invalidar el ObserveValue(NSString, NSObject, NSDictionary, IntPtr) método que se invocará con la información sobre los cambios de valor de una ruta de acceso de clave específica. A continuación, use AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr) para empezar a observar los cambios y el RemoveObserver(NSObject, NSString, IntPtr) método para dejar de recibir notificaciones.

Constructores

NSObject()

Constructor predeterminado que inicializa una nueva instancia de esta clase sin parámetros.

NSObject(IntPtr)

Constructor utilizado al crear representaciones administradas de objetos no administrados; Llamado por el entorno de ejecución.

NSObject(IntPtr, Boolean)

Constructor utilizado al crear representaciones administradas de objetos no administrados; Llamado por el entorno de ejecución.

NSObject(NSObjectFlag)

Constructor para llamar a las clases derivadas para omitir la inicialización y simplemente asignar el objeto.

Campos

MonoMacAssembly
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

MonoTouchAssembly
Obsoletos.

Apunta al ensamblado montoouch.

PlatformAssembly

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Propiedades

ChangeIndexesKey

Representa el valor asociado a la constante NSKeyValueChangeIndexesKey.

ChangeKindKey

Representa el valor asociado a la constante NSKeyValueChangeKindKey.

ChangeNewKey

Representa el valor asociado a la constante NSKeyValueChangeNewKey

ChangeNotificationIsPriorKey

Constante de notificación para ChangeNotificati

ChangeOldKey

Representa el valor asociado a la constante NSKeyValueChangeOldKey.

Class

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ClassHandle

Identificador de esta clase.

DebugDescription

Descripción significativa para el desarrollador de este objeto.

Description

Descripción del objeto, la versión objective-C de ToString.

Handle

Identificador (puntero) a la representación del objeto no administrado.

IsDirectBinding

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

IsProxy

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

RetainCount

Devuelve el recuento de retención actual de Objective-C para el objeto .

Self

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Superclass

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

SuperHandle

Identificador usado para representar los métodos de la clase base para este NSObject.

Zone

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Métodos

AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr)

Registra un objeto para que se observe externamente (mediante NSString keyPath).   Los cambios observados se envían al método de objeto ObserveValue(NSString, NSObject, NSDictionary, IntPtr) del observador.

AddObserver(NSObject, String, NSKeyValueObservingOptions, IntPtr)

Registra un objeto para que se observe externamente (mediante keyPath de cadena).   Los cambios observados se envían al método de objeto ObserveValue(NSString, NSObject, NSDictionary, IntPtr) del observador.

AddObserver(NSString, NSKeyValueObservingOptions, Action<NSObservedChange>)

Registra un objeto para que se observe externamente mediante un método arbitrario.

AddObserver(String, NSKeyValueObservingOptions, Action<NSObservedChange>)

Registra un objeto para que se observe externamente mediante un método arbitrario.

Alloc(Class)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

AutomaticallyNotifiesObserversForKey(String)

Si este objeto proporciona notificaciones de clave-valor para la clave especificada.

AwakeFromNib()

Se llama después de cargar el objeto desde el archivo nib. Los invalidadores deben llamar a base. AwakeFromNib().

BeginInvokeOnMainThread(Action)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

BeginInvokeOnMainThread(Selector, NSObject)

Invoca de forma asincrónica el código especificado en el subproceso principal de la interfaz de usuario.

Bind(NSString, NSObject, String, NSDictionary)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Bind(String, NSObject, String, NSDictionary)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

BindingInfo(String)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

BindingOptionDescriptions(String)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

BindingValueClass(String)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

CancelPreviousPerformRequest(NSObject)

Cancela una invocación retrasada de tiempo pendiente o PerformSelector.

CancelPreviousPerformRequest(NSObject, Selector, NSObject)

Cancela un PerformSelector retrasado en el tiempo pendiente.

CommitEditing()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

CommitEditing(NSObject, Selector, IntPtr)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ConformsToProtocol(IntPtr)

Se invoca para determinar si este objeto implementa el protocolo especificado.

Copy()

Realiza una copia del objeto Objective-C subyacente.

DangerousAutorelease()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

DangerousRelease()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

DangerousRetain()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

DidChange(NSKeyValueChange, NSIndexSet, NSString)

Indica que se ha producido un cambio en los índices de una relación a varios.

DidChange(NSString, NSKeyValueSetMutationKind, NSSet)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

DidChangeValue(String)

Indica que se ha producido un cambio en la clave especificada.

Dispose()

Libera los recursos usados por el objeto NSObject.

Dispose(Boolean)

Libera los recursos usados por el objeto NSObject.

DoesNotRecognizeSelector(Selector)

Indica que este objeto no reconoce el selector especificado.

Equals(NSObject)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Equals(Object)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ExposedBindings()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Finalize()

Finalizador del objeto NSObject

FromObject(Object)

Inserta un objeto en un objeto NSObject.

GetBindingInfo(NSString)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetBindingOptionDescriptions(NSString)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetBindingValueClass(NSString)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetDefaultPlaceholder(NSObject, NSString)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetDefaultPlaceholder(NSObject, String)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetDictionaryOfValuesFromKeys(NSString[])

Recupera los valores de las claves especificadas.

GetHashCode()

Genera un código hash para la instancia actual.

GetKeyPathsForValuesAffecting(NSString)

Rutas de acceso de clave cuyos valores afectan al valor de la clave especificada.

GetMethodForSelector(Selector)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetNativeField(String)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetNativeHash()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Init()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

InitializeHandle(IntPtr)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

InitializeHandle(IntPtr, String)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Invoke(Action, Double)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Invoke(Action, TimeSpan)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

InvokeInBackground(Action)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

InvokeOnMainThread(Action)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

InvokeOnMainThread(Selector, NSObject)

Invoca sincrónicamente el código especificado en el subproceso principal de la interfaz de usuario.

IsEqual(NSObject)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

IsKindOfClass(Class)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

IsMemberOfClass(Class)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

IsNewRefcountEnabled()

Interno: determina si MonoTouch está usando el nuevo sistema de referencia de alternancia o no

MarkDirty()

Promueve un objeto del mismo nivel normal (IsDirectBinding es true) en un objeto toggleref.

MutableCopy()

Crea una copia mutable del objeto NSObject especificado.

ObjectDidEndEditing(NSObject)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ObserveValue(NSString, NSObject, NSDictionary, IntPtr)

Indica que el valor de keyPath especificado con respecto a este objeto ha cambiado.

PerformSelector(Selector)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

PerformSelector(Selector, NSObject)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

PerformSelector(Selector, NSObject, Double)

Invoca el selector en la instancia actual y, si no obj es NULL, lo pasa como su único parámetro.

PerformSelector(Selector, NSObject, Double, NSString[])

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

PerformSelector(Selector, NSObject, NSObject)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

PerformSelector(Selector, NSThread, NSObject, Boolean)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

PerformSelector(Selector, NSThread, NSObject, Boolean, NSString[])

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

PrepareForInterfaceBuilder()

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

RemoveObserver(NSObject, NSString)

Impide que el observador especificado reciba más notificaciones de valores modificados para el keyPath especificado.

RemoveObserver(NSObject, NSString, IntPtr)

Impide que el observador especificado reciba más notificaciones de valores modificados para el keyPath y el contexto especificados.

RemoveObserver(NSObject, String)

Impide que el observador especificado reciba más notificaciones de valores modificados para el keyPath especificado.

RemoveObserver(NSObject, String, IntPtr)

Impide que el observador especificado reciba más notificaciones de valores modificados para el keyPath y el contexto especificados.

RespondsToSelector(Selector)

Si este objeto reconoce el selector especificado.

SetDefaultPlaceholder(NSObject, NSObject, NSString)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

SetDefaultPlaceholder(NSObject, NSObject, String)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

SetNativeField(String, NSObject)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

SetNilValueForKey(NSString)

Establece el valor de la clave especificada en NULL.

SetValueForKey(NSObject, NSString)

Establece el valor de la propiedad especificada por la clave en el valor especificado.

SetValueForKeyPath(IntPtr, NSString)

Constructor utilizado al crear representaciones administradas de objetos no administrados; Llamado por el entorno de ejecución.

SetValueForKeyPath(NSObject, NSString)

Establece el valor de una propiedad que se puede alcanzar mediante una ruta de acceso de claves.

SetValueForUndefinedKey(NSObject, NSString)

Indica un intento de escribir un valor en una clave no definida. Si no se reemplaza, genera una excepción NSUndefinedKeyException.

SetValuesForKeysWithDictionary(NSDictionary)

Establece los valores de este NSObject en los del diccionario especificado.

ToString()

Devuelve una representación de cadena del valor de la instancia actual.

Unbind(NSString)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

Unbind(String)
Obsoletos.

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ValueForKey(NSString)

Devuelve el valor de la propiedad asociada a la clave especificada.

ValueForKeyPath(NSString)

Devuelve el valor de una propiedad que se puede alcanzar mediante una ruta de acceso de clave.

ValueForUndefinedKey(NSString)

Indica un intento de leer un valor de una clave no definida. Si no se reemplaza, genera una excepción NSUndefinedKeyException.

WillChange(NSKeyValueChange, NSIndexSet, NSString)

Indica que los valores de los índices especificados en la clave especificada están a punto de cambiar.

WillChange(NSString, NSKeyValueSetMutationKind, NSSet)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

WillChangeValue(String)

Indica que el valor de la clave especificada está a punto de cambiar.

Métodos de extensión

ObjectDidBeginEditing(NSObject, INSEditor)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ObjectDidEndEditing(NSObject, INSEditor)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetValidModes(NSObject, NSFontPanel)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

ValidateToolbarItem(NSObject, NSToolbarItem)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetDebugDescription(INSObjectProtocol)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

AcceptsPreviewPanelControl(NSObject, QLPreviewPanel)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

BeginPreviewPanelControl(NSObject, QLPreviewPanel)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

EndPreviewPanelControl(NSObject, QLPreviewPanel)

Clase base para todos los objetos enlazados que se asignan a objetos Objective-C.

GetAccessibilityCustomRotors(NSObject)

Obtiene la matriz de UIAccessibilityCustomRotor objetos adecuados para this el objeto .

SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[])

Establece la matriz de UIAccessibilityCustomRotor objetos apropiados para this el objeto .

Se aplica a

Consulte también