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中创建对象比较复杂, 首先要理解一个概念叫做类. 现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,在这 ...
随机推荐
- 安装Oracle11后在SQL Developer启动时提示:enter the full pathname for the java.exe
1) Open the file ..\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf and add the following line to se ...
- JavaScript与Java的区别
关于java和javascript的关系,我曾在一个论坛上看过这样一句话,java和javascript的关系,就好比雷锋和雷峰塔的关系,实在是经典! 因为名字的关系,总是有人误以为Javascrip ...
- 利用JQuery实现全选和反选的几种方法
前面介绍了利用JavaScript实现全选功能,其中也有要注意的几点,现在讲解下在JQuery怎么实现全选和反选,下面提供了两种方法实现. 如图:要实现的效果是点击全选框全部选中,再点击全部不选中 方 ...
- JQ点击高亮显示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javascript 高级程序设计学习笔记(面向对象的程序设计) 2
在调用构造函数时会为实例添加一个指向最初原型的指针,我们可以随时为原型添加属性和方法,并且能在实例中体现出来,但如果是重新了原型对象,那就会切断构造函数与最初原型的联系. function Dog ( ...
- CSS 垂直居中5种方法
利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器 ...
- HDU 5793 - A Boring Question
HDU 5793 - A Boring Question题意: 计算 ( ∑(0≤K1,K2...Km≤n )∏(1≤j<m) C[Kj, Kj+1] ) % 1000000007=? (C[ ...
- Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
Populating Next Right Pointers in Each Node Total Accepted: 72323 Total Submissions: 199207 Difficul ...
- MySQL server has gone away报错
1.最近做插入数据库,然后一直报一个错.mysql server has gone away.(如下图) 查了好多资料,终于解决了.. 1.可能是连接超时..进入php.ini,修改wait_time ...
- atoi atol strtod strtol strtoul _gcvt
如果以下函数,您在使用的时候,总是输出一个莫名的值,是因为您忘记了引用头文件 #include <stdlib.h> 1- atoi int atoi(const char *nptr); ...