我试图让一个类的实例在 .m 文件的所有方法中都可用。而不是在每个方法中都这样做:
-(void)viewDidLoad
{
Class *c = [Class new];
}
我在 .h 文件中的尝试:
@interface RandomViewController : UIViewController
{
Class *c [Class new];
}
但它不起作用,我得到错误
预期的 ';' 在声明列表的末尾
我将如何使这成为可能?
谢谢
我试图让一个类的实例在 .m 文件的所有方法中都可用。而不是在每个方法中都这样做:
-(void)viewDidLoad
{
Class *c = [Class new];
}
我在 .h 文件中的尝试:
@interface RandomViewController : UIViewController
{
Class *c [Class new];
}
但它不起作用,我得到错误
预期的 ';' 在声明列表的末尾
我将如何使这成为可能?
谢谢
创建一个实例变量,并在您指定的初始化程序中设置它。这是一个示例@implementation
块。
@implementation RandomViewController {
// Instance variable names should start with an underscore, by convention.
Class *_c;
}
...
// Designated initializer for UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
_c = [[Class alloc] init];
}
return self;
}
...
- (void)someMethodThatNeedsAClassInstance
{
[_c doSomething];
}
如果您不使用 ARC,则需要添加[_c release]
到您的dealloc
实现中。
现在,在您的类中的每个方法中,您都可以引用_c
并获取您在初始化程序中创建的实例。作为旁注,这并不是真正的“全局”实例 - 它是每个对象。您创建的每个单独的视图控制器都有自己的_c
. 此外,一个更好的方法是声明一个属性,而不是声明一个实例变量。
在 .h 文件中:
@interface RandomViewController : UIViewController
{
Class *c;
}
在 .m 文件中:
-(void)viewDidLoad
{
c = [[Class alloc] init];
}
它的类方法是做什么的?如果返回无效:
类.h 文件:
@interface Class: NSObject
{
}
- (void)new;
随机视图控制器.h
@interface RandomViewController : UIViewController
{
Class *c;
}
RandomViewController.m 文件
-(void)viewDidLoad
{
c = [[Class alloc] init];
//call the method
[c new];
}