2016-04-02 10 views
0

Hier einige Beispiel-Code selbst zu erklären:Wo sollte ich IBOutlets und IBActions platzieren?

MyViewController.h

@interface MyViewController 
@property (nonatomic, strong) IBOutlet UIButton *button1; 
    - (IBAction)button1Touch; 
@end 

MyViewController.m

@interface MyViewController() 
@property (nonatomic, strong) IBOutlet UIButton *button2; 
- (IBAction)button2Touch; 
@end 

@implementation MyViewController { 
    IBOutlet UIButton *button3; 
} 

- (IBAction)button1Touch { 
} 

- (IBAction)button2Touch { 
} 

- (IBAction)button3Touch { 
} 

@end 

Als ich erfuhr, wie XCode zu verwenden, werden alle Tutorials button1 verwendet/button1Touch Ansatz. Kürzlich habe ich /button2Touch Ansatz in einem Projekt angetroffen. Also habe ich versucht button3/button3Touch Variation und es funktioniert auch gut.

Für mich button1/button1Touch ist (in der Regel) ein schlechter Ansatz, weil es interne Eigenschaft und Methode ist und sollte nicht von jemandem verwendet werden, der MyViewController verwenden oder erweitern wird. Natürlich, wenn es außerhalb von MyViewController verwendet wird, ist es in Ordnung, es hier zu deklarieren, aber normalerweise versuche ich alles zu verstecken, was ich nicht zeigen muss.

So button2/button2Touch und button3/button3Touch sind bessere Ansätze, aber ich weiß nicht wirklich Unterschied zwischen ihnen sehen. Und wenn ich den Unterschied nicht sehe, dann würde ich button3/button3Touch Ansatz verwenden, weil es keine anonyme Erweiterung und insgesamt einfacher benötigt.

Also das ist meine Argumentation. Aber ist es richtig, oder gibt es andere Gründe, warum ich # 1/# 2 Ansätze verwenden würde?

Antwort

1

Der zweite Ansatz ermöglicht es Ihnen, zu verwenden (was im dritten Ansatz nicht möglich ist, wie Sie bereits herausgefunden haben, da der Compiler sich beschwert).

Es ist häufiger (und sauberer, meiner Meinung nach), alle Ihre privaten Eigenschaften und Methoden in der Klassenerweiterung zu deklarieren (was Sie als "anonyme Erweiterung" bezeichnen).

Ich bin auch neugierig, wenn es ernsthaftere Vorbehalte gibt, indem Sie Ihren dritten Ansatz verwenden - wenn jemand weiß, bitte teilen.