———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
一、OC基础语法
1、关键字
OC的关键字基本上都是以@开头的:@interface、@implementation、@end

@public、@protected、@private、@selector

@try、@catch、@throw、@finally

@protocol、@optional、@required、@class

@property、@synthesize、@dynamic

self、super、id、_cmd、__block、__strong、__weak
2、字符串以@开头
例:C语言中字符串"hello"在OC中为@"hello"

3、数据类型

基本数据类型:char、int、float、double、BOOL(YES\NO)

4、NSLog和printf的区别

1> NSLog接收OC字符串作为参数,printf接受C语言字符串作为参数。

2> NSLog输出后会自动换行,printf输出后不会自动换行。

3> 使用NSLog需要#import <Foundation/Foundation.h>,

使用printf需要#include <stdio.h>。

5、Foundation框架

#import <Foundation/Foundation.h>

1> Foundation框架的主头文件名称就是Foundation.h

2> 只需要包含Foundation框架主头文件,就可以使用整个框架的东西

#import作用

跟#include一样,用来拷贝某个文件的内容

可以自动防止文件内容被拷贝多次,头文件中不用加入下面的预处理指令

#ifndef _STDIO_H_

#define _STDIO_H_

#endif

6、编译过程

1> 编写OC源程序:.m   .c

2> 编译:cc -c xxx.m xxx.c

3> 链接:cc xxx.o xx.o -framework Foundation

(只有用到Foundation框架才需要引入)

4> 运行:./a.out

7、BOOL

BOOL变量的取值:YES/NO

#define YES (BOOL)1

#define NO (BOOL)0

BOOL变量可以当做整数来使用

二、类和对象

1、类的声明

1)类的设计:

1> 类名

* 类名的第一个字母必须是大写

* 不能有下划线

* 多个英文单词,用驼峰标识

2> 属性

3> 行为(功能)

谁最清楚这个行为,这个行为就应该在哪个类中,

该交给谁执行这个行为,由该类决定

注:拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

#import <Foundation/Foundation.h>

// 类的声明

// NSOject: 让类具备创建对象的能力

@interface Car : NSObject

{

//@public:让Car对象的wheels和speed属性能被外界访问

@public

int wheels;

int speed;

}

// 对象方法必须以-号开头,数据类型用()括住

- (void) run;

@end

2、类的实现

用来实现@interface中声明的方法

@implementation Car

- (void) run

{

NSLog(@"%d个轮子,%d时速的车跑起来了",wheels, speed);

}

@end

3、创建对象

int main()

{

// 利用类来创建对象

// [执行者 行为名称]

// 定义一个指针变量C,指向Car类型的对象

Car c = [Car new];

//给c指向对象的属性赋值

c -> wheels = 3;

c -> speed = 100;

// 执行c的run方法

[c run];

// [Car new]每次都会创建一个新对象

Car c2 = [Car new];

}

4、常见错误

1> 只有类的声明,没有类的实现

2>漏了@end

3>@interface和@implementation嵌套

4>两个类的声明嵌套

5>成员变量没有写在括号里面

6>方法的声明写在了大括号里面


三、方法

1、方法与函数

方法:

1> 对象方法都以-开头

2>对象方法的声明必须写在@interface和@end之间,

对象方法的实现必须写在@implementation和@end之间

3> 对象方法只能由对象调用

4> 对象方法归类和对象所有

函数:

1>函数能写在文件的任意位置(@interface和@end除外),

函数归文件所有

2> 函数调用不依赖于对象

3> 函数内部不能直接通过成员变量名访问某个成员变量

2、OC方法使用注意

方法名:

1> 同一个对象中,不允许2个对象方法同名

2> 一个参数对应一个冒号,冒号也是方法名的一部分

方法:

1> 成员变量不能在{}中初始化

2> 成员变量/方法不能用static等关键字修饰,别跟C语言混在一起

3> 方法只有声明,没有实现

程序崩溃,闪退

4> 方法只有实现,没有声明

编译器警告,但能调用(OC弱语法)

5>编译的时候:如果访问了不存在的成员变量则直接报错;

如果访问了不存在的方法,仅仅只是警告

// 计算和的方法

// 方法声明

- (double)sumOfNum1:(double)num1 andNum2:(double)num2

// 方法实现

- (double)sumOfNum1:(double)num1 andNum2:(double)num2

{

return num1 + num2;

}

3、方法分类

1> 类方法

格式:[类名 方法名];

特点:

1)以+开头

2)只能用类名调用

3)不能访问成员变量

好处:不依赖于对象,执行效率高

使用场合:方法内部不需要成员变量时

2> 对象方法

格式: [对象名 方法名];

特点:

1)以-开头

2)只能让对象调用

3)可以访问成员变量

注:类方法和对象方法可以重名

#import <Foundation/Foundation.h>

@interface Car : NSObject

{

int speed;

}

+ (void)run;

+ (test);

- (test);

@end

@implementation Person

+ (void)run

{

// 类方法中不能访问speed变量

NSLog(@"车跑起来了");

}

+ (void)test

{

NSLog(@"test类方法");

// 死循环

// [Car test];

}

- (void)test

{

NSLog(@"test对象方法");

[Car test];

}

@end

int main()

{

Car c = [Car new];

[c test];

[Car test];

// 用对象调用类方法,报错

// [c run];

}

———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———






黑马程序员——0C语言——基础语法相关推荐

  1. 黑马程序员C语言基础(第五天)运算符与表达式、程序流程结构、数组和字符串、函数

    https://www.bilibili.com/video/BV15W411K7k6?p=93&spm_id_from=pageDriver 黑马程序员C语言基础(第五天)运算符与表达式.程 ...

  2. 黑马程序员C语言基础(第三天)

    黑马程序员C语言基础(一)第三天 https://www.bilibili.com/video/BV15W411K7k6?p=40 文章目录 低级语言与高级语言 c语言优缺点 c语言应用领域 通过gc ...

  3. 黑马程序员C语言基础(第八天)复合类型(自定义类型)(结构体)、共用体(联合体)、枚举enum、 typedef

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  4. 黑马程序员C语言基础(第七天)内存管理

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  5. 黑马程序员——C语言基础---基础语法

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  6. 黑马程序员--- c语言基础--基本语法

    **第一讲 c语言概述** 一. 计算机和软件常识 1. 计算机运行原理 1) 硬件基本组成:硬盘.内存.CPU 2) 各个部件之间的运作协调 计算机只能识别0和1 1) 0和1组成的指令 2) 0和 ...

  7. 黑马程序员JAVA 教程--基础语法

    基础语法 注释 注释概述 注释分类 关键字 关键字概述 关键字特点 常量 常量概述 常量分类 数据类型 计算机存储单元 数据类型 数据类型内存占用和取值范围 变量 变量概述 变量定义 变量的使用 变量 ...

  8. 黑马程序员--C语言基础之--变量、内部函数与外部函数

    ------IOS培训期待与您交流! ------- 一.变量 变量代表着一个有名字的.具有特定属性的一个存储单元,运行期间,变量的值是可以改变的.变量必须先定义,后使用.定义时,指定该变量的名字与类 ...

  9. 黑马程序员C语言基础(第六天)指针

    https://www.bilibili.com/video/BV1jW411K7v2/?p=70&spm_id_from=pageDriver 文章目录 指针 概述 内存 物理存储器和存储地 ...

最新文章

  1. Linux底层函数库“glibc”再现重大安全漏洞
  2. IPython基础使用_Round2
  3. OpenBoard的板级支持包(BSP)开发召集令
  4. Java设计模式之行为型:模板方法模式
  5. [精品]CSAPP Bomb Lab 解题报告(二)
  6. 工作155:首页样式调整第二次
  7. codeforces-1176 (div3)
  8. messagebox的用法_酝酿已久,MessageBox类实例代码讲解
  9. 企业内部IT报修是如何操作的?
  10. 2017 ACM-ICPC乌鲁木齐网络赛 B. Out-out-control cars(几何)
  11. struts2的package和result的标签的属性
  12. Layer 引入自定义模块
  13. idea导出配置和导入配置
  14. 单片机原理及应用试卷c51语言,51单片机原理及应用期末考试试题汇总
  15. TheChroniclesOfNarnia写作年代
  16. android apk安装包 华为提示安装包无效或与操作系统不兼容,魅族提示apk仅为测试版,要求下载正式版安装
  17. mysql实战45讲--- 22 mysql有那些”饮鸩止渴”提高性能的方法?
  18. python+tensorflow CNN卷积神经网络手写字体识别
  19. ffmpeg实现视频和音频分离,并且将声音切片
  20. HDU 4069 Squiggly Sudoku(DLX)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)...

热门文章

  1. 蓝桥-受伤的皇后-java
  2. C语言如何实现读写SOC中的寄存器
  3. 一个新的App该如何推广
  4. 如何利用英文翻译器在线语音翻译英文
  5. Lazada开店找代入驻靠谱吗,大概需要多少费用?
  6. Linux下搭建及配置禅道服务器详细过程-包含软件资源
  7. 电子商务设计师教程 电子版_设计电子商务产品组合:简介
  8. 【鉴别】日版iPhone如何通过IMEI查询运营商
  9. 游戏应该怎么做-美术
  10. Python自动投票开发,基本实现微信投票3秒钟一票实现案例分析