我需要在我的Objective-C类中创建一个类型为BOOL
并且默认值为False
的实例变量。该如何操作?我看到有人将其定义在.h文件中,但我不需要让这个变量公开。所以应该将其放在.m文件中对吧?此外,我应该将其作为属性吗?是否存在不应该将某些东西作为属性的情况?谢谢。
我需要在我的Objective-C类中创建一个类型为BOOL
并且默认值为False
的实例变量。该如何操作?我看到有人将其定义在.h文件中,但我不需要让这个变量公开。所以应该将其放在.m文件中对吧?此外,我应该将其作为属性吗?是否存在不应该将某些东西作为属性的情况?谢谢。
@implementation MyClass
{
@private
BOOL myBool;
}
@interface MyClass()
@property (assign) BOOL myBool;
@end
@implementation MyClass
@synthesize myBool = myBool_; // creates an ivar myBool_ to back the property myBool.
@end
MyClass
的对象发送setMyBool:
或myBool
。如果你想创建一个私有变量,可以利用类别的功能。例如,创建一个名为MyClass的类,在.m文件中执行以下操作:
#import "MyClass.h"
@interface MyClass() //This is an empty category on MyClass class
@property (nonatomic, assign) BOOL myBool;
@end
@implementation MyClass
@synthesize myBool = _myBool;
-(void)myMethod {
self.myBool = YES; //this is using the property
_myBool = NO; //this is the instance variable, as @synthesize creates an instance variable for you
// both are private
}
@end
BOOL可以通过简单的BOOL myBool
来声明为实例变量,也可以通过@property (nonatomic, assign) BOOL myBool
的方式声明为属性。需要注意的是,BOOL类型的值在初始化时会被赋值为NO(空值)。如果需要让BOOL类型可从其他类访问或在m文件中作为全局变量使用,可以将其声明为实例变量或属性,否则只需将它们声明为方法中的局部变量。
你可以把声明放在.m
文件中。
是否将其作为属性取决于您的需求。 作为属性,您可以稍后应用包括检查/保护等的setter/getter。 此外,您还可以应用键值访问。
如果您不需要其中之一,则没有实际需要属性(但是这是一个好习惯:您永远不知道代码会如何发展)。
@implementation MyClass {
BOOL _myBool;
}
我觉得这是iOS5的新功能。但我也见过类似这样的代码:
@implementation MyClass {
@private
BOOL _myBool;
}
BOOL flag = NO; }`。另外,一旦你想在.m文件中声明它,你就不能从.m文件中合成它。
- Parth Bhattflag
?在 .m 文件中定义不是很合理吗?但是,我无法弄清楚它的语法。谢谢 - Nosrettapflag
是Objective-C中的BOOL实例变量,它在.m文件中定义。它仅用于方法viewDidLoad。 - Parth Bhatt