ObjC/Swift 开发 Ruby China iOS 过程中遇到的问题.

lainuo · 2012年03月08日 · 最后由 xuefei 回复于 2012年07月26日 · 10018 次阅读

发现这里有很多搞 Cocoa 的前辈,在开发 Ruby China iOS 过程中遇到了些问题,请赐教~~

  1. https://github.com/winfield/ruby-china-ios/pulls 请看下评价,到底要不要加上那个定义?

  2. https://github.com/winfield/ruby-china-ios/blob/master/Ruby%20China/RCITopicViewController.m#L126

这里我在 PullToRefresh 的时候,因为原来的 topics 自动被 release 掉了,我要在哪进行 removeObersever 呢,我尝试在上面贴出的代码那里 (refresh 方法) 中进行,但出错了。

非常感谢~~

匿名 #1 2012年03月08日

我是想说真没必要用 RestKit 这么重的东西,试试 AFNetworking

@bl0ckme 谢谢建议....但别离题啊喂....

看了下 AFNetworking, 似乎的确更加轻量级,我研究研究,谢谢~~

restkit 也可以用,这个但是没什么。看需要,不过就是这个东西有点大。 用 cocoapods 这个 gem 来管理 ios 项目的依赖库,比较方便。

topics 被 release 应该和 tableview 没关系,是你的内存管理上的问题吧。

@mobiwolf 我知道 topics 被 release 了,我想知道我应该在神马时候进行 removeObserver, 因为如果不 remove 掉,runtime 里一直有

An instance 0x6b4c720 of class RCITopic was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object.

topics 被 release 的那点,

  • (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray *)objects { self.topics = [objects copy]; NSLog(@"KKKKKK"); [self.topicTableView reloadData]; [self stopLoading]; } self.topics = [objects copy];这句会导致释放吧,

可以写个

  • (void)setTopics:(NSArray *)newTopics { }

在这个函数里当释放已有的 topics 时,removeObserver

@wx1452 恩,好地方,我试试

@wx1452 开始没想到放在 setter 里,我扔在 refresh 里了,还是放在 setter 里感觉最靠谱,谢谢~~

对于 1,首先不加上方法 不管能不能编译通过,我觉得加上会好一些,那样以约定的形式声明一个内部的私有方法,看着也顺眼啊。

#1 楼 @bl0ckme 大量使用 block 貌似会 retain 住调用方,导致很多对象无法释放。不知道你遇到过这个问题没。

lai 我觉得 Cocoa 是个不错的地方。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号