NSObject中类方法load和initialize

+load和+initialize是NSObject的两个类方法,这两个类方法会在类被使用时主动调用,但是调用时机和调用顺序却截然不同。 先看看苹果的官方文档里面: Initialize Initializing a Class class func initialize() Initializes the class before it receives its first message. he runtime sends initialize() to ...

iOS开发过程中优雅的调试数据库

背景 在开发的时候,数据库的操作一直是一个很棘手的问题,后来发现Android下面有一个第三方的库还挺好用的,就模仿它搞了个iOS的,可以方便的通过浏览器查看、添加、删除、修改数据库。 历史状况 我们来回想一下调试的过程: 如果在模拟器中调试: 找到模拟器应用中数据库的文件位置 拷回到一个比较方便打开的地方 安装一个数据库操作软件 打开数据库文件 select/insert/upate/delete... 拷会模拟器应用目录中 运行应用,查看结果 效果不理想,重复1-7步 如果是手机设备, ...

iOS app中获取git信息

具体的Demo:https://github.com/y500/GetGitInfo 测试定位bug需要,在APP内部展示git的相关信息, 具体思路就是通过script脚本获取到想到的信息然后存入info.plist中,然后需要的时候再从info.plist中取出。 1. 在xcode的build phase中加入script: #最后一次提交的SHA git_version=$(git log -1 --format="%h") #当前的分支 git_branch= ...

开源项目推荐

Zepo/MLeaksFinder bitdust/WamaCry airbnb/lottie-ios An iOS library to natively render After Effects vector animations Naituw/IPAPatch Idnan/bash-guide BradLarson/GPUImage material-components/material-components-ios JetBrains / kotlin ...

Object-C Two-Stage Creation:alloc、init

在其他语种中例如JAVA,C++,Ruby等这些语言中new是很常见的,但是在object-c中,大家最常见到的和最常用的初始化方法就是[[ClassName alloc] init]而不是[ClassName new] 去初始化对象。 先来看看他们的方法实现: + new { id newObject = (*_alloc)((Class)self, 0); Class metaClass = self->isa; if ...

LLDB常用命令和用法

前言 LLDB是Xcode的一个调试工具,刚开始只知道一个bt命令,到后来的po,再到后来的breakpoint,越来越觉得LLDB的强大。 慢慢的了解多了,才觉得之前每次修改代码、编译、运行、查看结果是多么的愚蠢和耗时! 示例 下面看看LLDB都有哪些神奇的用处,下面写了几行简单的代码,主要用来演示,程序已经停止在打了断点的那一行,控制台是打开状态,我们可以和调试器进行交互。 我们先来输个po [[UIWindow keyWindow] recursiveDescription] : 可以清楚的看到程序视图的层级关系。 下面我们重点介绍下常用命令: print print就是打印, ...

跨域及跨域访问

什么是跨域 跨域是一个域名的网页去请求另一个域名网页的资源。 这里有一点儿需要注意:跨域并非浏览器限制了发起跨站请求的这种能力,恰恰相反,我们可以发出请求,服务端也可以接收到请求并正常返回数据,只不过在返回之后浏览器会阻止非同源数据(response),从而在控制台打出一系列报错信息。所以我们调试的时候可以看到发出的请求和接收到的返回数据但是控制台报错。 哪些情况算跨域 下面这些情况都算跨域: 主域不同(www.baidu.com访问www.google.com) 主域相同,子域不同(a.baidu.com访问b.baidu.com) ...

AVPlayer判断是否开始播放

加载视频的时候加一个菊花框,然后开始播放了就去掉菊花框: 设置一个block,在播放开始的时候执行。在block内发一个notification __block AVPlayer* blockPlayer = avPlayer; __block id obs; obs = [avPlayer addBoundaryTimeObserverForTimes: @[[NSValue valueWithCMTime:CMTimeMake(1, 3)]] queue:NULL usingBlock:^{ // Raise a notificaiton ...

五星评论、展示评论星级支持小数

好像第二次写这个星星的评论了,索性就抽取一个算了,免得下次又搞。 这次也考虑到了小数的展示,比如说4.3、2.5这样的评分展示。 主要运用了的CAlayer的contentsRect属性来展示小数部分。 /* A rectangle in normalized image coordinates defining the * subrectangle of the `contents' property that will be drawn ...