1鼻由、在類的頭文件中盡量少引入其他頭文件
能用@class就用寇仓,可以降低類之間的耦合
2、多用字面量語法器联,少用與之等價的方法二汛,特別是字典、數(shù)組
NSNumber *num = [[NSNumber alloc] initWithInt:1]; ? ?-->不好
NSNumber *num1 = @1; ? -->OK
3拨拓、多用類型常量肴颊,少用#define預(yù)處理指令
#define ANIMATION_DURATION 0.3 -->不好
static const NSTimeInterval kAnimationDuration = 0.3; ?-->OK
.h中
extern NSString *const XUJStringConstant;
.m中
NSString *const XUJStringConstant = @"VALUE";
4、用枚舉表示狀態(tài)渣磷、選項(xiàng)婿着、狀態(tài)碼
//NS_ENUM,定義狀態(tài)等普通枚舉
typedef NS_ENUM(NSUInteger, XUJState) {
XUJStateOK = 0,
XUJStateError,
XUJStateUnknow
};
//NS_OPTIONS,定義選項(xiàng)
typedef NS_OPTIONS(NSUInteger, XUJDirection) {
XUJDirectionNone = 0,
XUJDirectionTop = 1 << 0,
XUJDirectionLeft = 1 << 1,
XUJDirectionRight = 1 << 2,
XUJDirectionBottom = 1 << 3
};
凡是需要以按位或操作來組合的枚舉都應(yīng)使用NS_OPTIONS,不需要互相組合用NS_ENUM竟宋。
5提完、讀取實(shí)例變量時采用直接訪問形式,設(shè)置實(shí)例變量時通過屬性設(shè)置
self.name = @"smile";
NSLog(@"%@", _name);
6袜硫、用前綴避免命名空間沖突(應(yīng)該是3個字母)
XUJViewController
7氯葬、提供全能初始化方法 : NS_DESIGNATED_INITIALIZER
8、實(shí)現(xiàn)description方法
- (NSString *)description {
return [NSString stringWithFormat:@"<%@:%p, %@>",
[self class],
self,
@{@"name:": _name,
@"firstName:": _firstName}
];
}
9婉陷、.h中屬性外面只需要調(diào)用情況帚称,將它設(shè)置成readonly,在.m中類目中改成readwrite.
10、為私有方法加前綴
11秽澳、oc中很少用try-catch(會造成內(nèi)存泄漏)闯睹,要用NSError
12、委托屬性用weak(也不提倡用unsafe_unretained)
13担神、將類的視線代碼分散到便于管理的數(shù)個分類中
14楼吃、為第三方類的分類名稱加前綴
15、在dealloc中釋放引用(CF)并解除監(jiān)聽
16妄讯、用@autoreleasepool降低內(nèi)存峰值
NSArray *array = @[@1, @2, @3, @4];
NSMutableArray *people = [NSMutableArray new];
for (NSNumber *num in array) {
@autoreleasepool {
if (num.integerValue >= 2) {
[people addObject:num];
}}
17孩锡、多用塊枚舉,少用for循環(huán)
NSArray *array = @[@1, @2, @3, @4];
[array enumerateObjectsUsingBlock:^(NSNumber *num, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@", num);
}];