NSObject Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
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 |
SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[]) |
Define a matriz de UIAccessibilityCustomRotor objetos apropriados para |