Objective-C——基础1

本文介绍了Objective-C编程语言的基础知识,包括文件扩展名、#import与#include的区别、框架概念、@符号的用途、函数与方法的区别、成员变量的使用、万物皆对象的概念、属性访问方式、数组初始化方法、new与alloc的区别、NSSet特性、atomic与nonatomic的差异、编译器介绍、属性与成员变量的区别、继承与复合的应用场景以及继承链的查找规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、扩展名

C源文件      .c
C++源文件    .cc或.cpp
OC源文件     .m
OC++源文件   .mm
头文件       .h
编译后的文件  .o

二、#import和#include区别

两个指令的作用都是:将指定文件的内容, 在预编译的时候, 拷贝到写指令的地方。
#import指令
#import指令同一个文件,无论被#import多少次,在预编译的时候 只会包含1次。
#import指令的底层会自动判断这个文件是否被包含, 只有没有被包含的时候才会包含。
#include指令
#include指令要防止重复包含,需要配合预编译执行来实现。
#import ""
包含用户自定义; 会先在当前源文件目录下查找,如果没有的话再去Xcode编译器中找
#import <>
包含系统的文件;直接去Xcode编译器中找

三、框架

把不同的功能模块,放在一个类中,多个相关的类去解决特定的问题,一个完整的框架需要有多个类。
第一方框架:苹果公司;第二框架:我们;第三方框架:其他专门人员

四、“@”的使用方法

@" "     字面的字符串对象
@数字    字面的数字对象
@‘字符’  字面的字符对象
@标识符   在OC中大部分的关键字都是以@开头的,比如@interface,@implementation,@end

五、函数

函数可以在任意地方定义,但是不能直接引用类的成员变量,因为函数不依赖于类,要引用类的成员变量只能通过参数传入

六、方法中的冒号

没有冒号  代表没有参数
有冒号    代码有参数,有多少个冒号就代表有多少个参数
方法的声明和实现,都必须以 + 或者 - 开头
+表示类方法(静态方法)
-表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型, 不能更改。

七、成员变量

在类接声明@interface中,用于声明成员变量的花括号{}前不能声明方法或者函数;在实现文件@implementation中,也可以用花括号{}声明成员变量。

类方法中不能使用实例变量,即不能给实例变量直接赋值,因为实例变量没有分配空间。

八、万物皆对象

九、访问对象的属性可以用:

对象->对象成员; (注意声明属性为@public)
对其中一个对象的成员进行了修改, 和其他的对象没有关系 。

补充:

1、消息和方法

因为对象独立于使用者,也因为一些实现了面向对象概念的早期语言的语法,术语“发送消息”用于描述执行对象的行为。对象行为的名称(或者原型)被称作消息(message)。
一个消息是一个方法的名字连同方法需要的参数名字,发送一个消息,运行需要一个消息表达式,每个消息表达式放在方括”[ ]”号里。
当你想要调用方法,你可以传递一个消息给这个对象来实现,发送给对象的参数都会被动态的分配,这样可以促进类的多态(多态指的是不同类型的对象回应同一个消息)有时一个方法的调用被一个类的超类(父类)的对象来接受消息。

2、数组NSArray中alloc init和array区别

使用alloc init初始化数组,需要手动release
使用array初始化数组,不需要手动release,使用autoreleasepool机制

3、new和alloc区别

[Person new]基本等同于[[Person alloc] init];区别只在于alloc分配内存的时候使用了zone,zone在给对象分配内存的时候,会把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度。
把alloc和init好处:可以调用多种不同的init方法

4、NSMutableSet

NSMutableSet如果添加了相同的对象,后面的对象会覆盖前面的对象,可以用可变字符串验证。

5、atomic与nonatomic区别

atomic是线程安全的,nonatomic是线程不安全的;如果只是单线程操作的话用nonatomic最好,因为后者效率高一些。

6、编译器

Xcode3所使用的编译器是gcc编译器,而在Xcode4之后的版本中,Xcode所使用的编译器已经替换成为新的LLVM编译器。LLVM编译器的前端是clang。

7、属性和成员变量区别

成员变量用于存储对象的各种值。
属性指的是给对应的成员变量取值或赋值的方法总称。

9、继承和复合的选择

是(is a)即(是一个)的关系时,用继承
是(has a)即(有一个)放入关系时,用复合

10、继承链

在继承中查找方法:先找子类的方法,找不到才找父类的方法,一层一层往上找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值