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中创建对象比较复杂, 首先要理解一个概念叫做类. 现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,在这 ...
 
随机推荐
- Sybase配置数据库参数
			
Sybase配置数据库参数参数配置的两种方法:sp_configure ‘参数名称’,参数值修改参数文件(如:Sybase主机上的 %SYBASE%\servername.cfg) 配置Sybase数 ...
 - 关于.netFramework概述
			
这几天学了不少东西,想来还是应该总结一下,一来自己回顾一下,二来也怕自己忘记,在文章中,有很多东西就是借鉴别人的blog,笔者在这里对他们的无私奉献表示感谢.笔者的语言组织能力有限,如果在文章中出现什 ...
 - gauge.js的应用
			
最近项目要做个手机端的仪表盘,但是画风太给力,echarts.highcharts.D3等等都不能满足业务的需求,你懂的!开找,找到个gauge.js 下面简单介绍下这个插件官网http://bern ...
 - 查看Android数据库文件
			
使用Eclipse DDMS的File Explorer不能能看到Data目录下面的东西,可能由下面原因引起的 手机没有Root -- 可以使用Root大师 Data文件权限不够 -- 可以使用Ro ...
 - JQ选择器
			
jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个 ...
 - 找出数组中特定和数字下标(JAVA)
			
比如: 输入: numbers={2, 7, 11, 15}, target=9 输出: index1=1, index2=2 public class _003TwoSum { public sta ...
 - 今天进行了一次IOS面试,分享一下面试结果
			
IOS开发工程师岗位职责:1.负责移动产品IOS版客户端软件开发:2.可根据需求独立完成客户端软件的设计和开发;3.日常工作包括手机软件系统开发.单元测试.维护以及文档编写:不定期的公司内部培训.任职 ...
 - JS 一个修改ul的小示例
			
javascript提供了innerHTML属性可以获取和设置对象的文本内容. 下面实例演示——单击<ul>下的<li>标签后,改变其显示值: 1.HTML结构 <ul ...
 - 使用jquery插件uploadify上传文件的方法与疑问
			
我是学生一枚,专业也不是计算机,但又要用到很多相关技术,所以在技术基础不牢靠的情况下,硬着头皮在做.最近在做一个小项目需要上传图片,而且是需要用ajax的方式.但是利用jquery的ajax方法总会有 ...
 - Shader的使用
			
一.LinearGradient 步骤:①.创建LinearGradient 步骤 ②.将其加入到Paint 步骤一: 构造LinearGradient的参数 public LinearGrad ...