En Objective-C, ma compréhension est que la directive @"foo" définit une constante NSString. Si j'utilise @"foo" dans plusieurs endroits, le même immuable NSString objet est référencé.
Pourquoi dois-je voir cet extrait de code si souvent (par exemple dans UITableViewCell réutilisation):
static NSString *CellId = @"CellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:style reuseIdentifier:CellId];
Au lieu de simplement:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellId"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:style reuseIdentifier:@"CellId"];
Je suppose que c'est pour me protéger de faire une faute de frappe dans le nom de l'identificateur que le compilateur ne marcherait pas. Mais Si si, ne pourrais-je pas simplement:
#define kCellId @"CellId"
et d'éviter la statique NSString * bits? Ou ai-je raté quelque chose?