Objective C笔记(第一天)
• OC语言概述
1.早在20世纪80年代早期,Bard Cox发明了Objective C, 是扩充的C,面向对象的编程语言。
2.NEXTSTEP简称NS
a.1985年,Steve Jobs成⽴立了NeXT公司。
b.1988年,NeXT SoftWare公司获得了OC的语言授权, NEXTSTEP环境成为了苹果操作系统,创建的开发包。MACOS
c.1996年,12月20⽇日,苹果公司宣布收购了NeXT software公司,NEXTSTEP环境为apple公司下主要开发、发⾏行操作系统OSX的基础,这个开发环境的版本被苹果公司命名为 Cocoa(可可)框架
NSString NS=NEXTSTEP
3. Cocoa框架
a.Cocoa是苹果公司为MAC OS X所创建的原生面向对象编程环境。
b.Cocoa应用程序一般在苹果公司的工具xcode上用 Objective C编写的。
c.使用Cocoa编程环境开发的应用程序叫Cocoa应⽤用。 app->application->应用程序
Cocoa Touch框架 ->Ctapp
d.Cocoa框架主要由两部分组成,Fundation框架和 Application Kit框架。
e.Fundation框架,基础框架,包括:字符串、数字、数组、字典、集合等
#import <Foundation/Foundation.h>
f.Application Kit框架,应用程序工具箱,它包括了实现程序图形、事件驱动和用户界面的全部对象,窗口、对话框、按钮、 菜单、滚动条、文本框等,而且这个列表还在不断的添加。
4.IOS
苹果公司硬件上的一个操作系统,苹果公司便携设备上的操作系统。在2007年1月9日,MacWorld大会上公布的这个系统, 最初设计给iphone使用的,后来陆续用到ipodtouch、ipad、 apple TV等苹果产品。
• 语法格式区别
1.以前在C语言中使用的include现在换为import,作用和C语言include相似的,必须换为import,且支持避免重复导入的问题。
2.以前在C语⾔中使用的printf函数来进行数据的输出、打印, 现在换为NSLog函数,日志输出,注意输出字符串信息的时候, 要在上面加上@,不需要使用\n作为换行符。
3.在编译的时候,gcc虽然可以编译,但是不支持OC的新语法,源文件由原来的.c文件,变为.m文件了。
4.在编译时,使用新的编译命令clang,编译链接时,需要指定使用的框架(库)。
clang -framework Foundation main.m
5.编译后依然生成了a.out⽂文件,可以使用./a.out来运行程序。
• include与import
#import <>或""和#include<>或""的区别,objc中所有得文件包含指令都使用#import<>或#import ""来实现,可以避免头文件被重复包含,自动剔除重复的头文件,如果要使用 #include<>或""需要通过#ifndef条件编译来实现。
• 逻辑数据类型BOOL
a.bool b1 = false;//true 1,flase 0
b.BOOL b2 = YES;//YES 1,NO 0
面向对象概念
• 什么是面向对象程序开发
1.面向过程 数据结构 + 算法
2.面向对象 属性 + 行为
• 为什么使用面向对象的编程思想
使用面向对象的编程思想,可以大大的降低企业项目的开发周期和成本,提高了开发的效率,以及代码的复用性,大大的降低 了开发的难度。提高了代码的可读性以及可维护性。
• 对象
Anything is Object.万物皆对象。 现实中的对象是⼀种客观存在, 程序中的对象是⼀片内存中的数据。
• 现实中的对象
现实中的学生对象
有什么?姓名、年龄 能干什么?学习
属性(成员): age,name
方法(函数)study()
用解决现实中的问题的⽅法,来解决计算机问题。
• 什么是类
具有相同属性和方法的同一类元素的总称。
类是一个抽象的概念,比如:人类 动物 蔬菜 水果 汽车, 区分类还是一个对象时,看它能否继续被细分。对象就是不能继续被细分的。类是就是现实事物的一个抽象。
设计(图纸)(梦想中)---工厂生产--->手机(现实)
代码(文件)---执行加载--->内存(数据)
类 ---实例化 --->对象
• 定义类的语法格式
设计类Student 代码存在文件中,OC class。 一个类是由两个部分组成的 *.h⽂文件和*.m⽂文件
1).h文件定义类的interface部分(声明)
@interface Student : NSObject
@property int age;//声明属性!
-(void)study;//声明⽅方法!
@en
2).m⽂文件定义类的implemention部分(实现)
@implementation Student//方法的定义、实现!
-(void)study{
"NSLog(@"学生执行了study方法");
}
@end
.什么是对象
对象就是类在内存中的一个实例。对象就是类的一个具体对象。 不可细分,代表着某一个具体的东西。
• 将类实例化变为对象
1)main.m⽂件中的->main函数(程序⼊口)执行程序
2)能过类发送alloc,通过一个类创建对象,通过stu变量(*stu),找到内存的对象。
3)可以向对象发送消息(函数),此时对象就会响应消息,执行方法。
4)对象如果有属性,对象.属性 = 值,给对象的属性赋值
.方法
• 什么是方法 对象可以干什么,有什么功能。
• 方法与函数区别
函数只是一个程序的代码段,与类无关系。
方法是类的一部分,代表对象可以干什么。
正常来讲,类必须实例化,方法才可以使用,实例方法调用方法时,也叫做向对象发送消息。
• 方法命名 语法格式与函数非常相似,但截然不同。使用方法时,在.h⽂文件中声明,在.m文件中实现。
-(返回值类型) 方法名; //无参的方法
eg:-(void)method;
• 方法的参数
-(返回值类型) 方法名:(参数类型)参数名;//有参的方法
eg:-(void)method3:(int)num;
-(返回值类型) 方法名:(参数1类型)参数名1 :(参数2类型)参数名2 :(参 数n类型)参数名n;//多参的方法
eg:-(void)method4:(int)arg1 :(int)arg2; 注:“:”符号也是方法名的⼀部分
• 方法的参数
-(返回值类型) 部分方法名:(参数1类型)参数名1 部分方法名2:(参数2类型)参数名2 部分方法名n:(参数n类型)参数名n; 部分方法名起到提示作用,并不影响程序的执行
eg:-(void)printInfoWithAge:(int)age!
andGender:(char)gender!
andSalary:(double)salary;
方法的返回值
与C语言中的函数返回值使用方式一致。
• 公有方法与私有方法
在.h文件中声明的方法,并且在.m文件中实现就是公有方法。
在.h文件中未声明的方法,并且在.m文件中实现就是私有方法。
实例变量
• 什么是成员变量与实例变量
在类中声明的变量就是成员变量。类实例化变为对象,此时成员变量也就变为实例变量。 一个对象会有自己独特的数据和别的对象不同,这些数据会保 存在一些特殊的变量中,这种变量叫实例变量。类的每个实例(对象)都有一份。 类对象(实例)(引用)
内存中没有 内存中有
成员变量 实例变量
成员方法 实例方法
• 定义变量 在.h文件中,使用{}括起来的区域声明,类型C语言的变量声明。
• 公有变量与私有变量 在.h文件中声明的变量为公有变量,在.m文件中声明的变量为私有变量
Objective C笔记(第一天)的更多相关文章
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- C++ Primer 笔记 第一章
C++ Primer 学习笔记 第一章 快速入门 1.1 main函数 系统通过调用main函数来执行程序,并通过main函数的返回值确定程序是否成功执行完毕.通常返回0值表明程序成功执行完毕: ma ...
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...
- Android群英传笔记——第一章:Android体系与系统架构
Android群英传笔记--第一章:Android体系与系统架构 图片都是摘抄自网络 今天确实挺忙的,不过把第一章的笔记做一下还是可以的,嘿嘿 1.1 Google的生态圈 还是得从Android的起 ...
- Scala语言笔记 - 第一篇
目录 Scala语言笔记 - 第一篇 1 基本类型和循环的使用 2 String相关 3 模式匹配相关 4 class相关 5 函数调用相关 Scala语言笔记 - 第一篇 最近研究了下scala ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- [编程笔记]第一章 C语言概述
//C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...
- 《Linux内核设计与实现》读书笔记——第一、 二章
<Linux内核设计与实现>读书笔记--第一. 二章 标签(空格分隔): 20135321余佳源 第一章 Linux内核简介 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确 ...
随机推荐
- C++去掉字符串中首尾空格和所有空格
c++去掉首尾空格是参考一篇文章的,但是忘记文章出处了,就略过吧. 去掉首尾空格的代码如下: void trim(string &s) { if( !s.empty() ) { s.erase ...
- 生产力工具之vimwiki 和 calendar
vimwiki下载地址: http://www.vim.org/scripts/script.php?script_id=2226 calendar下载地址: https://github.com/i ...
- 解决C# 转到定义时打开的是元数据文件而非源代码文件的问题
原因:添加引用时 使用的是“浏览"选项卡,选择了项目生成的dll作为引用的内容. 解决:添加引用时 使用的是"项目"选项卡,选择了项目本身作为引用的内容.
- 【BZOJ1812】riv(多叉树转二叉树,树形DP)
题意:给定一棵树,每个点有权值,每条边有边权(单向边).你可以选取K个黑点,使得从每个点移动到距离他最近的黑点的花费(距离*点权)的总和最小. n<=100 k<=50 w[i],a[i] ...
- html 高亮显示表格当前行
html在线模拟网:http://www.w3school.com.cn/tiy/t.asp?f=html_basic 高亮显示表格当前行 <html> <head> < ...
- zoj1260 king
题目描述:从前有一个王国,皇后怀孕了.她祈祷到:如果我的孩子是儿子,我希望他是一个健康的国王. 9 个月后,她的孩子出生了,的确,她生了一个漂亮的儿子.但不幸的是,正如皇室家庭经常发生的那样,皇后的儿 ...
- Hibernate学习笔记
一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...
- 清除浮动的 why
如果你想第三个p不被前面的浮动层所影响,就对它进行清除如果没有清除,第三个层就会移到第一个p下面 记住!!浮动是用来布局的~你看你的网页设计图,好几个版块在一条线上就是要浮动了,不需要浮动就是版块跟前 ...
- jsp学习--如何定位错误和JSP和Servlet的比较
一.如何查找JSP页面中的错误 JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息.JSP页面中的JS ...
- 在ASP.NET中引用自定义提示框
在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...