iOS项目之交换方法(runtime)】的更多相关文章

在项目中,经常会遇到系统自带的方法满足不了自己的需求,往往我们解决这种情况的时候,都是在分类中添加一个方法.然而很多时候,项目已经开发很长时间了,如果一个一个的去替换系统的方法,太浪费宝贵的时间,所以在这里介绍使用runtime来交换方法. 在这里写了一个小案例: 在项目中使用stringByAppendingString:方法,判断拼接的字符串是否为nil,如果为nil,则改为@"",避免项目崩溃. 在这里要替换的方法是NSString的系统方法,所以在这里创建一个NSString的…
移动中隐藏tabBar,静止显示tabbar - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { // 隐藏tabbar [self hideTabBar]; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { // 显示tabbar [self showTabBar]; } -(void)hideTabBar { // 隐藏tabBa…
#import "ViewController.h" /* Runtime(交换方法):主要想修改系统的方法实现 需求: 比如说有一个项目,已经开发了2年,忽然项目负责人添加一个功能,每次UIImage加载图片,告诉我是否加载成功 当系统提供的控件不能满足我们的需求的时候,我们可以 1:通过继承系统控件,重写系统的方法,来扩充子类的行为(super的调用三种情况) 2:当需要为系统类扩充别的属性或是方法的时候,与哪个类有关系,就为哪个类创建分类.3:利用runtime修改系统的类,增加…
runtime运行时用法之一 --- 交换类的方法,此处简单写了把系统的UIView的setBackgroundColor的方法换成了自定义的pb_setBackgroundColor 首先创建UIView的分类 在分类中导入头文件#import <objc/runtime.h> 实现load类方法 --- 类被加载运行的时候就会调用 分别获取系统setBackgroundColor方法 和自定义的 pb_setBackgroundColor 方法.然后交换 在AFNetworking中也有应…
前言: 一到公司报道那时,便着手独立的去完成了一个项目,其中的辛酸泪也是不足为外人道也.这次算是一个新型的app,仍然是独立开发,但心境和想法却是完全的不同.下面说一次以前做开发时常常忽略的知识,也算是一种复习了吧.下面言归正传: 1.自带键盘的next用法 这算是比较常用的了吧,只要我们想到登录和注册界面,就应该自然而然的想到 - 键盘的next用法(当然不排除相当多的软件并没有实现这个功能). 想法也就是:用户在输入用户名后,点击next跳转到下一个输入框.其实也不用想的如此复杂,在登录界面…
创建UIImage分类UIImage+Image.h #import<UIKit/UIKit.h> @interfaceUIImage (Image) + (__kindof UIImage*)xmg_imageNamed:(NSString*)imageName; @end UIImage+Image.m #import"UIImage+Image.h" #import<objc/message.h> @implementationUIImage (Image…
原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.直接改项目名吧,XCODE又不会帮你改所有的名字.总是有很多文 件.文件夹或者是项目设置的项.而且都是不能随便改的,有时候改着改着,编译不了.所以各位重命名项目时,记得先备份好一份噢.本文我会介绍一种方法,是 我自己参考了很多资料得出的总结. 为什么说是完整呢?因为改名之后,你不会再看到…
[Unity iOS 项目的一种性能评测方法]…
做这些的前提是你配置好了所有的证书,如果还没先去配置证书吧. 1.打开需要生成ipa的ios项目.2.在运行按钮的后面选择ios Device3.点击Product 按钮,选择第五个Archive4.点击Distribute 的按钮5.选择三个单选按钮 Export as Xcode Archive .点击next6.这时候会让你选择存放路径,和名字,随便写.7.你可以去你选择的路径找生成的文件了,注意这时候还不是ipa文件,8.右键点击生成的文件选择“显示包内容”,然后双击打开Products…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #d12f1b } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "PingFang SC"; color: #d12f1b } p.p4 {…
李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C语言,函数的调用在编译的时候会决定调用哪个函数. 对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用. 事实证明: 在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错. 在编译阶段,C语言调用…
Write in the first[写在最前] 对于从事 iOS 开发人员来说,当提到 ** runtime时,我想都可以说出来 「runtime 运行时」和基本使用的方法.相信很多开发者跟我当初一样,也许当你使用这个重要的模块完成一些工作任务之后(复制粘贴的^_^.),还是不清楚 runtime** 知识体系和内在原理. ** runtime** 是 iOS 编程中比较难的模块,想要深入学习 OC,那 ** runtime** 是你必须要熟练掌握的东西,下面是我对 runtime 的整理,从…
引导 Copyright © PBwaterln Unauthorized shall not be *copy reprinted* . 对于从事 iOS 开发人员来说,所有的人都会答出「runtime 是运行时」,什么情况下用runtime?,大部分人能说出「给分类动态添加属性 || 交换方法」,再问一句「runtime 消息机制的调用流程 || 能体现runtime 强大之处的应用场景」,到这,能知道答案的寥寥无几,很少有人会说到"黑魔法"这三个字, ** runtime** 是…
在上一篇文章iOS项目——基本框架搭建中,我们详细说明了如何对TabBarItem的图片属性以及文字属性进行一些自定义配置.但是,很多时候,我们需要修改TabBarItem的图片和文字属性之外,还需要自定义TabBarItem的位置,这样系统自带的TabBar的样式并不能满足我们的项目需求,所以我们需要对系统的UITabBar进行自定义,以达到我们的项目需求.例如新浪微博App的底部tab的item就无法用自带的TabBarItem进行实现,最中间那个[+]发布微博并不是用来切换tab的,而是在…
  更新 2015-11-16 感谢微博好友@zyyy_000的评论,补充了为什么要在+ (void)load方法里面做Method Swizzling. 前言 最近,在做项目时,因为某种原因,突然要“适配”iOS6(也是醉了...),保证极少数的iOS6用户可以“用上”新的版本.哪怕界面上有瑕疵,只要功能正常就行.于是就只好花几天时间对iOS6进行紧急适配(心中一万头驼羊奔跑而过...) 本文总结了一些常规的,和“非常规”的iOS项目向老版本兼容的办法,结合了宏定义.Category和Runt…
来源:http://bbs.9ria.com/thread-102037-1-1.html 最近看到本版块的很多关于NativeExtension的应用.但是都是在Android下面的应用.也有很多朋友在线上问我这个问题,今天晚上特写了一篇NativeExtension在IOS的应用,首先,我们做准备工作,下载AIR3.0及其SDK,当然我们也可以下载Flash Builder 4.6的Prelease版本,4.6可以直接添加ANE文件,进行最后的打包Ipa工作.省了最后的命令行工作,对新手来说…
iOS 开发之黑科技-runtime runtime其实就是oc底层的一套C语音的API 调用方法的本质就是发消息, 1.动态交换两个方法的实现(特别是交换系统自动的方法) 2.动态添加对象的成员变量和成员方法 3.获得某个类的所有成员方法.所有成员变量 注意: 对于一般OC代码的method swizzling, 在load方法中执行即可. 而Swift没有load, 所以要在initialize中执行. 应用 1.block的实现原理 2.拦截系统自带的方法调用 1 2 3 4 5 6 7…
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错-     BlocksKit 将Block风格带入UIKit和Founcation     cocoa-helpers 一些Cocoa的扩展 2年前的工程     CoconutKit 一系列扩展和一些自定组件     STUtils 一系列扩展包  …
在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用它,只是有时安装库很慢,还不如复制粘贴库来的快,就删除它了,这里就使用手动集成的方式吧. 1. 新增React Native文件路径和json说明文件,进入项目根目录(*.xcodeproj文件所在目录): mkdir reactnative cd reactnative vim package.json  …
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 1.善用快捷键 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象. 常用快捷键操作 2.常用代码片段 开发中有一些常用的代码,可以放到代码片段中,然后下次你就可以使用快捷…
转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwrite$UNIX2003", referenced from: _unixErrorHandler in libcocos2dx iOS.a(tif_unix.o) _unixWarningHandler in libcocos2dx iOS.a(tif_unix.o) _empty_output_…
使用phonegap创建的ios项目,推送消息时,当程序在前台运行或者在后台运行状态下,推送消息过来,可以解析并且跳转: 但是在程序从后台退出的状态下,当消息推送过来的时候,点击通知栏,打开程序,程序竟然出现了”闪退“现象. 经过一番排查,发现原来phonegap创建的项目默认是没有自动引用计数的(非arc机制),而我们在 - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictio…
➠更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么?下面,我们将结合代码,说明 MVVM 设计模式以及项目目录结构. 一.MVVM 模式介绍  MVVM 是 Model-View-View Model 的缩写,MVVM 听起来好像很复杂的样子,但它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和…
Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天.WinObjc项目就是Build 2015大会上微软宣布的Project IslandWood项目,致力于将iOS应用快速移植成UWP应用.废话不多说,让我们来看看WinObjc项目到底如何使用. 开始之前 开始转制iOS项目前我们要先部署好WinObjc工具,工具链如下: 一台安装了Visual Studio的Windows 10 PC,2015社区版可以直接下载:免费下载 安装转制iOS应用的WinObjc Bri…
1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理. 需要注意的是AFNetworking对服务器返回的ContentType要求比较严格,默认只支持application/json的返回.所以可能需要添加对text/html返回的支持,否则可能无法获得返回数据. 另…
转自无网不剩的博客 网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法.   目录结构 AppDelegate Models Macro General Helpers Vendors Sections Resources   一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化.   AppDelegate 这个目录下放的是AppDelegate.h(.m)文件,是整个应用的入口文件,…
手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做哪些东西各位跟着我一步一步来进行. 假定我们即将要写的项目是一个tabbar+navgation的项目结构. 1. 新建工程 1.1 删除不必要类目 选择Single ViewApplication,命名为HomeHome删除选中的三项. 删除选中的三项 1.2 修改info.plist 1.删除i…
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 1.善用快捷键 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象. 常用快捷键操作 2.常用代码片段 开发中有一些常用的代码,可以放到代码片段中,然后下次你就可以使用快捷…
今天小编在找技术文章的时候,发现这样一个标题:iOS与HTML5交互方法总结,怎么看着这么熟悉呢?   还以为是刚哥用了别的文章,点进去一看,原来是刚哥自己写的文章,他们转载的,而且还上了Dev Store首页. 那我们一起来看看这篇文章到底讲了什么内容? 摘要 看了不少别人写的博客或者论坛,关于iOS与HTML5交互方法大概主要有5种方式: 1. 利用WKWebView进行交互(系统API) 2. 利用UIWebView进行交互(系统API) 3. 苹果的javascriptcore.fram…
iOS-C文件添加到iOS项目中,运行报错 问题: 往项目中添加一个空的c文件, 编译运行; 出现2,30个编译错误. 原因: 由于在项目中添加了Pch文件,在文件中所有代码还没有开始运行之前, pch文件中的头文件将先运行. 在c文件中,添加了#import. 即在c文件中添加了不需要用到的头文件.从而导致错误. 解决方法: 在#import之间先判断一下是不是objc文件. #ifdef __OBJC__ #import "" #endif 转载: http://stackover…