oc语言学习

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





 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值