黑马程序员技术交流社区

标题: OC基本语法及知识要点汇总 [打印本页]

作者: 耀眼的小男人    时间: 2014-8-8 23:37
标题: OC基本语法及知识要点汇总

在c语言中 我们在控制台输出信息是用printf()   Java语言则是 System.out.println() 而Objective-C  则是用 NSLog();

1 减号(或者加号)

减号表示一个函数、或者方法、或者消息的开始,怎么说都行。

不过在Objective-C里面没有public和private的概念,你可以认为全是public。

而用加号的意思就是其他函数可以直接调用这个类中的这个函数,而不用创建这个类的实例。

2 中括号

中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。

比如C#里你可以这么写:

this.hello(true);

在Objective-C里,就要写成:

[self hello:YES];

1、#import    引入一次  (注意:在与c++共用的文件里,   c++用到的头文件要写到,h文件里,oc用到的头文件写到.mm文件里。。)

2、@interface等等



创建类:

头文件里:

@interface Kids: NSObject {

NSString *kidName;

NSString *kidAge;

}

-(BOOL) isCaughtKid:;

@end

.m实现文件里

#import “kids.h”

@implementation Kids

-(void) init {

kidName=@”mykid”;

kidAge=@”15”;

}

-(BOOL) isCaughtKid:{

return YES;

}

@end

问题三、一个方法如何传递多个参数?

一个方法可以包含多个参数,不过后面的参数都要写名字。

多个参数的写法

(方法的数据类型) 函数名: (参数1数据类型) 参数1的数值的名字 参数2的名字: (参数2数据类型

) 参数2值的名字 …. ;

举个例子,一个方法的定义:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName;

实现这个函数的时候:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName{

大儿子 = myOldestKidName;

二儿子 = mySecondOldestKidName;

三儿子 = myThirdOldestKidName;

}

调用的时候:

Kids *myKids = [[Kids alloc] init];

[myKids setKids: @”张大力” secondKid: @”张二力” thirdKid: @”张小力”];



1、 id:

Objective-C有一种比较特殊的数据类型是id。你可以把它理解为“随便”。

在Objective-C里,一切东西都是指针形式保存,你获取到的就是这个对象在内存的位置。那么id就是你知道这个位置,但是不知道里面是啥的时候的写法。

2、 同一个数组可以保存不同的对象:

比如一个数组NSArray,这种数组里面可以保存各种不同的对象,比如这个数组里:

myArray <—-|

                       0: (float) 234.33f

                       1: @”我是个好人”

                       2: (NSImage *)  

                       3: @”我真的是好人”

这是一个由4个东西组成的数组,这个数组包括一个浮点数,两个字符串和一个图片。

3、BOOL,YES,NO:

YES是1,NO是0,BOOL本身就是个char。

4、IBOutlet、IBAction是啥玩意,总能看到。

这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Builder里控制某个对象执行某些动作,就在方法前面加上(IBAction)。

而这两个东西实际上和void是一样的。

5、nil。

Objective-C里的NULL(空)就这么写,表示空指针。

6、为什么是@”字符串”而不是”字符串”

”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写.
在需要NSString的地方才需要这个转化,例如NSLog里面.
在需要C string的地方,还是用”字符串”的.

另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的.。

作者: 静水流深2014    时间: 2014-8-23 09:22
很详细,很有用 ,楼主不错啊
作者: wangxu    时间: 2014-8-23 12:32
还不错 继续更新点好得文章
作者: 此生逍遥    时间: 2014-8-29 10:58
支持一下
作者: ﹉随♥游✈者    时间: 2014-8-29 12:51
行呢,,,,,,,,,,,,,,,,,
作者: 爱轮永恒相伴    时间: 2014-9-14 00:41
总结的很好,学习一下。
作者: 眼瞳╄渲染繁华    时间: 2014-9-15 13:20
学习了,总结的很好
作者: 李欢宇    时间: 2014-11-11 09:24
oc和c语言还是有很大差别的啊。
作者: MacxChina    时间: 2014-11-21 19:27
感谢分享
作者: baby14    时间: 2018-9-2 20:08
多谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2