On 5 Apr 2013, at 13:38, Pax wrote: > I have a situation where a user might have a great many information windows > open at the same time (like the situation in Finder where you can click on a > file and select 'Get Info' ad infinitum.) > > In order handle this situation, and so that I can still update each Window > individually, I decided to store the information window classes in an > NSDictionary so that I can fiddle with them individually (and release them > individually, obviously). > > This seems to work quite well - except that I can't seem to access public > member variables. The following code gives the error 'No member named > 'infoWindow' in 'struct objc_object' > NSEnumerator *e = [connectedDevices objectEnumerator]; > id device; > while (device = [e nextObject]) > { > if ([[device objectForKey:@"LocationID"] isEqualToNumber:[sender > representedObject]]) > { > [device setObject:[[DisplayInformation alloc] > initWithDictionary:device] forKey:@"InformationWindowRef"]; > [[device objectForKey:@"InformationWindowRef"] showWindow:self]; > Error Here --->[[device objectForKey:@"InformationWindowRef"]->infoWindow > cascadeTopLeftFromPoint:NSMakePoint(20,20)]; > } > } > > So I have a few questions: > 1. Am I approaching this problem correctly? After all, just because > something (mostly) works, it doesn't mean that it is the right, or efficient, > way to do things. > 2. If my plan isn't utter lunacy, how do I get to the member variable? > 3. If my plan is lunacy, or if there's a better more efficient solution, what > is it?
For a start, trying to access instance variables directly is almost always a bad idea. Expose proper accessor methods instead. _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com