声明成员变量,如果不是特别说明一定要声明在@interface(),否则会有一些异常
#import "Hello.h"
@interface Hello()
{
正确的位置:
NSString *jojo;
}
@end
错误:
NSString *jojo;
@implementation Hello
错误:
NSString *jojo;
@synthesize str;
- (void)defaultJojo
{
jojo = @"jojo";
}
- (void)print
{
NSLog(@"%@",jojo);
}
- (void)modify
{
jojo = @"not jojo";
}
在错误的位置进行声明,会出现下次再次初始化创建对象的话,jojo变量会是上一次修改过的变量,而不是nil,这违反了面向对象的原则。而在@interface里面的话,每次初始化都是nil。
在.h文件的@interface里的话,除非是想让其他对象看到这个成员变量,否则,这个.h里的成员变量完全可以用属性替代,如果不想用属性,可以把.h里面的成员变量加到.m文件里的@interface(){}里,这样外界看不到。也可以在.m的@Interface里加一些属性,只给类内部使用。
以上都是为了遵守面向对象的规则。