我正在使用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。
答案 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"