Это не имеет ничего общего с iOS 5, а скорее является ошибкой компилятора из цели C. Основная проблема заключается в том, что вы используете MySpots
как в качестве имени интерфейса, так и в качестве переменной свойства / экземпляра.При обнаружении вашей строки
MySpots = [[NSMutableArray alloc]init];
компилятор теперь не уверен, является ли это переменная MySpots
или должна быть объявлением переменной типа MySpots
, например,
MySpots *mySecondController = ...;
Компилятор принимает второе и выдает из-за отсутствующего имени переменной.
Вам следует
- изменить имя этого свойства на что-то отличное от имени класса, чтобы избежать путаницы
- используйте
self.property =
вместо property =
, поскольку при этом используется правильное управление памятью.ARC несколько уменьшает эту проблему, но в любом случае рекомендуется использовать автоматическое сохранение / освобождение, предоставляемое свойствами.
Любой из них поможет (в случае 1 компилятор теперь знает, что делать, в случае, если 2 self.MySpots
будет уникальным именем и не может быть смешано с именем класса).) но я бы определенно сделал и то и другое, переименовал свойство (или класс) и использовал бы self.property =
.
PS: даже с ARC вы все равно выполняете инициализацию как обычно с помощью [[NSMutableArray alloc] init]
ARC просто вставляет соответствующий retain
и releases
за кадром.