AVCaptureSession Clase

Definición

Coordina una sesión de grabación.

[Foundation.Register("AVCaptureSession", true)]
[ObjCRuntime.Unavailable(ObjCRuntime.PlatformName.WatchOS, ObjCRuntime.PlatformArchitecture.All, null)]
[ObjCRuntime.Unavailable(ObjCRuntime.PlatformName.TvOS, ObjCRuntime.PlatformArchitecture.All, null)]
public class AVCaptureSession : Foundation.NSObject
type AVCaptureSession = class
    inherit NSObject
Herencia
AVCaptureSession
Atributos

Comentarios

El objeto AVCaptureSession coordina la grabación de la entrada de vídeo o audio y pasa la información grabada a uno o varios objetos de salida. Como la línea de iOS ha avanzado, los diferentes dispositivos han obtenido varios dispositivos de captura (en particular, han ganado varias cámaras). Los desarrolladores de aplicaciones pueden usar DefaultDeviceWithMediaType(String) o DevicesWithMediaType(String), pasando las constantes definidas en AVMediaType.

La configuración de la captura consiste en establecer las Inputs propiedades y Outputs de AVCaptureSession. Observe que son posibles varios AVCaptureInputs y AVCaptureOutputs. Por ejemplo, para capturar audio y vídeo, uno usaría dos entradas de captura:

var session = new AVCaptureSession();

var camera = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
var mic = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Audio);
if(camera == null || mic == null){
    throw new Exception("Can't find devices");
}

var cameraInput = AVCaptureDeviceInput.FromDevice (camera);
//info.plist _must_ contain NSMicrophoneUsageDescription key
var micInput = AVCaptureDeviceInput.FromDevice (mic);

if(session.CanAddInput(cameraInput)){
    session.AddInput(cameraInput);
}
if(session.CanAddInput(micInput)){
   session.AddInput(micInput);
}

Tenga en cuenta que el usuario debe proporcionar permiso para acceder al micrófono (y en algunas regiones, la cámara), que requiere que el desarrollador agregue al NSMicrophoneUsageDescription archivo info.plist de la aplicación.

El vídeo se puede capturar directamente en el archivo con AVCaptureMovieFileOutput. Sin embargo, esta clase no tiene datos visibles y no se puede usar simultáneamente con AVCaptureVideoDataOutput. En su lugar, los desarrolladores de aplicaciones pueden usarlo en combinación con , AVCaptureVideoPreviewLayercomo se muestra en el ejemplo siguiente:

var layer = new AVCaptureVideoPreviewLayer (session);
layer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill;

var cameraView = new UIView ();
cameraView.Layer.AddSublayer (layer);

var filePath = Path.Combine (Path.GetTempPath (), "temporary.mov");
var fileUrl = NSUrl.FromFilename (filePath);

var movieFileOutput = new AVCaptureMovieFileOutput ();
var recordingDelegate = new MyRecordingDelegate ();
session.AddOutput (movieFileOutput);

movieFileOutput.StartRecordingToOutputFile (fileUrl, recordingDelegate);

Los desarrolladores de aplicaciones deben tener en cuenta que la función StopRecording() es asincrónica; los desarrolladores deben esperar hasta que el FinishedRecording(AVCaptureFileOutput, NSUrl, NSObject[], NSError) método delegado antes de manipular el archivo (por ejemplo, antes de guardarlo en el álbum Photos con SaveToPhotosAlbum(String, UIVideo+SaveStatus) o WriteVideoToSavedPhotosAlbumAsync(NSUrl)).

public class MyRecordingDelegate : AVCaptureFileOutputRecordingDelegate
{
    public override void FinishedRecording (AVCaptureFileOutput captureOutput, NSUrl outputFileUrl, NSObject [] connections, NSError error)
    {
        if (UIVideo.IsCompatibleWithSavedPhotosAlbum (outputFileUrl.Path))
        {
            var library = new ALAssetsLibrary ();
            library.WriteVideoToSavedPhotosAlbum (outputFileUrl, (path, e2) =>
            {
                if (e2 != null)
                {
                    new UIAlertView ("Error", e2.ToString (), null, "OK", null).Show ();
                }
                else
                {
                    new UIAlertView ("Saved", "Saved to Photos", null, "OK", null).Show ();
                    File.Delete (outputFileUrl.Path);
                }
            });
        }
        else
        {
            new UIAlertView ("Incompatible", "Incompatible", null, "OK", null).Show ();
        }

    }
}          

Los desarrolladores de aplicaciones pueden configurar uno o varios puertos de salida para los datos capturados y estos pueden ser fotogramas, fotogramas de vídeo con información de control de tiempo, muestras de audio, archivos de películas de tiempo rápido o se pueden representar directamente en una capa CoreAnimation.

Una vez establecidos los componentes de entrada y salida de la sesión, se inicia el procesamiento real mediante una llamada al StartRunning() método .


void SetupCapture ()
	/ configure the capture session for low resolution, change this if your code
	// can cope with more data or volume
	session = new AVCaptureSession () {
	        SessionPreset = AVCaptureSession.PresetMedium
	};

	// create a device input and attach it to the session
	var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Video);
	var input = AVCaptureDeviceInput.FromDevice (captureDevice);
	if (input == null){
	        Console.WriteLine ("No video input device");
	        return false;
	}
	session.AddInput (input);

	// create a VideoDataOutput and add it to the sesion
	var output = new AVCaptureVideoDataOutput () {
	        VideoSettings = new AVVideoSettings (CVPixelFormatType.CV32BGRA),

	        // If you want to cap the frame rate at a given speed, in this sample: 15 frames per second
	        MinFrameDuration = new CMTime (1, 15)
	};

	// configure the output
	queue = new MonoTouch.CoreFoundation.DispatchQueue ("myQueue");
	outputRecorder = new OutputRecorder ();
	output.SetSampleBufferDelegateAndQueue (outputRecorder, queue);
	session.AddOutput (output);

	session.StartRunning ();
}

public class OutputRecorder : AVCaptureVideoDataOutputSampleBufferDelegate {
        public override void DidOutputSampleBuffer (AVCaptureOutput captureOutput, CMSampleBuffer sampleBuffer, AVCaptureConnection connection)
        {
                try {
                        var image = ImageFromSampleBuffer (sampleBuffer);

                        // Do something with the image, we just stuff it in our main view.
                        AppDelegate.ImageView.BeginInvokeOnMainThread (delegate {
                                AppDelegate.ImageView.Image = image;
                        });

                        //
                        // Although this looks innocent "Oh, he is just optimizing this case away"
                        // this is incredibly important to call on this callback, because the AVFoundation
                        // has a fixed number of buffers and if it runs out of free buffers, it will stop
                        // delivering frames.
                        //
                        sampleBuffer.Dispose ();
                } catch (Exception e){
                        Console.WriteLine (e);
                }
        }

        UIImage ImageFromSampleBuffer (CMSampleBuffer sampleBuffer)
        {
                // Get the CoreVideo image
                using (var pixelBuffer = sampleBuffer.GetImageBuffer () as CVPixelBuffer){
                        // Lock the base address
                        pixelBuffer.Lock (0);
                        // Get the number of bytes per row for the pixel buffer
                        var baseAddress = pixelBuffer.BaseAddress;
                        int bytesPerRow = pixelBuffer.BytesPerRow;
                        int width = pixelBuffer.Width;
                        int height = pixelBuffer.Height;
                        var flags = CGBitmapFlags.PremultipliedFirst | CGBitmapFlags.ByteOrder32Little;
                        // Create a CGImage on the RGB colorspace from the configured parameter above
                        using (var cs = CGColorSpace.CreateDeviceRGB ())
                        using (var context = new CGBitmapContext (baseAddress,width, height, 8, bytesPerRow, cs, (CGImageAlphaInfo) flags))
                        using (var cgImage = context.ToImage ()){
                                pixelBuffer.Unlock (0);
                                return UIImage.FromImage (cgImage);
                        }
                }
        }
}

Constructores

AVCaptureSession()

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

AVCaptureSession(IntPtr)

Constructor utilizado al crear representaciones administradas de objetos no administrados; Lo llama el tiempo de ejecución.

AVCaptureSession(NSObjectFlag)

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

Propiedades

AutomaticallyConfiguresApplicationAudioSession

AVCaptureSession Indica si usa la sesión de audio compartida de la aplicación.

AutomaticallyConfiguresCaptureDeviceForWideColor

Obtiene o establece un valor booleano que controla si la sesión debe usar o no automáticamente un color ancho si está disponible.

Class

Coordina una sesión de grabación.

(Heredado de NSObject)
ClassHandle

Identificador de esta clase.

DebugDescription

Descripción significativa para el desarrollador de este objeto.

(Heredado de NSObject)
Description

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

(Heredado de NSObject)
DidStartRunningNotification

Constante de notificación para DidStartRunning

DidStopRunningNotification

Constante de notificación para DidStopRunning

ErrorKey

Representa el valor asociado a la constante AVCaptureSessionErrorKey.

Handle

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

(Heredado de NSObject)
Inputs

Entradas a la sesión de captura.

Interrupted

Indica si se ha interrumpido la sesión.

InterruptionEndedNotification

Constante de notificación para InterruptionEnded

InterruptionReasonKey

Obtiene una clave que tiene acceso al motivo por el que se interrumpió una sesión de captura.

InterruptionSystemPressureStateKey

Coordina una sesión de grabación.

IsDirectBinding

Coordina una sesión de grabación.

(Heredado de NSObject)
IsProxy

Coordina una sesión de grabación.

(Heredado de NSObject)
MasterClock

Reloj de solo lectura que proporciona una base de tiempo para sincronizar marcas de tiempo desde varios dispositivos de entrada.

Outputs

Salidas de la sesión de captura.

Preset1280x720

Representa el valor asociado a la constante AVCaptureSessionPreset1280x720.

Preset1920x1080

Representa el valor asociado a la constante AVCaptureSessionPreset1920x1080.

Preset320x240

Coordina una sesión de grabación.

Preset352x288

Representa el valor asociado a la constante AVCaptureSessionPreset352x288.

Preset3840x2160

Representa el valor asociado a la constante AVCaptureSessionPreset3840x2160.

Preset640x480

Representa el valor asociado a la constante AVCaptureSessionPreset640x480

Preset960x540

Coordina una sesión de grabación.

PresetHigh

Representa el valor asociado a la constante AVCaptureSessionPresetHigh.

PresetiFrame1280x720

Representa el valor asociado a la constante AVCaptureSessionPresetiFrame1280x720

PresetiFrame960x540

Representa el valor asociado a la constante AVCaptureSessionPresetiFrame960x540

PresetInputPriority

Representa el valor asociado a la constante AVCaptureSessionPresetInputPriority.

PresetLow

Representa el valor asociado a la constante AVCaptureSessionPresetLow.

PresetMedium

Representa el valor asociado a la constante AVCaptureSessionPresetMedium.

PresetPhoto

Representa el valor asociado a la constante AVCaptureSessionPresetPhoto.

RetainCount

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

(Heredado de NSObject)
Running

Indica si la sesión de captura se está ejecutando actualmente.

RuntimeErrorNotification

Constante de notificación para RuntimeError

Self

Coordina una sesión de grabación.

(Heredado de NSObject)
SessionPreset

Valor preestablecido de sesión.

Superclass

Coordina una sesión de grabación.

(Heredado de NSObject)
SuperHandle

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

(Heredado de NSObject)
UsesApplicationAudioSession

Si la sesión debe usar la sesión de audio compartida de la aplicación.

WasInterruptedNotification

Constante de notificación para WasInterrupted

Zone

Coordina una sesión de grabación.

(Heredado de NSObject)

Métodos

AddConnection(AVCaptureConnection)

Agrega la captura connectionespecificada.

AddInput(AVCaptureInput)

Agrega una entrada a la sesión de captura.

AddInputWithNoConnections(AVCaptureInput)

Agrega el especificado input sin formar conexiones nuevas.

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.

(Heredado de NSObject)
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.

(Heredado de NSObject)
AddObserver(NSString, NSKeyValueObservingOptions, Action<NSObservedChange>)

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

(Heredado de NSObject)
AddObserver(String, NSKeyValueObservingOptions, Action<NSObservedChange>)

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

(Heredado de NSObject)
AddOutput(AVCaptureOutput)

Agrega una salida a la sesión de captura.

AddOutputWithNoConnections(AVCaptureOutput)

Agrega el especificado output sin formar conexiones nuevas.

AwakeFromNib()

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

(Heredado de NSObject)
BeginConfiguration()

Inicia una transacción para cambiar la configuración de la sesión de captura.

BeginInvokeOnMainThread(Action)

Coordina una sesión de grabación.

(Heredado de NSObject)
BeginInvokeOnMainThread(Selector, NSObject)

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

(Heredado de NSObject)
Bind(NSString, NSObject, String, NSDictionary)

Coordina una sesión de grabación.

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

Coordina una sesión de grabación.

(Heredado de NSObject)
BindingInfo(String)
Obsoletos.

Coordina una sesión de grabación.

(Heredado de NSObject)
BindingOptionDescriptions(String)
Obsoletos.

Coordina una sesión de grabación.

(Heredado de NSObject)
BindingValueClass(String)
Obsoletos.

Coordina una sesión de grabación.

(Heredado de NSObject)
CanAddConnection(AVCaptureConnection)

Devuelve true si se puede agregar el especificado connection .

CanAddInput(AVCaptureInput)

Devuelve si la entrada especificada se puede agregar a la sesión.

CanAddOutput(AVCaptureOutput)

Devuelve si la entrada especificada se puede agregar a la sesión.

CanSetSessionPreset(NSString)

Si la sesión admite un conjunto determinado de configuraciones de captura predefinidas.

CommitConfiguration()

Aplica de forma atómica todos los cambios de configuración realizados en la sesión de captura desde BeginConfiguration().

CommitEditing()

Coordina una sesión de grabación.

(Heredado de NSObject)
CommitEditing(NSObject, Selector, IntPtr)

Coordina una sesión de grabación.

(Heredado de NSObject)
ConformsToProtocol(IntPtr)

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

(Heredado de NSObject)
Copy()

Realiza una copia del objeto Objective-C subyacente.

(Heredado de NSObject)
DangerousAutorelease()

Coordina una sesión de grabación.

(Heredado de NSObject)
DangerousRelease()

Coordina una sesión de grabación.

(Heredado de NSObject)
DangerousRetain()

Coordina una sesión de grabación.

(Heredado de NSObject)
DidChange(NSKeyValueChange, NSIndexSet, NSString)

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

(Heredado de NSObject)
DidChange(NSString, NSKeyValueSetMutationKind, NSSet)

Coordina una sesión de grabación.

(Heredado de NSObject)
DidChangeValue(String)

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

(Heredado de NSObject)
Dispose()

Libera los recursos utilizados por el objeto NSObject.

(Heredado de NSObject)
Dispose(Boolean)

Libera los recursos utilizados por el objeto NSObject.

(Heredado de NSObject)
DoesNotRecognizeSelector(Selector)

Indica que este objeto no reconoce el selector especificado.

(Heredado de NSObject)
Equals(NSObject)

Coordina una sesión de grabación.

(Heredado de NSObject)
Equals(Object)

Coordina una sesión de grabación.

(Heredado de NSObject)
ExposedBindings()

Coordina una sesión de grabación.

(Heredado de NSObject)
GetBindingInfo(NSString)

Coordina una sesión de grabación.

(Heredado de NSObject)
GetBindingOptionDescriptions(NSString)

Coordina una sesión de grabación.

(Heredado de NSObject)
GetBindingValueClass(NSString)

Coordina una sesión de grabación.

(Heredado de NSObject)
GetDictionaryOfValuesFromKeys(NSString[])

Recupera los valores de las claves especificadas.

(Heredado de NSObject)
GetHashCode()

Genera un código hash para la instancia actual.

(Heredado de NSObject)
GetMethodForSelector(Selector)

Coordina una sesión de grabación.

(Heredado de NSObject)
GetNativeField(String)
Obsoletos.

Coordina una sesión de grabación.

(Heredado de NSObject)
GetNativeHash()

Coordina una sesión de grabación.

(Heredado de NSObject)
Init()

Coordina una sesión de grabación.

(Heredado de NSObject)
InitializeHandle(IntPtr)

Coordina una sesión de grabación.

(Heredado de NSObject)
InitializeHandle(IntPtr, String)

Coordina una sesión de grabación.

(Heredado de NSObject)
Invoke(Action, Double)

Coordina una sesión de grabación.

(Heredado de NSObject)
Invoke(Action, TimeSpan)

Coordina una sesión de grabación.

(Heredado de NSObject)
InvokeOnMainThread(Action)

Coordina una sesión de grabación.

(Heredado de NSObject)
InvokeOnMainThread(Selector, NSObject)

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

(Heredado de NSObject)
IsEqual(NSObject)

Coordina una sesión de grabación.

(Heredado de NSObject)
IsKindOfClass(Class)

Coordina una sesión de grabación.

(Heredado de NSObject)
IsMemberOfClass(Class)

Coordina una sesión de grabación.

(Heredado de NSObject)
MarkDirty()

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

(Heredado de NSObject)
MutableCopy()

Crea una copia mutable del NSObject especificado.

(Heredado de NSObject)
ObjectDidEndEditing(NSObject)

Coordina una sesión de grabación.

(Heredado de NSObject)
ObserveValue(NSString, NSObject, NSDictionary, IntPtr)

Indica que el valor de keyPath especificado en relación con este objeto ha cambiado.

(Heredado de NSObject)
PerformSelector(Selector)

Coordina una sesión de grabación.

(Heredado de NSObject)
PerformSelector(Selector, NSObject)

Coordina una sesión de grabación.

(Heredado de NSObject)
PerformSelector(Selector, NSObject, Double)

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

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

Coordina una sesión de grabación.

(Heredado de NSObject)
PerformSelector(Selector, NSObject, NSObject)

Coordina una sesión de grabación.

(Heredado de NSObject)
PerformSelector(Selector, NSThread, NSObject, Boolean)

Coordina una sesión de grabación.

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

Coordina una sesión de grabación.

(Heredado de NSObject)
PrepareForInterfaceBuilder()

Coordina una sesión de grabación.

(Heredado de NSObject)
RemoveConnection(AVCaptureConnection)

Quita el objeto connection especificado.

RemoveInput(AVCaptureInput)

Quita el origen de entrada especificado.

RemoveObserver(NSObject, NSString)

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

(Heredado de NSObject)
RemoveObserver(NSObject, NSString, IntPtr)

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

(Heredado de NSObject)
RemoveObserver(NSObject, String)

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

(Heredado de NSObject)
RemoveObserver(NSObject, String, IntPtr)

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

(Heredado de NSObject)
RemoveOutput(AVCaptureOutput)

Quita la salida especificada.

RespondsToSelector(Selector)

Si este objeto reconoce el selector especificado.

(Heredado de NSObject)
SetNativeField(String, NSObject)
Obsoletos.

Coordina una sesión de grabación.

(Heredado de NSObject)
SetNilValueForKey(NSString)

Establece el valor de la clave especificada en NULL.

(Heredado de NSObject)
SetValueForKey(NSObject, NSString)

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

(Heredado de NSObject)
SetValueForKeyPath(IntPtr, NSString)

Constructor utilizado al crear representaciones administradas de objetos no administrados; Lo llama el tiempo de ejecución.

(Heredado de NSObject)
SetValueForKeyPath(NSObject, NSString)

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

(Heredado de NSObject)
SetValueForUndefinedKey(NSObject, NSString)

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

(Heredado de NSObject)
SetValuesForKeysWithDictionary(NSDictionary)

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

(Heredado de NSObject)
StartRunning()

Inicia el flujo de entradas y salidas.

StopRunning()

Detiene de forma asincrónica el flujo de entradas y salidas.

ToString()

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

(Heredado de NSObject)
Unbind(NSString)

Coordina una sesión de grabación.

(Heredado de NSObject)
Unbind(String)
Obsoletos.

Coordina una sesión de grabación.

(Heredado de NSObject)
ValueForKey(NSString)

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

(Heredado de NSObject)
ValueForKeyPath(NSString)

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

(Heredado de NSObject)
ValueForUndefinedKey(NSString)

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

(Heredado de NSObject)
WillChange(NSKeyValueChange, NSIndexSet, NSString)

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

(Heredado de NSObject)
WillChange(NSString, NSKeyValueSetMutationKind, NSSet)

Coordina una sesión de grabación.

(Heredado de NSObject)
WillChangeValue(String)

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

(Heredado de NSObject)

Métodos de extensión

ObjectDidBeginEditing(NSObject, INSEditor)

Coordina una sesión de grabación.

ObjectDidEndEditing(NSObject, INSEditor)

Coordina una sesión de grabación.

GetValidModes(NSObject, NSFontPanel)

Coordina una sesión de grabación.

ValidateToolbarItem(NSObject, NSToolbarItem)

Coordina una sesión de grabación.

GetDebugDescription(INSObjectProtocol)

Coordina una sesión de grabación.

AcceptsPreviewPanelControl(NSObject, QLPreviewPanel)

Coordina una sesión de grabación.

BeginPreviewPanelControl(NSObject, QLPreviewPanel)

Coordina una sesión de grabación.

EndPreviewPanelControl(NSObject, QLPreviewPanel)

Coordina una sesión de grabación.

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