iOS特别技能点总结4

iOS-获取的NSDate date时间与实际相差8个小时解决方案

NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date  dateByAddingTimeInterval: interval]; 

库管理工具

Cocoapods安装步骤

1.升级Ruby环境 sudo gem update – system

2.安装CocoaPods时我们要访问cocoapods.org,用淘宝的RubyGems镜像来代替官方版本,执行以下命令:

$ gem sources --remove https://rubygems.org/
//等有反应之后再敲入以下命令
$ gem sources -a https://ruby.taobao.org/

视图控制器的父-子关系

addChildViewController 优点

1.页面逻辑很清晰,相应的View对应相应的ViewController。
2.当某个子View没有显示时,将不会被Load,减少了内存的使用。
3.当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。

storyboard之prepareForSegue

storyboard 解决的是页面之间的跳转问题。 一个颇为复杂的页面跳转,一旦使用了storyboard,就会四两拨千斤。你只需简单地拖拽,即可完成UIViewController 之间的跳转。 这里面有个神器,一个极为重要的method :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {}

第一个参数是 segue, 第二个参数是 sender。 

pragma声明

#pragma 声明是彰显 Objective-C 工艺的标志之一。

虽然 #pragma 最初的目的是为了使得源代码在不同的编译器下兼容的,但精明的Xcode编码器将 #pragma 使用到了极致。在现在的背景下,#pragma 避开了注释和代码之间的界限。作为预处理指令,#pragma 在编译时进行计算。但它并不像如 #ifdef…#endif 之类的宏,#pragma 的使用方式不会改变你的应用运行时的行为。相反的,#pragma 声明主要由 Xcode 用来完成两个主要任务:整理代码和防止编译器警告。

极光推送实现步骤

1. 创建应用程序ID

登陆 iOS Dev Center 选择进入iOS Provisioning Portal  ---> 点击App IDs进入App ID列表
 ---> 为 App 开启 Push Notification 功能。如果是已经创建的 App ID 也可以通过设置开启 Push Notification 功能。
  --> 根据实际情况完善 App ID 信息并提交,注意此处需要指定具体的 Bundle ID 不要使用通配符。