avec beta 4, j'ai eu ce code qui a fonctionné bien: maintenant avec bêta5, je reçois l'erreur "'áesafepointer.type' n'a pas de membre nommé" Alloc "" . P> Tout ce que j'essaie de faire est de définir la couleur de course du CGContext basé sur un UICOLOR. Comment suis-je censé faire cela maintenant? La fonction "withunsafePointers" est un peu une blague - elle donne des erreurs étranges et ne prend qu'un maximum de trois pointeurs dangereux, alors que j'essaie d'utiliser quatre dans ce cas. P> P>
4 Réponses :
Ceci fonctionne, Swift est suffisamment intelligent pour savoir quoi faire avec l'opérateur Si vous voulez vraiment faire l'alloc vous-même, utilisez votre Saveur préférée et construisez le pointeur comme celui-ci: p> & code>:
Incroyable!!! Donc, je suppose que la mise en place de "&" avant que des arguments ne les convertit automatiquement de SWIFT CGFLOAT vers UNSAFEMUTABLECONTER
Merci, j'ai mis à jour ma réponse (vous pouvez aussi faire quelque chose comme var: [cgfloat] = [0,0,0,0] code> et référencez plutôt les éléments de tableau.) Ce truc est couvert dans < a href = "https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/builildingcocoaapps/interactingwithcapis.html" rel = "Nofollow Noreferrer"> Utilisation de Swift avec cacao et objectif-C A > Sous interagir avec c APIS i>.
Merci. Ok, je le vois dans la référence maintenant. Je me demande si je manquais simplement cela ou si la référence a été mise à jour depuis que je l'ai lu ...
UNSAPOINTER .alloc code>. Utilisez Unfemutablepointer videof () code suivant> fonctionne comme initialiseur universel. func blankof<T>(type:T.Type) -> T {
var ptr = UnsafeMutablePointer<T>.alloc(sizeof(T))
var val = ptr.memory
ptr.destroy()
return val
}
var red = blankof(CGFloat)
var green = blankof(CGFloat)
var blue = blankof(CGFloat)
var alpha = blankof(CGFloat)
color.getRed(&red, green:&green, blue:&blue, alpha:&alpha)
CGContextSetRGBStrokeColor(context, red, green, blue, 1)
// no need to dealloc because they are all structs, not pointers
comme de bêta 5, vous pouvez simplement transmettre vos variables préfixées avec et. Assurez-vous simplement de les initialiser
Plus d'infos sur https://developer.apple. com / swift / blog /? id = 6 p>
Pour utiliser des variables simples, vous pouvez simplement les définir sur une valeur zéro p> Pour utiliser des tableaux C, vous créez simplement un tableau normal avec les indices que vous attendez P> var points:[NSPoint] = [NSPoint(), NSPoint(), NSPoint()] //notice how we set empty NSPoints
self.elementAtIndex(index, associatedPoints: &points)
CGPathAddCurveToPoint(path, nil, points[0].x, points[0].y, points[1].x, points[1].y, points[2].x, points[2].y)
Pour répondre à votre question sur la définition de la couleur de course d'un uicolor code>, cela fonctionnera: CGContextSetStrokeColorWithColor(myUIColor.CGColor);
Essayez
Var rouge, vert, bleu, alpha: cgfloat; CGContextsTrgstrokecolor (contexte, & rouge, et vert, et bleu, 1) code>Unfeapointer CODE> est renomméINSFAIMUTABLOPERTER CODE>. Mais vous avez vraiment besoin d'éviter d'utiliser.Toute la langue rapide est conçue de manière à ne pas avoir à revenir à l'utilisation de pointeurs (dangereux). Le but principal de SWIFT est d'être un langage sûr et fiable.
@Byran Chen - merci, vous avez la bonne réponse. À Bryan Chen et Oscar Swanros, j'aimerais aimer, aimer, aimer d'arrêter d'utiliser des pointeurs dangereux, mais le problème est que je suis obligé de le faire. Pouvez-vous me montrer n'importe quel moyen de définir la couleur de course CGContext basée sur un UICOLOR sans utiliser des pointeurs dangereux? Je serais extatique si tu pouvais.
@ user1021430 - Que diriez-vous de cela? Uigraphiquebeginimagecontext (CGSIZE (largeur: 100, hauteur: 100)); laisser context = uigraphicsgetcurrentContext (); laisser couleur = uicolor.redcolor (); Composants var: [cgfloat] = [0, 0, 0, 0]; couleur.Gutée (& composants [0], vert: & composants [1], bleu: & composants [2], alpha: & composants [3]); CGContextststrokecolor (contexte, composants)