杰瑞科技汇

Objective-C基础教程核心知识点有哪些?

Objective-C 基础教程

前言:为什么学习 Objective-C?

在 Swift 成为 iOS 和 macOS 开发首选语言的今天,学习 Objective-C 仍然具有非常重要的价值:

Objective-C基础教程核心知识点有哪些?-图1
(图片来源网络,侵删)
  1. 维护遗留项目:许多大型应用和重要的开源库(如 AFNetworking, Masonry)仍然是 Objective-C 编写的,作为一名专业的 iOS/macOS 开发者,阅读和维护这些代码是必备技能。
  2. 理解底层原理:Objective-C 是一门动态语言,它的运行时机制是 iOS/macOS 系统的核心,学习 OC 能让你更深刻地理解消息转发、关联对象、KVO/KVC 等技术的底层工作原理,这反过来会让你对 Swift 的理解更上一层楼。
  3. 与 C 语言无缝集成:OC 是 C 语言的超集,你可以直接在 OC 代码中使用 C 语言的特性,如指针、结构体等,这对于性能优化和与系统底层交互至关重要。
  4. 历史传承:了解 OC 是理解 Apple 开发生态历史的一部分。

第一部分:环境搭建与基础语法

第一章:开发环境配置

  1. 安装 Xcode
    • 从 Mac App Store 下载并安装最新版的 Xcode。
    • Xcode 是一个集成的开发环境,包含了代码编辑器、编译器、调试器、模拟器等所有必需的工具。
  2. 创建第一个项目
    • 打开 Xcode,选择 "Create a new Xcode project"。
    • 选择 "macOS" -> "Command Line Tool",语言选择 "Objective-C"。
    • 创建项目后,你会看到几个关键文件:
      • main.m: 程序的入口点,包含 main 函数。
      • YourProjectName.m: 你的主实现文件。
      • YourProjectName.h: 你的主头文件,用于声明接口。

第二章:语言基础 - "C" 的部分

因为 OC 是 C 的超集,所以首先需要掌握 C 的基础。

  1. 基本数据类型
    • int, float, double, char, BOOL (OC中,YES/NO1/0 的宏定义)。
  2. 变量与常量
    • 变量声明:int age = 25;
    • 常量声明:const int MAX_AGE = 100;#define MAX_AGE 100 (宏定义)。
  3. 运算符
    • 算术运算符 (, , , , )。
    • 关系运算符 (, , >, <)。
    • 逻辑运算符 (&&, , )。
  4. 流程控制
    • if-else 条件语句。
    • for, while, do-while 循环语句。
    • switch 开关语句。

第三章:语言基础 - "Objective" 的部分

这是 OC 的核心,面向对象编程。

  1. 基本概念

    • :创建对象的蓝图,声明在 .h 文件中,实现放在 .m 文件中。
    • 对象:类的实例,在内存中占据空间。
    • 方法:定义在类中的函数,分为实例方法和类方法。
    • 消息:在 OC 中,调用方法被称为“发送消息”。[object method]
  2. 类的声明与实现

    Objective-C基础教程核心知识点有哪些?-图2
    (图片来源网络,侵删)
    • 头文件 (.h) - 接口文件:

      // Person.h
      #import <Foundation/Foundation.h>
      @interface Person : NSObject
      {
          // 实例变量,通常使用 @property 替代
          int _age;
      }
      // 属性声明
      @property (nonatomic, assign) int age;
      @property (nonatomic, copy) NSString *name;
      // 方法定义
      - (void)walk;
      + (void)sayHello;
      @end
    • 实现文件 (.m) - 实现文件:

      // Person.m
      #import "Person.h"
      @implementation Person
      // 属性的合成(自动生成 getter/setter)
      // @synthesize age = _age; // 现代Xcode会自动合成,无需手动写
      // 实例方法实现
      - (void)walk {
          NSLog(@"%@ is walking.", self.name);
      }
      // 类方法实现 (以 + 开头)
      + (void)sayHello {
          NSLog(@"Hello from Person class!");
      }
      @end
  3. 方法详解

    • 实例方法:以 (减号) 开头,作用于对象实例。- (void)walk;
    • 类方法:以 (加号) 开头,作用于类本身,不需要创建实例。+ (void)sayHello;
    • 方法签名- (返回类型)方法名:(参数类型)参数名;
      • - (void)setAge:(int)newAge;
      • 多个参数:- (void)setAge:(int)newAge andName:(NSString *)newName;
  4. self 关键字

    Objective-C基础教程核心知识点有哪些?-图3
    (图片来源网络,侵删)
    • self 指代当前对象实例,类似于 C++/Java/Python 中的 this
    • 用于在方法内部访问当前对象的属性和其他方法。[self walk];
  5. 消息发送与响应

    • [receiver message] 是 OC 调用方法的标准语法。
    • 如果对象无法响应某个消息,程序会抛出异常,这被称为“未选择器”异常。

第二部分:核心概念与高级特性

第四章:属性

属性是封装对象数据的首选方式,它自动生成 getter 和 setter 方法。

  1. @property:在 .h 文件中声明属性。
  2. 属性修饰符
    • 原子性
      • atomic (默认):线程安全,但性能开销大。
      • nonatomic:非线程安全,性能更好,在 iOS 开发中几乎总是使用这个。
    • 内存管理语义
      • assign:用于基本数据类型 (int, float, CGRect 等),简单赋值,不涉及内存管理。
      • strong (现代推荐):强引用,持有对象,对象会一直存在直到没有强引用指向它,用于对象类型。
      • weak:弱引用,不持有对象,当对象被销毁时,指针会自动置为 nil,常用于解决循环引用,如 delegate、outlet。
      • copy:复制对象,创建一个不可变副本,用于防止外部修改影响内部数据,常用于 NSString, NSArray, NSDictionary 等可变对象。
      • retain:旧版的 strong,现在不推荐使用。
    • 读写权限
      • readwrite (默认):同时生成 getter 和 setter。
      • readonly:只生成 getter。

第五章:内存管理

这是 OC 最重要也最容易出错的部分。

  1. 原则:谁创建,谁释放;谁 retain,谁 release。
  2. 引用计数
    • 每个对象都有一个引用计数器。
    • alloc, new, copy, mutableCopy 会让计数器 +1。
    • retain 会让计数器 +1。
    • release 会让计数器 -1。
    • 当计数器为 0 时,对象会被销毁。
  3. @autoreleasepool
    • 自动释放池,将暂时不需要但又不希望立即释放的对象放入其中,在池子被 drain 时,统一向这些对象发送 release 消息。
    • ARC 会自动管理,但理解其原理很重要。
  4. ARC (Automatic Reference Counting)
    • 现代 OC 开发必须使用,Xcode 默认开启。
    • 编译器在编译时自动插入 retain, release, autorelease 代码,开发者无需手动管理。
    • 所有权修饰符
      • __strong (默认):等同于 strong
      • __weak:等同于 weak
      • __unsafe_unretained:等同于 assign,但用于对象,不安全(对象销
分享:
扫描分享到社交APP
上一篇
下一篇