Я столкнулся с ситуацией, когда у меня были следующие две реализации, расположенные в отдельных файлах:
ClassA.m
@implementation ClassA
int _x = 0;
@end
ClassB.m
@implementation ClassB
int _x = 0;
@end
Когда я скомпилировал, компоновщик сказал бы:
цель c повторяющимся символом __x ....
Моим решением было пометить обе переменные как static
.
Правда ли, что все переменные-члены классов просто добавляются в таблицу символов без добавления префикса их имени реализации (если вы не пометите их как статические)? В это трудно поверить, иначе я бы подумал, что использование static
будет правилом, а не исключением ...