У меня есть UICollectionView которого CollectionView: numberOfItemsInSection: определяется следующим образом:Расхождения между профилями отладки/выпуска при подсчете элементов из списка свойств для numberOfItemsInSection для UICollectionView
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.contents.count;
}
self.contents лениво распределены следующим образом:
- (NSArray *)contents
{
if (!_contents) {
_contents = [[XYZSharedMemoryStore sharedStore] clContents];
}
return _contents;
}
clContents возвращает NSArray следующим образом:
- (NSArray *)clContents
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"cl_contents" ofType:@"plist"];
NSArray *products = [[NSArray alloc] initWithContentsOfFile:path];
return products;
}
XYZSharedMemoryStore одноэлементно определяется следующим образом:
+ (id)sharedStore
{
static XYZSharedMemoryStore *sharedStore = nil;
if (!sharedStore) {
sharedStore = [[super allocWithZone:NULL] init];
}
return sharedStore;
}
+ (id)allocWithZone:(NSZone *)zone
{
return [self sharedStore];
}
- (id)init
{
self = [super init];
if (self) {
// STUFF
}
return self;
}
Going полный круг, проблема у меня в том, что self.contents.count в CollectionView: numberOfItemsInSection: возвращает 0, когда я нахожусь в профиль высвобождения и правильное число (10) в режиме отладки, поэтому в профиле выпуска мой UICollectionView не отображает никаких ячеек. Профили находятся в состоянии по умолчанию, в котором Xcode создает их.
Любые идеи, что может быть здесь?
Попытайтесь найти свойство уровня оптимизации в настройках сборки для своей цели и переключите его для профиля отладки на «-O» (то же, что и для Release). Если проблема возникнет в режиме отладки, я думаю, что это проблема с памятью. –
Хорошо, это определенно заставляет профиль отладки вести себя одинаково. Говорят, память связана? –
Да, поведение ARC может быть немного отличающимся для более низкого уровня оптимизации и может не деблокировать вещи должным образом (в надлежащее время). Промежуточный счет равен 0, потому что self.contents равен нулю. Пожалуйста, убедитесь, что с опцией уровня, установленным на -O в debug, и это даст нам еще один ключ :) –