[笔记]Objective-C <一>

Objective-C Basic Synax

 

一.Hello World:

 

输出:Hello,World!

 

1.使用 #import 代替 #include.

 

2.使用NSLog实现了printf的功能:

        老乔当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了.

        类似的,我们还可以看到其他名字打头的一些类,比如CF、CA、CG、UI等等,CF--CoreFoundation,CA--Core Animation,CG--Core Graphics,UI--iPhone的UserInterface.

 

二.Object Messaging:

 

        这是Objective-C中最大的特色:为了让一个对象去执行某个操作,我们发送一个messaging告诉它去执行某个方法(method):

                   [receiver message] à[pool drain];

带参数的消息传递:

                   [obj method: argument method1:argument1];

method 及message 這兩個字是可以互換的。不過 messages 擁有特別的特性,一個 message 可以動態的轉送給另一個物件。在Objective-C 中,呼叫物件上的一個訊息並不一定表示物件真的會實作這個訊息,而是物件知道如何以某種方式去實作它,或是轉送給知道如何實作的物件。[摘取] 


三.Class 


Objective-C类要求分区接口(interface)与实现(implementation)为两个代码区块,这是强制性的。通常类的接口会放置于头文件内,依C语言的惯例以.h作为扩展名;类的实现则放于代码档以.m为扩展名。

 

Interface

 

         

         接口区段里头清楚定义了类的名称,变量,以及方法。 以关键字@interface作为区段起头,@end退出区段.

         NSObject为NeXTStep Object 的縮寫。

         繼承以 Class:Parent 表示,就像上面的 Car:NSObject。

         夾在 @interfaceClass: Parent { .... } 中的稱為 instance variables。

         沒有設定存取權限(protected,public, private)時,預設的存取權限為protected。[摘取]

 

         方法前面的+/-号代表方法的类型:加号(+)代表类方法(classmethod)-这里我们并没有用到,不需要实体就可以调用,近于C++的静态成员函数(staticmember function)。减号(-)即是一般的实体方法(instancemethod)。

 

         Objective-C定义一个新的方法时,名称内的冒号(:)代表参数传递,不同于其他语言以数学函数的括号来传递参数。

 

         这里,如果呼叫这个method,我们就用到了之前提到的 [receiver message]:

                            

                      [car setTire: tireatIndex: index];

 

Implementation

 

实做区段则撰写方法的实际运行代码。以关键字@implementation作为区段起头,@end结尾。

 

 

CreateObject

 

Objective-C创建对象需通过两个消息:alloc以及init。alloc的作用是分派存储器空间,init则是对对象做初始化。 init与alloc都是定义在NSObject里的类方法,当对象收到这两个消息并做出正确回应后,新实体才算准备妥当。以下即为示例:

                     MyObject * my = [[MyObject alloc] init];

在Objective-C 2.0里,可以简化为单独一个消息new

                     MyObject * my = [MyObject new];

这仅仅是语法上的精简,效用完全相同。 若要自己定义初始化的过程,可以复写init方法,来添加额外的工作。(功用类似C++的constructor)

- (id) init {

    if( self=[super init] ){   // 必需呼叫父类的init

       // do something here ...

    }

   return self;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值