最近寒假学习了【Effective Objective - C 2.0】这本书,特此总结
OC与许多其他面向对象的语言类似,但是在很多其他方面有所差别,特别是在语法方面。因为OC使用消息结构而非函数调用。OC是消息型语言的鼻祖,消息与函数之间的区别看上去就像这样:
//Messaging(Objevtive-C)
Object *obj = [Object new];
[obj performWith:parameter1 and:parameter2];
//Function calling(C++)
Object *obj = new Object;
obj->perform(parameter1, parameter2);
消息结构和函数调用的关键差别在于:使用消息结构的语言,其运行所应执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器决定。、
Objective-C的重要工作都由“运行期组件”(runtime component)而非编译器来完成。使用Objective-C的面向对象特性所需的全部数据结构及函数都在运行期组件里面。运行期组件本质上就是一种与开发者所编代码相链接的“动态库”(dynamic library),其代码能把开发者编写的所有程序粘合起来。
我们以一个例子来说明:
NSString *someString = @"The string";
例如上述代码,声明了一个someString 的变量,此变量为指向NSString的指针,因为OC声明变量基本上都为指针变量,所以OC对象所占内存总是分配在“堆空间”(heap space)中,而绝不会分配在“栈”(stack)上
如果再次创建一个对象Same,那么这两个对象队徽分配在堆中,它们同时指向了堆中的NSString实例
NSString *someString = @"The string";
NSString *anotherString = someString;
再说的简单点,就是对象分配在栈上,而实例分配在堆中。一些不含*的数据类型也会分配在栈中,例如CGRect
Objective-C的起源要点总结
Objective-C为C语言添加了面向对象特性,是其超集。Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型。接收一条消息之后,究竟应执行何种代码,由运行期环境而非编译器来决定。
理解C语言的核心概念有助于写好Objective-C程序。尤其是要掌握内存模型和指针。
而当你需要实现EOCEmployer接口的全部细节时候只需要在实现文件里添加#import "EOCEmployer.h"即可:
#import "EOCPerson.h"
#import "EOCEmployer.h"
@implementation EOCPerson
@end
要点总结:
字面量数值:
NSNumber *number = @1;
字面数组:
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
字面量数组:
NSArray *array = @[@"1", @"2", @"3", @"4"];
对于字面量的话,需要注意的是,如果字面量初始化的有nil,就会报错,并且还需要注意,字面量初始化默认的是不可变的,如果需要初始化可变类型容器,就不能使用字面量进行初始化
字面量更安全
要点总结:
总结来说就是多用@直接创建容器和其他基本数据,而少用方法进行创建
定义常量的命名
#define kString iOS
类型常量的方法:
static const NSString* iOS = @"666";
定义常量的位置方法
因此我们最好在头文件中声明常量,在实现文件中定义常量
就像如下代码所写:
要点总结
其实这点笔者在先前已经有总结,有兴趣的可以翻阅笔者之前的博客
要点总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。