I don't know anything about that book, but I've always recommended Aaron
Hillegass's book on Cocoa Programming for Mac OS X, as it's what I used to
learn how to code Cocoa code.

http://www.bignerdranch.com/book/cocoa_programming_for_mac_os_x_3rd_edition

-Steven

On Sat, Feb 13, 2010 at 10:17 AM, Donald Klett <dskl...@mac.com> wrote:

> Steven,
>
> Thanks for your analysis.  I must admit I am still somewhat confused, but
> you have given me something to think about.   And thanks to Henry McGilton
> for his reply.
>
> I have David Chisnall's book on Cocoa Programming, so I will try to
> understand your suggestion concerning using view and window controllers.
>  This is all new.  I have been a Java developer for about seven years and
> want to branch out.  So all help is very welcome.
>
> I also have to read more about what happens when an app loads.  I thought I
> had an idea of what happens, but maybe not completely.  I am sure I will be
> back with more questions.  Thanks again.
>
> Don
>
> On Feb 12, 2010, at 7:06 PM, Steven Degutis wrote:
>
> > Don,
> >
> > Your first snippet of code is great and follows MVC just fine. However,
> your second snippet breaks away from proper MVC, in the vein of
> over-thinking your architecture.
> >
> > When in doubt, start simple and extend as needed. In your first snippet,
> your Controller class is a valid Controller in the MVC sense of things. Just
> stick it in a NIB file, connect the outlets, and you're all groovy.
> >
> > But here's some things to explicitly avoid:
> >
> > (1) Name classes inappropriately. As mentioned before, "View" should not
> be a subclass of NSObject without any view components. It should be a
> subclass of NSView or something similar (NSControl, NSTableView, etc)
> > (2) We Cocoa coders don't usually instantiate views inside -init, but
> rather inside a NIB file. Having NIBs loaded automatically for us via
> NSViewController or NSWindowController is pretty standard and good practice.
> > (3) View classes shouldn't usually have Controller code in it. View
> classes should be generic and reusable, whereas Controller is specific to a
> single purpose inside an app (or multiple apps, if it's a shared framework).
> > (4) Try to use a prefix in your class names. I usually use SD, like
> SDView or SDController or SDButton, for instance. This helps prevent
> namespace collisions. Not entirely relevant to your question, just throwing
> it out there.
> >
> > -Steven
> >
> >
> > On Fri, Feb 12, 2010 at 4:31 PM, Donald Klett <dskl...@mac.com> wrote:
> > Once again, I am not understanding some aspect of Objective C and/or
> Cocoa.
> >
> > I created a simple class that contains two NSTextField objects.  I used
> IB to connect the Controller object with the two text fields.  The code
> follows.  This example runs correctly and does copy the value from one text
> field to the other.
> >
> > #import <Cocoa/Cocoa.h>
> >
> > @interface Controller : NSObject {
> >        IBOutlet NSTextField*   textField;
> >        IBOutlet NSTextField*   copyField;
> > }
> >
> > - (IBAction) buttonTarget: (id) sender;
> >
> > @end
> >
> > #import "Controller.h"
> >
> > @implementation Controller
> >
> > - (IBAction) buttonTarget: (id) sender {
> >        int     textValue;
> >
> >        textValue = [textField intValue];
> >        [copyField setIntegerValue:textValue];
> > }
> >
> > @end
> >
> > Now if I extend this to two objects (Controller and View), the resulting
> code does not execute correctly.  Again, I used IB to connect the View
> object to the two text fields.  Using the debugger I find that the two
> NSTextField objects have not been allocated (both have nil values).  The
> code follows:
> >
> > #import <Cocoa/Cocoa.h>
> > #import "View.h"
> >
> > @interface Controller : NSObject {
> >
> >        View*   view;
> > }
> >
> > - (IBAction) buttonTarget: (id) sender;
> >
> > @end
> >
> > #import "Controller.h"
> > #import "View.h"
> >
> > @implementation Controller
> >
> > - (id) init {
> >        if (self = [super init]) {
> >                view = [[View alloc] init];
> >        }
> >        return self;
> > }
> >
> > - (IBAction) buttonTarget: (id) sender {
> >        [view copyFieldValue];
> > }
> >
> > @end
> >
> > #import <Cocoa/Cocoa.h>
> >
> > @interface View : NSObject {
> >
> >        IBOutlet NSTextField*   textField;
> >        IBOutlet NSTextField*   copyField;
> >
> > }
> >
> > - (void) copyFieldValue;
> >
> > @end
> >
> > #import "View.h"
> >
> >
> > @implementation View
> >
> > - (void) copyFieldValue {
> >        [copyField setIntegerValue:[textField intValue]];
> > }
> >
> > @end
> >
> > I have no idea what I am doing wrong.  Any help would be most
> appreciated.  Thanks in advance.
> >
> > Don Klett
> >
> > _______________________________________________
> >
> > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> >
> > 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/steven.degutis%40gmail.com
> >
> > This email sent to steven.degu...@gmail.com
> >
> >
> >
> > --
> > Steven Degutis
> > http://www.thoughtfultree.com/
> > http://www.degutis.org/
>
>


-- 
Steven Degutis
http://www.thoughtfultree.com/
http://www.degutis.org/
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to