В моем случае, отключив любую оптимизацию -O1,2,3, выплюнул эту ошибку (пока -flto был выключен), я отследил ее до следующей проблемы.Я сделал класс Algo_three - чтобы я мог вернуть 3 значения из функции:
@interface Algo_three<T,V,W> : NSObject{
@public
T p_0;
V p_1;
W p_2;
}
+ (Algo_three<T,V,W>*) first:(T) f second:(V) s third:(W) t;
@end
И я использовал его следующим образом (в файле .m)
+(Algo_three<NSManagedObjectContext*,NSManagedObjectContext*,NSError*>*) CreateCDContexts: ....
{
return [Algo_three first:ui_managedObjectContext second:sync_managedObjectContext third:nil];
}
Получение 3 значений- это тоже хорошо ..
Algo_three<NSManagedObjectContext*,NSManagedObjectContext*,NSError*> * two_contexts = [not_important_class CreateCDContexts: ... ];
//and here is accessing
self->ui_context = (NSManagedObjectContext*) two_contexts->p_0; //getting 1st value
self->sync_context = (NSManagedObjectContext*) two_contexts->p_1; //2nd value
Комментирование последних двух строк устранило ошибку!Поэтому я добавил три свойства доступа к классу Algo_three, и это сработало.Класс Algo_three выглядит следующим образом (.h).
@interface Algo_three<T,V,W> : NSObject{
@public
T p_0;
V p_1;
W p_2;
}
@property (strong,nonatomic) T first;
@property (strong,nonatomic) V second;
@property (strong,nonatomic) W third;
+ (Algo_three<T,V,W>*) first:(T) f second:(V) s third:(W) t;
@end
Реализация этих свойств (.m):
- (id) first{
return p_0;
}
-(void) setFirst:(id) obj{
self->p_0 = obj;
}
- (id) second{
return p_1;
}
-(void) setSecond:(id) obj{
self->p_1 = obj;
}
- (id) third{
return p_2;
}
-(void) setThird:(id) obj{
self->p_2 = obj;
}
и вместо -> p_0 доступ осуществляется через свойства .first, .second
self->ui_context = (NSManagedObjectContext*) two_contexts.first;
self->sync_context = (NSManagedObjectContext*) two_contexts.second;
Наконец, я признаю - этот компилятор сказал мне, в каком файле находится ошибка, хотя и не очень ясно.XCode 10.1 (10B61).Я внимательно изучил файл, который был непосредственно перед ошибкой компилятора, - я подтвердил его, запустив архив из командной строки:
xcodebuild -scheme MY_PROJ archive