Oc简介:C语言是面向过程的,而oc是在C语言的基础上增加的一层最小的面向过程的语言(因为他把面向过程的复杂全部去掉了)
在oc开发式可直接在其中插入c或C++函数,oc和c是完全兼容的
我们可以用oc开发mac os或ios程序
1 Oc中没有包名(命名空间)的概念,为防止类名冲突可以加前缀。
2 Oc关键字都以@开头
1.为防止c/C++冲突都以@开头,甚至字符串都以@开头
3. 语法要点
nil java中null
self java中this
4. 日志输出:
NSLog();
NSLog(@”hello”);
Printf(“hello”);
Printf(“Age is %d”,27);
NSLog(“Ageis %i”,27);
5. 使用include不能监测之前是否包含
#import<Foundation/Foundation.h>
intmain(int argc,const char *arg[])
类:oc中的类分为两个文件
.h类的头文件用来声明变量,函数
.m类的实现文件,实现.h中声明的方法
student.h
@interface代表声明一个类
@interface Student
@end
student.m
import<Foundation/Foundation.h>
@interfaceStudent:NSObject
{
intage;//成员变量要定义在下面的大括号里
}
- :动态方法 -(int)getAge;
+ : 静态方法
//oc中一个冒号对应一个参数,类型都用括号括住,冒号也是方法名的一部分
-(void)setAge:(int)age;
@end;
Oc中冒号相当于java中(),所以冒号是方法名的一部分。
6. 点语法
Person.age = 10; 等效于[person SetAge:10]
Oc原生中不允许,但是编译器帮我们编译成调用set方法
int age = person.age 等效于int age = [person age]
所以点语法相当于调用set和get方法。
为了防止混淆一般建议在成员变量前加下划线_age
self.age = newAge //相当于自己调用自己,死循环
7. 构造方法
成员变量以下划线开头
-(id)initWithAge:(int)age andNo:(int)no;//id表示返回任意类型
实现:
-(id)initWithAge:(int)age andNO:(int)no{
Self = [super init];
if(self != nil){
_age =age;
_no = no;
}
return self;
}
8. 重写父类的description方法
//当使用%@ 打印一个对象的时候,会调用这个方法
-(NSString*)description{
NSString *str = [NSStringstringWithFormat:@”age is %i and no is %i”,self.age,self.no];
Return str;
}
9.变量的作用域
public变量都可以访问
protected只能在类内部和子类访问(默认是protected)
private只能在类内部访问
self:谁调用这个方法,self就调用谁
在动态方法调用表示该对象,静态方法中表示该类名,如果没有.h中声明,直接在.m中写出侧表示这个方法为私有方法。
创建对象也可以用new方法
Student *stu = [Student new]; // 等同于 Student * stu = [[Studentallo]init];
02.Mac OS X简介.mp4
--------------------------------------------------------------------------------
03.C语言1-C语言概述.mp4
--------------------------------------------------------------------------------
04.C语言2-第一个C语言程序.mp4
--------------------------------------------------------------------------------
05.C语言3-C语言程序的开发运行过程.mp4
--------------------------------------------------------------------------------
06.C语言4-函数.mp4
--------------------------------------------------------------------------------
07.C语言5-printf函数.mp4
--------------------------------------------------------------------------------
08.C语言6-scanf函数.mp4
--------------------------------------------------------------------------------
09.C语言7-基本数据类型和类型修饰符.mp4
--------------------------------------------------------------------------------
10.C语言8-基本运算.mp4
--------------------------------------------------------------------------------
11.C语言9-一维数组.mp4
--------------------------------------------------------------------------------
12.C语言10-二维数组.mp4
--------------------------------------------------------------------------------
13.C语言11-字符串的定义、初始化、输出.mp4
--------------------------------------------------------------------------------
14.C语言12-字符串的输入.mp4
--------------------------------------------------------------------------------
15.C语言13-字符串数组.mp4
--------------------------------------------------------------------------------
16.C语言14-字符和字符串处理函数.mp4
--------------------------------------------------------------------------------
17.C语言15-指针的定义.mp4
--------------------------------------------------------------------------------
18.C语言16-指针经典案例.mp4
--------------------------------------------------------------------------------
19.C语言17-关于指针的一些疑惑.mp4
--------------------------------------------------------------------------------
20.C语言18-指针与一维数组.mp4
--------------------------------------------------------------------------------
21.C语言19-指针、数组与函数参数.mp4
--------------------------------------------------------------------------------
22.C语言20-指针与字符串.mp4
--------------------------------------------------------------------------------
23.C语言21-指针与函数.mp4
--------------------------------------------------------------------------------
24.C语言22-预处理指令1宏定义.mp4
--------------------------------------------------------------------------------
25.C语言23-预处理指令2条件编译.mp4
--------------------------------------------------------------------------------
26.C语言24-预处理指令3文件包含.mp4
--------------------------------------------------------------------------------
27.C语言25-变量类型.mp4
--------------------------------------------------------------------------------
28.C语言26-extern与函数.mp4
--------------------------------------------------------------------------------
29.C语言27-static与函数.mp4
--------------------------------------------------------------------------------
30.C语言28-extern与变量.mp4
--------------------------------------------------------------------------------
31.C语言29-static与变量.mp4
--------------------------------------------------------------------------------
32.C语言30-结构体.mp4
--------------------------------------------------------------------------------
33.C语言31-枚举.mp4
--------------------------------------------------------------------------------
34.C语言32-typedef.mp4
--------------------------------------------------------------------------------
35.OC1-OC概述.mp4
--------------------------------------------------------------------------------
36.OC2-第一个OC程序.mp4
--------------------------------------------------------------------------------
37.OC3-第一个OC的类.mp4
--------------------------------------------------------------------------------
38.OC4-点语法.mp4
--------------------------------------------------------------------------------
39.OC5-构造方法和description方法.mp4
--------------------------------------------------------------------------------
40.OC6-self、自动释放、变量作用域.mp4
--------------------------------------------------------------------------------
41.OC7-OC语法简单复习、new关键字.mp4
--------------------------------------------------------------------------------
42.OC8-@property和@synthesize.mp4
--------------------------------------------------------------------------------
43.OC9-内存管理1-retain和release.mp4
--------------------------------------------------------------------------------
44.OC10-内存管理2-set方法的内存管理.mp4
--------------------------------------------------------------------------------
45.OC11-@class关键字.mp4
--------------------------------------------------------------------------------
46.OC12-内存管理3-@property参数详解.mp4
--------------------------------------------------------------------------------
47.OC13-内存管理4-autorelease.mp4
--------------------------------------------------------------------------------
48.OC14-Category.mp4
--------------------------------------------------------------------------------
49.OC15-Protocol.mp4
--------------------------------------------------------------------------------
50.OC16-Block.mp4
--------------------------------------------------------------------------------
51.OC17-Protocol、Block、成员变量补充.mp4
--------------------------------------------------------------------------------
52.Foundation1-常用结构体.mp4
--------------------------------------------------------------------------------
53.Foundation2-NSString的创建.mp4
--------------------------------------------------------------------------------
54.Foundation3-指向指针的指针.mp4
--------------------------------------------------------------------------------
55.Foundation4-NSString的导出.mp4
--------------------------------------------------------------------------------
56.Foundation5-NSString的常用方法.mp4
--------------------------------------------------------------------------------
57.Foundation6-NSMutableString.mp4
--------------------------------------------------------------------------------
58.Foundation7-NSArray的创建和遍历.mp4
--------------------------------------------------------------------------------
59.Foundation8-NSArray的排序.mp4
--------------------------------------------------------------------------------
60.Foundation9-NSMutableArray.mp4
--------------------------------------------------------------------------------
61.Foundation10-NSDictonary.mp4
--------------------------------------------------------------------------------
62.Foundation11-NSMutableDictonary.mp4
--------------------------------------------------------------------------------
63.Foundation12-NSNumber.mp4
--------------------------------------------------------------------------------
64.Foundation13-NSValue.mp4
--------------------------------------------------------------------------------
65.Foundation14-NSNull.mp4
--------------------------------------------------------------------------------
66.Foundation15-NSDate.mp4
--------------------------------------------------------------------------------
67.Foundation16-NSObject和反射.mp4
--------------------------------------------------------------------------------
68.OC18-copy语法.mp4
--------------------------------------------------------------------------------
69.iOS基础1-iOS开发概述.mp4
--------------------------------------------------------------------------------
70.iOS基础2-iOS运行过程详解.mp4
--------------------------------------------------------------------------------
71.iOS基础3-第一个iOS程序:QQ登录界面.mp4
Oc程序设计第四版笔记
1.
Oc是消息结构的语言, 是动态的。
int main(){
@autorealsepool{
} //花括号之间的程序语句会在被称为“自动释放池”的语境中执行。
}
自动释放池的机制是:它使得应用在创建新对象时,系统能够有效地管理应用所使用的内存。
@interface //用于描述类和类的方法及类的属性,定义一个新类首先要告诉编译器该类来自何处即它的父类
@implementation //用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明的方法的实际代码
+ 类方法
—实例方法
Objective-c中所有的类型都要用 ()括起来。
使用@synthesize指令可以让编译器自动为您生成一些方法。
Fraction *myFraction; //定义变量
myFraction = [Fraction alloc]; //你请求Fraction类执行alloc方法,但是你从未定义过这个alloc它来自父类NSObject方法。
//alloc实际返回存储数据的位置(对数据的引用)
myFraction = [myFraction init]; //初始化类的实例变量。该语句将init消息发送给myFraction。
//将init消息发送给了类的一个实例。
//返回被初始化的对象。
组合在一起这样使用:Fraction myFraction = [[Fraction alloc]init];
[myFraction setNumberator:1] //向myFraction发送setNumerator:消息,并提供一个值为1 //的参数,于是将控制转到Fraction类中定义的setNumerator: 方法
Xcode4.2 程序员不必再担心内存释放的问题了。引入类ARC
Fraction *myFraction //myFraction之前的星号(*)表明myFraction是Fraction对象的引用
// myFraction 存储的时对象的引用。
3.7 实例变量的访问及数据封装
事实上,实例方法总是可以直接访问它的实例变量的。然而类方法则不能,因为它只处理本
身,并不处理任何类实例。
如果访问实例变量,可以通过创建于实例变量名相同的numerator和denominator新方法,用于访问Fraction实例变量,这些实例是消息的接受者。结果是对应的整数值,你将返回这些整数值。
-(int)numerator;
-(int)denominator;
下面是定义:
-(int)numerator{
return numerator;
}
-(int)denominator{
return denominator;
}
访问方式:
NSLog(@”the value of myFraction is:%i/%i”,[myFractionnumerator],[myFraction denominator]);
//在第一条消息调用时,numerator消息会发送给Fraction类对象myFraction。记住方法执行
的上下文环境就是接收到消息对象。当访问numerator方法且返回numerator实例变量值的
时候,会取得myFraction的分子并返回,返回的整数值传入NSLog,从而显示出来。
你不能在类的外部编写方法直接设置或获取实例变量的值,而需要编写设置方法和取值方法
来设置或获取实例变量的值,这边是数据封装的原则。你必须通过使用一些方法来访问这些
通常对“外界”隐藏的数据。
Fraction *myFraction = [Fractionnew];
可用于创建和初始化新的Fraction。但用两步来实现创建和初始化的方式通常更好。
4 数据类型和表达式
限定词:long,long long ,short,unsigned 及signed
4.1.5 id类型
id数据类型可存储任何类型的对象。从某种意义说,他是一般对象类型。
id graphicObject;
-(id) newObject : (init)type;
这个程序声明了一个名为newObject的实例方法,它具有名为type的单个整形参数并有id类型的返回值。
id类型是本书经常使用的一种重要的数据类型。这里介绍该类型的目的是为了保持本书的完整性。id类型是oc中十分重要的特性,他是多态和动态绑定的基础。
7. 类
7.1 分离接口和实现文件
使用双引号时,编译器一般会首先在项目目录寻找指定文件,然后转到其他位置查找。
7.2 合成存取方法
7.3 使用点运算符访问属性
可以使用 [myFraction numerator] , 这会向myFraction对象发送numerator消息,从而返回所需要的值。在oc中也可以使用点运算符编写一下等价的表达式:
myFraction.numerator
一般格式为:
instance.property
还可以使用类似的语法进行赋值:
instance.property= value; //等价于编写一下表达式[instance setProperty:value]
7.4 具有多个参数的方法
同时设置numerator和denominator的方法可以命名为setNumerator: andDenominator: ,
采用以下形式:
[myFraction setNumerator:1 andDenominator:3];
8 继承
自此,我们所定义的类都属于NSObject根类的派生类,在接口文件中通常这样制定根类:
@interface Fraction:NSObject
@end
NSObject 是最顶层的根类。
9. 多态、动态类型和动态绑定
10. 变量和数据类型
11. 分类和协议
11.1 分类
12 预处理程序
13. 基本的c语言特性
14. Fundation 框架简介
框架室友许多类、方法、函数和文档按照一定的多级组织起来的集合,以便是研发程序变得更容易。在Mac OS X 系统下大约有90多个框架。
Cocoa总的来说指的是:Foundation框架、ApplicationKit框架和Core Data框架。
Cocoa Touch是指:Foundation、Core Data 和UIKit框架。
https://developer.apple.com/library/mac/navigation/index.html
苹果官方文档
15. 数字、字符串和集合
基本对象:数字、字符串、和集合
15.1 数字对象
Oc中基本数据类型不是对象,不能够向他们发送消息。然而有时需要将这些值作为对象使用。比如使用Foundation的NSArray对象创建一个数组,它要求存储的值必须是对象,因此不能讲基本的数据类型直接春初到数组中。如果需要存储基本数据类型,可以使用NSNUmber类,他会依据数据的类型创建对象。、
15.2 字符串对象
NSString *str = @”this is a string ”;
Foundation框架支持一个名为NSString的类,用于处理字符串对象。然而C样式的字符串有char字符组成,NSString对象有unichar字符组成。
15.2.1NSLog 函数
15.2.2 description 方法
15.2.3 可变对象与不可变对象
15.2.4 可变字符串
15.3 数组对象
15.4 词典对象
词典(dictionary)是由键—对象对组成的数据集合。
15.5 集合对象
15.5.1 NSIndexSet
16 使用文件
Foundation框架允许你利用文件系统对文件或目录指向基本操作。这些基本操作是由NSFileManager类提供的,这个类的方法具有如下功能:
16.1 管理文件和目录:NSFileManager
16.2 使用路径:NSPathUtilities.h
16.3 基本的文件操作:NSFileHandle
16.4 NSURL类
16.5 NSBundle类
17. 内存管理和自动引用计数
18. 复制对象
19. 归档
20 Cocoa 和CocoaTouch简介
20.1 框架层
20.2 Cocoa Touch