OC-类
1、关于头文件
#include <stdio.h>
#import <Foundation/Foundation.h>
区别:#import指令导入更快更有效率。#include指令告诉编译器做呆板的复制粘贴,将包含的内容粘贴到目标文件中来。而#import则会先检查之前是否已经导入过这个文件或是已经包含到目标文件中了。
再仔细观察两个头文件名
Foundation.h我们称之为主头文件, 主头文件中又拷贝了该工具箱中所有工具的头文件, 我们只需要导入主头文件就可以使用该工具箱中所有的工具, 避免了每次使用都要导入一个对应的头文件。
规律: 所有的主头文件的名称都和工具箱的名称一致
所有的主头文件都是导入了该工具箱中所有工具的头文件
2、第一个oc程序
/*
因为OC完全兼容C, 所以可以在OC程序中编写C语言代码
并且可以将C语言的源文件和OC的源文件组合在一起生成可执行文件
*/
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
printf("c hello world\n");
/*
printf和NSLog的区别:
NSLog会自动换行
NSLog在输出内容时会附加一些系统信息
NSLog和printf接收的参数不一样
*/
NSLog(@"OC hello World"); return ;
}
3、oc类
C语言中函数分为声明和实现,OC中定义一个类也分为声明和实现
1)类声明
// 以@interface开头 , 以@end结尾, 然后再class name对应的地方写上 事物名称, 也就是类名即可
// 声明一个类的目的就是为了告诉系统, 我们这个类中有哪些属性和行为
// OC类声明中属性只能在写@interface和@end之间的{}中
@interface Person : NSObject
{
//注意: 默认情况下, OC对象中的属性是不能直接访问的
int _height; // 注意: 编写OC类属性的时, 建议将所有属性的名称前面都加上_
int _weight;
int _age;
} // 行为
@end
2)类实现
// 以@implementation开头, 以@end结尾, 然后在class对应的地方写上声明时声明的类的名称, 须和声明的类名相同
@implementation Person // 行为的实现 @end
3) 方法的声明和实现
@interface Person : NSObject
{
//此处代码省略
}
// 行为
/*
OC中的行为和C语言中的函数一样, 都是用来保存一段特定功能的代码
C语言中定义一个函数, 分为声明和实现, 声明写在.h中, 实现写在.c中
OC中定义一个方法, 也分为声明和实现, 声明写在@interface中, 实现写在@implementation C语言的函数分为两种: 内部函数和外部函数
OC中的方法也分为两种; 类方法和对象方法
类方法只能用类名调用, 对象方法只能用对象调用
OC中的类方法用+表示, OC中的对象方法用-表示 编写OC方法的规律和C语言一模一样: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型
*/
// 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;OC方法中的()是放数据类型的 - (void)about; @end // 类的实现
@implementation Person
// 行为的实现
- (void)about
{
NSLog(@"此人信息");
}
@end
4)main函数
int main(int argc, const char * argv[]) {
// 在OC中想要通过一个类来创建一个对象, 必须给类发送一个消息
// 发送消息的语法是 [类名称/对象名称 方法名称];
/*
只要通过一个类调用类的new方法, 也就是给类发送一个叫做new的消息之后
系统创建对象的过程如下
1. 为Person类创建出来得对象分配存储空间
2. 初始化Person类创建出来的对象中的属性
3. 返回Person类创建出来的对象对应的地址
*/
// 通过一个Person类型的指针接收了 Person对象的地址
// 利用Person类型的指针保存了Person对象的地址, 那么我们就称Person类型的指针p之为Person对象
// OC中的类其实本质就是一个结构体, 所以p这个指针其实就是指向了一个结构体
Person *p = [Person new];
// p->_height= 70; c语言中我们可以这样做,但是在oc中不允许直接访问成员变量,
[p about]; //调用对象方法
return ;
}
最后说一下Objective-C推荐命名规则
指向实例的变量使用"骆驼拼写法(camel case)"来命名。以小写字母开头,接下来每个单词的第一个字母使用大写。
方法的命名也是用骆驼拼写法。
类的名称以大写字母开头,但是接下来的单词继续使用骆驼拼写法。
OC-类的更多相关文章
- OC 类簇与复合
OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不 ...
- 第一个OC类、解析第一个OC程序
01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...
- Objective-c 总结(一):OC类的设计
(一)学习目标: 1.面向对象基本概念: OOP的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在整个解决问题步骤中的行为. 2.熟悉OC类的定 ...
- OC学习那些事:第一个OC类
一.创建一个新的OC类: 1.点击File->New File,打开Choose a template for your new file窗口,选择Objective-C class,点击Nex ...
- iOS学习10之OC类和对象
本次是OC的第一节课,主要是学习和理解类与对象 1.面向对象 1> OOP(Object Oriented Programming)面向对象编程. 面向对象以事物为中心,完成某件事情都需要哪些事 ...
- [Objective-c 基础 - 1.1] OC类
Obj-C中没有包得概念,使用前缀进行区分 自带类用NS开头命名 关键字使用@开头 A. 第一个OC程序 1. 导入Foundation框架的主头文件 #import <Foundation ...
- 向OC类中添加默认的协议实现(ProtocolKit)
以forkingdog的PorotocolKit举例 举例 ProtocolKit Protocol extension for Objective-C Usage Your protocol: @p ...
- 【IOS学习基础】OC类的相关
几天前突然在别人的类的.m文件中看到这么一句代码:@synthesize xxxx = _xxxx; 当时愣是没理解啥意思,过后才缓过神来发现原来是把一些类的基础知识忘记了,虽然不用过多去深究以前的一 ...
- OC——类
1.Objective-C是C语言的超集,完全兼容C语言 2.所有的关键字都以“@”开头,例如:@interface,@class,@implementation 3.Objective-C的所有对象 ...
- 04:第一个OC类
1.类与对象的关系 面向对象的核心就是对象,那怎么创建对象? OC中创建对象比较复杂, 首先要理解一个概念叫做类. 现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,在这 ...
随机推荐
- NET基础课--JIT编译器如何工作1
1..Net运行时调用JIT编译器,用来把由C#编译器生成的IL指令编译成机器代码.这一任务在应用程序的运行期间是分步进行的.JIT并不是在程序一开始就编译整个应用程序,取而代之的是,CLR是一个函数 ...
- PHP调用WCF小结
新工作第三周,做了3年多的.Net,突然急转弯做PHP,漂移过弯,速度180迈 由于数据的整合,在项目中不得不使用PHP调用WCF 一头的雾水,网上相关的资料少又少,在phpChina发个帖子,还没有 ...
- HTML 5 全局属性和事件属性
1.HTML 5 全局属性 HTML 属性能够赋予元素含义和语境. 下面的全局属性可用于任何 HTML5 元素. NEW:HTML 5 中新的全局属性. 属性 描述 accesskey 规定访问元素的 ...
- Lua编译
编译lua包含3部分内容:lua库文件(lua*.lib),lua解释器(lua.exe),lua编译器(luac.exe) 首先: 下载源代码,编译批处理(以5.2.3为例): cd srccl / ...
- java中的xpath,读取xml文档。
1,入门 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 X ...
- 移动网页版Meta 标签
viewport 大部分移动浏览器都接受,比如 Opera Mobile, iPhone, Android, Iris, IE, BlackBerry, Obigo, Firefox 最基本的例子,在 ...
- 自动生成XML空节点格式的差异
我们用C#开发了上位机配置软件,用C开发了嵌入式软件,然后他们之间的参数交互靠XML文件来沟通. C#中添加一个空的节点有以下几种情况. 不给节点的InnerText赋值: <root> ...
- Objextive-C几道小题目笔记
//掷骰子题,掷骰子100次,输出每个号出现的次数 void one() { for (int i=1; i<=100; i++) { int a = arc4random() % 6 +1; ...
- JAVA中synchronized和lock详解
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea.本文并不比较synchronize ...
- safari的input问题
切图网用户体验团队QUX在手机移动触屏web前端开发中碰到一个问题 — 纯css3定义的按钮在android安卓系统下显示正常,但是在苹果ios系统下,以ipad为例,ipad下呈现渐变和圆角状态 . ...