Xcode常用的技巧总结

在Xcode中我们经常会有一些公用的模式,这些模式在所有的工程中基本上都可以通用。在某种程度上提高了我们的工作效率。

1.Release时禁用NSLog语句,NSLog是我们经常用到的调试语句,在debug时我们会频繁的使用NSLog语句来帮助我们的调试,但是当我们发布版本时,发现程序中的NSlog语句很多,不可能全部都一一注释掉,在release版本时我们使用过多的NSLog会影响程序的性能。所以我们需要在release时禁用NSLog语句,在debug时开启NSLog语句。在我们创建一个工程时系统会自动创建一个宏DEBUG标志。


我们可以在程序使用这个宏来判断当前工程的版本。所以我们会通常在预编译文件.pch中加入代码来进行判断。

#if DEBUG

#define NSLog(...) NSLog(__VA_ARGS__)

#else

#define NSLog(...)

#endif


2.创建类的单例模式,我们经常需要用到类的单例对象,由于对象的创建时非常消耗资源,所以我们经常会遇到单例对象。下面的宏定义可以帮我们快速的创建一个类的单例方法来返回改类的单例对象。

#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

\

static classname *shared##classname = nil; \

\

+ (classname *)shared##classname \

{ \

@synchronized(self) \

{ \

if (shared##classname == nil) \

{ \

shared##classname = [[self alloc] init]; \

} \

} \

\

return shared##classname; \

} \

\

+ (id)allocWithZone:(NSZone *)zone \

{ \

@synchronized(self) \

{ \

if (shared##classname == nil) \

{ \

shared##classname = [super allocWithZone:zone]; \

return shared##classname; \

} \

} \

\

return nil; \

} \

\

- (id)copyWithZone:(NSZone *)zone \

{ \

return self; \

} \

\

- (id)retain \

{ \

return self; \

} \

\

- (NSUInteger)retainCount \

{ \

return NSUIntegerMax; \

} \

\

- (void)release \

{ \

} \

\

- (id)autorelease \

{ \

return self; \

}


3.在debug模式下,开启常用的调试设置以便捕捉EXEC_BAS_ACCESS,SIGBAT等常见的错误信息。




4.编译出现某个头文件找不到,我们需要到header search path看看我们的search path是否正确。



5.如果我们引用的外部文件不支持ARC或者引用的文件版本过老不支持ARC,这就需要ARC和非ARC混编,我们需要到build phrase栏目下面将我们不进行ARC的源文件进行设置。



6.如果我们一个工程需要有多个分发的版本,我们一般会在原有的TARGETS的基础上再复制(Duplicate)一份。我们就不可以选择不同target进行编译分发。



7.为了便于发布的版本的crash的bug的跟踪,我们可以在应用中记录日志,来跟踪记录异常日志。或者应用的crash都有系统记录的crash报告,但是报告中的内容都是一些十六进制的地址,不是我们对应的code中的代码,所以我们在每发布一个版本的时候,需要保留该版本的dSYM文件。使用symbolicatecrash工具来进行转换。

Symbolicatecrash .crash .dSYM > aa.log


8.组织和搜罗一些常用的方法和宏来当作工具类,在我们使用时方便直接调用。

如:

static inline NSString* NonNilString(NSString* str) {

return str ? str : @"";

}


static inline id NonNilObject(id obj) {

return obj ? obj : [NSNull null];

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值