一、Objective-C语言的特点

1、支持C语言语法,是一个高效的编程语言。

2、作为C语言面向对象的扩展,支持完整的面向对象的编程特性。

3、简洁而优雅的编程风格使得编写程序与阅读代码都变得格外清晰。

4、兼容性好,可以在同一个项目中同时使用OC与C++,也可以在项目中导入由C、C++等语言编写的库文件。

如何学好这门语言?

OC语言语法预览:

C语言实现文件.c  C++实现文件.cpp  OC实现文件.m  OC&&C++实现文件.mm  头文件都是.h

类的定义:

@interface SimpleClass:NSObject

@end

类的属性声明:

@interface Person:NSObject

@property NSString *firstName;

@property NSString *lastName;

@end;

@property NSNumber *yearOfBirth;

@property int yearOfBirth;

@property (readonly) NSString *firstName;

减号方法(普通方法又称对象方法或实例方法)申明

加号方法(类方法,又称静态方法)申明

 

类的实现:

#import "XYZPerson.h"

@implementtation XYZPerson

@end

二、

  OOP(Objective Oriented Programming)--面向对象编程

  OOA(Object-Oriented Analysis)--面向对象分析

  OOD(Object Oriented Design)--面向对象设计

三、

  C++:1983--贝尔实验室。Simula 67 复杂,静态

  Objective--C: 1988--乔布斯NextStep。Smaltalk 简单,动态

四、类和对象的基本概念

  1、创建类、得到对象。-->类的实例化。

  

 1       //实例化对象
 2         /*
 3          [类名 方法名]
 4          [对象名 方法名]
 5          alloc - 为对象分配内存空间
 6          init - 进行初始化操作
 7          */
 8         People *p1 = [[People alloc] init];//推荐
 9         People *p2 = [People new];
10 
11       NSLog(@"%p", p1);
12         NSLog(@"%p", p2);

 

  2、成员变量的声明和使用。属性的声明和使用

 1 #import <Foundation/Foundation.h>
 2 //类内使用成员变量。类外使用成员属性。
 3 @interface People : NSObject
 4 //声明成员变量
 5 {
 6     @public
 7     NSString *_peopleName;
 8     int _peopleAge;
 9     int _peopleSex;
10 }
11 //属性为了让类外可以访问成员变量
12 //属性就是成员变量的外部接口
13 @property (nonatomic, strong) NSString *peopleName;//声明属性
14 
15 @end
 1 #import "People.h"
 2 
 3 @implementation People
 4 
 5 - (instancetype) init
 6 {
 7     if (self = [super init])
 8     {
 9         //类内调用成员变量而不是属性,属性是给类外使用的。
10         self.peopleName = @"张三";
11     }
12     return self;
13 }
14 
15 @end

后记:练习的源代码:

 1 #import <Foundation/Foundation.h>
 2 #import "People.h"
 3 
 4 int main(int argc, const char * argv[])
 5 {
 6     @autoreleasepool
 7     {
 8         //调用方法使用[]
 9         People *p1 = [[People alloc] init];
10         int a = [p1 report];
11         NSLog(@"%d", a);
12 //        [People report1];
13         int a1 = [p1 showWithA:10];
14         NSLog(@"%d", a1);
15         int a2 = [p1 showWithA:10 andB:20];
16         NSLog(@"%d", a2);
17     }
18     return 0;
19 }
20 
21 #import <Foundation/Foundation.h>
22 /*
23  1、 - 代表对象方法就(实例方法):用对象名来调用   +代表类方法:用类名来调用
24     加号方法和减号方法可以互相调用,当然需要类名和实例化变量,加号方法不能调用成员变量。
25  2、- (int) 返回值类型
26  3、:(int)x - :代表有参数,(int)代表参数类型,a代表参数名
27  4、函数名(方法名) - 去掉方法类型,去掉参数类型、去掉参数名,剩下的就是方法名
28  */
29 @interface People : NSObject
30 
31 - (int)report;
32 + (void)report1;
33 
34 - (int)showWithA:(int)a;
35 //showWithA: andB:(函数名/方法名)
36 - (int)showWithA:(int)a andB:(int)b;
37 
38 
39 @end
40 
41 #import "People.h"
42 
43 @implementation People
44 
45 {
46     NSString *_peopleName;
47 }
48 
49 static NSString *_peopleName1;
50 
51 - (int)report
52 {
53     NSLog(@"report");
54     [People report1];
55     _peopleName = @"123";
56     return 20;
57     
58 }
59 
60 + (void)report1
61 {
62     NSLog(@"report1");
63 //    [[People alloc] report];//死循环
64     _peopleName1 = @"张三";
65     
66 }
67 
68 - (int)showWithA:(int)a
69 {
70     return a;
71 }
72 - (int)showWithA:(int)a andB:(int)b
73 {
74     return a + b;
75 }
76 
77 
78 @end