oc语言学习

来源:互联网 发布:uvz mac 编辑:程序博客网 时间:2024/05/27 20:52

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





 

 

0 0
原创粉丝点击