------IOS培训期待与您交流! -------

一、OC简介

(一)、Objective-C与C的渊源

Objective-C诞生于 20 世纪 80 年代,由Brad Cox 发明,意在将流行的、可移植的 C 语言与优雅的 Smalltalk 语言结合在一起。

Objective-C 是 C 语言的一个扩展集,它以 C 语言为基础,在语言中添加了一些微妙但意义重大的特性。

苹果公司的 iphone 平台采用 Objective-C 做为 native language 的开发,Objective-C的内核是C语言的,并基于C语言实现OOP的一些特性。

Objective-C是对C语言的扩展,这和C++的前身 Better-c有很大的相似之处,Objective-C的新版本里实现了和Java类似的垃圾回收机制,但基于iphone平台的资源限

制,iphone平台并不支持垃圾回收机制。

(二)、初识Objective-C

1、Cocoa的组成

苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集提供Cocoa组成部分有:

(1)、Foundation框架(有很多有用的,面向数据的低级类和数据结构);

(2)、Application Kit(也称AppKit)框架(包含了所有的用户接口对象和高级类,例如NS……),还有一个支持框架的套件,包括Core Animation和Core Image。

2、NSLog相当于C语言中的printf()

NSLog(@"hello Objective-C");
//注:@是Objective-C在标准C语言基础上添加的特征之一,双引号的字符串前面有一个@,这表示引用的字符串应该作为Cocoa的NSString元素处理 

NSLog(@"are %d and %d different? %@",5,5,boolString(areTheyDifferent));
//注意%@:使用NSLog输出任何对象值时,都会使用这个格式说明

3、BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同。

若不小心将一个长于1字节的整型值赋给BOOL,则只截取低八位

二、Objective-C常见语法说明

(1)、头文件引用使用 #import “文件名”或者 #import <文件名>的形式以确保每个头文件仅被包含一次;

(2)、类声明以 @interface 类名:继承类 开头,以 @end 结尾,类实现以@implementation 类名 开头,以 @end 结尾;

(3)、实例方法,即成员方法,在方法名前面添加一个减号(-);类方法,在方法名前面添加一个加号(+);

(4)、类方法的调用格式为 [类名 类方法],成员方法调用格式为 [实例名 实例方法],这种模式在ObjC中被称为消息机制,[对象 消息]即给对象发送了一个消息,

产生的效果就是该对象调用了该类中定义的对应的实例方法。

(5)、关键字:关键字基本上都是以@开头的,例如:@public、@private、@end 等

(6)、字符串以@开头

@"hello"    // 这一个是OC 的字符串"hello"       // 这是是C语言的字符串

(7)其他语法:

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

b、nil:相当于C语言的NULL ,也就是0

c、基本语句:循环语句(do while 、while、for)、条件语句(if、if-else、switch)

d、注释:// 和/*.......*/

三、OC开发过程(在终端上运行时)

1、编写OC源文件:.m、.c

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

3、链接:cc xxx.o xxx.o -framework Foundation    (只有用到了Foundation框架才需要加上-framework Foundation)

4、运行:./a.out

整体的流程就是:.m(源文件)————编译————》 .o(目标文件)——链接———》a.out(可执行文件)

四、OC 中#import的作用和主头文件

OC中,#import的作用跟C语言中的#include一样,都是拷贝文件的内容,不同的是:#import可以自动防止文件的内容被重复拷贝。

主头文件就是最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件,如:Foundation框架的主头文件名称就是Foundation.h,OC中只需要包含

Foundation框架主头文件,就可以使用Foundation这个框架中所声明的所有成员变量、方法以及实现的所有方法。

五、OC中类的设计

1、类的结构:类名、属性、行为

类是对所有对象相同属性的概况。

(1)类名命名的规范:

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

第二点:不能有下划线

第三点:当出现多个英文单词时,用驼峰标识(即每个单词首字母大写)

(2)完整的写一个类,必须包含类的声明与类的实现

类的声明:@interface 类名

@end

类的实现:@implemention 类名

@end

(3)声明是用于:声明对象的属性、行为

1>、OC中,成员变量的声明必须写在{}之内,方法(行为)的声明必须写在{}之外。

2>、声明成员变量时,不可以对成员变量进行赋值的操作,只能声明。

3>、声明方法(行为)时要注意:只要是OC对象的方法,必须以减号 - 开头,而且OC方法中任何数据类型都必须用小括号()括住。

(4)类的使用的注意点

1>、在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]

2>、利用类来创建对象

3>、类的调用:[所创建的对象  对象方法]

转载于:https://www.cnblogs.com/waterfox/p/4373452.html

黑马程序员--Objective-C之--OC的初步体验相关推荐

  1. 黑马程序员- IOS学习笔记-OC三大特性

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 封装 set方法 1.作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 ...

  2. 黑马程序员Flutter入门教程之项目初步创建

    使用vscode创建 1.安装vscode 2.vscode中安装插件 在扩展面板输入flutter和dart,进行下载安装,安装完成重启生效 3.创建项目 快捷键ctrl+shift+P,选择flu ...

  3. 黑马程序员 oc对象的方法成员变量

    -----------黑马程序员 IOS培训.Android培训.Java培训.期待与您交流---------------- #import <Foundation/Foundation.h&g ...

  4. 黑马程序员--OC之Foundation框架的使用

    黑马程序员--OC之Foundation框架的使用 ------- <a href="http://www.itheima.com" target="blank&q ...

  5. 黑马程序员-iOS基础-Objective-C基础(六)内存管理

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序员-iOS基础-Objective-C基础(六)内存管理 一.内存管理的必要性 移动设备 ...

  6. python那么慢为什么还有人用-Python执行效率慢,为什么还这么火?【黑马程序员】...

    稍微了解python的同学,都知道python比起java这类编译型语言来说执行效率比较低,可是为什么python依然这么火呢? Python是一门解释型的动态语言,由于语言的解释执行的过程和动态类型 ...

  7. python实训项目-黑马程序员上海校区Python21期Django项目实训

    黑马程序员上海中心 月薪一万只是起点 关注 晚上十点,一名名Python学生正在酣畅淋漓地撸代码,手指不间断地敲击着键盘,发出机械而清脆的声音. 各个小组在经过为期4天的django项目小组开发,终于 ...

  8. 黑马程序员:从零基础到精通的前端学习路线

    黑马程序员:从零基础到精通的前端学习路线 随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上 ...

  9. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  10. 黑马程序员Linux系统开发视频之创建守护进程模型

    黑马程序员Linux系统开发视频之创建守护进程模型 1.创建子进程,父进程退出   所有工作在子进程中进行形式上脱离了控制终端 2.在子进程中创建新会话   setsid()函数   使子进程完全独立 ...

最新文章

  1. phpstrpos不存在_PHP主页显示方法不存在。这是什么问题,大神帮我看看
  2. 截取字符串,但要保证汉字不被截取半个
  3. JavaScript getFullYear() 方法
  4. 【软件设计师】2020-08-08
  5. 宝岛探险1(DFS)
  6. word计算机排版怎么选,Word选择题选项对齐排版方法 查找替换工具搞定
  7. 节日日历for Ubuntu18.04
  8. 二十九 Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求...
  9. TCP 和 UDP 区别
  10. 网卡-驱动-DMA API-TCP/IP
  11. 国内三大云数据库测试对比
  12. 【建模算法】Python调用Gurobi求解TSP问题
  13. C语言多文件编程详解
  14. android 树莓派 图片,Android Things:树莓派3上手就是这么简单
  15. GitLab 之 历史版本回退
  16. 分布式-幂等性解决方案
  17. 适用于渗透测试不同阶段的工具收集整理(转载)
  18. mysql-下载/安装(图文结合)
  19. 在VSCode中配置并调试R语言.r文件
  20. Weex生态质量建设

热门文章

  1. RPC or noRPC,这是个问题
  2. 第12章 ‘expect’和‘assume’
  3. 机器人测钢卷直径_一种基于关节机器人的冷轧钢卷卷芯焊接方法与流程
  4. 不可以涩涩!AI续写软件初体验;迁移学习路线图;谷歌新闻非官方搜索API;CS295『因果推理』2021课程资料;前沿论文 | ShowMeAI资讯日报
  5. 将SitePoint引用添加到Coda
  6. flash 怎么擦掉fpga_基于FPGA的flash板卡程序擦除与固化
  7. 花 1 小时,开源设计 LoRa 继电器开关
  8. mysql数据库索引的科普
  9. host切换工具——SwitchHosts
  10. 【VBA研究】如何将单元格数据赋给数组