iOS开发中C函数调用OC方法

从汇编角度来看:无论是C函数或者是OC方法,他们同样都是一个函数的地址。
区别为:
C函数调用直接通过 函数名(参数)找到函数指针 直接执行函数地址,不需要考虑其他问题,只要定义好就能直接用.
OC 是属于类的方法,结构上多了一层封装性,要调方法必须要找到 类的地址然后再通过类的地址找到方法的地址,然后再执行函数地址。

那么:如何能够在C函数里面调用OC的方法呢?
答案就是:指定一个全局变量来保存类的地址,在通过类的地址找到类方法(函数)的地址调用。

1首先新建工程在加入一个SuperViewController 定义一个全局指针指向self

import "SuperViewController.h"

//1定义一个全局静态变量指针用于保存当前类的地址
static SuperViewController *selfClass =nil;
@interface SuperViewController ()
@end
//2函数指针指向自己

  • (void)viewDidLoad {
    [super viewDidLoad];
    //函数指针指向本身
    selfClass =self;
    }

//3实现一个OC方法
-(void)testAction{
NSLog(@"这是一个OC方法");
}

//4在C函数中调用OC方法
void function(){
[selfClass testAction];
}

//5调用C方法
function();

控制台输出:
2016-09-18 10:19:24.778项目[4702:57024]这是一个OC方法

转载:http://blog.csdn.net/u010858147/article/details/52571939

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,770评论 0 6
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,433评论 30 472
  • 史上最全的iOS面试题及答案 迷途的羔羊--专为路痴量身打造的品牌。史上最精准的定位。想迷路都难!闪电更新中......
    南虞阅读 5,453评论 0 8
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 5,251评论 0 3
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9

友情链接更多精彩内容