Because the array is not mutable. You have specified this in the @property definition but that doesn't make it true (if the storyboard unarchive sets it to a non-mutable array).
After the view is loaded I guess you can say:
self.buttonsArray = [self.buttonsArray mutableCopy];
and then your code should work.