oc精简笔记
首先如果是想在终端学习的话,以下内容是必须的,如果是直接使用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精简笔记的更多相关文章
- JavaScript 精简笔记
JavaScript 精简笔记,摘自 廖雪峰的官方网站. [From] https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51 ...
- OC基础笔记目录
OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...
- oc学习笔记2
.oc中的BOOL类型 oc中的BOOL类型的值为YES和NO,有点小奇怪 在oc中YES不等于1,但是NO一定等于0,所以不要把1和YES来比较 .消息发送 在oc中,经常使用这样的术语:将allo ...
- iOS9基础知识(OC)笔记
1月16日 Objective C(20世纪80年代初) 一.OC语言概述 1.1985年,Steve Jobs成立了NeXT公司 2.1996年,12月20日,苹果公司宣布收购了NeXT ...
- OC学习笔记
备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!! ARC单例模式的实现 使用alloc方法初始化一个类的实例的时候,默认是调用了 allocWit ...
- OC入门笔记
1OC概述OC主要负责UI界面:C语言和C++可以用于图形处理.OC是一门面向对象的语言.C语言是面向过程的.比C++简单很多以C语言为基础,完全兼容C语言.OC语言中的所有事物都是对象,都有isa指 ...
- Linux 系统常用管理命令(精简笔记)
Linux是一套免费使用和自由传播的类Unix操作系统,下面的笔记是我从鸟菜中摘抄出来的重要命令,并进行了一定的排版,摒弃了一些用不到的乱七八糟的命令,目的是在生产环境中能够快速的定位并查询需要命令的 ...
- OC学习笔记——类别(Category)
类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSO ...
- OC学习笔记之属性详解和易错点
属性的概念在OC1.0中就存在,格式是定义实例变量,然后定义setter和getter方法,用点操作符操作属性 举例,类的接口部分 @interface Father : NSObject { NSI ...
随机推荐
- mongoengine
http://docs.mongodb.org/ecosystem/drivers/python/ http://www.cnblogs.com/holbrook/archive/2012/03/11 ...
- iOS self = [super init]
self = [super init] 这个问题一直不太明白,今天研究了一下,在stackoverflow找到了下面的答案: http://stackoverflow.com/questions/29 ...
- MySQL key_len 大小的计算
背景: 当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引. 环境: CREATE ...
- Python: 程序print到文件中
Python 3.x 将输出内容写入到一个文件,需要两个命令.open指明Python用什么文件名,w 意味着我们要写入该文件, encoding=”utf-8″指明Python如何把中文写入该文件. ...
- Greedy:Cow Acrobats(POJ 3045)
牛杂技团 题目大意:一群牛想逃跑,他们想通过搭牛梯来通过,现在定义risk(注意可是负的)为当前牛上面的牛的总重量-当前牛的strength,问应该怎么排列才能使risk最小? 说实话这道题我一开始给 ...
- 【python】getopt使用
来源:http://blog.chinaunix.net/uid-21566578-id-438233.html 注意对比:[python]argparse模块 作者:limodou版权所有limod ...
- 【Git】自定义Git
来源:廖雪峰 让Git显示颜色 git config --global color.ui true 忽略特殊文件 有些文件有敏感信息,或者是自动生成的中间文件.不能或不必提交到git,可以用.giti ...
- Alcatraz安装在xcode7失败执行下面代码
1.步奏rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin 2.步奏 rm ...
- 使用autolayout,设置子控件的宽度 与父视图的宽度成比例大小(这样类似可以设置多个按钮平均横屏排列)
橙色是父视图,假设约束如上图. 绿色是子视图.重点宽度比例设置: 1. control-drag 选择 equal width2. 选中上面那个约束 注意 first item 和 second it ...
- [Android Pro] DES加密 version1
reference to : http://blog.csdn.net/wfung_kwok/article/details/7766029 加密和解密要用同一個key AES: import jav ...