Несовместимые типы указателей, присваиваемые "NSMutableData *" из "NSData *"
Я получаю ОШИБКУ
"Несовместимые типы указателей, присваиваемые" NSMutableData * "из" NSData * ""
Насколько мне известно, это должно быть предупреждение, а не ошибка. Так что я думаю, есть ли проблема с настройками моего проекта XCode?
Вот изображение ошибки.
3 ответа
Это должно быть ошибкой, потому что она вылетает во время выполнения, когда кто-то получает явно изменяемые данные и пытается их изменить.
По сути, вы не должны делать то, что делаете. использование mutableCopy
чтобы убедиться, что данные изменчивы, или, когда вы вызываете конструктор, убедитесь, что вы вызываете их NSMutableData
,
Похоже, ваш self.activeDownload
объявляется как тип NSMutableData, поэтому компилятор сообщает вам, что назначение недопустимо (т.е. вы не можете изменить данные после назначения). Просто измените NSData
в NSMutableData
,
self.activeDownload = [NSMutableData dataWithContentsOfFile:filePath];
Вам повезло, что это ошибка. Только совершенно неопытные программисты могут сделать это просто предупреждением. Если в вашем коде есть ошибка, вы бы предпочли, чтобы компилятор сообщал вам, или что вы должны начать отладку?
NSMutableData означает, что объект может быть изменен. Назначение объекта NSData означает, что ваш код теперь думает, что объект можно изменить, но если вы попытаетесь, вы получите сбой во время выполнения. Это действительно то, что вы хотите?