Я думаю, что проблема, скорее всего, связана с переменной 'group' и / или с вызовом 'valueForProperty' для этой групповой переменной. Это может быть выпущено под вами где-то. Таким образом, когда вы инициализируете свой 'newAlbumId' из свойства переменной 'group', вам присваивается указатель на случайную память (так как объект группы или был освобожден), который в конечном итоге становится указателем на UIButtonContent. или иногда и «NSArray». Выполнение isEqualToString, таким образом, возвращает ошибку, которая выдается. Именно поэтому вы получаете предупреждения с включенными зомби.
Когда у вас включена функция NSZombies, вы получаете какие-либо предупреждения относительно доступа к групповой переменной?
Кроме того, как управляется объект, на который ссылается память групповой переменной - вы выделяете / инициализируете и назначаете его непосредственно iVar в содержащем объекте (а не как свойство через средство доступа к свойству)? Если это так, убедитесь, что вы не «освобождаете» его после этого alloc, поскольку, поскольку оно не является свойством, оно не сохраняется в назначении iVar - вам нужно всего лишь освободить его в своем методе dealloc (или настроить его как свойство вместо).
Просто взглянув на класс ALAssetsGroup, вы, скорее всего, инициализируете группу iVar, присваивая результат вызова вспомогательного метода - если это так, этот вспомогательный метод автоматически высвобождает возвращаемый им объект группы, поэтому вам нужно убедиться, что вы «сохранили» значение, когда вы присваиваете его переменной вашей группы в содержащем объекте. (или, возможно, проще, сделайте group сохраняющим свойством содержащегося в нем объекта и назначьте его с помощью метода доступа к свойству).