如何从iPhone的wordnik示例中删除此警告?

时间:2010-11-11 20:14:30

标签: iphone objective-c ipad

我正在使用WordNik samples-sdk中的一个示例,我杀死了大多数内存泄漏,但是有一个警告,我无法理解它是什么以及如何解决它!

我已经向他们的Google小组寻求过帮助,但他们几乎回答了我提出的每个问题,他们一直忽略了这个问题,我希望stackoverflow的集体大脑解决问题。

此文件在iPad / iPhone上生成警告 - file,其中会生成警告。

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

整个sdk样本是here

3 个答案:

答案 0 :(得分:2)

我认为您打算链接到this file。在第52行,我们发现:

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

编译器无法确定init:方法是指来自Word类的(Word *)init:还是来自Definition类的(Definition *)init:。它错误地猜测它是来自Word类的方法,因此会警告您使用Word *对象初始化Definition *变量。

它可以像这样的演员解决:

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

甚至:

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

不,编译器不够聪明,不能意识到[Definition alloc]可能会返回一个Definition对象。

(我不禁要提到,编写该示例代码的人对发布/自动释放对象有一种非常随意的态度,并且明显喜欢内存泄漏。在那个文件中word永远不会被释放,没有一个存储在def中的值永远不会被释放,也不会definitions

答案 1 :(得分:0)

示例代码就是示例代码,不适合实际使用。但Wordnik(我为之工作)正在开发一个官方的Objective-C SDK。它完全支持Wordnik API,并具有一些很好的功能,如请求批处理。如果您对早期访问感兴趣,请参阅此主题中的信息:

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

答案 2 :(得分:0)

只是预感,但尝试在WordService.m中的其他#import语句附近添加以下语句:

#import "Definition.h"