Я получил вышеуказанную ошибку при переносе в ARC. Вот код:Неявное преобразование типа указателя не Objective-C void * в NSString * __ strong * не разрешено с помощью ARC
static NSString *cashBalanceKeyPath = @"test";
...
[xxx forKeyPath:cashBalanceKeyPath options:NSKeyValueObservingOptionNew context:&cashBalanceKeyPath];
...
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if (&cashBalanceKeyPath == context) < error here
{
...
}
Когда я использовал мост:
if (&cashBalanceKeyPath == (__bridge NSString *)context)
я получил ошибку: Comparison of distinct pointer types (NSString *__strong* and NSString *)
Как я могу сделать преобразование? Заранее спасибо.
Было ли сравнение даже с MRC? – Sulthan
Да. Сравнение отлично работает с MRC (без ARC). Это может быть неявное преобразование. – user2543991
Исходное сравнение '& cashBalanceKeyPath == context' выглядит нормально даже в ARC. Вы не сравниваете какие-либо объекты, даже не добавляете объекты в простые указатели. Какова исходная ошибка компиляции? – Tricertops