Objective-c基础知识学习笔记(一)

一直有记录笔记的习惯。但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点。因开发须要,公司特意为我们配置了几台新MAC。还让我们自学了2周时间。就正式进入开发了。如今将自己了解的一些基础知识分享一下。

一、开发工具

svn管理工具:versions(备注:个人感觉这个工具不是非常好用。常常操作缓慢并且卡顿)、开发工具:xcode

二、IOS系统架构

IOS是基于UNIX内核,Android是基于Linux内核。

IOS的系统架构分为四个层次,从下到上依次是:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。

1、Core OS是位于iOS系统架构最以下的一层,是核心操作系统层,它包含内存管理、文件系统、电源管理以及一些其它的操作系统任务,能够直接和硬件设备进行交互。作为app开发人员不须要与这一层打交道。

2、Core Services是核心服务层,能够通过它来訪问iOS的一些服务。

3、Media是媒体层,通过它我们能够在应用程序中使用各种媒体文件。进行音频与视频的录制。图形的绘制。以及制作基础的动画效果。

4、Cocoa Touch是可触摸层,这一层为我们的应用程序开发提供了各种实用的框架。而且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。

三、重要后缀说明

.h后缀的文件指头文件。描写叙述类、类的数据成分以及类的方法。相当于接口。

.m后缀的文件是实现文件(源文件)

.xib后缀文件,是interface builder文件,存放应用程序的用户界面(UI)

四、基础语法

Objective c是面向对象的

1、#import(引入头文件)语法

eg:#import<Foundation/Foundation.sh>

#import"SelfClass.h"

@classSelfClass

备注:<>仅仅在系统文件里查找,””先在本地查找,没找到则到系统文件里查找,import可自己主动防止同一个文件被导入多次。实例变量类型一般用@class引入,这个能够缩短编译时间。一般用在interface中,里面的方法和变量不可用。

2、字符串NSString

@"字符串"

3、BOOL布尔类型

有YES和NO两个值,备注:的数不一定是YES。

4、控制台输出NSLog()

%@输出NSString等对象的值

五、类的定义与实现

1、@interface用于定义接口类

接口一般在.h文件(头文件)中定义,用来展示类的构造。

Eg:定义基于NSObject类的Circle类

@interfaceCircle :NSObject

{

ShapeColor *fillColor;

}

-(void) draw;

-(void)setFillColor: (ShapeColor *) fillColor secondName:(int) index;

@end

1)、大括号内的变量为类的实例变量(仅仅在对象的实例中有效,所以称为实例变量ivar),后面的为方法声明。备注:c函数原型中没有先行短线。

2)、方法返回类型与C函数有同样的类型:标准类型(整型、浮点型、字符串)、指针、引用对象和结构体,假设方法使用參数则须要冒号,否则不须要冒号。

没有声明实例变量时,无需大括号。

3)、上面多參数方法定义。也能够不须要secondName,但不推荐这样使用。

4)、有些方法的声明是先行加号。这种方法为类方法(class method),这种方法属于类对象(而不是类的实例对象),类似于静态方法,通经常使用于创建新的实例,我们称这种用来创建新对象的类方法为工厂方法。

5)、在对象类型的右边都有一个*号,全部的对象变量都是指针类型。id类型(随意类型)已经被提前定义为指针类型。所以不须要再加一个*号。

2、@implementation

实现类一般在.m文件(实现文件)中实现,实现了接口所声明的全部方法。

Eg:上面Circle的实现类

@import “XXX.h”//引入上面定义的头文件

@implementationCircle

- (void)setFillColor: (ShapeColor *) c

{

fillColor = c;

}

3、对象的实例化

1)、Circle *circle = [Circle new];//不建议这样使用

2)、Circle *circle = [[Circle alloc]init];//一般这样初始化

4、方法的调用

[ciclesetFillColor: kRedColor];//备注中间是空格

5、实例变量作用域的指令:

@protected实例变量可被该类及不论什么子类中定义的方法直接訪问(默认的情况)。

@private实例变量可被定义在该类的方法直接訪问,不能被子类定义的方法直接訪问。

@public实例变量可被该类中定义的方法直接訪问,也可被其它类或模块中定义的方法訪问。使得其它方法或函数能够通过(->)来訪问实例变量(不推荐用)。

@package 对于64位图像,能够在实现该类的图像的不论什么地方訪问这个实例变量。

6、继承

@interface Circle: NSObject

不支持多继承。但Objective-C通过其他特性达到多继承的效果,比如类别和协议。

7、复合(composition)

复合就好像音乐中的作曲一样:将多个组件组合在一起。配合使用,从而得到完整的作品。严格来说。仅仅有对象间的组合才干叫复合。

复合类之间的关系为“has a”。备注:在Objective-C中。复合是通过包括作为实例变量的对象指针实现的。

Eg:汽车有4个轮胎和一台发动机。

@interface  Car:NSObject

{

Engine *engine;

Tire *tire[4];

}

备注:为新建的Car对象分配内存时,这些指针将被初始化为nil(零值)

六、id

id shapes[2];

shapes[0] = [[Circlealloc]init];

shaoes[1] =[ [Egg alloc]init];

它是指向随意类型对象的指针,相当于范型。

七、存取方法名命名

1、setter方法须要在属性名称前添加set前缀,eg:setEngine

2、getter方法则是以其返回的属性名称来命名。eg:engine不要将get用作getter方法的前缀。比如方法getEngine违反了命名惯例。get这个词在Cocoa中有特殊的含义,假设get出如今Cocoa的方法名中,就意味着这种方法将你传的參数作为指针来返回数值。

Objective-c基础知识学习笔记的更多相关文章

  1. 〖前端开发〗HTML/CSS基础知识学习笔记

    经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...

  2. java基础知识学习笔记

    本文知识点以js为参照.对比分析得出笔记.JavaScript之所以叫JavaScript是打算借助java推广自己.虽然都是开发语言,但JavaScript一开始主要运行在 客户端,而java主要运 ...

  3. 传智播客 Html基础知识学习笔记

    HTML基础 <p></p>标志对用来创建一个段落,,<p>标志还可以使用align属性, 它用来说明对齐方式 语法是:<p align="&quo ...

  4. Unity基础知识学习笔记二

    1,object Instantiate(object original,Vector3 position,Quaternion rotation)       克隆原始物体,并返回克隆物体.     ...

  5. Unity基础知识学习笔记一

      1,Unity 4.5.4这个版本,在打包ios应用程序的时候.会生成一个xcode工程,但是这个工程无法在xcode6上变异,无法生成ios8上发布.所以unity在ios8发布3天内就发了4. ...

  6. jquery基础知识学习笔记

    jquery是一个js库/常用版本是jjquery-1.7.2.js/这个版本主要是用来做开放用途 做产品的时候是用它的min版本.玩jquery的时候,不管干啥都要花钱(美元)   注意点: 1.s ...

  7. CSS基础知识学习笔记

    1.css基本样式讲解 1.1 css背景background-attachment:背景图像是否固定或者随着页面的其余部分滚动background-color:设置元素的背景颜色background ...

  8. 传智播客 Html基础知识学习笔记2

    一.<select>标签 用来创建类似于WinForm中的ComboBox(下拉列表)或者LisBox 如果size大于1就是LisBox,否则就是ComboBox; <select ...

  9. JAVA 基础知识学习笔记 名称解释

    Java ee:​ IDE: ​ itegrity   development environment 集成开发环境 JMS:​ java Message Service java   信息服务 JM ...

随机推荐

  1. 闲谈Spring-IOC容器

    闲聊 无论是做j2ee开发还是做j2se开发,spring都是一把大刀.当下流行的ssh三大框架中,spring是最不可替代的,如果不用hibernate和struts,我觉得都无关紧要,但是不能没有 ...

  2. Bootstrap栅格系统&媒体查询

    bootstrap中几乎所有元素的盒子模型为IE下的盒模型,通俗点说就是box-sizing设置成了:border-box.   栅格系统 媒体查询 媒体查询是非常别致的"有条件的 CSS ...

  3. intellij 创建java web项目(maven管理的SSH)

    intellij 创建java web项目(maven管理的SSH) 环境intellij IDEA14.MAVEN.Spring.Struts2.Hibernate.Java Web.工程搭建. 1 ...

  4. spring - quartz - experssion 表达式

    字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN- ...

  5. CNN:Windows下编译使用Caffe和Caffe2

    用于检测的CNN分为基于回归网络的方法和基于区域+CNN网络的方法,其中基于回归网络的方法典型为YOLO9000,可以兼容使用VGG-Net框架.其中基于区域+CNN网络方法,大量使用了Caffe作为 ...

  6. 三维重建:SFM中BA的并行化

    1. BA在重建中的作用 借鉴于运动中重建的方法,BA引入SLAM过程,而传统的滤波方法引入BA是跟随闭环检测出现. 1.1 BA在滤波方法中的嵌入 PTAM 1.2 BA在闭环检测之后的应用 在三维 ...

  7. 使用GitGUI创建上传本地工程

    参考链接: 使用Git-GUI创建工程 http://jingyan.baidu.com/article/27fa732683ebf546f8271f2e.html 一.刚创建的github版本库,在 ...

  8. C# 共享页调用css

    @RenderSection("Styles", required: false) @section Styles{ }

  9. APICloud 获取缓存以及清除缓存(常用第三方方法)

    一.app中经常会有缓存的清除这个操作,具体如下 1.获取缓存大小 apiready = function() { api.getCacheSize(function(ret, err) { //si ...

  10. Python字符串格式化--formate()的应用

    1.简单运用字符串类型格式化采用format()方法,基本使用格式是:转自 <模板字符串>.format(<逗号分隔的参数>) 调用format()方法后会返回一个新的字符串, ...