文档章节

第01天OC语言(06):第一个OC类

lyh2017iOS
 lyh2017iOS
发布于 2017/07/10 00:52
字数 1334
阅读 4
收藏 0

#####一、概念

/*
>>>1. 如何编写类的声明
   以@interface开头,以@end结束,然后在class name 对应的地方写上 事物名称,也就是类名即可
   注意 : 类名的首字符必须大写
   声明一个类的目的就是为了告诉系统,我们这个类中有哪些属性 和行为
   CO类声明中 属性只能写在@interface 和 @end之前的{}中
   注意  : 编写OC类属性的时,建议将所有属性的名称前面加上 _ (iOS规范)
 
  类名后面的 : NSObject 是为了让我们的iPhone类具有创建对象的能力
 
>>>2. 如何编写类的实现
 以@implementtation开头, 以@end结尾,然后在class对应的地方 写上声明时 声明的类的名称, 必须利用声明的类名,一模一样
 
 
>>>3.如何通过一个类 创建一个对象
  在OC中想要通过一个类来创建一个对象,必须给类发送一个消息(好比C语言中调用方法一样)
  如何发送消息? 在OC中只要想要 发送消息就先写上 [类名称/对象名称 方法名称];
  发送 什么消息(调用方法)可以创建一个对象呢? new
 
 >>>4,只要通过一个类调用类的new方法,也就是给类 发送一个叫new的消息之后
 系统内部 就会做3件事情
 1.为 Iphone 类 创建出来的对象分配存储空间
 2. 初始化 iPhone 类创建出来的对象中的属性
 3. 返回 iPhone类 创建出来的对象 对应的地址 (指针)
 
 >>>4.类的对象的概念
  通过 一个iPhone类型的指针 接受了 iPhone对象的地址
  如果使用给一个指针保存了某一个对象的地址,那么我们就称这个指针为 某个类的对象
  利用 iPhone类型的指针 保存了 iPhone对象的地址, 那么我们就称之为 iPhone类型的指针 (p)称之为 iPhone对象
 */

#####二、代码

#import <Foundation/Foundation.h>
#pragma mark 类
/*
 事物名称:iPhone
 属性:颜色,型号,cpu,尺寸       == 成员变量
 行为:打电话,发短信,上网       == 成员方法
 
 C语言中函数分为声明和实现
 OC中定义一个类也分为声明和实现,也就是说以后我们OC中定义类,就是写在类的声明和实现
 
 */
#pragma mark 1. 如何编写类的声明
//  以@interface开头,以@end结束,然后在class name 对应的地方写上 事物名称,也就是类名即可
//  注意 : 类名的首字符必须大写
//  声明一个类的目的就是为了告诉系统,我们这个类中有哪些属性 和行为
//  CO类声明中 属性只能写在@interface 和 @end之前的{}中
//  注意  : 编写OC类属性的时,建议将所有属性的名称前面加上 _ (iOS规范)

// 类名后面的 : NSObject 是为了让我们的iPhone类具有创建对象的能力
@interface IPhone : NSObject
{
// 默认情况下 : OC对象中的属性 是不能直接访问的
    @public // 只要让类中的属性公开, 以后就可以直接通过 一个指向结构体的指针 来操作对象中的属性
    float _model;    // 型号  0
    int _cpu;        // cpu  0
    double _size;    // 尺寸  0
    int _color;      // 颜色  0
}
// 行为
@end


#pragma mark 2. 如何编写类的实现
/*
    以@implementtation开头, 以@end结尾,然后在class对应的地方 写上声明时 声明的类的名称, 必须利用声明的类名,一模一样
 
 */
@implementation IPhone
// 行为的实现
@end


#pragma mark main函数
int main(int argc, const char * argv[])
{
    // 如何通过一个类 创建一个对象
    // 在OC中想要通过一个类来创建一个对象,必须给类发送一个消息(好比C语言中调用方法一样)
    // 如何发送消息? 在OC中只要想要 发送消息就先写上 [类名称/对象名称 方法名称];
    // 发送 什么消息(调用方法)可以创建一个对象呢? new
    
    /*
     只要通过一个类调用类的new方法,也就是给类 发送一个叫new的消息之后
     系统内部 就会做3件事情
     1.为 Iphone 类 创建出来的对象分配存储空间
     2. 初始化 iPhone 类创建出来的对象中的属性
     3. 返回 iPhone类 创建出来的对象 对应的地址 (指针)
     */
    
    // 通过 一个iPhone类型的指针 接受了 iPhone对象的地址
    // 如果使用给一个指针保存了某一个对象的地址,那么我们就称这个指针为 某个类的对象
    // 利用 iPhone类型的指针 保存了 iPhone对象的地址, 那么我们就称之为 iPhone类型的指针 (p)称之为 iPhone对象
    IPhone *p = [IPhone new];
    p->_model = 4; // instance variable "_model" is protected
    p->_size = 3.5;
    p->_color = 0;
    p->_cpu = 1;
    
    NSLog(@"model = %f, size = %f,color = %i,cpu = %i",p->_model, p->_size,p->_color,p->_cpu );
    
    // OC中的类 其实本质就是一个结构体,所以p这个指针 其实就是指向了一个结构体
    /*
    struct Person
    {
        int age;
        char *name;
    };
    struct Person sp = {25,"lyh"};
    struct Person *sip = &sp;
//    (*sip).age = 22;
//    (*sip).name= "lyhx";
    sip->age = 22;
    sip->name = "lyhxx";
    */
    

    
    // 什么是 用于保存地址的 ? 地址
    /*
    int num;
    num = 0;
    int *p = &num;
     */
    
    return 0;
}

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
私信 提问
Native code support (Native Code(C和C++)支持)

1. WP 8和Win 8之间共享native代码 通过 Windows 运行时组件,可以在 Windows 应用商店和 Windows Phone 应用程序之间共享Native coad。由于windows phone 8和Windows 8没有共享所有的Windo...

失足处男的倒霉孩子
2013/12/26
779
0
【腾讯Bugly干货分享】JSPatch 成长之路

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员...

腾讯Bugly
2016/08/05
23
0
iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类   1. 1 如何在swift的类中使用oc类 1.2 如何在swift中实现oc的代理方法 1.3 如何在swift中实现oc的B...

鸿鹄当高远
11/06
0
0
Object-C基础-01-概述

回到顶部 前言 目前来说,Objective-C(简称OC)是iOS开发的核心语言,在开发过程中也会配合着使用C语言、C++,OC主要负责UI界面,C语言、C++可用于图形处理。近来,流传Ruby、C#也可以开发iOS...

Corwien
2016/03/16
33
0
一、Objective-C概述

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略...

长平狐
2013/03/28
113
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue + Vue-CLI + Mint-UI 移动端开发新手示例实战 - by dogstar

Vue + Vue-CLI + Mint-UI 移动端开发新手示例实战 - by dogstar 项目源代码,在码云上:https://gitee.com/dogstar/a-vue-mint-demo 快速使用 # 安装依赖npm install# 本地开发调试 lo...

暗夜在火星
38分钟前
1
0
Docker 的 Web 管理工具 DockerFly

Dockerfly是基于 Docker1.12+ (Docker API 1.24+) 开发出Docker 管理工具,提供里最基本的基于 Docker 的管理功能,目的是能够方便广大Docker初学者以及 Docker 管理员能够快速的进行Docker 容...

linuxprobe16
39分钟前
3
0
java.util.concurrent.atomic.AtomicBoolean 源码

类图: 源码: package java.util.concurrent.atomic;import sun.misc.Unsafe;public class AtomicBoolean implements java.io.Serializable { private static final long ser......

狼王黄师傅
43分钟前
2
0
msql创建视图笔录

由于之前写视图都没有记录,这次客户公司要求我写三张视图,却发现自己忘了咋写的!于是有去百度了下,分分钟搞定了。但是,个人还是做个笔录吧!以后不用去看别人的写法咯。 #车辆会员查询...

em_aaron
53分钟前
3
0
年终回顾,为你汇总一份「后端架构技术清单」

2018年马上就要过去了说说我这一年的感想吧 很多人做Java开发3,4年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年代码还是一个码农,工作中太多被动...

James-
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部