iOS
牛shu
天空没有留下鸟儿的痕迹,但它已飞过。
展开
-
NSURLSession同步请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:@“url”];NSURLResponse *response= nil; // 4 创建连接对象(同步)NSError *error;NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];.原创 2021-10-27 17:13:10 · 606 阅读 · 0 评论 -
架构总结iOS
适合的才是最好的我理解的架构划分+组装,就是用最简单的办法在遵循单一责任原则的前提下把责任划分到多个实体,然后再把实体进行组装,达到便于维护和使用的目的。MVCModel-View-Controller。MVC简单地将一个模块分为3部分:View是展示给外部的界面Model是Controller内部管理的数据模型,和各种数据操作工具Controller负责将Model的变化更新到ViewController负责处理来自View的事件MVC的划分粒度很粗,View依赖于VC的生原创 2021-10-27 14:57:24 · 92 阅读 · 0 评论 -
iOS类属性探索
Type EncodingsType Encodings原创 2021-10-15 15:13:36 · 493 阅读 · 0 评论 -
组件化-CTMediator
CTMediator (Mine)分类主要供Home使用,里面声明了可以调用的组件接口NSString * const HomeGetTarget_Mine = @“Mine”;NSString * const HomePerform_Action_mineNavigationPush = @“mineNavigationPush”;- (UIViewController *)HomeMediator_MineAction:(NSDictionary *)param{UIViewContro...原创 2021-10-11 16:19:07 · 96 阅读 · 0 评论 -
组件化-MGJRouter
//HomeVC.m#import "HomeVC.h"#import <MGJRouter/MGJRouter.h>@interface HomeVC ()@end@implementation HomeVC- (IBAction)mg_cAction:(id)sender { [MGJRouter openURL:@"NIU://home/pageMine” withUserInfo:@{@"VC" : self} completion:nil]; ...原创 2021-10-11 16:15:59 · 173 阅读 · 0 评论 -
atos符号化
准备MyApp.app.dSYM我们使用atos命令来完成符号化,具体命令如下:$atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate>$atos -arch arm64 -o MyApp -l 0x00000.原创 2020-12-16 14:34:26 · 1504 阅读 · 0 评论 -
iOS hit-Testing
UIView中提供两个方法用来确定hit-testing ViewhitTest:withEvent:方法的处理流程:先调用pointInside:withEvent:判断触摸点是否在当前视图内;如果返回YES,该视图的所有子视图调用hitTest:withEvent,调用顺序由层级低到高依次调用。如果返回NO,hitTest:withEven原创 2016-06-27 11:03:40 · 522 阅读 · 0 评论 -
iOS hit-Testing 2
1. 强制指定某视图响应触摸事件-(void)initSubviews{ UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame原创 2016-06-27 15:48:25 · 295 阅读 · 0 评论 -
iOS Responder Chain
一.UIResponder类UIApplication,UIViewController,UIView和所有继承自UIView的UIKit类(包括UIWindow,继承自UIView)都直接或间接的继承自UIResponder,所以它们的实例都是responder object对象。二.响应链响应链简单来说,就是一系列的相互关联的对象,从firstR原创 2016-06-28 08:53:51 · 434 阅读 · 0 评论 -
JSPatch
用途新版本上线后发现有个严重的bug,可能会导致crash率激增,可能会使网络请求无法发出,这时能做的只是赶紧修复bug然后提交等待漫长的AppStore审核,再盼望用户快点升级,付出巨大的人力和时间成本,才能完成此次bug的修复。使用JSPatch可以解决这样的问题,只需在项目中引入JSPatch,就可以在发现bug时下发JS脚本补丁,替换原生方法,无需更新APP即时修复bu转载 2016-07-18 19:07:00 · 809 阅读 · 0 评论 -
GitHub Open Source For iOS
1.AFNetworking地址:https://github.com/AFNetworking/AFNetworking用于网络请求2.JSONKit地址:https://github.com/johnezang/JSONKit解析JSON3.Reachability地址:https://github.com/tonymillion/Reachability检查网转载 2016-07-18 14:08:08 · 427 阅读 · 0 评论 -
Custom RunLoopMode
NSRunLoop 就是一直在循环检测,从线程start到线程end,检测inputsource(如点击,双击等操作)同步事件,检测timesource同步事件,检测到输入源会执行处理函数,首先会产生通知,corefunction向线程添加runloop observers来监听事件,意在监听事件发生时来做处理。 perform selector在thread中被序列化执行,这样就缓和了许原创 2016-06-23 19:45:23 · 382 阅读 · 0 评论 -
React-Native for iOS
1.Xcode 6.3以上版本2.安装Home-brewruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"3.安装node.jsbrew install node4.安装expressnpm install -g expre原创 2016-07-26 19:25:01 · 363 阅读 · 0 评论 -
icon font
在iOS项目中,一般对图片资源要求有@2x,@3x两套,以适配不同分辨率的设备。对于有换肤需求的APP来说,还需要多套图来匹配不同的主题。这样不但无形中增加了开发者和设计者的工作量,而且会增大APP的体积。为了释放开发者、设计者的双手以及给APP“减重”,iconfont被引入到iOS开发中来。iconfont,从字面上就能理解它就是字体,让开发者像使用字体一样使用图标。转载 2016-07-18 15:36:54 · 1119 阅读 · 1 评论 -
UIImage+BlendMode
现状:在iOS5和6的SDK里部分标准控件引入了tintColor,来满足个性化界面的需求,但是Apple在这方面还远远做的不够。一是现在用默认控件根本难以做出界面优秀的应用,二是tintColor所覆盖的并不够全面,在很多情况下开发者都无法使用其来完成个性化定义。存在问题:自定义主题界面,设计师重复地修改图片,开发者图片文件重命名、移动和导入无用功较多,下载安装包较大。解决方案:原创 2016-07-14 10:12:43 · 2680 阅读 · 0 评论 -
NSObject instancetype id
1. id 与 NSObject *(1) id 是 Objective-C 对象,但是并不一定是NSObject对象,并非所有的Foundation/Cocoa对象都是继承于NSObject对象的,比如NSProxy。同时,id与NSObject对象之间有很多的共同方法,比如retain与release等方法。更一步来说:所有的对象本质来说都是 id 类型的。原创 2016-07-19 15:13:50 · 330 阅读 · 0 评论 -
iOS Tip
作者:_南山忆原文链接:http://www.jianshu.com/p/a3156826c27c在开发过程中我们总会遇到各种各样的小问题,有些小问题并不是十分容易解决,这里主要讲一些你可能不知道的(当然,也有可能你都知道,大神就不必往下看了)1、控件的局部圆角问题一个button或者label,只要右边的两个角圆角,或者只要一个圆角。该怎么办呢?这就需转载 2016-08-12 15:25:27 · 362 阅读 · 0 评论 -
load initialize
一 、+load 调用时机+load方法会在 app启动的时候,只要类被引用(子类或父类文件),就会默认调用每个相关类的 + load方法,只会调用一次,并且是在 main函数之前执行的。+load执行顺序父类》子类》类别;不同子类,父类的和子类的Category的加载顺序,根据 Compile Sources中的顺序执行(最靠上的先原创 2016-08-01 15:37:19 · 331 阅读 · 0 评论 -
iOS copy mutableCopy
授权转载,作者:西木柚子OC的对象拷贝有如下三种方式浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制。深复制(one-level-deep copy):在深复制操作时,对于被复制对象,至少有一层是深复制。完全复制(real-deep copy):在完全复制操作时,对于被复制对象的每一层都是对象复制。1. co转载 2016-08-16 20:30:43 · 428 阅读 · 0 评论 -
Sublime + PlantUML
程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用 Sublime + PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。什么是 PlantUMLPlantUML转载 2016-08-30 19:00:08 · 1443 阅读 · 0 评论 -
.a静态库
静态库和动态库的存在形式静态库: .a 和 .framework动态库: .dylib 和 .framework静态库和动态库在使用上的区别静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 。备注:项目中如果原创 2016-09-07 14:22:06 · 322 阅读 · 0 评论 -
#define
C中宏分为两类: 对象宏和函数宏对象宏(object-like macro)一般用来定义一些常数的, 但却也不是那么简单的查找替换//This defines PI#define M_PI 3.14159265358979323846264338327950288#define关键字表明即将开始定义一个宏,紧接着的M_PI是宏的名字,空格之后的数字是原创 2016-09-19 12:09:15 · 1619 阅读 · 0 评论 -
UIWebView(Javascript) 原理
Native 调用 JS在 Native 中执行 JS 语句非常简单, JS 作为脚本语言它的执行需要解释器的存在,即浏览器,所以 UIWebView 作为浏览器控件,提供了 native 调用 JS 的对象方法://script 是要执行的 JS 语句//返回值为 JS 执行结果,如果 JS 执行失败则返回 nil,如果 JS 执行没有返回值,则返回值为空字符串- (nullab原创 2016-11-08 14:50:22 · 1058 阅读 · 0 评论 -
UIWebView(Javascript)Html标签操作
在iOS中在8.0之前都是用UIWebView来加载网页内容,这里也就介绍UIWebView。要实现与JS交互,就需要利用UIWebView的一个对象方法来实现- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;这个方法需要等到UIWebView加载完毕之后去调用1转载 2016-11-02 17:24:06 · 258 阅读 · 0 评论 -
WKUIWebView(Javascript) 原理
WKWebView的特点:性能高,稳定性好,占用的内存比较小支持JS交互支持HTML5新特性可以添加进度条(然并卵,不好用,还是习惯第三方的)。支持内建手势,据说高达60fps的刷新频率KVO支持进度条WKWebView有两个委托WKWebView代理有两个,是WKNavigationDelegate和WKUIDelegate原创 2016-11-09 13:45:17 · 1343 阅读 · 0 评论 -
React-Native(node_modules)
问题背景: 为了节省app存储空间,好多github上的项目没有node_modules模块。1.自己创建的工程在终端直接使用:react-native init项目名称。localhost:Desktop niu$ react-native init NiuReactThis will walk you through creati原创 2016-10-20 15:55:03 · 18204 阅读 · 1 评论 -
iOS(CGD)
前言对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步、异步、串行、并行和死锁这几个名词的漩涡中渐渐放弃治疗。本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律。线程、任务和队列的概念异步、同步 & 并行、串行的特点一条重要的准则一般来说,我们使用GCD的最大目的是在新的线程中同时执行多个任务,这意味着我们需要两项条件:转载 2018-05-21 14:19:03 · 263 阅读 · 0 评论 -
iOS(CGD)
概念队列 (dispatch_queue_t)队列名称在调试时辅助,无论什么队列和任务,线程的创建和回收不需要程序员操作,有队列负责。串行队列:队列中的任务只会顺序执行dispatch_queue_t q = dispatch_queue_create(“....”,DISPATCH_QUEUE_SERIAL);并原创 2016-11-02 09:30:18 · 1330 阅读 · 0 评论 -
iOS中属性与成员变量的区别
一、类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如:@interface MyViewController :UIViewController{ UIButton *myButton;}@property (nonatomic, reta转载 2016-11-18 14:25:47 · 252 阅读 · 0 评论 -
Category中的属性和成员变量
类别的简介类别有三个作用:(1)可以将类的实现分散到多个不同文件或多个不同框架中,方便代码管理。也可以对框架提供类的扩展(因为框架类没有源码,不能修改)。 (2)创建对私有方法的前向引用:如果其他类中的方法未实现,在你访问其他类的私有方法时编译器报错这时使用类别,在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告 (3)向对象添加非正式协议:创建一个NSObject的转载 2016-11-18 14:41:00 · 905 阅读 · 0 评论 -
类扩展(extension)
扩展(Extension)扩展文件的创建第一步.新建文件 第二步.选择iOS平台Source中的Object-C Fie 第三步.选择File Type为Extension,则可建立相应类的扩展文件第四步.扩展文件为"单一"的.h文件 第五步.命名为”类名+类别名.h”#import "类名.h"@interface 类名 ()// 在此添加私有成员变量、属性、声明方...转载 2016-11-18 15:38:27 · 506 阅读 · 0 评论 -
@synthesize和@dynamic
实例变量(instance var)与属性(@property)的关系 首先讲@property, 这是iOS6以后出来的关键词。@property name:指示编译器自动合成setter和getter方法,编译器会自动给你生成setter(setter方法名即setName)和getter(而getter方法名即name)方法的声明以及实现还有一个以_name原创 2016-11-21 17:26:15 · 1069 阅读 · 0 评论 -
Runtime
什么是Runtime我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @selector(doSomething));。OC中一切都被设计成了对象,我们都知道一个类被初始化成一个实例,这个实例是一个对象。实际上一个类本质上也是一个对象,在runtime中用结构体表示。相关的定转载 2016-11-22 16:37:33 · 332 阅读 · 0 评论 -
iOS Tip2
发现作者写的很用心 在此记录下http://www.jianshu.com/p/7c3ee5e67d031,打印View所有子视图po [[self view]recursiveDescription]2,layoutSubviews调用的调用时机* 当视图第一次显示的时候会被调用。* 添加子视图也会调用这个方法。* 当本视图的大小发生改变的时候是会调用的。* 当转载 2016-11-23 14:01:21 · 579 阅读 · 0 评论 -
RAC(一)
什么是RAC?几乎每一篇介绍RAC的文章开头都是这么一个问题。我这篇文章是写给新手(包括我自己)看的,所以这个问题更是无法忽视。简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。官方的说,ReactiveCocoa(其简称为RAC)是由GitHub开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。为什么我们要学习RAC?为了提高我转载 2016-11-28 14:06:58 · 559 阅读 · 0 评论 -
RAC(二)
什么是信号RAC的核心就是信号,即RACSignal。信号可以看做是传递信号的工具,当数据变化时,信号就会发送改变的信息,以通知信号的订阅者执行方法。热/冷信号默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。自己动手写一个RACSignal//创建信号RACSignal *signal =转载 2016-11-28 14:08:37 · 1915 阅读 · 0 评论 -
typedef
关于typedef的用法总结 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我转载 2017-10-26 14:40:42 · 400 阅读 · 0 评论 -
typeof
我们根据typeof()括号里面的变量,自动识别变量类型并返回该类型。一、iOS 中的用处typeof 常见运用于Block中,避免循环引用发生的问题。__weak __typeof(self) weakSelf = self;[weakSelf addFooterWithRefreshingBlock:^{ //do something [w转载 2017-10-26 14:34:53 · 919 阅读 · 0 评论 -
ios开发实用工具
1. Assets.carTool(.car解压)Mac上解压Assets.car文件的小工具,iOS开发中,如果使用了Images.xcassets管理图片,打包的时候会生成一个Assets.car文件,所有的图片都在这里面。本工具可以直接解压该文件。下载地址:点击打开链接2. LSUnusedResources(项目无用图片检测)一个Mac工程,原创 2018-01-23 16:47:25 · 325 阅读 · 0 评论 -
iOS 苹果审核被拒
1. ios开发 苹果手机作为奖品, 上线被拒Guideline 5.2.4 - LegalYour app includes a contest that provides Apple products as prizes. The offer can be found at 首页.Apps that include such offerings create a原创 2018-01-23 17:15:55 · 447 阅读 · 0 评论