Skip navigation.
 
mlRe: Bypassing Interface Builder
FROM : colo
DATE : Wed May 14 19:37:09 2008

I second that to a T. Reading over all the messages now.


On Wed, May 14, 2008 at 1:34 PM, Boyd Collier
<<email_removed>> wrote:
> Andy,
>
> Just wanted to congratulate you for your exceptionally clear and succinct
> summary.  If I'd had it when I first started using Interface Builder, it
> would have saved me a lot of head scratching (and occasional head-banging).
>
> Boyd
>
>
>
> On May 14, 2008, at 9:37 AM, Andy Lee wrote:
>

>> On May 14, 2008, at 11:35 AM, colo wrote:

>>>
>>> Hmmm. The letting it create the files in the nib file sounds fine for
>>> me. But what about the linking and configuring? It's just all
>>> reflected in code correct? The dragging a pipe to one object to the
>>> other that just all shows up in the .m right?

>>
>> No.  Nothing you do in Interface Builder modifies a .m.
>>
>> A nib file contains descriptions of a set of objects:
>>
>> (1a) what class each object is an instance of,
>> (1b) values for each object's attributes, and
>> (1c) how the objects connect to each other (through instance variables
>> called outlets).
>>
>> When you edit a nib file in IB, you're specifying:
>>
>> (2a) what objects should be in the nib (by dragging them from a palette
>> that lists the classes you want),
>> (2b) what values their attributes should have (by entering values in an
>> inspector), and
>> (2c) how they connect to each other (by control-dragging between them and
>> selecting which outlet of the from-object you want the to-object to be).
>>
>> When your application *loads* a nib, it:
>>
>> (3a) instantiates the objects,
>> (3b) sets their attributes, and
>> (3c) connects them both to each other and to certain things in your
>> application (in particular, File's Owner, which you should definitely
>> understand).
>>
>> As others have explained, IB does not generate code to do (3a), (3b), and
>> (3c).  That's all taken care of by the Cocoa framework code that loads the
>> nib file.
>>
>> There *is* a connection between your code and your nib, but it's in the
>> other direction.  If you edit the outlets in the .h file for one of your
>> classes (outlets are designated with the IBOutlet keyword), the nib file
>> will update its understanding of the structure of that class.
>>
>> The "behind the scenes" of (3a), (3b), and (3c) are documented and worth
>> understanding; they touch on topics including init methods, KVC, and the
>> responder chain respectively.  To be honest I can't recite all the details
>> offhand (like the exact rules for which init method gets called), but I'm
>> aware of the situations in which I should refer to the documentation.
>>
>> --Andy
>>
>> _______________________________________________
>>
>> Cocoa-dev mailing list (<email_removed>)
>>
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>
>> Help/Unsubscribe/Update your Subscription:
>>
>> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>>
>> This email sent to <email_removed>
>>

>
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>
> This email sent to <email_removed>
>

Related mailsAuthorDate
mlBypassing Interface Builder colo May 14, 16:36
mlRe: Bypassing Interface Builder I. Savant May 14, 17:11
mlRe: Bypassing Interface Builder colo May 14, 17:35
mlRe: Bypassing Interface Builder I. Savant May 14, 17:43
mlRe: Bypassing Interface Builder Andy Lee May 14, 17:50
mlRe: Bypassing Interface Builder colo May 14, 17:53
mlRe: Bypassing Interface Builder I. Savant May 14, 17:58
mlRe: Bypassing Interface Builder David Wilson May 14, 17:59
mlRe: Bypassing Interface Builder I. Savant May 14, 18:01
mlRe: Bypassing Interface Builder I. Savant May 14, 18:05
mlRe: Bypassing Interface Builder Gregory Weston May 14, 18:06
mlRe: Bypassing Interface Builder glenn andreas May 14, 18:13
mlRe: Bypassing Interface Builder Wayne Packard May 14, 18:26
mlRe: Bypassing Interface Builder Andy Lee May 14, 18:37
mlRe: Bypassing Interface Builder Stefan Werner May 14, 18:46
mlRe: Bypassing Interface Builder Bill Bumgarner May 14, 19:00
mlRe: Bypassing Interface Builder Boyd Collier May 14, 19:34
mlRe: Bypassing Interface Builder colo May 14, 19:37
mlRe: Bypassing Interface Builder Julius Guzy May 14, 22:05
mlRe: Bypassing Interface Builder Torsten Curdt May 14, 22:49
mlRe: Bypassing Interface Builder colo May 15, 00:53
mlRe: Bypassing Interface Builder Graham Cox May 15, 01:26
mlRe: Bypassing Interface Builder Graham Cox May 15, 01:41
mlRe: Bypassing Interface Builder colo May 15, 02:14
mlRe: Bypassing Interface Builder Johnny Lundy May 15, 02:15
mlRe: Bypassing Interface Builder Graham Cox May 15, 02:29
mlRe: Bypassing Interface Builder I. Savant May 15, 02:43
mlRe: Bypassing Interface Builder Graham Cox May 15, 02:45
mlRe: Bypassing Interface Builder I. Savant May 15, 02:51
mlRe: Bypassing Interface Builder I. Savant May 15, 02:54
mlRe: Bypassing Interface Builder Andy Lee May 15, 03:02
mlRe: Bypassing Interface Builder Graham Cox May 15, 03:02
mlRe: Bypassing Interface Builder Andy Lee May 15, 03:06
mlRe: Bypassing Interface Builder I. Savant May 15, 03:07
mlRe: Bypassing Interface Builder Andy Lee May 15, 03:08
mlRe: Bypassing Interface Builder I. Savant May 15, 03:09
mlRe: Bypassing Interface Builder I. Savant May 15, 03:15
mlRe: Bypassing Interface Builder Andy Lee May 15, 03:29
mlRe: Bypassing Interface Builder Julius Guzy May 15, 03:35
mlRe: Bypassing Interface Builder I. Savant May 15, 03:37
mlRe: Bypassing Interface Builder Johnny Lundy May 15, 04:33
mlRe: Bypassing Interface Builder Julius Guzy May 15, 04:36
mlRe: Bypassing Interface Builder Johnny Lundy May 15, 04:54
mlRe: Bypassing Interface Builder Graham Cox May 15, 05:43
mlRe: Bypassing Interface Builder Uli Kusterer May 15, 07:50
mlRe: Bypassing Interface Builder Uli Kusterer May 15, 07:55
mlRe: Bypassing Interface Builder Uli Kusterer May 15, 08:15
mlcocoa mentoring (was Re: Bypassing Interface Builder) Torsten Curdt May 15, 15:36
mlRe: cocoa mentoring (was Re: Bypassing Interface Builder) Paul Bruneau May 15, 15:47
mlRe: cocoa mentoring (was Re: Bypassing Interface Builder) Uli Kusterer May 15, 16:08
mlcocoaheads frankfurt (was Re: cocoa mentoring) Torsten Curdt May 15, 16:44
mlRe: cocoa mentoring (was Re: Bypassing Interface Builder) Torsten Curdt May 15, 16:51
mlRe: Bypassing Interface Builder Andy Lee May 15, 17:11
mlRe: Bypassing Interface Builder Johnny Lundy May 15, 18:40
mlRe: cocoa mentoring (was Re: Bypassing Interface Builder) Dennis Munsie May 15, 19:34
mlRe: Bypassing Interface Builder Paul Sargent May 15, 20:07
mlRe: Bypassing Interface Builder Uli Kusterer May 15, 20:48
mlRe: Bypassing Interface Builder Shawn Erickson May 15, 22:20
mlRe: Bypassing Interface Builder Shawn Erickson May 15, 22:30
mlRe: Bypassing Interface Builder Johnny Lundy May 15, 22:32
mlRe: cocoa mentoring (was Re: Bypassing Interface Builder) Torsten Curdt May 15, 23:03