iphone – 你在编写Objective-C和Cocoa时使用的最佳实践是什么?

iphone – 你在编写Objective-C和Cocoa时使用的最佳实践是什么?,第1张

概述我知道 HIG(这是相当方便!),但你编写Objective-C时使用的编程实践,更具体地说,当使用Cocoa(或CocoaTouch)。 有一些事情,我已经开始做,我不认为是标准的: 1)随着属性的出现,我不再使用“_”前缀“私有”类变量。毕竟,如果一个变量可以被其他类访问,应该没有一个属性呢?我总是不喜欢“_”前缀使代码更丑陋,现在我可以离开它。 2)说到私人东西,我更喜欢把.m文件中的私有方 我知道 HIG(这是相当方便!),但你编写Objective-C时使用的编程实践,更具体地说,当使用Cocoa(或Cocoatouch)。解决方法 有一些事情,我已经开始做,我不认为是标准的:

1)随着属性的出现,我不再使用“_”前缀“私有”类变量。毕竟,如果一个变量可以被其他类访问,应该没有一个属性呢?我总是不喜欢“_”前缀使代码更丑陋,现在我可以离开它。

2)说到私人东西,我更喜欢把.m文件中的私有方法定义放在类扩展中,如:

#import "MyClass.h"@interface MyClass ()- (voID) someMethod;- (voID) someOtherMethod;@end@implementation MyClass

为什么杂乱的.h文件与外人不应该关心的事情? empty()适用于.m文件中的私有类别,如果不实现声明的方法,则会发出编译警告。

3)我已经把dealloc放在.m文件的顶部,就在@synthesize指令下面。不应该你dealloc是在你想在一个类中想到的事情的列表的顶部?这在iPhone的环境中尤其如此。

3.5)在表格单元格中,使每个元素(包括单元格本身)对于性能是不透明的。这意味着在一切中设置适当的背景颜色。

3.6)当使用NSURLConnection时,作为一个规则,你可能希望实现委托方法:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection                  willCacheResponse:(NSCachedURLResponse *)cachedResponse{      return nil;}

我发现大多数Web调用都是非常奇异的,它是更多的例外,比你想要的响应缓存,特别是对于Web服务调用的规则。实现如图所示的方法禁用缓存响应。

还有一些好的iPhone的具体提示从Joseph MattIEllo(在iPhone邮件列表中收到)。还有更多,但这些是最普遍有用的我想(注意,一些位现在已被略微编辑从原来包括响应中提供的详细信息):

4)如果你必须使用双精度,例如在使用CoreLocation时。确保你结束你的常量在’f’,使gcc存储为浮点。

float val = somefloat * 2.2f;

这是最重要的,当somefloat可能实际上是一个双,你不需要混合模式数学,因为你失去在存储上的’val’的精度。虽然iPhone上的硬件支持浮点数,但与单精度相比,执行双精度算术可能需要更多时间。参考文献:

> Double vs float on the iPhone
> iPhone/iPad double precision math

在较老的手机上,假定计算以相同的速度运行,但是在寄存器中可以具有比双精度更多的单精度分量,因此对于许多计算,单精度将最终更快。

5)将属性设置为非原子。默认情况下它们是原子的,并且在合成时,将创建信号量代码以防止多线程问题。 99%的人可能不需要担心这一点,并且当设置为非原子时,代码更少膨胀和更高的记忆效率。

6)sqlite可以是一个非常,非常快速的方式来缓存大数据集。地图应用程序实例可以将其图块缓存到sqlite文件中。最昂贵的部分是磁盘I / O。通过发送BEGIN避免许多小写;和COMMIT;大块之间。我们使用2秒定时器,例如在每次新提交时重置。当它到期时,我们发送COMMIT; ,这将导致所有的写入进入一个大块。 sqlite将事务数据存储到磁盘,并执行此 *** 作开始/结束包装避免创建许多事务文件,将所有事务分组到一个文件中。

此外,如果它在你的主线程,sql会阻塞你的GUI。如果您有一个很长的查询,最好将查询存储为静态对象,并在单独的线程上运行sql。确保在@synchronize(){}块中包装任何修改数据库的查询字符串。对于简短的查询,只需在主线程上留下更方便的东西。

更多sqlite优化提示在这里,虽然文档显示过时很多点可能还是不错的;

http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html

总结

以上是内存溢出为你收集整理的iphone – 你在编写Objective-C和Cocoa时使用的最佳实践是什么?全部内容,希望文章能够帮你解决iphone – 你在编写Objective-C和Cocoa时使用的最佳实践是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1050618.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存