要使用JSON數據工作,我在我的應用程序的AFNetworking庫收到,我定義上的NSDictionary類別在文件中的NSDictionary + JSON.h:我可以在Objective C類別中聲明一個非公共方法嗎?如果是這樣,怎麼辦?
@interface NSDictionary (JSON)
- (NSString *) name;
- (NSString *) extension;
...
@end
我在執行這些方法,我想聲明和使用,我不希望把在頭文件中一個輔助方法,因爲它只是一個實現細節:
- (NSString *) valueForKeyFromDictionaryOrIndexes:(NSString *)key;
我實現文件的NSDictionary + JSON.m看起來是這樣的:
#import "NSDictionary+JSON.h"
@interface NSDictionary()
// Putting my method declaration here produces a warning.
...
@end
@implementation NSDictionary (JSON)
- (NSString *) valueForKeyFromDictionaryOrIndexes:(NSString *)key {
NSString * value = [self valueForKey:key];
// implementation details omitted
return value;
}
- (NSString *) name {
return [self valueForKeyFromDictionaryOrIndexes:@"Name"];
}
- (NSString *) extension {
return [self valueForKeyFromDictionaryOrIndexes:@"Extension"];
}
...
@end
這工作正常,所以在這個意義上,沒有真正的問題。但是:我的幫手方法在定義之前從未被聲明過。我感到有點不舒服。如果我將聲明放入實現文件中的@interface ... @end部分中,在註釋位置(我認爲這將是宣佈非公共方法的正確位置),我會收到警告:
類別被實施,這將也由它的主類
我試圖固定來實現的方法,其通過用 @interface的NSDictionary(JSON) 但替換當然 @interface的NSDictionary() , ,給了我不同的警告:
類別「JSON」對接口的重複定義「的NSDictionary」
很公平,這確實是一樣的一個在我的頭文件,所以這不是一個妥善的解決辦法。這讓我想到:在類別實現中聲明非公共方法的正確方式/位置是什麼?
您需要在添加到框架類的方法中添加前綴。 –