简介

建立在C语言之上,可以混编C/C++代码,编写一个类需要二个文件:

.h的头文件

.m的实现文件(如果是C/C++混编文件,文件后缀为.mm)

既然有头文件,所以很多人会拿它与C++进行类比,它最重要的三个特性是:Message、Category、Protocol,与C++类比,二者之间的不同:

1、它没有new也没有delete,但有类似的方法alloc、dealloc;

2、不支持多继承,只支持单继承,但是提供了Protocol;

3、它没有命名空间;

4、不支持内联函数;

5、不支持参数默认值;

C++太过庞大,所以拿二者比较其实不是特别合适,跟Java相比,我觉得可能更适合一些吧

 

快速入门

1) 类的定义

.h头文件

@interface Hello : NSObject  
 
@end
.m实现文件
#include "Hello.h"
@implementationFraction
 
@end

 
通常我们定义一个类,都会让它继承自NSObject。有人会问NSObject后面的{}怎么省略了,因为我没有定义“实现变量”所以就把它省略了。
 
因为OC不提供命名空间,所以类命名上要特别注意了,不然很容易覆盖/冲突而导致很多未知的问题。苹果定义的类,一般类名最前面有二个字母,比如NSObject中的NS,UIKit中的UI,所以为了避免跟苹果定义的类产生冲突,自定义的类以三个字母开头,比如BNR这样
 
 
2) 方法的定义和调用
 
方法分二种:实例方法、类方法,如上图所示,区别类方法和实例方法,主要是它的声明符:-、+
+ (返回值类型) 类方法名
- (返回值类型) 实例方法名,需要先创建后再使用,比如这样:[[[Hello alloc] init] methodName];
 
无论是哪种方法,调用都是使用中括号“[]”,方法的准确来讲应该称为发消息,它有三个要素:
receiver(消息接收方)
selector(选择器,通常指方法名)
arguments(实参)
 
通常类中调用自身的方法,用[self xx],self是一个隐式的局部变量,不需要声明self,程序自动会为self赋值,把它当作JavaScript中的this就好理解了。
 
OC中默认所有的方法都是公开的,所以如果你想定义一个私有方法,不需要在.h中声明方法,直接在.m中定义方法就好,但是建议使用p_开头,这样避免与苹果中定义的一些私有方法名产生冲突。
 
 
3) 基本数据类型
 
OC建立在C语言之上,所以C中的所有基本数据类型它都支持,比如:int、float、char…
OC自身定义的数据类型,都包含在Foundation中了,类名以NS开头,比如:NSArray、NSInteger、NSNumber,定义:NSString *myStr;
 
 
更多关于Objective-C的学习资料,推荐 Ry’s Objective-C Tutorial 

Objective-C 入门笔记的更多相关文章

  1. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  2. ES6入门笔记

    ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...

  3. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  4. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  5. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

  6. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

  7. OpenGLES入门笔记四

    原文参考地址:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html 一.编译Vertex Shaders和Fragm ...

  8. OpenGLES入门笔记三

    在入门笔记一中比较详细的介绍了顶点着色器和片面着色器. 在入门笔记二中讲解了简单的创建OpenGL场景流程的实现,但是如果在场景中渲染任何一种几何图形,还是需要入门笔记一中的知识:Vertex Sha ...

  9. unity入门笔记

    我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...

  10. System Generator入门笔记

    System Generator入门笔记  [CPLD/FPGA] 发布时间:2010-04-08 23:02:09  System Generator是Xilinx公司进行数字信号处理开发的一种设计 ...

随机推荐

  1. Grafana 短信报警

    一.分析 需求 Grafana支持短信渠道报警 要求 使用开发提供的短信API接口 请求url: http://192.168.1.1:8088/alerting/sendSms?mobile=手机号 ...

  2. [转] HTML5之FileReader的使用

    HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...

  3. Codeforces 584E Anton and Ira

    Anton and Ira 我们把点分为三类, 向左走的, 向右走的, 不动的. 最完美的情况就是每个点没有走反方向. 每次我们挑选最右边的向右走的去把向左走的交换过来,这样能保证最优. #inclu ...

  4. CentOS和Windows下配置MySQL远程访问的教程

    CentOS和Windows下配置MySQL远程访问的教程   一.前言 由于实验在云服务器上跑的结果不是很理想.所以,现在切换到局域网服务器.因此,需要重新配置 Windows 服务器和 CentO ...

  5. HDU 4725 The Shortest Path in Nya Graph (最短路)

    The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  6. 硬盘 不属于Rom RAM

    是外置存储器, 不是ROM也不算RAM,rom是固化系统基本程序,如电脑的bios,ram是电脑的内存,平常说几个G内存就是指的RAM

  7. ABP单元测试

    一.介绍 在本文中,我将介绍如何为基于ASP.NET Boilerplate的项目创建单元测试. 我将使用本文开发的相同的应用程序(使用AngularJs,ASP.NET MVC,Web API和En ...

  8. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  9. C# EF Attach 与 Entry

    先了解一下 EF 框架的 EntityState 在使用EF框架时, 我们通常都是通过调用 SaveChanges() 方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加.修 ...

  10. BZOJ4175 : 小G的电话本

    用后缀树统计出出现了x次的本质不同的子串的个数,最后再乘以x,得到一个多项式. 这个多项式常数项为0,但是一次项不为0. 于是把整个多项式除以一次项,通过多项式求ln和多项式求exp求出它的幂. 最后 ...