- -(EvalPerform*)preInitializeWith:(EvalCreationparamters*)params andPerformType:(NSString*)performType andMainPerform:(EvalPerform*)evalPerform
- {
- TEvalCreationParamters * tEvalParams = (TEvalCreationParamters *)params;
- ASSERT(tEvalParams !=nil);
- //create Main Perform
- if ([performType isEqualToString:DailyPlanPerformType.MAIN]) {
- return [self createMainPerform:tEvalParams];
- }
- //create QC Perform
- else if([performType isEqualToString:DailyPlanPerformType.T])
- {
- return [self createTPerform:tEvalParams];
- }
- //create FS Perform
- else if([performType isEqualToString:DailyPlanPerformType.FS])
- {
- return [self createFSPerform:tEvalParams];
- }
- //create DW Perform
- else if ([performType isEqualToString:DailyPlanPerformType.DW])
- {
- return [self createDWPerform:tEvalParams];
- }
- //create CO Perform
- else if ([performType isEqualToString:DailyPlanPerformType.CO])
- {
- return [self createDWPerform:tEvalParams];
- }
- else
- {
- ASSERT(false);
- return nil;
- }
- }
尤其注意 ASSERT(tEvalParams !=nil); 这一句话,,老大说,当一个变量传进来的时候,你要判断一下这个变量是否为空,当运行时如果变量为空,项目会崩溃并且自动定位到ASSERT(tEvalParams !=nil);这一句,当项目比较大的时候就显得非常有用了,不用单点一步一步去跟踪到底错在哪里了,,所以写代码的时候最好要养成这个写ASSERT这个好习惯!
- #undef ASSERT
- #define ASSERT( __expr ) BeeAssert( (__expr) ? YES : NO, #__expr, __PRETTY_FUNCTION__, __FILE__, __LINE__ )
- void BeeAssert( BOOL flag, const charchar * expr, const charchar * function, const charchar * file, int line )
- {
- #if defined(__BEE_ASSERT__) && __BEE_ASSERT__
- if ( NO == flag )
- {
- if ( __enabled )
- {
- ERROR( @"assertion failed @ '%s' #%d\n%s\n{\n\t...\n\t%s\n\t...\n}", file, line, function, expr );
- abort();
- }
- }
- #endif // #if defined(__BEE_ASSERT__) && __BEE_ASSERT__
- }