就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
10年前关闭。
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。
我知道HIG (这很方便!),但是在编写 Objective-C 时,尤其是在使用 Cocoa(或 CocoaTouch)时,您使用了哪些编程实践。
最佳答案
我已经开始做一些我认为不是标准的事情:
1)随着属性的出现,我不再使用“_”作为“私有(private)”类变量的前缀。毕竟,如果一个变量可以被其他类访问,不应该有一个属性吗?我一直不喜欢“_”前缀让代码更难看,现在我可以省略它了。
2)说到私有(private)的东西,我更喜欢将私有(private)方法定义放在 .m 文件中的类扩展中,如下所示:
#import "MyClass.h"
@interface MyClass ()
- (void) someMethod;
- (void) someOtherMethod;
@end
@implementation MyClass
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
return nil;
}
float val = someFloat * 2.2f;
someFloat
时最为重要。实际上可能是 double 数,您不需要混合模式数学,因为您在存储的“val”中失去了精度。虽然 iPhone 的硬件支持浮点数,但与单精度相比,执行 double 算术可能仍需要更多时间。引用:nonatomic
.他们是 atomic
默认情况下,在综合时,将创建信号量代码以防止多线程问题。 99% 的人可能不需要担心这一点,并且当设置为非原子时,代码不会那么臃肿并且内存效率更高。BEGIN;
避免许多小写操作和 COMMIT;
大块之间。例如,我们使用 2 秒计时器,在每次新提交时重置。当它过期时,我们发送 COMMIT; ,这会导致您的所有写入都集中在一大块中。 SQLite 将事务数据存储到磁盘并执行此开始/结束包装避免创建许多事务文件,将所有事务分组到一个文件中。@synchronize() {}
中包含任何修改数据库查询字符串的内容。 block 。对于简短的查询,只需将内容留在主线程上即可更方便。https://stackoverflow.com/questions/155964/