一些第三方框架

导入

方法一

使用终端命令执行

  1. 执行过不用重新执行sudo gem install -n /usr/local/bin cocoapods
  2. pod init
  3. touch Podfile
  4. 内容格式如下
platform :ios, '7.0'
target 'project name' do
pod 'CocoaLumberjack' , '~> 2.0'
end
  1. pod install
方法二

在xcode对应工程中直接创建
new file 创建 empty文件 名称为Podfile
内容格式如上

platform :ios, '7.0'
target 'project name' do
pod 'CocoaLumberjack' , '~> 2.0'
end

使用cd并拖入Podfile获取路径 之后删除Podfile进入目录
然后使用pod install

语法
  • > 0.1 高于0.1版本(不包含0.1版本)的任意一个版本
  • >= 0.1 高于0.1版本(包含0.1版本)的任意一个版本
  • < 0.1 低于0.1版本(不包含0.1版本)的任意一个
  • <= 0.1低于0.1版本(包含0.1版本)的任意一个
  • ~> 0.1.2 版本 0.1.2的版本到0.2 ,不包括0.2。这个基于你指定的版本号的最后一个部分。这个例子等效于>= 0.1.2并且 <0.2.0,并且始终是你指定范围内的最新版本。
注意
  1. 用cocoapods 导入swift 框架到swift项目和OC项目都必须要 use_frameworks!
  2. 用动态库,必须要在Podfile文件中添加 use_frameworks!

具体库

1.Aspects

aspect oriented programming 面向切面编程
不同于面向对象的封装思想,针对不同封装对象于某一切面进行统一操作
Aspects 用于支持AOP(面向切面编程)模式,用于部分解决OOP(面向对象)模式无法解决的特定问题.具体指的是那些在多个方法有交叉,无法或很难被有效归类的操作,比如:
不论何时用户通过客户端获取服务器端数据,权限检查总是必须的.
不论何时用户和市场交互,总应该更具用户的操作提供相应地购买参考或相关商品.
所有需要日志记录的操作.

// 为一个指定的类的某个方法执行前/替换/后(options),添加一段代码块.对这个类的所有对象都会起作用.
//
// @param block  方法被添加钩子时,Aspectes会拷贝方法的签名信息.
// 第一个参数将会是 `id<AspectInfo>`,余下的参数是此被调用的方法的参数.
// 这些参数是可选的,并将被用于传递给block代码块对应位置的参数.
// 你甚至使用一个没有任何参数或只有一个`id<AspectInfo>`参数的block代码块.
//
// @注意 不支持给静态方法添加钩子.
// @return 返回一个唯一值,用于取消此钩子.
+ (id<AspectToken>)aspect_hookSelector:(SEL)selector
                      withOptions:(AspectOptions)options
                       usingBlock:(id)block
                            error:(NSError **)error;

使用如下:

   /*!
     *    @brief 应用加载前进行hook设置
     *
     */
    [AppDelegate aspect_hookSelector:@selector(application:didFinishLaunchingWithOptions:)
                         withOptions:AspectPositionAfter
                          usingBlock:^{
                            [HWAnalytics setupUMMobclick];
                            [HWAnalytics setUpAnalytics];
                          }
                               error:NULL];

    /*!
     *    @brief 页面访问时长hook
     *
     */
    [UIViewController aspect_hookSelector:@selector(viewDidAppear:)
                              withOptions:AspectPositionAfter
                               usingBlock:^(id<AspectInfo> aspectInfo, BOOL animated) {
                                 [HWAnalytics pageBeginHook:aspectInfo.instance];
                               }
                                    error:NULL];
    [UIViewController aspect_hookSelector:@selector(viewDidDisappear:)
                              withOptions:AspectPositionAfter
                               usingBlock:^(id<AspectInfo> aspectInfo, BOOL animated) {
                                 [HWAnalytics pageEndHook:aspectInfo.instance];
                               }
                                    error:NULL];
}

CocoaLumberjack

DDLog类,用于打印和日志收集。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,552评论 25 708
  • 《说文解字》,约,缠束也。从糸勺声。於略切。 在没有伦理道德的束缚下,人作为自由个体可以有选择很多的可能性。年...
    郑昌辉阅读 216评论 0 1
  • 韦曰玫瑰 旅居青岛的光阴正是阳春三月,真是鲜花遍树,绿草茵茵,美的一直柔软你的心...
    韦曰玫瑰阅读 281评论 0 1
  • 那一世,我为你倾尽柔肠,百转千回,只为换你嫣然一笑;这一生,我只想采一朵天堂花,为你别在发间,看你眉眼舒缓。 01...
    _寒梅_阅读 725评论 0 0
  • ** 女人给男人制造惊喜是一种什么样的体验?**☽ 王 瑞 1 前几天看了一档韩国的综艺节目《新婚日记》,这档综艺...
    瑞和她的浅岛繁花阅读 15,470评论 6 22