Cocoa:NIB文件创建的实例的var名称是什么?

Cocoa:NIB文件创建的实例的var名称是什么?,cocoa,nib,xib,Cocoa,Nib,Xib,当Cocoa NIB文件实例化自定义控制器对象的实例时,该自定义控制器实例分配给的变量的名称是什么 如果不清楚,如果手动创建该类的实例,您将执行以下操作: MyControllerClass *myVar = [[MyControllerClass alloc] init]; NIB在幕后执行此操作时使用了什么等效的“myVar”?一旦编译应用程序,就没有变量名,所以这个问题没有多大意义。在您的示例中,myVar对于程序员来说只是一个方便的标签,一旦您的源代码被编译成二进制代码,它就不会以任何

当Cocoa NIB文件实例化自定义控制器对象的实例时,该自定义控制器实例分配给的变量的名称是什么

如果不清楚,如果手动创建该类的实例,您将执行以下操作:

MyControllerClass *myVar = [[MyControllerClass alloc] init];

NIB在幕后执行此操作时使用了什么等效的“myVar”?

一旦编译应用程序,就没有变量名,所以这个问题没有多大意义。在您的示例中,
myVar
对于程序员来说只是一个方便的标签,一旦您的源代码被编译成二进制代码,它就不会以任何方式存在

当您将一个对象放入nib文件时,它会在运行时被归档然后取消归档。如果希望能够获取对已存档在nib文件中的对象的引用,则需要使用outlet,这意味着您在nib文件中存在的类中声明一个
IBOutlet
实例变量,然后将该outlet连接到Interface Builder中要引用的nib中的对象。实例变量与示例中声明的堆栈变量不同,可以在运行时引用

通常,您会有一个“拥有”nib的对象。通常nib是由
NSWindowController
NSViewController
的实例加载的,并且窗口或视图控制器在nib文件中表示为文件的所有者。如果在窗口/视图控制器中声明出口,则可以将文件所有者的出口连接到Interface Builder中的对象

因此,为了澄清,您需要从同一nib中的其他对象引用nib中的对象。第二个对象在实例变量上使用
IBOutlet
关键字声明一个outlet,如下所示:

@interface SomeOtherObject : NSObject
{
    IBOutlet SomeObject* anObject;
}
@end
在Interface Builder中,您可以将
SomeOtherObject
实例的
anObject
出口连接到第一个
SomeObject
实例。可以通过将控件从一个对象拖动到另一个对象来执行此操作,也可以在Interface Builder检查器的“连接”面板中执行此操作


然后,您可以在
SomeOtherObject
的代码中通过变量名
anObject
引用
SomeObject
实例。编译应用程序后,没有变量名,所以这个问题没有多大意义。在您的示例中,
myVar
对于程序员来说只是一个方便的标签,一旦您的源代码被编译成二进制代码,它就不会以任何方式存在

当您将一个对象放入nib文件时,它会在运行时被归档然后取消归档。如果希望能够获取对已存档在nib文件中的对象的引用,则需要使用outlet,这意味着您在nib文件中存在的类中声明一个
IBOutlet
实例变量,然后将该outlet连接到Interface Builder中要引用的nib中的对象。实例变量与示例中声明的堆栈变量不同,可以在运行时引用

通常,您会有一个“拥有”nib的对象。通常nib是由
NSWindowController
NSViewController
的实例加载的,并且窗口或视图控制器在nib文件中表示为文件的所有者。如果在窗口/视图控制器中声明出口,则可以将文件所有者的出口连接到Interface Builder中的对象

因此,为了澄清,您需要从同一nib中的其他对象引用nib中的对象。第二个对象在实例变量上使用
IBOutlet
关键字声明一个outlet,如下所示:

@interface SomeOtherObject : NSObject
{
    IBOutlet SomeObject* anObject;
}
@end
在Interface Builder中,您可以将
SomeOtherObject
实例的
anObject
出口连接到第一个
SomeObject
实例。可以通过将控件从一个对象拖动到另一个对象来执行此操作,也可以在Interface Builder检查器的“连接”面板中执行此操作

然后,您可以通过
SomeOtherObject
的代码中的变量名
anObject
引用
SomeObject
实例,在控制器类中实现该方法-在nib完成加载后立即调用该方法,并且可以在“self”中找到控制器的实例变量。

在控制器类中实现该方法-在nib完成加载后立即调用该方法,并且可以在“self”变量中找到控制器的实例。

@tedge(我无法对您的答案做出评论):

你能澄清一下吗。以苹果货币转换器教程为例

我在现有的ConverterController类中实现了awakeFromNib方法。(我很快就会学会做的事情!)

应用程序启动,ConverterController的实例将自动实例化

awakeFromNib会告诉我关于那个正在运行的实例的什么(除了它已经准备好使用之外)——以及“self”的什么语法让它泄露了那个信息?

@tedge(我不能对你的答案发表评论):

你能澄清一下吗。以苹果货币转换器教程为例

我在现有的ConverterController类中实现了awakeFromNib方法。(我很快就会学会做的事情!)

应用程序启动,ConverterController的实例将自动实例化

awakeFromNib将告诉我关于正在运行的实例的什么信息(除了它已经准备好使用之外)——以及“self”的什么语法让它泄露这些信息

…自定义控制器实例分配给的变量的名称是什么

它是你声明变量时给它起的名字

IB不会为您创建变量。听起来像你