[Objective-c 基础 - 2.5] .h和.m文件,点语法,成员变量作用域

A. 命令行编译和XCode编译

1.在存在多个.m源码实现文件的情况下,若根据需要引入.m文件,使用命令行仅仅编译主.m文件即可,但是XCode会同时编译全部.m文件,会发生编译错误(重复定义全局变量或函数)

解决方案:

使用.h和.m文件,分开声明和定义

B.XCode功能

1.自动生成.h和.m

2.保存、引用快捷代码块

3.方法索引注释

#pragma mark 方法的说明

#pragma mark - 方法的说明 加入分组线

4.链接错误查看,使用左上角的感叹号logo

C.点语法

实际是调用getter或者setter

 1 int main(int argc, const char * argv[]) {
 2     @autoreleasepool {
 3         Person *p = [Person new];
 4         p.name = @"李四";
 5         p.age = 21;
 6         NSLog(@"姓名:%@, 年龄是%d", p.name, p.age);
 7
 8     }
 9     return 0;
10 }

D.成员变量作用域

作用域关键字

[email protected] 任何地方都可以直接访问

[email protected]  能在当前类和子类直接访问

在.h文件中声明的变量默认是@protected状态

[email protected] 只能在当前类的方法中直接访问

在.m文件中声明的变量默认是@private状态,同时不能跟.h中声明的变量同名

[email protected] 只要在同一个框架中,就能访问

5.无论在.h还是.m都不能重复声明同名成员变量,会发生编译错误

时间: 2024-10-23 18:20:30

[Objective-c 基础 - 2.5] .h和.m文件,点语法,成员变量作用域的相关文章

Objective-C基础学习笔记(六)-property作用-构造方法-OC成员变量的作用域

一. 点语法 点语法的本质是方法调用,并不是访问成员变量,编译器看到点语法有两种处理 1 .是赋值,赋值的就是展开为set方法 2. 不是赋值:展开为set方法 使用示例: Person类的声明: 点语法的测试: 二. OC成员变量的作用域 @public :任何地方访问 @private :只能在当前类的对象方法中直接访问 @protected :能在当前类和子类中直接访问(默认) @package :只要处于同一个框架中就能直接访问对象成员变量   三. @property 与 @synth

黑马程序员---Objective-C基础学习---点方法使用和成员变量的作用域

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.点语法 oc设计点语法的目的就是让其他语言的开发者能快速上手oc这门语言,oc点语法与java里面很像,那什么是点语法呢,点语法怎么用呢? 1.点语法和set和get方法有关 这里新建一个项目,添加一个Person类 Person.h 1 // 2 // Person.h 3 // zijia 4 // 5 // Created by zou on 5/10/15. 6 // Copyri

【IOS学习基础】NSObject.h学习

一.<NSObject>协议和代理模式 1.在NSObject.h头文件中,我们可以看到 // NSObject类是默认遵守<NSObject>协议的 @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } // 往上翻看到NSObject协议的声明@protocol NSObject/* 中间一大堆方法的声明*/@end 然后我就产生疑问了,为什么我们自己定义的协议是这样,后面加上了<

ios的属性和成员变量在.h文件和.m文件的不同

今天被一个最近在学ios的同事问了一个问题:属性写在.h文件中和在.m文件中有什么区别?当时错愣了一下,隐约记得似乎有区别的,但是想不起来,根据自己的经验告诉他,说没区别,结果找了资料发现自己错了,好尴尬,把这些基础的给忘了. 属性在.h文件中和在.m中声明是有区别的.区别就是,在.h文件中声明的属性,外部类可以通过"类实例.属性"来调用,但在.m中声明的则不可以,获取和设置的方法,只能是通过setValue:forKey和valueForKey来实现. 成员变量,有三种权限,就是大家

C++基础之 成员变量初 始化赋值

摘要: C++成员变量 初始化赋值 你都清楚吗?还有好多坑,好多细节也不知道... 今天在写一个类的时候,由于该类的一个成员变量是引用,所以初始化出现了问题,查了一下之后,才发现,原来引用的初始化和const常量 一样只能在构造函数的初始化列表里初始.突然发现自己的C++基础本科的时候学的有待重温. 至于为什么成员变量中要用到引用,这个主要是该成员变量是另一个类的对象,但是该类却禁止copy[怎么禁止拷贝构造函数?其实很简单,声明为Private即可]. 注解: 在 C++ 标准中(除了C++1

android基础知识13:AndroidManifest.xml文件解析

1.重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

C语言中.h和.c文件解析(转载)

转载:http://www.cnblogs.com/laojie4321/archive/2012/03/30/2425015.html   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相

C++基础1 C与C++的功能扩展语法增强 &nbsp; namesapce const 引用

C C++ 是干什么的 1简单的C++ Hello World! #include "iostream"      using namespace std; int main() {         cout << "Hello World!\n" ;//<< endl;         cout << "Hello World!" << endl;         return 0; } 编译运行

刨根问底Objective-C Runtime(4)- 成员变量与属性

http://chun.tips/blog/2014/11/08/bao-gen-wen-di-objective[nil]c-runtime(4)[nil]-cheng-yuan-bian-liang-yu-shu-xing/ 上一篇笔记讲述了objc runtime中消息和Category的细节,本篇笔记主要是讲述objc runtime的 成员变量和属性. 习题内容 下面代码会? Compile Error / Runtime Crash / NSLog…? @interface Sark