定义Protocol的时的顺序问题
按照Cocoa里的习惯,一般在头文件中protocol会定义在class的interface之前。但是这样会引起一个问题,class会报错。
因为编译器在定义protocol时还没有读取到下边的class定义,就在protocol中使用了class,解决这个问题可以使用「@class」来进行声明Class从而解决报错,还保持了风格上的统一
@class SomeCell;
@protocol SomeCellDelegate <NSObject>
- (void)someOrderOnCell:(SomeCell *)cell parameter:(NSString *)parameter;
@end
@interface SomeCell : UITableViewCell
@property (nonatomic, weak) id<SomeCellDelegate> delegate;
@end
避免在头文件中加载头文件
除了解决定义Protocol的问题之外,还可以通过「@class」来避免头文件中加载头文件问题。因为头文件时可以被无限「include」或者「import」的,写『局部代码』时都尽量避免在头文件中加载头文件。
如果此时需要使用某个类也可以使用「@class」