2012-04-03 1 views
7

Я следую инструкциям от http://gabriel.github.com/gh-unit/docs/appledoc_include/guide_testing.html. Проблема в том, что мой проект использует ARC, а GHUnit - нет. Я справился с предыдущими ошибками, но теперь мне нужно сделать модемный бросок, который я никогда не использовал, и я потерялся.ARC, мостовой литой и GHUnit

NSString *string1 = @"a string"; 
GHAssertNotNULL(string1, nil); //error here 

Описание ошибки: Неявное преобразование Objective-C типа указателя «NSString *» для C типа указателя «сопзИте пустоту *» требует мостовом броска.

Любая помощь приветствуется :)

ответ

11

Поскольку вы сравниваете NSString, вы должны использовать проверку GHAssertNotNil. См. NULL vs nil in Objective-C для получения дополнительной информации.

Так что ваш пример должен прочитать:

NSString *string1 = @"a string"; 
GHAssertNotNil(string1, nil); 

Я также заметил в моих ARC проектов с использованием GHUnit что main.m файл GHUnit необходим флаг компоновщика в

-fno-objc-arc 

, как было предложено ранее ,

+0

Хороший улов. В текущей документации просто используется GHAssertNotNull вместо GHAssertNotNil, что вызывает проблемы с кодом ARC. –

1

можно исключить только GHUnit файлы с автоматикой ссылающихся (ARC) от вашего проекта, перейдя в Фаза сборки -> Источники Compile

, а затем дважды щелкните на файлы из GHUnit, появится окно, вставить в него следующее

-fno-objc-arc 

Это позволит исключить файлы из GHUnit с автоматикой ссылок (ARC).

+1

Это хорошая идея, пока GHUnit не реализует ARC. Однако я все еще хочу знать, как делать эти мосты, пытаясь получить эту информацию из некоторых ARC-ссылок. – Vive