Как убрать это предупреждение из образца словника для iPhone? - PullRequest
0 голосов
/ 11 ноября 2010

Я использую пример из WordNik samples-sdk, я убил большинство утечек памяти, но есть предупреждение, что я не могу понять, что это такое и как это исправить!

Я попросил помощи в их группе Google, но, хотя они ответили практически на все вопросы, которые я задавал, они продолжают игнорировать этот вопрос, я надеюсь, что коллективный мозг stackoverflow решит проблему.

Этот файл генерирует предупреждение на iPad / iPhone - файл , где генерируется предупреждение.

Wordnik/WordService.m: In function '-[WordService fetchDefinitions:useCanonical:]':
Wordnik/WordService.m:52: warning: incompatible Objective-C types initializing 'struct Word *', expected 'struct Definition *'

Весь sdk-образец здесь .

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Я думаю, вы имели в виду ссылку на этот файл .В строке 52 мы находим следующее:

Definition * def = [[Definition alloc]init:dict];

Компилятор не может определить, ссылается ли метод init: на (Word *)init: из класса Word или (Definition *)init: из класса Definition.Он неправильно полагает, что это метод из класса Word, и поэтому предупреждает вас, что вы инициализируете переменную Definition * с объектом Word *.

Это разрешимо с помощью приведения типа, подобного этому:

Definition * def = [((Definition *)[Definition alloc]) init:dict];

Или даже:

Definition * def = (Definition *) [[Definition alloc]init:dict];

И нет, компилятор не настолько умен, чтобы понять, что [Definition alloc], вероятно, возвращает объект Definition.

(я не могуПомните, что тот, кто написал этот пример кода, очень небрежно относится к освобождению / авто-освобождению объектов и очевидной любви к утечкам памяти.В этом файле word никогда не освобождается, ни одно из значений, хранящихся в def, никогда не выпускаетсяи не definitions)

0 голосов
/ 12 ноября 2010

Просто догадка, но попробуйте добавить следующий оператор рядом с другими операторами #import в WordService.m:

#import "Definition.h"
0 голосов
/ 12 ноября 2010

Пример кода - это просто пример кода, не предназначенный для реального использования.Но Wordnik (для которого я работаю) работает над официальным Objective-C SDK.Он полностью поддерживает Wordnik API и обладает некоторыми приятными функциями, такими как пакетирование запросов.Если вы заинтересованы в раннем доступе, в этой теме есть информация:

http://groups.google.com/group/wordnik-api/browse_thread/thread/13bcfb6b53c7eaee

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