J'obtiens cette erreur en essayant de voir le contenu d'un NSMutableArray:EXC_BAD_ACCESS lors du débogage
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000021
0x94d5a688 in objc_msgSend()
ViewController.h:
@interface PeopleViewController : UITableViewController {
NSMutableArray *people;
}
@property (nonatomic, retain) NSMutableArray *people;
ViewController.m:
@implementation PeopleViewController
@synthesize people;
Dans viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
// initialize our people array with an autoreleased object
people = [NSMutableArray array];
... Populate the people array with Person objects.
}
Quand je suis au point où je modifier le contenu d'une cellule dans le tableview, je ne peux pas accéder au tableau de personnes gdb lors de la frappe « po self.people »:
Person *person = [[Person alloc] init];
person = [self.people objectAtIndex: indexPath.row]; // <--- 'po self.people' called
cell.textLabel.text = person.personName;
Des idées pour lesquelles je ne peux pas y accéder?
Je ne pense pas que le message de conservation soit nécessaire, car la propriété est marquée comme "retenue". –
Mais la propriété n'est pas utilisée ici, la variable d'instance est en cours d'accès directement, donc la propriété n'a pas d'importance. – jbrennan
Exactement comme jbrennan dit: self.person signifie un appel à la méthode setter de la propriété, alors que "person" tout seul est juste une assignation à l'ivar. –