Compartilhar via


NSObject Classe

Definição

Classe base para todos os objetos associados que são mapeados para 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>
Herança
NSObject
Derivado
Atributos
Implementações

Comentários

Essa é a classe base usada para associar classes Objective-C a classes C#. Apenas a subclasse de NSObject produzirá uma classe que pode ser passada para Objective-C.

A classe NSObject do C# e suas subclasses são representações gerenciadas das instâncias Objective-C subjacentes. O ponteiro para o objeto Objective-C de código não gerenciado é armazenado na Handle propriedade .

É importante observar que, atualmente, o compilador não dá suporte a subclasses genéricas de NSObject.

Registro de Classe

Quando você cria uma subclasse de NSObject, essa subclasse é registrada com o runtime Objective-C com um nome baseado no nome de tipo completo do .NET, que é um detalhe de implementação. Se você precisar garantir que uma classe C# seja exposta com um nome específico no runtime Objective-C, você poderá aplicar o T:ObjCRuntime.RegisterAttribute à classe e especificar o nome que deseja que sua classe tenha.

O acima normalmente é usado em casos em que você deseja fazer referência à classe por nome em algum código Objective-C, ao usar arquivos XIB e Storyboard do Construtor de Interfaces ou quando você estiver usando uma configuração de serialização Objective-C (por exemplo, ao usar NSCoder).

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

}

Métodos Objective-C

Em geral, as classes MonoTouch mapeiam uma para uma para as classes Objective-C subjacentes. Por exemplo, a classe C# "MonoTouch.Foundation.NSObject" é mapeada para a classe Objective-C "NSObject". Mas os métodos são diferentes. Os métodos Objective-C não se traduzem bem em métodos C#, portanto, eles foram, em geral, alterados para corresponder à linguagem C#, aos idiomas C# e às diretrizes de design do .NET Framework.

Os métodos Objective-C são apresentados ao C# como métodos virtuais que têm o T:ObjCRuntime.ExportAttribute especial aplicado a eles. Esse atributo é usado pelo compilador para mapear nomes C# para nomes Objective-C. Esses atributos são mostrados na documentação da API sobre cada função, para ajudá-lo a identificar qual método Objective-C um método C# específico está chamando.

Para alterar o comportamento de uma classe, use os idiomas padrão do C#: crie uma subclasse e substitua os métodos que deseja alterar e usar a "base". recurso de linguagem para chamar opcionalmente em sua classe 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);
	}
}

Por padrão, somente os métodos que foram substituídos serão expostos ao mundo Objective-C. Se você quiser expor um método C# arbitrário ao mundo Objective-C, será necessário aplicar o T:ObjCRuntime.ExportAttribute ao seu método público. E isso pode ser feito com métodos estáticos e de instância. Depois que o atributo for aplicado, o método será exposto a Objective-C e as operações de marshalling de tipo de dados padrão compatíveis com o runtime serão disponibilizadas para esses 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

O NSObject C# e suas subclasses são wrappers gerenciados para o objeto Objective-C subjacente. Eles são criados a partir de C#, quando você cria uma nova instância usando o operador "novo" ou quando um objeto não gerenciado existente é exibido para o mundo C#.

Quando você cria um objeto do C# usando o operador "new", o objeto inicialmente pertencerá ao C#e o C# manterá uma referência ao objeto . Essa referência só será descartada quando o coletor de lixo determinar que não há referências gerenciadas pendentes a ela ou quando você chamar manualmente o método Dispose no objeto .

NSObjects C# também são criados sob demanda quando você invoca um método ou uma propriedade que retorna um NSObject. Neste ponto, o runtime examinará um cache de objetos e determinará se um determinado Objective-C NSObject já foi exibido para o mundo gerenciado ou não. Se o objeto tiver sido exibido, o objeto existente será retornado, caso contrário, um construtor que usa um IntPtr como um parâmetro é invocado para construir o objeto.

Os "pares" puros para objetos de estrutura (aqueles que são meramente representações C# de um objeto Objective-C e não têm nenhum estado associado gerenciado extra) podem ser recriados pelo runtime sob demanda usando o construtor mencionado antes.

As subclasses de usuário de NSObjects geralmente contêm o estado C#, portanto, sempre que o runtime Objective-C executa uma operação de "retenção" em um desses objetos, o runtime cria um GCHandle que mantém o objeto gerenciado ativo, mesmo que não haja referências visíveis de C# ao objeto. Isso simplifica muito a reserva, pois o estado será preservado automaticamente para você.

A operação Dispose em um NSObject sempre removerá a referência ao objeto Objective-C subjacente, mas não destruirá o estado gerenciado, isso só acontecerá quando o código gerenciado e o código não gerenciado tiverem ambos liberado os objetos. Isso é um pouco diferente do .NET, pois no .NET depois que um objeto é descartado, não é possível invocar nenhum método no objeto, pois ele é considerado inútil. Esse não é o caso de NSObjects.

Adotando protocolos

No MonoTouch, a maioria dos protocolos Objective-C são mapeados para classes que têm o T:ObjCRuntime.ModelAttribute aplicado a eles. E a maneira como você adota um protocolo é subclasse e substituição dos métodos que deseja adotar.

Há alguns casos raros em que você deseja adotar um protocolo ad hoc por conta própria. Se você precisar adotar um protocolo Objective-C, deverá usar o AdoptsAttribute em sua classe e fornecer o nome do protocolo que deseja adotar. Normalmente, ao adotar um protocolo, você também precisará listar todos os seletores Objective-C que você está adotando usando o T:ObjCRuntime.ExportAttribute.

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

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

Codificação de valor de chave

A codificação key value é um mecanismo que permite acessar as propriedades de um objeto pelo nome, em vez de acessá-las diretamente com um método C#.

Para expor uma propriedade C# ao sistema de codificação Key-Value tudo o que você precisa fazer é adicionar t T:ObjCRuntime.ExportAttribute à sua propriedade. Os nomes devem conter apenas caracteres ASCII, começar com uma letra minúscula e não devem conter espaços.

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

	// ...
}

Use os métodos M:Foundation.ValueForKey(Foundation.NSString);* para pesquisar uma propriedade usando um nome e usar as funções M:Foundation.SetValueForKey(Foundation.NSObject, Foundation.NSString);*" para definir o valor da propriedade especificada. Por exemplo, você pode chamar foo. ValueForKey ("user") para obter o valor da propriedade de usuário em um objeto .

Além disso, você pode usar caminhos de chave para que o runtime chame repetidamente ValueForKey ou SetValueForKey para você. Você separa as chaves usando um ponto. Por exemplo, o keypath "user.address.phone.mobile" solicitaria a propriedade do usuário e, em seguida, solicitaria a propriedade de endereço no usuário e, em seguida, solicitaria a propriedade do telefone no endereço e, por fim, solicitaria a propriedade móvel no telefone e finalmente usaria o resultado como o valor. Você usa o M:Foundation.ValueForKeyPath(Foundation.NSString);* para pesquisar uma propriedade usando um keypath, e você usa o M:Foundation.SetValueForKeyPath(Foundation.NSObject, Foundation.NSString);* para definir um valor usando um keypath.

Ao usar keypaths, se uma pesquisa falhar, o SetValueForUndefinedKey(NSObject, NSString) será invocado ao definir um valor e o ValueForUndefinedKey(NSString) será invocado ao pesquisar um valor. Por padrão, ambos os métodos geram uma exceção Objective-C, você pode alterar esse comportamento substituindo os métodos.

Observação do valor da chave

A observação de valor de chave é um mecanismo implementado pelo NSObject que pode ser usado para monitorar alterações feitas em um NSObject por meio do sistema de Codificação de Valor de Chave.

Para que sua classe observe uma notificação, você deve substituir o ObserveValue(NSString, NSObject, NSDictionary, IntPtr) método que será invocado com as informações sobre as alterações de valor para um keypath específico. Em seguida, você usa o AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr) para começar a observar as alterações e o RemoveObserver(NSObject, NSString, IntPtr) método para parar de receber notificações.

Construtores

NSObject()

Construtor padrão que inicializa uma nova instância dessa classe sem parâmetros.

NSObject(IntPtr)

Um construtor usado ao criar representações gerenciadas de objetos não gerenciados; Chamado pelo runtime.

NSObject(IntPtr, Boolean)

Um construtor usado ao criar representações gerenciadas de objetos não gerenciados; Chamado pelo runtime.

NSObject(NSObjectFlag)

Construtor para chamar em classes derivadas para ignorar a inicialização e simplesmente alocar o objeto.

Campos

MonoMacAssembly
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

MonoTouchAssembly
Obsoleto.

Aponta para o assembly montoouch.

PlatformAssembly

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Propriedades

ChangeIndexesKey

Representa o valor associado à constante NSKeyValueChangeIndexesKey

ChangeKindKey

Representa o valor associado à constante NSKeyValueChangeKindKey

ChangeNewKey

Representa o valor associado à constante NSKeyValueChangeNewKey

ChangeNotificationIsPriorKey

Constante de notificação para ChangeNotificati

ChangeOldKey

Representa o valor associado à constante NSKeyValueChangeOldKey

Class

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ClassHandle

O identificador dessa classe.

DebugDescription

Uma descrição significativa do desenvolvedor desse objeto.

Description

Descrição do objeto, a versão Objective-C do ToString.

Handle

Manipule (ponteiro) para a representação de objeto não gerenciado.

IsDirectBinding

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

IsProxy

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

RetainCount

Retorna a contagem de retenção Objective-C atual para o objeto .

Self

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Superclass

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

SuperHandle

Identificador usado para representar os métodos na classe base para este NSObject.

Zone

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Métodos

AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr)

Registra um objeto para ser observado externamente (usando NSString keyPath).   As alterações observadas são expedidas para o método de objeto ObserveValue(NSString, NSObject, NSDictionary, IntPtr) do observador.

AddObserver(NSObject, String, NSKeyValueObservingOptions, IntPtr)

Registra um objeto para ser observado externamente (usando keyPath de cadeia de caracteres).   As alterações observadas são expedidas para o método de objeto ObserveValue(NSString, NSObject, NSDictionary, IntPtr) do observador.

AddObserver(NSString, NSKeyValueObservingOptions, Action<NSObservedChange>)

Registra um objeto para ser observado externamente usando um método arbitrário.

AddObserver(String, NSKeyValueObservingOptions, Action<NSObservedChange>)

Registra um objeto para ser observado externamente usando um método arbitrário.

Alloc(Class)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

AutomaticallyNotifiesObserversForKey(String)

Se esse objeto está fornecendo notificações de chave-valor para a chave especificada.

AwakeFromNib()

Chamado depois que o objeto foi carregado do arquivo nib. Os substituidores devem chamar base. AwakeFromNib().

BeginInvokeOnMainThread(Action)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

BeginInvokeOnMainThread(Selector, NSObject)

Invoca de forma assíncrona o código especificado no thread de interface do usuário principal.

Bind(NSString, NSObject, String, NSDictionary)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

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

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

BindingInfo(String)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

BindingOptionDescriptions(String)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

BindingValueClass(String)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

CancelPreviousPerformRequest(NSObject)

Cancela um Invoke ou PerformSelector com atraso de tempo pendente.

CancelPreviousPerformRequest(NSObject, Selector, NSObject)

Cancela um PerformSelector com atraso de tempo pendente.

CommitEditing()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

CommitEditing(NSObject, Selector, IntPtr)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ConformsToProtocol(IntPtr)

Invocado para determinar se esse objeto implementa o protocolo especificado.

Copy()

Executa uma cópia do objeto Objective-C subjacente.

DangerousAutorelease()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

DangerousRelease()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

DangerousRetain()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

DidChange(NSKeyValueChange, NSIndexSet, NSString)

Indica que ocorreu uma alteração nos índices de uma relação para muitos.

DidChange(NSString, NSKeyValueSetMutationKind, NSSet)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

DidChangeValue(String)

Indica que ocorreu uma alteração na chave especificada.

Dispose()

Libera os recursos usados pelo objeto NSObject.

Dispose(Boolean)

Libera os recursos usados pelo objeto NSObject.

DoesNotRecognizeSelector(Selector)

Indica que esse objeto não reconhece o seletor especificado.

Equals(NSObject)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Equals(Object)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ExposedBindings()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Finalize()

Finalizador para o objeto NSObject

FromObject(Object)

Coloca um objeto em um NSObject.

GetBindingInfo(NSString)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetBindingOptionDescriptions(NSString)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetBindingValueClass(NSString)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetDefaultPlaceholder(NSObject, NSString)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetDefaultPlaceholder(NSObject, String)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetDictionaryOfValuesFromKeys(NSString[])

Recupera os valores das chaves especificadas.

GetHashCode()

Gera um código hash para a instância atual.

GetKeyPathsForValuesAffecting(NSString)

Os caminhos de chave cujos valores afetam o valor da chave especificada.

GetMethodForSelector(Selector)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetNativeField(String)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetNativeHash()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Init()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

InitializeHandle(IntPtr)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

InitializeHandle(IntPtr, String)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Invoke(Action, Double)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Invoke(Action, TimeSpan)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

InvokeInBackground(Action)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

InvokeOnMainThread(Action)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

InvokeOnMainThread(Selector, NSObject)

Invoca de forma síncrona o código especificado no thread principal da interface do usuário.

IsEqual(NSObject)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

IsKindOfClass(Class)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

IsMemberOfClass(Class)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

IsNewRefcountEnabled()

Interno – determina se o MonoTouch está usando o novo sistema de referência de alternância ou não

MarkDirty()

Promove um objeto par regular (IsDirectBinding é true) em um objeto toggleref.

MutableCopy()

Cria uma cópia mutável do NSObject especificado.

ObjectDidEndEditing(NSObject)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ObserveValue(NSString, NSObject, NSDictionary, IntPtr)

Indica que o valor no keyPath especificado em relação a esse objeto foi alterado.

PerformSelector(Selector)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

PerformSelector(Selector, NSObject)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

PerformSelector(Selector, NSObject, Double)

Invoca o seletor na instância atual e, se o obj não for nulo, ele passará isso como seu único parâmetro.

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

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

PerformSelector(Selector, NSObject, NSObject)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

PerformSelector(Selector, NSThread, NSObject, Boolean)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

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

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

PrepareForInterfaceBuilder()

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

RemoveObserver(NSObject, NSString)

Impede que o observador especificado receba mais notificações de valores alterados para o keyPath especificado.

RemoveObserver(NSObject, NSString, IntPtr)

Impede que o observador especificado receba notificações adicionais de valores alterados para o keyPath e o contexto especificados.

RemoveObserver(NSObject, String)

Impede que o observador especificado receba mais notificações de valores alterados para o keyPath especificado.

RemoveObserver(NSObject, String, IntPtr)

Impede que o observador especificado receba notificações adicionais de valores alterados para o keyPath e o contexto especificados.

RespondsToSelector(Selector)

Se esse objeto reconhece o seletor especificado.

SetDefaultPlaceholder(NSObject, NSObject, NSString)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

SetDefaultPlaceholder(NSObject, NSObject, String)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

SetNativeField(String, NSObject)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

SetNilValueForKey(NSString)

Define o valor da chave especificada como nulo.

SetValueForKey(NSObject, NSString)

Define o valor da propriedade especificada pela chave como o valor especificado.

SetValueForKeyPath(IntPtr, NSString)

Um construtor usado ao criar representações gerenciadas de objetos não gerenciados; Chamado pelo runtime.

SetValueForKeyPath(NSObject, NSString)

Define o valor de uma propriedade que pode ser alcançada usando um keypath.

SetValueForUndefinedKey(NSObject, NSString)

Indica uma tentativa de gravar um valor em uma chave indefinida. Se não for substituído, gerará um NSUndefinedKeyException.

SetValuesForKeysWithDictionary(NSDictionary)

Define os valores desse NSObject para aqueles no dicionário especificado.

ToString()

Retorna uma representação de cadeia de caracteres do valor da instância atual.

Unbind(NSString)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

Unbind(String)
Obsoleto.

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ValueForKey(NSString)

Retorna o valor da propriedade associada à chave especificada.

ValueForKeyPath(NSString)

Retorna o valor de uma propriedade que pode ser alcançada usando um keypath.

ValueForUndefinedKey(NSString)

Indica uma tentativa de ler um valor de uma chave indefinida. Se não for substituído, gerará um NSUndefinedKeyException.

WillChange(NSKeyValueChange, NSIndexSet, NSString)

Indica que os valores dos índices especificados na chave especificada estão prestes a ser alterados.

WillChange(NSString, NSKeyValueSetMutationKind, NSSet)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

WillChangeValue(String)

Indica que o valor da chave especificada está prestes a ser alterado.

Métodos de Extensão

ObjectDidBeginEditing(NSObject, INSEditor)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ObjectDidEndEditing(NSObject, INSEditor)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetValidModes(NSObject, NSFontPanel)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

ValidateToolbarItem(NSObject, NSToolbarItem)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetDebugDescription(INSObjectProtocol)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

AcceptsPreviewPanelControl(NSObject, QLPreviewPanel)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

BeginPreviewPanelControl(NSObject, QLPreviewPanel)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

EndPreviewPanelControl(NSObject, QLPreviewPanel)

Classe base para todos os objetos associados que são mapeados para objetos Objective-C.

GetAccessibilityCustomRotors(NSObject)

Obtém a matriz de UIAccessibilityCustomRotor objetos apropriados para this o objeto .

SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[])

Define a matriz de UIAccessibilityCustomRotor objetos apropriados para this o objeto .

Aplica-se a

Confira também