首先如果是想在终端学习的话,以下内容是必须的,如果是直接使用xcode的请随意:

operating system      os       X

ter   终端的缩写

ls      显示目录文件夹(Linux命令)

cc-c   编绎(Linux命令)

mkdir   建立一个新的子目录(命令)

fraction  分数   ;denominator       分母    ;numerator   分子

foundation   基础;   NSobject:Nextstep object的缩写

inheritance  继承  ; interface 接口

  • variable  变量  ;instance  实例

SEL:选择器数据类型

block:  代码块数据类型

framework  :工作空间

注意:

%i和%d都是表示有符号十进制整数,但%i可以自动将输入的八进制(或者十六进制)转换为十进制,而%d则不会进行转换。

巧记:

醋(初等比如 ()、->、等)

坛(单目运算符如!、~、++等)

酸(算数运算符如*、%等)

味(位移)

灌(关系运算符)

味(&按位与、^按位或)

落(逻辑运算符  逻辑与等)

跳(条件比如  :?:)

福(赋值)

C语言中:

计算c=b+++a;时,先把b的值赋给c,b再加一,然后再加 a

计算c=++b+a;时,先把b加一,再把b的值赋给c,然后再加 a

Object-C:

@autoreleasepool   自动释放池跟,与内存管理有关,以后 写代码都写在@autoreleasepool中

@try {//可能出错的代码块}@catch{一旦出错了可以补救的代码@finally{//无论出错不出错都会执行的代码}

注释补丁vvDument- xcode  在GitHub网站下载

@methodeclaration   方法声明(method 方法)

@implementation   设计实现

parameter      参数

statement :陈述、声明

类和对象:类是对无数个对象的相同属性的概括,相当于现实中的图纸

类的设计规范:

1、类名的第一个字母必须是大写

2、不能有下划线

3、多个英文单词用驼峰标识(英文单词首字母要大写)

OC运行过程(终端命令控制):

touch :如果fileA存在,使用touch指令可更改这个文件或目录的日期时间,包括存取时间和更改时间;

如果fileA不存在,touch指令会在当前目录下新建一个空白文件fileA。

打开桌面: cd  Desktop

rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容

rm -f file1 删除一个叫做 'file1' 的文件'

rmdir dir1 删除一个叫做 'dir1' 的目录'

cd .. 返回上一级目录

删除文件:rm   -f  文件名

创建文件: touch  文件名

1、编写oc源文件:.m   、.c

2、编绎: cc  -c  xxx..m   xxx.c       (注意空格)

3、链接:cc xxx.o  xxx.o   -framework  Foundation(只有用 了foundation 框架才需要加上-framework Foundation)

4、运行: ./a.out

5、编绎加运行:cc  xxx.m

OC类第一课:

#import<Foundation/Foundation.h>

//oc对象的本质就是结构体

//类的声明:

/*NSObject的目的是:让Car 这个类具备创建对象的能力*/

@interface Car : NSObject

{

//用来申明对象属性(实例变量/成员变量,默认会初始化为零)

int wheels  ;//车轮个数

int speed ; //时速、速度

}

//

@end

//类的实现:

@implementation Car

@end

int main()

{

/*在oc中,想执行一些行为,就写上中括号【行为执行者    行为名称】

利用类来创建对象

执行了Car这个类的new行为来创建新的对象

创建出一个新的对象,并且会返回对象本身(新对象的地址)*/

[Car new];

return 0;

}

在oc中数据类型的定义 与c语言的区别

1、 unsigned long  —>NSUInteger

2、 float —>  CGFloat

oc中方法的权限:

但是这里要注意的是:OC中的方法是没有修饰符的概念的,这个和Java有很大的区别,一般都是公开访问的,即public的,但是我们怎么做到让OC中的一个方法不能被外界访问呢?

OC中是这么做的,如果想让一个方法不被外界访问的话,只需要在.m文件中实现这个方法,不要在头文件中进行定义,说白了就是:该方法有实现,没定义,这样外界在导入头文件的时候,是没有这个方法的,但是这个方法我们可以在自己的.m文件中进行使用。

为什么要介绍这点知识呢?因为在后面我们会说到单利模式,到时候就会用到这个知识点了。

静态方法与实例方法

方法是类的行为,写在接口和实现两个文件中。在接口部分声明方法,在实现部分实现方法。

1、类方法与实例方法

Objective-C中的类可以声明两种类型的方法:实例方法和类方法。实例方法就是一个方法,它在类的一个具体实例的范围内执行。也就是说,在你调用一个实例方法前,你必须首先创建类的一个实例。而类方法,比较起来,也就是说,不需要你创建一个实例。

+表示类方法,就是类调用方法,不依赖与任何对象的方法,类似于c语言的static关键字 static函数。-表示是实例(对象)方法,只能是对象可调用,依赖与任何对象的方法。

总结一下几点:

(1)类(static)方法(便利构造器)

a. 类方法的调用

[类名称 类方法名称];

这里需要注意:

1、类方法可以调用类方法。

2、类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法。

3、类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量。

4、类方法作为消息,可以被发送到类或者对象里面去(实际上,就是可以通过类或者对象调用类方法的意思)。

(2)实例方法

a.实例方法的调用

首先需要实例化该类

例如:Human *man = [Human alloc] init];

[类的实例

实例方法名称];

例如:[man showSex];

注意:此处实例化该类时,调用了该类的构造函数init,并且该类的构造函数调用[super init]的返回值不等于该类的self。

定义子类的实例

Woman *wife = [Woman alloc] init];

此处实例化该类时,调用了该类的构造函数init,并且该类的构造函数调用[super init]的返回值 等于该类的self。

2、单例模式

Singleton模式,即单例模式。顾名思义,主要用于做应用程序的资源共享控制。实质为,单例是在程序声明周期里有且仅有被实例化过一次的类。为确保 实例化的唯一,利用类的类(static)方法来生成和访问对象。至此,我们可以在程序中任何地方访问类的单例对象,因为只实例化唯一的一次,所以,并不 用 alloc、init、autorelease初始化方法。

单例设计模式的要点:

(1) 某个类只能有一个实例。

(2)他必须自行创建这个对象

(3)必须自行向整个系统提供这个实例;

(4)这个方法必须是一个静态类;

.m文件代码(记住)

@implementation Singleton

static Singleton *st;

+(Singleton*) instance{//可用id代替返回可用的指针对象 instance是方法名

//静态变量,生命周期是整个程序,在下一次该函数调用时仍可使用 。?    if(st==nil ) {//指针为空就创建?         st = [[Singleton alloc] init];

//指针st指向单例模式 Singleton

}

return st;//不是空就继续使用

}

@end

注意:所谓单例,即我们自己创建一个单例类,该类只能生成唯一的对象,为了防止该对象被复制(copy)或者retain 和 release 等操作,我们必须在所创建的单例的实现文件( .m 文件)中将父类的这些方法给覆盖,该目的是为了保证单例模式的一个严谨性。

oc中的继承:

1、成员访问类型

private:私有成员,不能被外部函数访问(使用),也不能被子类继承;

protected:保护成员,不能被外部函数访问,可以被子类继承;

public:公有成员,可以被外部函数访问,也可以被子类继承。

OC中,所有的方法(消息),都是公有的。

2、重写(继承的另一部分)

子类可以从父类继承方法,但是有时候父类的方法不适合子类,子类就可以写一个自己的同名方法,覆盖掉父类的同名方法,叫做重写。

重写的时候,在子类的.h中不必重新声明,直接在.m中写实现就可以。

1 //父类声明文件

2 #import <Foundation/Foundation.h>

3 @interface Father : NSObject

4 -(void)run;

5 -(void)jump;

6 @end

7

8 //父类实现文件

9 #import "Father.h"

10 @implementation Father

11 -(void)run{

12     NSLog(@"he is running!");

13     return;

14 }

15 -(void)jump{

16     NSLog(@"father can jump 1.2m");

17 }

18 @end

1 //子类声明文件

2 #import "Father.h"

3

4 @interface Son : Father

5

6 @end

7

8 //子类实现文件

9 #import "Son.h"

10

11 @implementation Son

12 -(void)jump{

13      NSLog(@"he can jump 0.6m");

14 }

15 @end

其中,子类重写父类的jump方法,不需要重新声明。

同一个方法,不同的实现,称为多态。重写是多态的一种。

继承的好处:

  1)创建大量的相似类的时候,可以节省工作量。

  2)使用框架中的类,或已经写好的类,继承该类,生成一个派生类,比原类更好用。

注意:NSString、NSArray、NSDictionary都是不能够继承的。

3、虚方法

OC的方法都是虚方法

  1)父类的指针可以指向子类的对象

1 Son * son = [[Son alloc] init];

2 Father * p = son;

上面p和son都指向子类的对象;调用方法时,不看指针,看对象,对象的地址指向什么对象,就调用什么方法,称为虚方法。

  2)调用方法时,不看指针看对象,这样的方法叫做虚方法。虚方法的好处:可以描述不同事物被相同事件触发,产生不同的响应(结果)。

oc中的字符串

字符串的创建:

NSString *str1 = @"如果你们不好好学 ";//快速创建

//快速创建出的字符串内容 是常量, 在常量区内 所以指针相等

//使用类方法拼接出来的字符串是对象,所以指针地址不同

/*

NSString *s1 = [NSString stringWithFormat:@"字符串"];

NSString *s2 = [NSString stringWithFormat:@"字符串"];

if (s1 == s2) {

NSLog(@"s1 == s2");

} else {

NSLog(@"指针地址不相同");

}

1、   NSString *s1 = [[NSString alloc]initWithFormat:@"age is %d",10];

//c字符串 --->oc字符串

NSString *s1 = [[NSString alloc] initWithUTF8String:"yuan"];

//oc字符串 --->c字符串

const char *s2 = [s1 UTF8String];

// NSUTF8StringEncoding   用到中文就可以用这种编码

NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];

/*

NSString :不可变的字符串

NSMutableString :可变的字符串

*/

前提:必须是可变的字符串

//必须要用NSMutableString 类来调用,否则都是错的

NSMutableString *s = [NSMutableString  stringWithFormat:@"i love you"];

//拼接字符串的方法 :

[s appendString:@"  sister"];

NSRange range = [s rangeOfString:@"love"];

//删 除某个范围内的字符串

[s deleteCharactersInRange:range];

//获取某段字符串的范围

NSRange r = [s rangeOfString:@"i"];

NSLog(@"%@",s);

oc精简笔记的更多相关文章

  1. JavaScript 精简笔记

    JavaScript 精简笔记,摘自 廖雪峰的官方网站. [From] https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51 ...

  2. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  3. oc学习笔记2

    .oc中的BOOL类型 oc中的BOOL类型的值为YES和NO,有点小奇怪 在oc中YES不等于1,但是NO一定等于0,所以不要把1和YES来比较 .消息发送 在oc中,经常使用这样的术语:将allo ...

  4. iOS9基础知识(OC)笔记

    1月16日 Objective  C(20世纪80年代初) 一.OC语言概述 1.1985年,Steve  Jobs成立了NeXT公司 2.1996年,12月20日,苹果公司宣布收购了NeXT  ...

  5. OC学习笔记

    备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!! ARC单例模式的实现 使用alloc方法初始化一个类的实例的时候,默认是调用了 allocWit ...

  6. OC入门笔记

    1OC概述OC主要负责UI界面:C语言和C++可以用于图形处理.OC是一门面向对象的语言.C语言是面向过程的.比C++简单很多以C语言为基础,完全兼容C语言.OC语言中的所有事物都是对象,都有isa指 ...

  7. Linux 系统常用管理命令(精简笔记)

    Linux是一套免费使用和自由传播的类Unix操作系统,下面的笔记是我从鸟菜中摘抄出来的重要命令,并进行了一定的排版,摒弃了一些用不到的乱七八糟的命令,目的是在生产环境中能够快速的定位并查询需要命令的 ...

  8. OC学习笔记——类别(Category)

    类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSO ...

  9. OC学习笔记之属性详解和易错点

    属性的概念在OC1.0中就存在,格式是定义实例变量,然后定义setter和getter方法,用点操作符操作属性 举例,类的接口部分 @interface Father : NSObject { NSI ...

随机推荐

  1. mongoengine

    http://docs.mongodb.org/ecosystem/drivers/python/ http://www.cnblogs.com/holbrook/archive/2012/03/11 ...

  2. iOS self = [super init]

    self = [super init] 这个问题一直不太明白,今天研究了一下,在stackoverflow找到了下面的答案: http://stackoverflow.com/questions/29 ...

  3. MySQL key_len 大小的计算

    背景: 当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引. 环境: CREATE ...

  4. Python: 程序print到文件中

    Python 3.x 将输出内容写入到一个文件,需要两个命令.open指明Python用什么文件名,w 意味着我们要写入该文件, encoding=”utf-8″指明Python如何把中文写入该文件. ...

  5. Greedy:Cow Acrobats(POJ 3045)

    牛杂技团 题目大意:一群牛想逃跑,他们想通过搭牛梯来通过,现在定义risk(注意可是负的)为当前牛上面的牛的总重量-当前牛的strength,问应该怎么排列才能使risk最小? 说实话这道题我一开始给 ...

  6. 【python】getopt使用

    来源:http://blog.chinaunix.net/uid-21566578-id-438233.html 注意对比:[python]argparse模块 作者:limodou版权所有limod ...

  7. 【Git】自定义Git

    来源:廖雪峰 让Git显示颜色 git config --global color.ui true 忽略特殊文件 有些文件有敏感信息,或者是自动生成的中间文件.不能或不必提交到git,可以用.giti ...

  8. Alcatraz安装在xcode7失败执行下面代码

    1.步奏rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin 2.步奏 rm ...

  9. 使用autolayout,设置子控件的宽度 与父视图的宽度成比例大小(这样类似可以设置多个按钮平均横屏排列)

    橙色是父视图,假设约束如上图. 绿色是子视图.重点宽度比例设置: 1. control-drag 选择 equal width2. 选中上面那个约束 注意 first item 和 second it ...

  10. [Android Pro] DES加密 version1

    reference to : http://blog.csdn.net/wfung_kwok/article/details/7766029 加密和解密要用同一個key AES: import jav ...