您的位置:首页 > 其它

#pragma

2015-06-04 23:56 190 查看
茶歇时间,随手作点笔记。记录#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用法的知识.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: