РЕДАКТИРОВАТЬ: проблема была с утверждением, как люди указали ниже. Спасибо за помощь!
У меня есть набор enum, который я пытаюсь приравнять, но по какой-то причине он не работает. Он объявлен так:
typedef NS_ENUM(NSUInteger, ExUnitTypes) {
kuNilWorkUnit,
kuDistanceInMeters,
//end
kuUndefined
};
И я использую его здесь:
+(NSString*) ExUnitDescription: (ExUnitTypes) exUnit
{
if (exUnit == kuNilWorkUnit)
{
assert("error with units");
}
///.... more stuff
}
Xcode не запускает мое утверждение. РЕДАКТИРОВАТЬ: утверждение предназначено только для тестирования. Я также использовал NSLog. Условие не оценивается как истинное, хотя значение явно равно kuNilWorkUnit.
У кого-нибудь есть предложения или идеи о том, что я делаю неправильно?
false
или0
и макросassert()
. В любом случае строковый литерал никогда не превратится в указательNULL
, поэтому утверждениеassert("arbitrary string literal here");
никогда не сработает. Теперь вам нужно будет прочитать документациюassert()
, чтобы понять, что не так и как это решить. Дополнительные рекомендуемые материалы для чтения (внимательно):man 3 abort
,man 3 exit
и хороший учебник по операторуif
в C. - person   schedule 06.12.2013"error with units"
, которое не оценивается как false. - person   schedule 06.12.2013