作为一个相当新的 Objective-c 程序员(有 4 年的 Java 经验),我似乎很难理解何时使用类扩展。据我了解(如果我错了,请纠正我),类别和扩展之间的主要区别在于,扩展希望您在主实现中实现方法,而对于一个类别,它可以在另一个实现中. 人们似乎也主要将扩展用于私有方法。
这是我的第一个问题。使用类扩展声明私有方法和根本不声明它有什么区别(在这两种情况下似乎都在运行中编译)?(示例 1 与 2)
示例 1
@interface Class()
-(void) bar;
@end
@implementation Class
-(void) foo {
[self bar];
}
-(void) bar {
NSLog(@"bar");
}
@end
示例 2
@implementation Class
-(void) foo {
[self bar];
}
-(void) bar {
NSLog(@"bar");
}
@end
第二个问题:在扩展中声明 ivars 和在实现中直接声明有什么区别?(例 3 对 4)
示例 3
@interface Class() {
NSArray *mySortedArray;
}
@end
@implementation Class
@end
示例 4
@implementation Class
NSArray *mySortedArray;
@end
我有一个关于编码约定的最后一个问题:我什么时候应该在变量名前加上下划线 (_)?
谢谢