#pragma

        茶歇时间,随手作点笔记。记录#pragma在xocde中的两个主要任务。本人是小辈,对于IOS知识的掌握也只是略懂一二,请大家勿吐口水。小辈恭送大神飘过。在这先感谢支持我博文的朋友们,谢谢你们!

        #pragma声明主要完成两个主要任务:整理代码和防止编译器警告。打开xcode,密密麻麻的代码让人无从下手,缺少惯性和内部一致性的代码使得一个项目难以维持和协作,看起来真让人头疼。我们可以使用#pragma mark整理代码,例如:

#pragma mark - UIViewController 
- (void)viewDidLoad 
{ 
  ... 
} 
#pragma mark - IBAction 
- (IBAction)cancel:(id)sender 
{  
 ... 
}

使用#pragma mark来将代码分割成逻辑区块,不仅使得阅读代码变得容易,而且在xcode源导航也便于寻找。有一个好的惯例,将各类子类方法根据它们的超类组合放在一起,比如一个NSInputStream子类放在NSStream的组里,如IBAction对应的通知、选择器等之类的方法,建议有他们的各自的区块,以便于寻找。

另外一面,用#pragma声明防止来自编译器或者静态分析器的警告。我们经常会使用到第三方代码,如果第三方代码编译时生成大量的警告,那是让人非常头疼的事情,这时候#pragma就派上用场了:

        

// completionBlock在AFURLConnectionOperation中被手动的设置为nil来打破保留周期。

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Warc-retain-cycles"  
    self.completionBlock = ^ {   
          ...  
}; 
#pragma clang diagnostic pop
本例来自AFNetworking,通过使用#pragma clang diagnostic push/pop来忽视特定的警告。你可以在 读到关于更多#pragma的LLVM用法的知识.


你可能感兴趣的:(#pragma)