`
izuoyan
  • 浏览: 8912989 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

objective-c 类和对象中静态数据成员和静态成员函数(类方法)详解

 
阅读更多

作为初学者,相信大家都对objective-c的静态数据成员和静态成员函数都挺纠结的,我现在和大家分享下我对这个知识点的理解,请大家多多指点....

如果大家学过C++,那么都应该知道和了解静态数据成员和静态成员函数是怎么声明和使用的;现在就让我来说说objective-c和C++在静态成员在使用和声明上的异同点吧。

首先来说说声明:

A:静态数据成员的声明

C++是如下声明的:

objective-c 的声明和C++的声明有很大不一样。你不能在@interface里声明,只能在它的外面声明,但是,如果你在.h里面声明的话,你将得到两个静态数据成员,一个是类的静态数据成员,一个是全局的静态数据成员。相信大家对这个都不太理解,好的,那我先上代码:

先上类Human.h的代码:


在上Human.ml的代码


最后,当然,不能少了main.m的代码:


好的,最后的输出结果是:


相信大家看到输出结果的时候肯定想自己去试试。

其实,当我看到输出结果的时候也挺惊讶,我的理解如下:在Human.h里声明:

当你在main.m里将Human.h包含进来的时候,objective-c就给ludehai这个变量分配了两个内存空间,一个是类Human的,一个全局的Human,这样我们可以给他们赋予两个不同的值。

好了,那我们该在那里声明类的静态数据成员呢?

经过我的测试,我觉得我们应该把类的静态数据成员声明在Human.m里面:

这样,objective-c就给ludehai这个变量分配一个空间了,在main.m里不能直接调用到了,就只能通过静态成员函数调用和赋值

B:静态成员函数

C++的静态成员函数是这样声明的:

static int volume();

objective-c的静态成员函数也叫类方法,是这样声明的:

对,在objective-c里,“+”声明的函数是静态成员函数(类方法)。“-”声明的叫实例方法。他们两者的区别是:“+”的要通过类名调用,“-”必须是对象调用。


分享到:
评论

相关推荐

    Objective-C 2.0 运行时系统编程指南

    Objective-C语言将决定尽可能的从编译和链接时推迟到运行时。只要有可能,Objective-C总是使用...本文档将具体介绍NSObject类以及Objective-C程序是如何和运行时系统交互的。特别地,本文档还给出来怎样在运行时动态地加

    Objective-C语言教程

    通过学习Objective-C的基本语法、类和对象、控制流程和方法等内容,你将能够编写简单的Objective-C程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发各种类型的应用程序,并为用户提供出色的体验。祝你在...

    Objective-C Runtime测试代码

    Objective-C语言的许多决策可以在编译和运行时执行。只要有可能,它是动态的... Runtime的核心是在运行时动态操作类和消息分发给其他对象,本源代码详细介绍了怎么使用它们。 博客:http://blog.csdn.net/y550918116j

    Objective-C程序设计

    前6章讲述objective-c语言,包括数据类型、运算符、表达式、条件语句、循环语句、类、协议、继承、类别、编译预处理等内容。第7章到第10章讲述objective-c的基础框架,以及文件操作、内存管理、数据保存等内容。第11...

    Objective-C程序设计(第4版)(全球最畅销Objective-C编程书籍)

    《Objective-C 程序设计(第4版)》作者假设读者没有面向对象程序语言或者C语言(Objective-C基础)编程经验,因此,初学者和有经验的程序员都可以使用这本《Objective-C 程序设计(第4版)》学习Objective-C。...

    Objective-C基础教程 中文 PDF 清晰版 [31M]

    本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...

    Objective-C基础教程+随书源代码

     Objective-C是创建Mac OS应用和iPhone应用的主要语言,优雅的面向对象编程环境与C语言特性珠联璧合,造就了它的不俗表现。  本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例...

    用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式 .zip

    用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计...

    C语言主要知识点巩固(学习Objective-C 的前提)

    C语言主要知识点巩固(学习Objective-C 的前提),PPT格式。

    Object-C语言教程-提供了 Objective-C 的基本语法和一些示例,希望能够帮助你快速入门 Objective-C

    Objective-C 是一种通用、面向对象的编程语言,广泛应用于 macOS 和 iOS 等苹果平台的开发中。它是 C 语言的超集,结合了 Smalltalk 式的消息传递机制和 C++ 的特性。Objective-C 是苹果公司采用的主要编程语言之一...

    《Objective-C2.0程序设计(原书第2版)》_中文完整版

    全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...

    Objective-C 2.0程序设计

    书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据 类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二 部分详细阐述了Foundation...

    详解Objective-C中变量和数据类型.doc )

    详解Objective-C中变量和数据类型.doc )详解Objective-C中变量和数据类型.doc )详解Objective-C中变量和数据类型.doc )

    基于Objective-C的面向对象编程

    基于Objective-C的面向对象编程 , 对面向对象的深刻分析。

    《Objective-C 2.0程序设计(原书第2版)》[PDF]

    全书共分为四大部分:第一部分全面讲解了objective-c语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了foundation...

    Objective-C基础教程(第2版).pdf

    本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...

    Objective-C 分离 接口和实现文件

    Objective-C 分离 接口和实现文件,具体资料请参考苹果开发者Mike的博文http://blog.sina.com.cn/s/blog_7aa21f320100r7wn.html

    windows 下搭建 Objective-C 开发环境

    在windows系统下搭建Objective-C开发环境,由于公司要做iphone开发,个人学习objc(Objective-C)语法,所以在windows7下搭建了一个objc开发环境,现把自己整理的帮助文档拿来与大家分享,希望能对大家有所帮助。...

    Objective-C高级编程 iOS与OS X多线程和内存管理_Objective-C_ios_

    Objective-C高级编程 iOS与OS X多线程和内存管理.pdf

Global site tag (gtag.js) - Google Analytics