文档章节

cocoa之高级开发RunTime高级API

super_co
 super_co
发布于 2015/06/12 16:31
字数 125
阅读 8
收藏 0

1、系统类的方法实现部分替换

    Method m1 = class_getInstanceMethod([NSStringclass],@selector(lowercaseString));

    Method m2 = class_getInstanceMethod([NSStringclass],@selector(uppercaseString));

    method_exchangeImplementations(m1, m2);

    log list:  

(lldb)po [@"assAAAAss" lowercaseString]

ASSAAAASS

(lldb) po [@"sssKAAAss" uppercaseString]

ssskaaass

2、自定义类的方法实现部分替换

在这里要说到一个黑马的典型死循环(人称自己++自己)

题目:- (void)viewDidLoad {

[self methodSetImplementation];

[self test];

-(void)test{ 

[self test];

}

如题:- (void) methodSetImplementation { 

Method method = class_getInstanceMethod([ViewController class],@selector(justLog1));

IMP originalImp = method_getImplementation(method);

Method m1 = class_getInstanceMethod([ViewController class],@selector(test)); 

method_setImplementation(m1, originalImp);

}

- (void) justLo


© 著作权归作者所有

共有 人打赏支持
super_co
粉丝 1
博文 10
码字总数 7205
作品 1
东城
高级程序员
私信 提问
ArcGIS for iOS 开发系列(1) – 基本概念

1.1 iOS简介 2006年苹果公司发布了智能手机iPhone,卓越的外形设计和新颖的触摸式交互,令其迅速风靡全球,随后发布的平板电脑iPad同样也取得了巨大成功,二者所搭载的都是iOS智能移动操作系...

长平狐
2012/11/28
867
0
Cassandra 的高级对象映射库 - Achilles

Achilles 是一个开源的 Apache Cassandra 的高级对象映射库,相当于是客户端开发包。 主要特性包括: 高级 Bean 映射(包括复合主键、分区键、timeUUID, 计数器, 静态字段等 …) Pluggable c...

匿名
04/30
0
0
深入Objective-C的动态特性

Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading)。 这些动态特性都是在Cocoa程...

Im刘亚芳
2014/11/30
0
0
Flash的C++编译器--FlasCC

代号Alchemy的Flash runtime C++编译器今天正式对外发布正式beta版本:Flascc!对于有C++工作流的端游团队可以用此技术编译你的C项目为SWF!这是端游进军页游的捷径与利器! FlasCC包含了用于...

匿名
2012/08/18
7K
0
JAVA-环境按安装及配置

语言的分类: 第一代:机器语言 第二代:汇编语言 第三代:高级语言(面向过程 --- 面向对象) java语言的特性:①面向对象性 ②健壮性 ③跨平台性(write once ,run anywhere)---JVM 河床...

FJW0353
2017/05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

月入3万之一个程序员的转行坎坷历程

陈年往事 “我月入3万,怎么会少少了你一个鸡蛋啊?” 这是2017年9月左右的一个新闻,一位煎饼摊大妈因和顾客争执时脱口而出这样一句话而走红。当时还上了各大新闻的头条。 互联网兴起今天,...

苏南-首席填坑官
18分钟前
1
1
OSChina 周一乱弹 —— 眼看着这颗陨石砸了下来

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Nachtblut的单曲《Antik》 《Antik》- Nachtblut 手机党少年们想听歌,请使劲儿戳(这里) @mr_chip :上海的初雪之后有点冷 ...

小小编辑
43分钟前
125
7
Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
今天
2
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部