初始化并分配对所有方法都可见的类

时间:2014-04-19 13:13:40

标签: ios objective-c

问候我需要初始化一个类的实例,并且可以通过任何方法访问它

使用" Whatever = boom = [Wathever alloc] init]的示例;"

@interface something : NSObject;

@implementation

-(void) method1{

boom.size = 10;

}

-(void) method2{
boom.color = blue;
}

我将在哪里分配和初始化繁荣,以便我可以在每种方法中操纵它?

3 个答案:

答案 0 :(得分:1)

例如在whatever.h和whatever.m中调用类的方法必须在whatever.h中声明。

-(void) method1;
-(void) method2;

并使用

Whatever *boom = [Wathever alloc]init];
[boom method1];
[boom method2];

答案 1 :(得分:1)

单班?使它成为该类的属性。

//.h
@property Whatever *boom;

//.m
- (id)init {
   self = [super init];
   if (self) {
      _boom = [[Whatever alloc] init];
   }
   return self;
}

整个应用程序?在某处创建一个实例,就像你的app delegate一样,然后将它传递给Root View Controller,后者又将它传递给每个View Controller。

// AppDelegate .m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   // app setup code

   Whatever *boom = [[Whatever alloc] init];
   FirstViewController vc = self.window.rootViewController;
   vc.boom = boom;
}

// FirstViewController.h, NextViewController.h, etc.
@property Whatever *boom;

// FirstViewController.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
   NextViewController *nextVC = sender.destinationViewController;
   nextVC.boom = self.boom;
}

您也可以使用Singleton路线,但之后您将紧密耦合到应用程序范围内的单个实例。

答案 2 :(得分:0)

看看你在什么时候创建一个类来初始化那个类,一个常用的方法总是在那里调用它自己的类:

这样的事情:

-(id)init
{
    self = [super init];
    if (self)
    {
    }
    return self;
}

您可以在.h文件中声明实例,如下所示:

Whatever *boom;

您可以在上面的方法中初始化该实例,如下所示:

-(id)init
{
   self = [super init];
   if (self)
   {
      boom = [Wathever alloc]init];
   }
   return self;
}

希望这会对你有所帮助。