FROM : Graham Cox
DATE : Thu May 15 02:45:04 2008
On 15 May 2008, at 10:15 am, Johnny Lundy wrote:
> Hi,
>
> On this topic, when I drag an object out of the Library and set its
> class, IB sets the label of the object to the Class Name. Since this
> is an instance of the class, and not the Class Object itself, why is
> the name capitalized? And if I want to refer by name to that
> instance in my code, what is the name of the instance?
The name of an object in IB is not accessible to your code, generally
speaking. It's just a convenience so you can tell things apart in IB.
You can change that label in IB by editing it directly, but it's not
important. ****It certainly doesn't mean that this is the variable
name for that object instance.****
> Say I drag out an object and set its class to MyClass. IB dutifully
> names the object MyClass also. So in my code if I code [MyClass
> somemessage], does that message go to the Class Object or to the
> instance made in IB? If to the Class Object, how do I code to refer
> to the instance?
The name is irrelevant (see above). You refer to it by having an
IBOutlet which is connected to that instance. If you are talking about
class methods, then there's no ambiguity anyway - there are no
"instances" of class methods, by definition - so messages to the class
go to the, err... class.
> Also, I found out that IB will not let me make 2 instances of the
> same Class. In code, I could say myClassInstance1 = [MyClass new];
> and MyClassInstance2 = [MyClass new];, but apparently not in IB.
Sure you can. Not sure why you think this, but maybe the confusion
about the IB name is misleading you. Once you realise that the name
shown in IB has no significance whatsoever, it may release you from
this confusion.
> This has been a mystery to me for six years now.
That is indeed a long time to be this muddled. My sympathies.
> Also, the documentation only says about File's Owner that it is the
> object that loaded the nib file. What is that object, if my nib file
> just gets loaded at application launch?
>
It depends. It's the file's (nib's) owner. If you are talking about
MainMenu.nib, its owner is the application instance. For typical
document nibs, it's the NSDocument instance. For others, it's whatever
you pass as "owner" in the NSBundle class method +loadNibNamed:owner:
hth,
G.
DATE : Thu May 15 02:45:04 2008
On 15 May 2008, at 10:15 am, Johnny Lundy wrote:
> Hi,
>
> On this topic, when I drag an object out of the Library and set its
> class, IB sets the label of the object to the Class Name. Since this
> is an instance of the class, and not the Class Object itself, why is
> the name capitalized? And if I want to refer by name to that
> instance in my code, what is the name of the instance?
The name of an object in IB is not accessible to your code, generally
speaking. It's just a convenience so you can tell things apart in IB.
You can change that label in IB by editing it directly, but it's not
important. ****It certainly doesn't mean that this is the variable
name for that object instance.****
> Say I drag out an object and set its class to MyClass. IB dutifully
> names the object MyClass also. So in my code if I code [MyClass
> somemessage], does that message go to the Class Object or to the
> instance made in IB? If to the Class Object, how do I code to refer
> to the instance?
The name is irrelevant (see above). You refer to it by having an
IBOutlet which is connected to that instance. If you are talking about
class methods, then there's no ambiguity anyway - there are no
"instances" of class methods, by definition - so messages to the class
go to the, err... class.
> Also, I found out that IB will not let me make 2 instances of the
> same Class. In code, I could say myClassInstance1 = [MyClass new];
> and MyClassInstance2 = [MyClass new];, but apparently not in IB.
Sure you can. Not sure why you think this, but maybe the confusion
about the IB name is misleading you. Once you realise that the name
shown in IB has no significance whatsoever, it may release you from
this confusion.
> This has been a mystery to me for six years now.
That is indeed a long time to be this muddled. My sympathies.
> Also, the documentation only says about File's Owner that it is the
> object that loaded the nib file. What is that object, if my nib file
> just gets loaded at application launch?
>
It depends. It's the file's (nib's) owner. If you are talking about
MainMenu.nib, its owner is the application instance. For typical
document nibs, it's the NSDocument instance. For others, it's whatever
you pass as "owner" in the NSBundle class method +loadNibNamed:owner:
hth,
G.






Cocoa mail archive

