好吧,我读了很多围绕这些天关于这个话题,我alwyas感到困惑,因为答案是不同的每一个搜索我做。
我需要知道的iOS声明实例变量的最佳方式。 到目前为止,我知道我应该只是宣布他们.m文件里,让它.H干净。 但我不能做到这一点:编译器给我的编译错误回报。
下面是从.M只有一些代码。
@interface UIDesign ()
// .m file
{
NSString *test2 = @"test2";
}
@property (nonatomic, assign) int privateInt;
@end
@implementation UIDesign
{
NSString *test1 = @"test1";
}
这两个字符串被宣告不正确,我不知道为什么。 编译器说: 预期“;” 在声明列表的末尾 。
所以,问题是:我怎么可以声明实例变量? 我只需要它们的类内。
你不能初始化实例变量。 他们都初始化为零或零。 所以编译器期望,当你正在编写一个等号分号。
您可以在init()方法对它们进行初始化。
您正在尝试一个实例变量添加到一个类扩展或类别,它不支持。 [编辑2013年5月12日08年6月11日:类延伸的ivars被支持,但不是在类别。作为替代:
@interface UIDesign : NSObject
@end
@interface UIDesign ()
@property (nonatomic, assign) int privateInt;
@end
@implementation UIDesign
@synthesize privateInt = _privateInt;
- (void)someMethod {
self.privateInt = 42;
}
@end
在另一方面,如果你只是想声明实现内部的实例变量,只是做有:
@implementation UIDesign {
int _privateInt;
}
@end
编辑:只注意到你也尝试在这也是不支持的声明来初始化实例变量。 所以:
@interface UIDesign : NSObject
@end
@implementation UIDesign {
NSString *_test;
}
- (id)init {
self = [super init];
if( !self ) return nil;
_test = @"Foo";
return self;
}
@end