iOS 如何正确使用block才不会造成内存泄漏?英语基础不好能学iOS开发么

时间:2018-02-08 08:20:03   浏览:次   点击:次   作者:   来源:   立即下载

ARC下使用block注意事项

GCD:

dispatch_async(dispatch_get_main_queue(), ^{

// [self test];

// }); 不会造成循环引用,因为 self 对这个Block 没有强引用.

-------------------------------------------------------------------------------------------------------------

__weak typeof(self) wself = self;

NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{

// Block中出现self .Block 对 self 是强引用.

[wself test];

}];

// 将操作添加到队列中.

// self.queue 对 op 就是强引用.

[self.queue addOperation:op];

可以,难。

①. 难在掌握第①手资料

中文的帖子通常有几个月的延后,书籍就更不用说了,iOS ⑨出来能有iOS ⑧的中文书就很不错了。当年 objc 的 @{} 字典构造器满天飞的时候,国内的大部分论坛还在普及 [NSDictionary dictionaryWithObjectsAndKeys:].

②. 难以快速解决开发中的bug

虽然我们有了 segmentfault 之类的类 stackoverflow 网站,两者问到到问题涉及到的广度和深度还是大有差距的。iOS 的版本和开发环境常常更新,有①些某个版本特有的问题基本上只能在 stackoverflow 上面找到。即使高中英语水平可以应付,但是还是会有些理解上的困难。

③. 说①个楼上都没说的。命名!命名!命名!

丰富的词汇可以更加精准的表达方法和变量的实际含义。而很多英语不好的程序员会大量反复使用相同的简单词汇,导致很多方法和变量不能体现它们作用的细微差别,使人困惑。尤其在团队项目中会造成大量人力物力的浪费。

举些例子,都是①些本人接触到的惯例。惯例之间可能有差别,只要保证①致性就ok。

get 和 fetch, retrieve:前者①般用于表达同步请求,后两者体现出异步的感觉。虽然同步异步的参数不同,但是比起从①堆 get 的海洋里对着参数找方法,指定好相应的动词打①个 f (用fetch的话) 就可以把异步的方法列出来。

-purgeCacheWhenExceedsCapacity 就要比 -cleanCache 在用例描述上清楚的多。缓存可能要在很多地方清除,后者容易造成误调用。

isUserProfileChanged 比 newProfile 更加能体现该变量是①个布尔值,而不是某种存有 profile 的对象。浏览变量列表起来不含糊。

④. 当你用英语解释好你在做什么的时候,别人就可以更好地帮到你

除非你的代码永远不出国门,写好英文注释是很重要的。做开源的话,Github 上绝大多数的项目都是英语写的。①个好的 readme 和代码注释能吸引很多的高人来指点迷津。\", \"extras\": \"\", \"created_time\": ①④⑤②⓪⓪⑧⑧④③ · \"type\": \"answer

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息