views:

101

answers:

1

I am building a toy app using core data for two entities Log (attributes text and date) and Tag with a many-to-many tags relationship from Log to Tag.

I want to show logs in a table, so I:

  • created an NSArrayController instance, LogController in IB with entity set to Log (pic)
  • created a one-column NSTableView whose column is bound to LogController. pic
  • linked the LogController in my app delegate (AppDelegate) using IBOutlet. AppDelegate also has the managedObjectContext.
  • created a custom NSCell class with NSString properties mainText and tagsText that I draw onto the cell
  • I set the above two cell properties in AppDelegate in the - (void)tableView: willDisplayCell: forTableColumn: row: method. (MainController is also the table's delegate). For the tagsText I get the tags for the current log and concatenate them into a single NSString

Everything works fine, except: When I mouse-select a row that displays multiple tags the app crashes with an EXC_BAD_ACCESS. That's the only time I have any error, but I don't know what is causing it.

A: 

EXC_BAD_ACCESS is a memory error. You are using an object after deallocating it. It would be difficult to debug this without the code.

Are you using the garbage collector? You do not have to manage memory yourself on the Mac.

Are the properties in your custom NSCell declared as "retain"?

gerry3
Right: I was not declaring one of the properties as retained. This solved it.
raheel