Линия - это shadowImage. Его можно просто удалить, применив пустой UIImage. В соответствии с документацией, вы также должны установить пользовательское фоновое изображение :
- (void)viewDidLoad {
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [[UIImage alloc ]init];
}
. Имейте в виду: прозрачность не будет работать, если вы установите собственные изображения, если вам это нужно.
Вы можете использовать такую функцию, чтобы напечатать байты:
void print_bytes(const void *object, size_t size)
{
// This is for C++; in C just drop the static_cast<>() and assign.
const unsigned char * const bytes = static_cast<const unsigned char *>(object);
size_t i;
printf("[ ");
for(i = 0; i < size; i++)
{
printf("%02x ", bytes[i]);
}
printf("]\n");
}
Использование будет выглядеть так, например:
int x = 37;
float y = 3.14;
print_bytes(&x, sizeof x);
print_bytes(&y, sizeof y);
Это показывает байты как необработанные числовые значения в шестнадцатеричный формат, который обычно используется для таких «дампов памяти».
На случайной (возможно, даже виртуальной, насколько я знаю) машине Linux с процессором «Intel (R) Xeon (R)» это печатает:
[ 25 00 00 00 ] [ c3 f5 48 40 ]
Это также наглядно демонстрирует, что процессоры семейства Intel действительно с прямым порядком байтов .
Или, если у вас есть библиотека boost и вы хотите использовать лямбда-вычисления, вы можете сделать это следующим образом ...
template<class T>
void bytePattern( const T& object )
{
typedef unsigned char byte_type;
typedef const byte_type* iterator;
std::cout << "Object type:" << typeid( T ).name() << std::hex;
std::for_each(
reinterpret_cast<iterator>(&object),
reinterpret_cast<iterator>(&object) + sizeof(T),
std::cout << constant(' ') << ll_static_cast<int>(_1 )&&0xFF );
std::cout << "\n";
}
попробуйте это:
MyClass* myObj = new MyClass();
int size=sizeof(*myObj);
int i;
char* ptr = obj; // closest approximation to byte
for( i=0; i<size; i++ )
std::cout << *ptr << endl;
Ура,
младший.
Большинство (визуальных) отладчиков имеют опцию «Просмотр памяти». IIRC, тот, что в Xcode, довольно прост, просто показывает байты в HEX и ASCII с переменной длиной строки. Visual Studio (Debug -> Windows-> Память в Vs2008) может форматировать шестнадцатеричную часть как целые числа различной длины или с плавающей запятой, изменять порядок байтов и отображать текст ANSI или UNICODE. Вы также можете установить любое число для ширины окна (I Думаю, xcode позволяет вам использовать только 64 байта). Другая IDE, которую я использую здесь, на работе, имеет много опций, хотя и не так много, как VS.
Если вы используете gcc и X, вы можете использовать отладчик DDD , чтобы нарисовать красивые картинки вашего структуры данных для вас.