Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

262
Vistas
Swift: comprender los punteros

Estoy tratando de crear un contexto de CoreGraphics usando la siguiente API de MacOS Quartz:

 CGContext.init?(_ url: CFURL, mediaBox: UnsafePointer<CGRect>?, _ auxiliaryInfo: CFDictionary?)

, pero tengo problemas con el concepto de punteros. Puedo iniciar el contexto así:

 var mypointer: UnsafeMutablePointer<CGRect>! mypointer.pointee = myCGRectangle var writeContext = CGContext.init(outURL, mediaBox: mypointer, nil)

Pero dice que pointee es una propiedad de solo obtener. He intentado:

 var mypointer: UnsafePointer<CGRect>! = UnsafePointer(myCGRectangle)

, basado en esto , pero no cannot convert CGRect to expected type , entre otros errores.

He examinado varias otras preguntas aquí sobre punteros, pero no puedo encontrar nada útil dentro de ellos.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Simplemente pase una referencia a su variable myCGRectangle , esto creará el UnsafeMutablePointer necesario:

 var writeContext = CGContext(outURL, mediaBox: &myCGRectangle, nil)

Asegúrese de que la variable del rectángulo se declare como var , de lo contrario, & no funcionará.

Se pueden encontrar más detalles en esta excelente página de documentación de Apple sobre cómo pasar punteros a funciones que los requieren.

over 4 years ago · Santiago Trujillo Denunciar

0

Por lo general, no solo crea una variable de tipo UnsafeMutablePointer<CGRect> y la pasa a init(_:mediaBox:_:) . Prefiere pasar un rectángulo para el cual se mostrará PDF, por ejemplo

 var mediaBox = CGRect(x: 0, y: 0, width: 300, height: 500) ... var writeContext = CGContext(outURL, mediaBox: &mediaBox, nil)

(incluso eso es una simplificación, ya que crea un rectángulo directamente. Por lo general, tiene un rectángulo de la vista en la que desea mostrar el PDF, por lo que pasará ese rectángulo).

También puede pasar nil a init(_:mediaBox:_:) . En cuyo caso, como dicen los documentos:

Si pasa NULL, CGPDFContextCreateWithURL usa un tamaño de página predeterminado de 8,5 por 11 pulgadas (612 por 792 puntos).

Entonces, si ese rectángulo se ajusta a sus necesidades, simplemente pase nil (más simple).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda