Почему происходит сбой: stringByAppendingFormat - PullRequest
1 голос
/ 01 июня 2010

Мой код падает при этой функции (в строкеByAppendingFormat: с ошибкой objc_msgSend() selector name: stringByAppendingFormat).

Это та строка:

    // imagesPath = ...iPhone Simulator/4.0/Applications/NUMBERS/Documents/images
UIImage *image = [[UIImage alloc] initWithContentsOfFile:[imagesPath stringByAppendingFormat:@"/%d.png", [[self.postsArrayID objectAtIndex:row] intValue]]];

Может ли это быть как-то связано с сохранением объектов?

Спасибо:)

Ответы [ 3 ]

1 голос
/ 01 июня 2010

Почему бы не использовать stringByAppendingPathComponent:? И, конечно же, imagesPath не является ........../NUMBERS/images? Разве это не будет ................/<random ID>/images?

1 голос
/ 02 июня 2010
> rootPath =
> [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
> NSUserDomainMask, YES)
> objectAtIndex:0]; imagesPath =
> [rootPath
> stringByAppendingPathComponent:@"/images/"];

Хах! Установка свойства и настройка значение с помощью self.imagesPath = ... исправлено Это. Obj-c так сложно понять иногда ...

Методы, которые вы использовали для установки путей получения, автоматически высвобождаются, поэтому, когда вы попытались получить к ним доступ позже, они уже умерли. Использование свойства self.imagesPath сохранит данные (вы указали их как (неатомные, сохраните) - так что они будут сохраняться до тех пор, пока вы не освободите их (или не назначите что-либо еще, используя свойство доступа self.imagesPath = ....;

Настоятельно рекомендуется руководство по управлению памятью от Apple, хотя его все равно легко потерпеть неудачу, прочитав его пару раз. : -)

1 голос
/ 01 июня 2010

Обычно сбой в objc_msgSend() подразумевает, что сообщение, передаваемое объекту (в данном случае stringByAppendingFormat), не указано для этого объекта. Быстрое поиск в Google показывает, что многие верхние страницы для stringByAppendingFormat довольно устарели, выводя, что API, возможно, не рекомендуется в пользу чего-то другого.+[NSString stringWithFormat:] будет жизнеспособной альтернативой для вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...