Iphone 自我客体是如何分配的,在哪里分配的?

Iphone 自我客体是如何分配的,在哪里分配的?,iphone,ios,objective-c,Iphone,Ios,Objective C,有许多方法可以覆盖这样的函数: - (void)viewDidLoad { [super viewDidLoad]; } - (id) init { self = [super init]; return self; } 因此,super正在调用父类函数,但是self在哪里分配?每当我们用nib像这样初始化类时: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

有许多方法可以覆盖这样的函数:

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

因此,
super
正在调用父类函数,但是self在哪里分配?

每当我们用nib像这样初始化类时:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

或者简单地init将分配self

基本上,它是在init函数中初始化的,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
}
- (id) init
{
  self = [super init];
  return self;
}
这里

这是自我赋值

当您调用类并
alloc
它时,它将访问它的超级类
init
方法并传递给self

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {

    }
    return self;
}

self
是指向“当前对象”的指针,它按照通常的初始化公式分配:

NSObject *foo = [[NSObject alloc] init];
当您调用
[NSObject alloc]
时,该类将创建一个对象,您稍后将其称为
self