Objective-C: eine Alternative zur Verwendung CGRectMake

CGRectMake() ist eine Funktion (eigentlich ein Inline # define) verwendet eine Menge vor allem, wenn Sie Grafik-Objekte aus dem Code oder Benutzeroberfläche zu erstellen. o UIImageView . CGRectMake() restituisce una struct (struttura di tipo) CGRect : Seine Verwendung ist daher oft die Initialisierung Komponenten verbunden UIKit , sondern auch auf einfache UIView oder UIImageView . CGRectMake() gibt ein struct (Struktur-Typ) CGRect :

1
2
3
4
5
struct {CGRect
CGPoint Ursprungs;
CGSize Größe;
};
typedef struct CGRect CGRect;

: Die wiederum aus zwei verschiedenen struct zusammen CGPoint und CGSize :

1
2
3
4
5
6
7
8
9
10
11
12
13
struct {CGPoint
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;

/ * Größen. * /

struct {CGSize
CGFloat Breite;
CGFloat Höhe;
};
typedef struct CGSize CGSize;

. Das wiederum, wieder enthalten Typen CGFloat oder Typ float . Wenn wir analysieren den Code von CGRectMake () sind:

1
2
3
4
5
6
7
8
CG_INLINE CGRect
CGRectMake (CGFloat x, y CGFloat, CGFloat Breite, Höhe CGFloat)
{
CGRect rect;
y; rect.origin.x = x, y = rect.origin.y;
height; rect.size.width = width, height = rect.size.height;
Rückkehr rect;
}

Daraus folgt, dass dieses Stück Code:

1
2
3
4
[ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect];
12 , 409 , 100 , 40 ) ; gbutton.frame = CGRectMake (12, 409, 100, 40);
@ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Presse" Forst: UIControlStateNormal];
gbutton ] ; [MainWindow addSubview: gbutton];

Es könnte zu Recht geschrieben werden als:

1
2
3
4
[ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect];
CGRect ) { 12 , 409 , 100 , 40 } ; gbutton.frame = (CGRect) {12, 409, 100, 40};
@ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Presse" Forst: UIControlStateNormal];
gbutton ] ; [MainWindow addSubview: gbutton];

Nur um die Dinge zu beschleunigen "der Code ausgeführt wird ... :)

4 Kommentare zu "Objective-C: eine Alternative zur Verwendung CGRectMake"

  1. 27. Juli 2009 Cristian :

    Curiosity ': Wenn Sie Obj-C lernen wollen, sagen wir, null oder fast so, in welche Publikationen können Sie an der Reihe?

  2. 1. August 2009 Giovambattista Fazioli :

    @ Cristian: Suche auf Google Book (Google Books), gibt es viele Ressourcen (in Englisch) ist nahezu abgeschlossen.

  3. 10. November 2011 kheimon:

    Bad Beratung, tut mir leid. è inline, ma la differenza sarebbe impercettibile anche se fosse una funzione vera e propria). Verringert die Kapselung von Code (der passiert, wenn man die Umsetzung von Change CGRectMake ? Mein Code funktioniert und Ihre Bedürfnisse zu ändern) und der Unterschied ist nicht wahrnehmbar in Bezug auf Leistung (unter anderem CGRectMake ist inline, aber der Unterschied wäre nicht nachweisbar, auch wenn es eine reelle Funktion wurden).
    Dieser Rat verkörpert unter anderem Anti-Pattern vorzeitige Optimierung.

  4. 10. November 2011 Giovambattista Fazioli :

    @ Kheimon: Ich bin damit einverstanden, nicht heute würde nie in einem echten Code zu verwenden, insbesondere in Bezug auf CGRect angesichts der kontinuierlichen Updates all'iOS. Es ist jedoch interessant zu zeigen, wie structs dieser Art erforderlich sein, um linearisieren werden.

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL