2013-02-18 24 views
0

我讀過應該將私有變量標記爲私有變量,否則它們會受到保護,並被認爲是最佳做法?有人可以解釋這個目標C嗎?我來自C#背景。現代的Objective-C的在objective-c中正確使用@private關鍵字

// BAD 

    @interface Test: NSObject 
    { 
     NSString* _name; 
    } 

    @property (nonatomic, retain) NSString* name; 

    // GOOD 

    @interface Test: NSObject 
    { 
     @private 
     NSString* _name; 
    } 

    @property (nonatomic, retain) NSString* name; 
+0

你是對的。像所有語言一樣,只公開你需要的東西。 @rmaddy發佈的答案是非常直接的例子,使用更多現代技術(自XCode 4.0以來)。這就是說,在公開私有變量時可以做很多定製。 – 2013-02-18 18:46:04

回答

4

趁着:

// Best 
// .h file 
@interface Test : NSObject 

// public properties and methods declarations 

@end 

// .m file 
@interface Test() 

// private properties declarations here 

@end 

@implementation Test { 
    // private ivars here - if needed 
} 

// method implementations here 

@end 

您發佈代表舊的做法,新的方法成爲可與現代的Objective-C之前的樣品。

不再需要將任何ivars放在.h文件中,這意味着@private聲明沒有用處。在.h中唯一應該在公共方法和公共屬性聲明中。其他所有內容都在.m文件中。

+0

好的,但你能回答舊的語法的問題。 – 2013-02-18 18:54:48

+0

對不起,我以爲我做到了。是的,您發佈的「不良」做法默認爲「受保護」。 「良好」的做法使得ivars是私密的。讓它們變得更私密更好,因爲它進一步確保了良好的封裝。允許子類直接訪問來自基類的受保護的ivars破壞封裝。 – rmaddy 2013-02-18 18:58:26

相關問題