Hi folks,

I'm building a class Card that represents a playing card in a simulation. I
want instances of Card to be initialized with two integers that represent
the suit and value. When an instance of Card is queried for its suit or
value, it returns an NSString (@"Club", @"Spade", @"4", @"King", etc.). So
I'd like to have class variables that are NSArrays of NSStrings for suits
and values. I declare them in Card.h as follows (I'll just show the suits
array, for brevity):

#import <Cocoa/Cocoa.h>

static NSArray *suitArray;

@interface Card : NSObject {
...

They're initialized in Card.m as follows:

@implementation Card
+(void) initialize {

suitArray = [NSArray arrayWithObjects: @"Club", @"Diamond", @"Spade",
@"Heart", nil];

}
...

However, when I try to access suitArray from another of Card's methods, I
get an "EXC_BAD_ACCESS" error in the console. Here's a simplified version of
the method (that I've tested and which produces that error):

-(void) testIt: (id) sender {

NSString *str = [NSString stringWithString: [suitArray objectAtIndex: 2]];
NSLog(@"%@", str);

}

If I declare str as a class variable and set it inside initialize, then I
get the desired output from the NSLog call in testIt:. If I declare it as a
class variable and set it inside testIt:, as shown above, I still get the
error.

What's going on here? NSArray's elements have ref. count > 1, right? Is this
related?

Thanks,
Michael S Craig
_______________________________________________

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