黑马程序员————oc基础、类

来源:互联网 发布:函数式编程 编辑:程序博客网 时间:2024/06/07 11:56
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1,oc简介

1)C语言的基础上,增加了一层最小的面向对象语法。
2)完全兼容C语言。
3)可以在OC代码中混入C语言代码,甚至是C++代码。
4)可以使用OC开发Mac OS X平台和iOS平台的应用程序。

2,oc语法

1)关键字

@interface、@implementation、@end @public、@protected、@private、@selector @try、@catch、@throw、@finally @protocol、@optional、@required、@class@property、@synthesize、@dynamicself、super、id、_cmd、__block、__strong、__weak、

2)字符串

(1)表示字符串的类NSString
(2)字符串以@开头。

例如:@"Hello"是OC中的字符串,而"Hello"则是C语言中的字符串。

3)其他语法


其中NSlog()与printf()函数对比:
(1)NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数
(2)NSLog输出后会自动换行,printf输出后不会自动换行
(3)使用NSLog需要#import <Foundation/Foundation.h>
(4)使用printf需要#include <stdio.h>

4)终端指令
一般形式:

编译cc –c main.m链接cc main.o –framework Foundation运行./a.out

  多个.m文件:

编译:cc –c main.m test.m链接:cc main.o test.o –framework Foundation运行:./a.out

  m文件和.c文件混用:(没有使用Foundation框架的话,就不用-framework Foundation)

编译:cc –c main.m test.m链接:cc main.o test.o运行:./a.out

5)#import与#include
相同:用来拷贝某个文件的内容
不同:#include完全复制,文件内容可能被拷贝多次;#import可以自动防止文件内容被拷贝多次。
6)BOOL
Object-c 提供了BOOL 类型,Object-c 里1 为true 并被宏定义为YES,0 为false 并被宏定义为NO。

3,面向对象

    OC是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的两种不同思想。区别:面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象。

4,类的声明与实现

1)interface部分
描述类、类的数据成分以及类的方法。一般形式:

@interfac NewClassName : ParentClassName{memberDeclarations;}methoddeclarations;@end

命名规则:以字母或下划线开头,之后可以是任何字母,下划线或者0~9 数字组合。一般情况,类名以大写字母开头,实例变量、对象以及方法的名称以小写字母开始。
方法开头的(-)号或者(+)号表示:
(-) 该方法是实例方法(对类的特定实例执行一些操作);
(+)是类方法(即对类本身执行某些操作的方法,例如创建类的新实例)
举例:

@interface Stu : NSObject{    int num; char name    int age; }- (void) learn; @end

2)implementation部分
实现这些方法的实际代码,一般形式如下:2)implementation部分
实现这些方法的实际代码,一般形式如下:

@implementation NewClassNamemethodDefinitions;@end

其中NewClassName表示的名称与interface部分的类名相同。
例如:

@implementation Stu- (void) learn{Nslog(@"学生在学习");}@end

3)创建对象
举例:

int main(int argc , const char *argv){Stu *stu = [Stu new];}

5,方法

1)无参数

一般形式:

-(void)methodname

例如:

// 方法声明-/+ (double)pi;// 方法实现- (double)pi{return 3.14;}

2)一个参数
一般形式:

-/+(return type)methodname : (parameter type) parameter

例如:

// 方法声明- (double)square : (double)number;// 方法实现- (double)square : (double)number{    return number * number;}

3)多个参数
一般形式:

-/+ (return type) methodname : (parameter type) parameter1 otherParameter : (parameter_type) parameter2 otherParameter :......

例如:

// 方法声明- (double)sumOfNum1:(double)num1 andNum2:(double)num2;// 方法实现- (double)sumOfNum1:(double)num1 andNum2:(double)num2{    return num1 + num2;}

4)方法调用
一般形式:

[classOrInstance method];

例如:

[stu learn]


0 0