文档章节

第01天OC语言(09):第一个OC类方法

lyh2017iOS
 lyh2017iOS
发布于 2017/07/10 00:52
字数 834
阅读 2
收藏 0
点赞 0
评论 0

#####一、概念 #####二、代码

#import <Foundation/Foundation.h>
#pragma mark 类

@interface IPhone : NSObject
{
@public
    float _model;    // 型号
    int _cpu;        // cpu
    double _size;    // 尺寸
    int _color;      // 颜色
}

-(void)about;
-(char *)loadMessage;
-(int) signal:(int)number;
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;

// 计算器
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;
// 如果你不想每次使用方法 都需要创建对象存储空间
// 并且如果该方法中 没有使用到属性(成员变量),那么你可以把这个方法定义为类方法
// 对象方法 用对象调用 类方法用类调用
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;

#pragma mark 1.类方法
// 如何定义类方法,类方法的写法 和 对象方法一模一样, 除了前面的-号 不同以外
// 只需要将对象方法的 -号 换成 + , 那么就定义了一个类方法

+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
+(void)demo;

@end


#pragma mark 实现

@implementation IPhone
-(void)about
{
    NSLog(@"sum = %i",[IPhone sumWithValue1:30 andValue2:30]);
    NSLog(@"型号 = %f cpu = %i,尺寸 = %f, 颜色 =%i",_model,_cpu,_size,_color);
    
//    IPhone *p = [IPhone new];
//    char *content = [p loadMessage];
//    NSLog(@"loadMessage %s",content);
    
        NSLog(@"loadMessage %s",[self loadMessage]);

}

-(char *)loadMessage
{
    char *content = "老婆我们家我做主";
    return "lyh is cool";
}
-(int) signal:(int)number
{
    NSLog(@"打电话 %i",number);
    return 1;
}
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
    NSLog(@"发短息 %i, 内容: %s",number,content);
    return 1;
}
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2


/*
 注意 :如果声明的是对象方法 那么必须实现对象方法 
        如果声明的是类方法 那么就必须实现类方法
 
 类方法 和 对象方法的区别
    0.对象方法 以 - 开头
        类方法 以 + 开头
 
    1.对象方法 必须对象调用
       类方法 必须用类调用
    2.对象方法中 可以直接访问属性(成员变量)
      类方法 不可以 直接访问属性(成员变量)
    3.类方法的优点, 调用类方法的效率会比 调用对象方法高
    4.类方法 和 对象方法可以进行相互调用
        4.1 对象方法中 可以直接调用类方法
        4.2 可以在类方法中 间接 调用对象方法   (注意 : 不建议这样使用)
        4.3 类方法可 以直接调用 其他类方法
        4.4 对象方法 可以直接调用 对象方法
 
 类方法的应用场景
    如果方法中没有使用到属性 (成员变量), 那么能用类方法 就用类方法
    类方法的执行效率 比 对象方法高 
 类方法 一般用于定义 工具方法 
    字符串查找
    文件操作
    数据库操作
 
 */
+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
{
//    NSLog(@"型号 = %f cpu = %i,尺寸 = %f, 颜色 =%i",_model,_cpu,_size,_color); // instance variable '_color' accessed in class method
    IPhone *p = [IPhone new];
    [p signal:123]; // 注意 : 在企业开发中, 不建议这样使用
    return v1 + v2;
}

+(void)demo
{
    [IPhone sumWithValue1:30 andValue2:40];
    NSLog(@"demo");
}
@end


#pragma mark main函数
void text();
int main(int argc, const char * argv[])
{
    /*
    IPhone *p = [IPhone new];
    p->_model = 4;
    p->_size = 3.5;
    p->_color = 0;
    p->_cpu = 1;
    
    [p about];
    char *content = [p loadMessage];
    NSLog(@"content %s",content);
    [p signal:10010];
    [p sendMessageWithNumber:10010 andContent:"hehe"];
//    int res = [p sumWithValue1:10 andValue2:20];
    int res = [IPhone sumWithValue1:20 andValue2:20];

    NSLog(@"res = %i",res);
     */
    
//    [IPhone loadMessage];
    
    IPhone *p = [IPhone new];
//    int res = [p sumWithValue1:10 andValue2:20]; // No visble @interface for 'IPhone' declares the selector 'sumWithValue1:andValue2:'
    [p about];
//    [IPhone demo];
    
    
    return 0;
}

void text()
{
    // 1.创建对象
    IPhone *p1 = [IPhone new];
    // 2.利用对象 调用加法运算方法
//    int res = [p1 sumWithValue1:10 andValue2:20];
    int res = [IPhone sumWithValue1:10 andValue2:20];
    NSLog(@"res = %i",res);
    
}

输入图片说明 输入图片说明 输入图片说明

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
如何实现iOS热更新

如何实现iOS热更新 字数803 阅读7169 评论19 喜欢42 最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法跳过提交版本这...

法斗斗
2016/08/15
9
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
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
Swift2.0与OC混编实验--动态库(一)

完整的Demo下载 做了以下几个实验 验证Swift和OC的项目可以使用任意语言开发的动态库 1、创建了一个Swift语言的动态库 2、创建了一个OC语言的动态库 3、创建了一个SwiftApp项目,在项目中同时...

泊竹
2016/01/17
434
0
Object-C基础-02-第一个OC的类

一、语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类;在OC中,一般用2个文件来描述一个类: 1> .h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interfac...

Corwien
2016/03/17
22
0
OC语言的特性(一)-消息传递与调用函数的表现形式

我们在初学Objective-C时,都会觉得ObjC中的消息传递和其他语言的调用函数差不多,只是在OC中,方法调用用消息传递这一概念来代替。 那么到底怎样区别OC中的消息传递与其他语言的调用函数呢。...

浩浩老师
2015/09/08
1K
0
Objective-C基础语法规则教程

Objective-C基础语法规则教程 简介 Objective-C是一种简单的面向对象的计算机语言。Oobjective-C扩展了标准的ANSI C语言。类的语法和设计主要是基于Smalltalk,最早的面向对象编程语言之一。...

FelixSmile
2016/09/18
16
0
【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号。 一、类与结构体 两者在Swift中差不了多少了 类与...

xn4545945
2014/09/16
0
0
Object-C基础-01-概述

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

Corwien
2016/03/16
33
0
OC学习篇之---KVC和KVO操作

前一篇文章我们介绍了OC中最常用的文件操作:http://blog.csdn.net/jiangwei0910410003/article/details/41875015,那么今天来看一下OC中的一个比较有特色的知识点:KVC和KVO 一、KVC操作 OC...

jiangwei0910410003
2014/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6用的外库遇到的问题

要用到wmi库 pip install wmi 装后不能用还要安装pywin32库。 要用到crypto加密模块安装pip instal pycrypto装后不能用。要安装pycryptodome。...

oisan_
11分钟前
0
0
select, poll, epoll I/O复用介绍

什么是I/O复用? 内核监视多个文件描述符(I/O文件句柄),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 I/O多路复用又被称为“事件驱动”(比如读写事...

xiaoxlm
12分钟前
0
0
【Spring 系列 给IOC容器添加组件的几种方式总结】

给Spring 注册Bean的几种方式总结。其中使用@Import注解是Spring Boot 完成自动配置的一个核心注解。 1、Spring 中给IOC容器添加组件的几种方式 在Spring的配置文件中,配置Bean(基于XML方式...

HansonReal
13分钟前
3
0
bootstrapTable语言包设置

###方法一引入不同的语言包 <script src="bootstrap-table-zh-CN.js"></script> ###方法二引入全语言包 <script src="bootstrap-table-locale-all.min.js"></script>//然后在初始化前设计默......

momo1987
13分钟前
0
0
Saltstack 常用命令

1、拷贝文件到客户端 # salt 'slaver.test.com' cp.get_file salt://apache.sls /tmp/cp.txt 2、拷贝目录到客户端 # salt 'slaver.test.com' cp.get_dir salt://test /tmp 3、显示存活的客户......

硅谷课堂
14分钟前
0
0
致初学者-如何学好Python这门编程语言?[图]

致初学者-如何学好Python这门编程语言?[图]: 对于很多Python3初学者,往往会面临以下问题:Python2和Python3我该学习哪一个?是否要安装Linux系统学习Python?Python3有各种版本我该安装哪...

原创小博客
17分钟前
1
0
E31---setopt=protected_multilib=false

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错。 yum install -y zlib zlib-devel 1 (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multil...

侠客行之石头
21分钟前
0
0
HTTP常见面试题

Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,H...

JK_OPERA
23分钟前
0
0
python爬取站长素材网页图片保存到ppt中

网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import requestsfrom bs4 import BeautifulSoupfrom pptx import Presentationfrom pptx.util import Inchesimpor......

你为什么不吃药
24分钟前
1
0
Ubuntu 18.04 swap空间的修改

一、准备工作 执行“sudo swapon -s”命令,查看是否已经存在swap file 二、修改swap file # 如果第一步存在swapfile则需要先禁用sudo swapoff /swapfile# 修改swap 空间的大小为2Gs...

Iceberg_XTY
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部