objective-c 变量前加下划线"_"是什么意思?
作者:王涛
链接:http://www.zhihu.com/question/26605346/answer/33392620
来源:知乎
作者:王涛
链接:http://www.zhihu.com/question/26605346/answer/33392620
来源:知乎
这是苹果的编程规范(也说不上规范,就是算是习惯吧),声明的property如果没有特意指定synthesize的话,那么Objective-C就会自动的给你声明一个_开头的实例变量。
例如声明了一个叫param的property
@property (nonatomic, copy)NSString *param;
通过_param进行存取的话是不会调用该变量的setter或者getter方法的,声明的copy也就不会起作用,而通过self.param调用的话是会调用setter或者getter方法的,这样copy也就会起作用。
这样是通过自动的方式给你生成了一个_开头的变量,你当然可以不这样用,例如你在上面声明完property后,你可以在实现文件中再这么写
@synthesize param = param;
这样就没有了_param,取而代之的就是param,他们是一样的。
所以这仅仅就是一个编程习惯的问题,最早之前这个@synthesize是需要我们自己去写的,所以根据个人习惯就会有不带_的实例变量,而后来苹果把@synthesize自动完成了,不需要我们去写了,而起使用的是苹果那边的编程习惯,故而就是_开头了。
例如声明了一个叫param的property
@property (nonatomic, copy)NSString *param;
通过_param进行存取的话是不会调用该变量的setter或者getter方法的,声明的copy也就不会起作用,而通过self.param调用的话是会调用setter或者getter方法的,这样copy也就会起作用。
这样是通过自动的方式给你生成了一个_开头的变量,你当然可以不这样用,例如你在上面声明完property后,你可以在实现文件中再这么写
@synthesize param = param;
这样就没有了_param,取而代之的就是param,他们是一样的。
所以这仅仅就是一个编程习惯的问题,最早之前这个@synthesize是需要我们自己去写的,所以根据个人习惯就会有不带_的实例变量,而后来苹果把@synthesize自动完成了,不需要我们去写了,而起使用的是苹果那边的编程习惯,故而就是_开头了。
相关推荐
3. **命名约定**:Objective-C遵循特定的命名约定,如首字母大写的类名,小写的实例变量,以及下划线分隔的属性和方法名称。 4. **协议(Protocol)**:Objective-C的协议类似于接口,定义了一组方法签名,但不提供...
Objective-C是一种基于C语言的扩展,强调动态特性和面向对象设计,是Mac OS X和iOS开发的主要语言。Cocoa是Mac OS X的主要应用框架,包含一系列Objective-C类,用于快速构建功能丰富的OS X应用程序。Apple提供了一套...
### Objective-C 编码规范详解 #### 一、引言 Objective-C 是一种通用、面向对象的编程语言,由苹果公司在其操作系统上广泛使用。它结合了C语言的基础语法和Smalltalk的面向对象特性,是iOS和macOS开发的重要工具...
本文将深入探讨Objective-C中的变量和面向对象的继承特性。 首先,我们关注的是变量。在Objective-C中,变量的声明和访问有着独特的语法。Objective-C采用点语法(dot notation)来访问对象的属性,就像这样:`...
### Objective-C 2.0 Mac和iOS开发实践指南 #### 第1章 C,Objective-C的基础 **1.1 C程序的结构** - **1.1.1 main函数**:每个C程序都必须有一个`main()`函数,它是程序执行的起点。在Objective-C中,这个规则...
### Daniel's Objective-C Coding Style Guidelines #### 概述 Daniel’s Objective-C Coding Style Guidelines 是一套由杨德升根据 Apple 的 Cocoa 编码指南、Google 的 Objective-C 风格指南以及 Three20 的源...
1. Objective-C语言概述:Objective-C是一种C语言的扩展,它具有面向对象编程的特性,同时保留了C语言的动态和灵活性。由于它对面向对象的深入设计,使得它特别适合于复杂程序的设计与开发,因此成为了Mac OS X和...
1. **Objective-C简介**:Objective-C是在C语言基础上扩展的,增加了消息传递机制和类的概念,使得它更适合于面向对象编程。 2. **语法基础**: - **类与对象**:Objective-C中的所有事物都是对象,通过定义类来...
Objective-C是一种面向对象的编程语言,它基于C语言并添加了面向对象的特性。Objective-C是苹果公司用于iOS和OS X系统开发的主要语言之一,尤其是在早期阶段。对于希望在iPhone平台上开发游戏的程序员来说,掌握...
### Objective-C: From Zero to Hero - Object Oriented Programming 2 #### 重要概念与知识点解析 ##### 一、实例变量的有效性验证 在Objective-C中,了解如何定义有效的实例变量至关重要。下面是一些示例: - ...
Objective-C的标识符遵循严格的命名规则,如首字母小写的实例变量,首字母大写的方法名,以及下划线分隔的属性名称。 5. **Objective-C的Foundation框架** Foundation框架是Objective-C的基础,提供了许多常用的...
**谷歌Objective-C编程风格指南中文版** Objective-C是一种强大的面向对象的编程语言,尤其在苹果的iOS和Mac OS X开发中占据主导地位。为了确保代码的一致性、可读性和可维护性,谷歌公司制定了一份详尽的Objective...
Objective-C是一种面向对象的编程语言,它是Apple的iOS和macOS平台上的主要开发语言。"Objective-C Style Guide"是一份详细的编码规范,旨在提高代码的可读性、可维护性和团队协作效率。这份指南通常包括类命名、...
### Objective-C 学习知识点详解 #### 一、开发环境:Cocoa Cocoa 是一个应用框架集合,主要应用于 macOS 和 iOS 的软件开发。它由两大部分组成:Foundation Kit 和 Application Kit。 - **Foundation Kit**:这是...
Objective-C软件编码规范是针对iOS应用开发中的编程实践制定的一套规则,旨在提高代码的可读性、可维护性和团队协作效率。以下是对规范中关键点的详细解释: 1. **目的**: 编码规范的主要目的是确保代码的一致性...
Objective-C 是一种面向对象的编程语言,主要用于苹果的 macOS 和 iOS 开发。这份讲义涵盖了Objective-C的基础到高级内容,包括Block语法、多线程和网络编程等。 首先,我们来了解一下Objective-C的基本语法。在...
- 关键字与标识符:C语言提供特殊含义的单词为关键字,标识符是程序员为变量等命名的名称,命名规则由字母、数字、下划线组成。 - 变量和常量:变量是可变的量,常量是不可变的量。变量有作用域,可以是全局或局部的...
Objective-C的宏定义是预处理器(Preprocessor)的一部分,它允许程序员在编译期间进行文本替换,从而提高代码的可读性和效率。宏定义有两种主要类型:对象宏和函数宏。 1. 对象宏(Object-like Macro) 对象宏用于...
Objective-C Style Guide 这篇风格指南概括了「纽约时代周刊」工作的 iOS 团队的编码约定。我们非常欢迎在 和 上给我们反馈。 介绍 这里是一些来自 Apple 的风格指南文档。如果某些没有在本文提及,那在下面这些文档...
Objective-C类名和协议名应遵循驼峰命名法,而Swift遵循下划线命名法。为了在Swift中使用,你需要确保Objective-C的类名和协议名遵循Swift的可导入规则。 4. **类型兼容性**: Swift与Objective-C的类型系统有差异...