2016-06-29 26 views
-1

Ich bin ein Neuling in iOS-Entwicklung und ich habe Zweifel, dass, wenn ich ein UIKit-Element wie UILabel * Label in some.h Datei nicht in .m Datei deklarieren, ist es geschützt oder öffentlich zu anderen Klassen, wenn ich diese Klasse importieren in eine andere Klasse und greifen Sie auf diese Klasseninstanz zu?Ist ein UIKit-Element in der .h-Datei öffentlich oder in objective c geschützt?

#import <UIKit/UIKit.h> 

@interface Latestnews_ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UIImageView *latestnewsbackimg; 
@property (strong, nonatomic) IBOutlet UIImageView *latestnewsdateimg; 
@property (strong, nonatomic) IBOutlet UILabel *latestnewsdate; 

Ist nextnewsdate öffentlich oder geschützt?

+0

Sie müssen ein Beispiel angeben. Es gibt Regeln von C und ObjC, die anwendbar sind, und ohne ein Beispiel wird es schwierig sein, jede Möglichkeit in einer Antwort bereitzustellen. – Avi

+0

Oh, und der Datentyp hat überhaupt keinen Einfluss auf die resultierende Sichtbarkeit. – Avi

+0

@Avi sehen Sie bitte den Code –

Antwort

0

1). Auf die Eigenschaften in Ihrem Code kann von jeder Klasse zugegriffen werden, die Ihren "Latestnews_ViewController" importiert. d.h. es ist für alle Klassen öffentlich.

2).

@interface Latestnews_ViewController : UIViewController 
{ 
NSString *latestnewsbackimg; //private 
NSString *latestnewsdateimg; //private 
} 

NSArray *array; //public 

@end 
+0

Was ist mit geschützten Variablen? –

+0

Schnittstelle ClassA: NSObject { @ geschützt int _myProtectedInt; } Ende – Muthukumar

+0

Seine Arbeit für mich @Ashley Rodrigues – Muthukumar

0

Eigenschaften in .h-Datei deklariert sind public: Sie können auch

Beispiel in einer Klasse ein Privateigentum machen. So können Sie latestnewsdate von Latestnews_ViewController Instanz von einer beliebigen Klasse aufgerufen werden. Sie können es also öffentlich nennen.

0

Ihre Klasse benötigt Deklaration (Schnittstelle) und Definition (Implementierung). Um die Klasse zu verwenden, müssen Sie ihre Deklaration sehen (um zu wissen, welche Methoden sie hat). Sie können also @interface Foo.. in jede Datei eingeben, die Sie Klasse Foo verwenden möchten. Aber es ist Schmerz. Deshalb verschieben Sie es in .h Datei und enthalten es in anderen Dateien.

Genau genommen gibt es keinen Unterschied zwischen .m und .h-Dateien für C-Compiler. .h-Dateien werden einfach in den Präprozessor eingefügt, sodass der Compiler glauben kann, dass Sie die Deklaration Ihrer Klasse direkt in jede Datei aufnehmen.

Also, wenn Sie etwas in der Schnittstelle deklarieren und Datei mit diesem inetrafce in eine andere Datei einschließen, ist die ganze Schnittstelle zugänglich, nichts ist "geschützt". In ObjC gibt es kein "Geschütztes".

Was Sie "jedes UIKit-Element deklarieren" nennen, ist ObjC Eigenschaften, Syntax Zucker für Feld, Accessor und Mutator (Sie sollten über Eigenschaften lesen). Sie sind Teil der Schnittstelle und nicht geschützt. Wie auch immer Feld tut, weil es nicht Teil der Schnittstelle ist.

Um Mitglied "geschützt" zu machen, deklarieren Sie es in der Schnittstelle direkt in .m Datei, wo Sie es implementieren. Außerhalb dieser Datei wird niemand davon erfahren, es wird geschützt.