.h 文件中的内容越少越好。所以是的,在 .m 文件中声明私有 ivars 和私有属性是一种很好的做法。
.h 文件应该只有真正的公共声明。
例子:
SomeClass.h:
@interface SomeClass : NSObject <NSCoding> // publicly state conformance to NSCoding
@property (nonatomic, copy) NSString *publicProperty;
- (void)somePublicMethod;
@end
SomeClass.m
@interface SomeClass () <UIAlertViewDelegate> // implementation detail
@property (nonatomic, assign) BOOL privateProperty;
@end
@implementation SomeClass {
UIAlertView *_privateAlert; // private ivar
}
// all the methods
@end
所有这些都利用了现代的 Objective-C 编译器。不需要明确的@synthesize
行(尽管如果合适的话仍然可以使用它们)。无需为每个属性声明 ivars(尽管可以在适当的情况下声明)。
请注意,在 ARC 下,ivars 和局部变量是strong
,而不是weak
。