Сопоставление аргументов OCMock по двойному указателю

Для такого селектора:

-(void) callFoo:(NSError**)error;

Как я могу заставить ожидание, подобное приведенному ниже, работать? ARC не нравятся такие ожидания, и я не хочу отключать ARC для всего файла модульного теста!

[[mockObject expect] callFoo:[OCMArg anyPointer]];

person Ray    schedule 06.03.2013    source источник
comment
когда вы говорите, что ARC не нравится..., какую ошибку или предупреждение компилятора вы видите?   -  person Michael Dautermann    schedule 07.03.2013


Ответы (2)


Часто нет другого способа, кроме как написать селектор-оболочку, который нравится OCMock, когда у OCMock возникают проблемы с определенным селектором. Уродливый хак, но его можно обойти, можно использовать ARC, а установка занимает меньше минуты.

К сожалению, я постоянно использую его с OCMock.

person DogpatchTech    schedule 06.03.2013
comment
Что вы подразумеваете под селектором оболочки в этом контексте? - person Christopher Pickslay; 07.03.2013
comment
Я добавляю функцию, которая оборачивает вызов, и чьи аргументы можно легко высмеять, в отличие от оборачиваемой функции... - person DogpatchTech; 03.04.2013

anyPointer возвращает void *, но в ARC двойные указатели на объекты Objective-C неявно уточняются с помощью __autoreleasing.

Попробуйте изменить его на:

[[mockObject expect] callFoo:(NSError * __autoreleasing *)[OCMArg anyPointer]];
person Christopher Pickslay    schedule 07.03.2013
comment
есть еще [OCMArg anyObjectRef] - person Hlung; 14.11.2015