FROM : Torsten Curdt
DATE : Thu May 15 15:21:04 2008
Hm ...I would have though the runtime would just do dependency/
reference injection.
And the procedural code has a (hidden) reference/parameter to the
object instance - that would be "self".
cheers
--
Torsten
On May 15, 2008, at 13:53, Graham Cox wrote:
> Yep, you're basically correct, sounds right to me.
>
> When the nib is loaded, <documentWindow> will point to ("refer to")
> the window object.
>
> someMethod is able to simply use the variable <documentWindow>
> because that is an instance variable of the MyDocument object, and
> all methods of MyDocument are able to use the object's ivars as if
> they were locally declared. This is one of the main reasons that OOP
> is a useful way to program.
>
> so someMethod could then message the window itself, for example:
>
> - (void) someMethod
> {
> // set a property:
>
> [documentWindow setTitle:@"Arrooooggahh!!"];
>
> // read a property:
>
> NSRect wFrame = [documentWindow frame];
> }
>
>
> If you're asking *how* this works, the answer lies in the Obj-C
> runtime. Basically all of an object's methods are implicitly passed
> a pointer to the object itself (self) as a hidden parameter to the
> function that the method is wrapping. The compiler thus generates
> code that makes use of this implicit parameter, so the real code is
> really doing the equivalent of:
>
> void someMethod( NSDocument* self )
> {
> setTitle( self->documentWindow, @"string" );
> }
>
> underneath, it's all procedural ;-) (I'm simplifying, it's not
> literally quite like this, Find out more here: file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/ObjCRuntimeRef/index.html)
> .
>
> hth,
>
>
> G.
>
>
>
> On 15 May 2008, at 9:30 pm, John Love wrote:
>
>> I *think* I understand about outlets and actions .. but now I am
>> not so
>> sure.
>>
>> Specifically, if I set (NSWindow *)documentWindow as an Outlet in
>> my main
>> nib and I declare in MyDocument.h file:
>>
>> interface MyDocument:NSDocument {
>> IBOutlet NSWindow *documentWindow;
>> }
>> ...
>>
>> - (void) someMethod:documentWindow;
>>
>> and in MyDocument.m file:
>>
>> - (void) someMethod {
>> // some operation that accesses a property of documentWindow
>> }
>>
>> Okay, documentWindow is typed as a outlet in the main nib and in the
>> interface,.h, file ... and I have control-dragged from the
>> FileOwner to the
>> title bar of the Window, selecting "documentWindow" as the Outlet.
>> But,
>> just exactly HOW does the actual documentWindow object get passed
>> so that
>> someMethod can look at one of its properties?
>>
>> This question is oriented to "behind the scenes".
>>
>> Thanks in advance>
>>
>> John Love
>> _______________________________________________
>>
>> 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/graham.<email_removed>
>>
>> This email sent to graham.<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>
DATE : Thu May 15 15:21:04 2008
Hm ...I would have though the runtime would just do dependency/
reference injection.
And the procedural code has a (hidden) reference/parameter to the
object instance - that would be "self".
cheers
--
Torsten
On May 15, 2008, at 13:53, Graham Cox wrote:
> Yep, you're basically correct, sounds right to me.
>
> When the nib is loaded, <documentWindow> will point to ("refer to")
> the window object.
>
> someMethod is able to simply use the variable <documentWindow>
> because that is an instance variable of the MyDocument object, and
> all methods of MyDocument are able to use the object's ivars as if
> they were locally declared. This is one of the main reasons that OOP
> is a useful way to program.
>
> so someMethod could then message the window itself, for example:
>
> - (void) someMethod
> {
> // set a property:
>
> [documentWindow setTitle:@"Arrooooggahh!!"];
>
> // read a property:
>
> NSRect wFrame = [documentWindow frame];
> }
>
>
> If you're asking *how* this works, the answer lies in the Obj-C
> runtime. Basically all of an object's methods are implicitly passed
> a pointer to the object itself (self) as a hidden parameter to the
> function that the method is wrapping. The compiler thus generates
> code that makes use of this implicit parameter, so the real code is
> really doing the equivalent of:
>
> void someMethod( NSDocument* self )
> {
> setTitle( self->documentWindow, @"string" );
> }
>
> underneath, it's all procedural ;-) (I'm simplifying, it's not
> literally quite like this, Find out more here: file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/ObjCRuntimeRef/index.html)
> .
>
> hth,
>
>
> G.
>
>
>
> On 15 May 2008, at 9:30 pm, John Love wrote:
>
>> I *think* I understand about outlets and actions .. but now I am
>> not so
>> sure.
>>
>> Specifically, if I set (NSWindow *)documentWindow as an Outlet in
>> my main
>> nib and I declare in MyDocument.h file:
>>
>> interface MyDocument:NSDocument {
>> IBOutlet NSWindow *documentWindow;
>> }
>> ...
>>
>> - (void) someMethod:documentWindow;
>>
>> and in MyDocument.m file:
>>
>> - (void) someMethod {
>> // some operation that accesses a property of documentWindow
>> }
>>
>> Okay, documentWindow is typed as a outlet in the main nib and in the
>> interface,.h, file ... and I have control-dragged from the
>> FileOwner to the
>> title bar of the Window, selecting "documentWindow" as the Outlet.
>> But,
>> just exactly HOW does the actual documentWindow object get passed
>> so that
>> someMethod can look at one of its properties?
>>
>> This question is oriented to "behind the scenes".
>>
>> Thanks in advance>
>>
>> John Love
>> _______________________________________________
>>
>> 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/graham.<email_removed>
>>
>> This email sent to graham.<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 mails | Author | Date |
|---|---|---|
| John Love | May 15, 13:30 | |
| Graham Cox | May 15, 13:53 | |
| Torsten Curdt | May 15, 15:21 | |
| Graham Cox | May 15, 15:32 | |
| Mike Abdullah | May 15, 15:36 | |
| Torsten Curdt | May 15, 15:53 | |
| Erik Buck | May 15, 16:08 | |
| Graham Cox | May 15, 16:13 | |
| John Love | May 17, 16:01 |






Cocoa mail archive

