对于一门语言的学习是需要时间领悟的,而对于一些原理性的问题,我们需要清楚其核心思想,知其然而知其所以然,这样才能有利于自己的后续发展。本文只是简述,没有面面具到(后续会持续更新)。...---- OC是在C语言的基础上加入了一些面向对象的特性(封装,继承,多态),OC完全兼容C语言,在代码中,可以混用C,甚至是C++代码(C++是在C语言的基础上开发的一种面向对象编程语言)。...消息传递 消息传递模型(Message Passing)是Objective-C语言的核心机制。在Objective-C中,没有方法调用这种说法,只有消息传递。...OC的函数调用称为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。而C语言在编译阶段就会报错)。...OC的动态性的三方面 动态类型、动态绑定、动态加载(动态是因为 到运行时(runtime)才会做一些事情) 动态类型:就是id类型; 动态绑定:需要用到@selector/SEL,SEL并不是C里面的函数指针
OC语言Block 一、Block (一)简介 Block是什么?苹果推荐的比较特殊的数据类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。
OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可以访问定义的全局变量...__typeof、typeof、typeof的区别 恩~~他们没有区别,但是这牵扯一段往事,在早期C语言中没有typeof这个关键字,__typeof、__typeof__是在C语言的扩展关键字的时候出现的...typeof是现代GNU C++的关键字,从Objective-C的根源说,他其实来自于C语言,所以AFNetworking使用了继承自C的关键字。
1、OC是在C语言的基础上进行扩展的,在OC中直接用C语言进行coding也是可以通过编译的。...C语言并不强制对局部变量赋初始值,在程序员对局部变量赋初始值之前,局部变量的值是不确定的,这是因为每次调用函数的时候都会为该变量重新分配内存,而重新分配的内存中的值是不确定的。...5、C语言程序运行的内存大致可以分为三个部分:程序区、静态存储区、动态存储区。...} 20 } 21 22 /* 输出结果为 23 a = 1, b = 1 24 a = 2, b = 2 25 a = 3, b = 4 26 */ 7、预处理是C、OC...#include导入其他源程序 11 // OC语言使用#import导入其他源程序 12 13 //使用#ifdef、#ifndef、#else、#endif执行条件编译 14 #ifdef 宏名称
OC语言使用的消息结构,而非函数调用 消息结构和函数调用的区别: 使用消息结构的语言,其运行时所应执行的代码由运行环境来决定 而使用函数调用的语言,则由编译器决定 参考 Effective+Objective-C
1、指针是C语言中的一个非常重要的概念,实际上,OC系统类的变量、自定义类的变量等都是指针。定义指针变量的语法格式如下,其中*代表一个指针变量,整个语法代表定义一个指向特定类型的变量的指针变量。...6、C语言的底层没有对字符串进行定义,一般都是通过字符数组进行保存字符串。此外,还可以通过字符指针来表示字符串,即定义一个字符指针变量,然后将C格式的字符串赋给该指针变量。...char* str = "I love IOS" ; C语言的自字符串在底层依然是才用字符数组进行保存的,而str则是一个char*型的指针变量,它指向该字符数组的第一个元素,也就是指向该字符数组的首地址...当定义函数之后,C语言允许定义一个指针变量来指向该函数,然后就可以通过该指针变量来调用函数了,使用函数指针变量的语法格式步骤如下: 定义函数指针变量:函数返回值类型 (*指针变量名)(); 将任何已有的函数赋值给函数指针变量
objc_setAssociatedObject NSArray和NSDictionary只可以用来收集OC对象,其它对象必须封装在OC对象之内才可以init到上述类型之中。
property = propertys[i]; //获得类属性的名称 const char * propertyName = property_getName(property); //转换成oc...placeholder的颜色 动态添加方法带参数 开发场景:如果一个类方法非常多,加载了到内存的时候也比较耗费资源,需给每个方法生成映射表,可以使用动态给某个类,添加方法解决 #Person.m文件中 // C语言中所有对象类型用
来自apple Obecjctive-C Code: 直接使用OC语法;比如:[self hello],#selector(@"hello")。...OC底层探索10-objc_sendMsg快速查找流程
效果在运行appstore target时,通过界面调试工具可看到背景图为黄色 #else self.view.backgroundColor = kBGColor #endif 二、对OC
a) Reusing UITableViewCell:利用cellWithTableView:cellIdentifier:nibName: b)...
先看OC关于NSObject的源码 NSObject源码 一、alloc与init NSObject *obj = [NSObject alloc]init]; alloc与init发生了什么呢?...当Objective-C编译器去处理实现一个方法的时候,就会指向一个IMP对象,这个对象是C语言表述的类型。...我们知道,OC的消息转发机制,当self时,方法转换成 id objc_msgSend(id receiver, SEL theSelector, ...)
二、属性 OC中的属性要尽量通过getter方法来进行懒加载,这样能有效避免无用的内存占用和多余的计算。比如,属性的初始化等都要在getter方法中进行,不要把属性当成是成员变量去用。...五,OC代码规范1——多用类型常量,少用#define预处理指令 六,OC代码规范2——在类的头文件中尽量少引入其他头文件 七,新建一个类完成后,在该类的头文件的最前方,通过注释标明该类的用途。
熟悉多线程开发的同学对锁肯定不陌生,但是OC中如何实现锁呢?给大家科普一下。
OC内存管理 一、基本原理 (一)为什么要进行内存管理。...(二)对象的基本结构 每个OC对象都有自己的引用计数器,是一个整数表示对象被引用的次数,即现在有多少东西在使用这个对象。对象刚被创建时,默认计数器值为1,当计数器的值变为0时,则对象销毁。...在每个OC对象内部,都专门有4个字节的存储空间来存储引用计数器。 (三)引用计数器的作用 判断对象要不要回收的唯一依据就是计数器是否为0,若不为0则存在。...alloc,就必须有release(autorelease) (二)Set方法的代码规范 (1)基本数据类型:直接复制 -(void)setAge:(int)age { _age=age; } (2)OC...对象类型),成员变量是强指针 Weak:相当于原来的assign,(适用于oc对象类型),成员变量是弱指针 Assign:适用于非OC对象类型(基础类型) (四)补充 让程序兼容ARC和非ARC部分。
这是《给自己的一份自学IOS开发的学习清单》中的《关于编程语言OC》读书笔记系列的第1篇。 入门务必记住这9点。...1、MAC操作系统上的整个开发环境成为Cocoa,Cocoa的开发语言是Objective-C,开发工具是Xcode 我以前搞不懂CocoaChina为何叫Cocoa,原来是因为Cocoa是Mac的开发环境...2、OC需要在字符串“”前使用@ 所以经常看到代码有@"welcom",@"确认",@"OK",这些玩意。...如: Car *car=[[Car alloc]init]; 8、oc方法的调用:也称为给这个类或者实例发消息,类或者实例被称为“接收方”,oc允许在一个方法调用中嵌套另一个方法调用 记住格式:方括号[...访问属性的2种方式: a、点符号 car.name=@"sport car"; NSLog(@“car is %@”,car.name); b、标准的OC消息 [car setName
EKEventStore *eventStore = [[EKEventStore alloc] init];
如果传进来的是OC对象指针,我们知道,OC对象指针的大小就是8字节,因此就是8字节。 2,class_getInstanceSize 获取对象申请的内存大小。...Clang编译 我们在研究的过程中,经常会需要将OC代码编译成C++,如何编译呢?
OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据
领取专属 10元无门槛券
手把手带您无忧上云