快速ObjectC基本语法

一.类的定义

#import  <Cocoa/Cocoa.h>  //    1

@interfaceStudent : NSObject  //   2

{

       int age ;

       NSString *name ;     // 3

}

@property(nonatomic , retain) NSString *name ; //  4

@property(nonatomic , retain) int age ;

-( id )initName : (NSString *) aName andAge : (int) aAge ;  //5

-( id )inttName : (NSString *) aName ;  // 6

-(void)sayHello ;

@end                    // 1

注释:

  1. #import 告诉预处理器,将头文件的内容包含到本文件中. OC 中的import 能保证头文件只会被包含一次 .

  2. @interface关键字:声明一个Student类。@end 结束声明.

冒号:表示继承 后面跟的是父类. 

NSObject是大多数对象都会用到的内存管理,和初始化框架,以及反射和类型操作. 相 当于Object。

NS是NextSTEP缩写,表示这个函数来自Cocoa工具包。

  1. 声明全局变量 , 与C中一样。

  2. property关键字:设置成员变量的属性(有读/写,赋值assign,retain,copy ,以及对多线程的支持nonatomic)。

  3. 声明一个方法,格式是  –(返回值) 方法关键字1 : (参数类型)参数名 方法关键字2 : (参数类型)参数名 …… (在读方法的时候就可以先找方法关键字来确定参数)。

- 减号是实例方法, + 是类方法

二.类的实现

#import  “Student/Student.m” 

#synthesizename ;                                     //1

#synthesizeage ;

@implementationStudent    // 2

-(id)initName : (NSString *) aName andAge : (int) aAge    // 实现方法

{

       if (self =[super init])   // 3

       {

              self.name = aName ;

              self.age = aAge ;    

}

return self ;           

}

-( id )initName : (NSString *) aName     // 4

{

       self = [self  initName : aName andAge : 0];

       return self ;

}

-(void)sayHello

{

       NSLog (”%@”,Hello World) ;   // 5

}

@end

注释:

  1. #synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 。

  2. @implementation 关键字,表明类的实现 @end 结束

  3. self 关键字 :类似于java中的this,是隐藏参数,指向当前调用方法的类。

super 关键字 :调用父类的方法。

self = [superinit]  这里不是判断self与[superinit]是否相等,而是判断是否可以成功初始化。[super init]:父类初始化成功的话,通过=给self,这样self成为一个非空对象,整个来说即非false(非NO)。

3.  另一个初始化方法中调用已有的初始化方法  这种概念被称为Designated Initializer.

4.  NSLog是OC中的标准输出, 附加输出当时日期, 时间, 应用程序名称 . 使用NSLog()输出任意对象的值时,都会使用%@格式说明。在使用这个说明符时,对象通过一个名为description的方法提供自己的NSLog()格式。

%i  BOOL值.


三.对象的生成与方法的调用

#import<Foundation/Foundation.h>

#import “Student/Student.h”

int main( int argc , const char * argv[] ) //  1

{

       NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init ] ; // 2

       Student *s1 =[[Student alloc] initName :@” zhangsan ”

andAge : 15] ;  // 3

       [s1 sayHello] ;  // 4

       [s1 realease]

       [pool drain]  //

       return 0 ; 

}

注释:

  1. int argc , const char * argv[]  :  argv[0] 接受程序名,以后的参数命令行跟的是用户输入参数, argc则是纪录了用户在命令行输入了几个参数

  2. 创建一个自动释放池 pool

  3. 创建一个对象 格式 类名 *对象名= [[类 alloc] init初始化数据] ;

alloc是个函数,作用是返回一个指向n个连续字符存储单元的指针,alloc函数的调用者可以利用该指针存储字符序列,在这里是创建一个内存空间给对象,并将全部数据初始化为0。

init 是函数,作用是负责为类中的成员变量赋值。和一般方法没有区别,只是在开头加上了init。

4.  方法调用 格式 [对象名 方法名] 类似于 对象名.方法名;

PS :

  1. BOOL  : 布尔类型,1或者YES为真, 0 或者NO 为假。

  2. @” ” 表示将@后的字符串当成一个NSString 对象。

  3. id 这是ObjC新加的一个数据类型,它是一般的对象类型,能够存储任何类型的方法

  4. 转自:http://appleparty.diandian.com/post/2012-05-14/17828961

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
, NO 是 0 , BOOL 本身就是个 char 。 4、IBOutlet、IBAction是啥玩意,总能看到。 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看 ,NO是0,BOOL本身就是个char。 4、IBOutlet、IBAction是啥玩意,总能看到。 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Builder里控制某个对象执行某些动作,就在方法前面加上(IBAction)。 而这两个东西实际上和void是一样的。 5、nil。 Objective-C里的NULL(空)就这么写,表示空指针。 6、为什么是@”字符串”而不是”字符串” 前面加上@符号,编译器在编译的时候会在程序中给你留出位置,这样才能保证这个字符串不会丢失。反正记住,如果你要想把某些字符串写死在程序里,就要用@”字符串”,如果忘了用@,程序应该会出错。 superzhou大侠指正: 6、为什么是@”字符串”而不是”字符串” ”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写. 在需要NSString的地方才需要这个转化,例如NSLog里面. 在需要C string的地方,还是用”字符串”的. 另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的. 四、Objective-C 2.0 Objective-C 2.0是Leopard新增加的一门语言,其实和原来的Objective-C是一样的。主要是增加了属性。详细的内容这里不写了,可以参阅Allen Dang的这篇文章,写的很明白。 http://blog.codingmylife.com/?p=81 五、总结 现在来总结一下怎么看Objective-C的代码和怎么开始学Objective-C吧。 1、记住Objective-C就是C,不是火星语,这个很关键。 2、记住你自己看不懂不表示脑子迟钝,大部分人第一次看Objective-C的代码可能比你还要迟钝。 3、把CocoaChina.com加入收藏夹,看不明白代码就来再看一遍这篇开宗明义的好文。 4、文档很关键,当你看不懂某些东西说的是什么的时候,先查Cocoachina,再看英文文档里面的API说明,尤其这个类是以NS开头的时候。再不行就去google搜,直接把你要查的方法贴进google,通常能找到不少人也在问同样的问题,自然也有热心人活雷锋帮助回答。 5、可以看hello world例子,但是不能总看,看多了真的会晕。另外,千万要放弃苹果官方的Currency Converter货币转换的例子,那个例子是毒药,刚学的时候越看越蒙。 6、学习一门语言最好的方法是先用,和学外语一样,当你会说的时候自然会读。给自己设立一个简单的目标,比如做一个简单的程序,然后一点点解决问题。这样学习起来比只看例子快得多。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值