Objective-C 基础知识

简介: Objective-C 基础知识

Objective-C 是一种面向对象的编程语言,最初由 NeXT 公司开发,在苹果收购 NeXT 后成为了 iOS 和 macOS 开发中的主要语言。本篇博客将介绍 Objective-C 的基础知识并提供代码示例,帮助读者更好地理解这门语言。

  1. 对象和类

Objective-C 是一种面向对象的语言,这意味着它的程序都是由对象组成的。你可以把对象想象成现实生活中的任何事物,比如水杯、手机等等。每个对象都属于某个类,类定义了对象的属性和行为。

在 Objective-C 中,通过使用 @interface 和 @implementation 关键字来定义一个类。下面是一个简单的例子:

// MyClass.h
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
- (void)sayHello;
@end
// MyClass.m
@implementation MyClass
- (void)sayHello {
    NSLog(@"Hello, I'm %@", self.name);
}
@end

在上面的代码中,我们定义了一个名为 MyClass 的类,它继承自 NSObject 类。该类有一个属性 name 和一个方法 sayHello,用于打印出对象的名称。该类的实现位于 MyClass.m 文件中。

  1. 对象实例化

要使用一个类,必须先创建该类的一个对象。在 Objective-C 中,对象通过使用 alloc 和 init 方法来创建。例如,在上面的 MyClass 类中创建一个对象的代码如下:

MyClass *myObject = [[MyClass alloc] init];

该语句将创建一个名为 myObject 的 MyClass 对象,并将其分配给指针变量 myObject。

  1. 属性和成员变量

在 Objective-C 中,属性是访问对象的数据的一种方式。可以将属性看作是与对象相关联的变量。它们可以像普通变量一样设置和获取值。属性有两个重要的特性:存取器和修饰符。

存取器定义了属性的类型,包括读取、写入或读取/写入的能力。修饰符则用于控制属性的行为,比如是否允许空值、线程安全等。

Objective-C 中的属性通常在 @interface 块中声明,如下所示:

@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end

在这个例子中,我们定义了一个名为 name 的属性,它是字符串类型的,并且使用 strong 存取器。

成员变量也是对象的状态的一部分,但不同于属性,它们只能在类定义中的实现文件中使用。成员变量必须在 @implementation 块中进行声明,如下所示:

@implementation MyClass {
    int _age;
}
@end

在这个例子中,我们添加了一个名为 _age 的成员变量。

  1. 方法

Objective-C 中的方法是类的行为的一种方式。它们包含了要执行的代码以及传递给方法的任何参数。方法由方法名称和参数列表组成,如下所示:

- (void)methodNameWithArgument:(NSString *)argument;

在这个例子中,我们定义了一个名为 methodNameWithArgument: 的方法,它接受一个字符串类型的参数 argument。

在 Objective-C 中,方法可以分为实例方法和类方法。实例方法是与特定对象相关联的方法,而类方法则是与类本身相关联的方法。

  1. 协议

协议是一种定义接口的方式,在 Objective-C 中被广泛使用。协议定义了指定的方法集合,任何类都可以选择遵循其中的一个或多个协议。

在 Objective-C 中,协议由 @protocol 块定义。例如:

@protocol MyProtocol
- (void)doSomething;
@end

在这个例子中,我们定义了一个名为 MyProtocol 的协议,其中包含一个 doSomething 方法。

类可以通过使用 语法来声明它遵循协议。例如:

@interface MyClass : NSObject <MyProtocol>
@end

在这个例子中,我们声明了 MyClass 类遵循 MyProtocol 协议。这意味着 MyClass 必须实现 MyProtocol 中定义的所有方法。

  1. 分类

分类是一种扩展 Objective-C 类的方式。它们允许开发人员将类的实现分解为多个文件,并在不影响原始类的情况下添加新的方法。

在 Objective-C 中,分类由 @interface 和 @implementation 块定义。例如:

// MyClass+Category.h
@interface MyClass (Category)
- (void)newMethod;
@end
// MyClass+Category.m
@implementation MyClass (Category)
- (void)newMethod {
    NSLog(@"New method!");
}
@end

在这个例子中,我们定义了一个名为 Category 的分类,它包含了一个名为 newMethod 的新方法。然后,在使用 MyClass 的代码中,我们可以像这样调用它:

MyClass *myObject = [[MyClass alloc] init];
[myObject newMethod];
  1. 总结

在本文中,我们介绍了 Objective-C 中的基础知识,包括对象和类、对象实例化、属性和成员变量、方法、协议和分类。此外,我们还提供了代码示例以帮助读者更好地理解这些概念。

Objective-C 是一种强大的编程语言,它在 iOS 和 macOS 开发中被广泛使用。掌握 Objective-C 的基础知识对于任何想要开发这些平台应用程序的程序员来说都是必不可少的。

目录
相关文章
|
C语言 C++ iOS开发
Objective-C入门
  Objective-C是一种简单的计算机语言,设计为可以支持真正的面向对象编程。Objective-C通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的ANSI C语言。
1168 0
|
存储 对象存储 iOS开发
Objective-C 学习第七天
一、 自动释放池的原理 存入到自动释放池中的对象,在自动释放池销毁的时候,会自动调用储存在该自动释放池中的所有对象的release方法. 可以解决的问题: 将创建的对象,存入到自动释放池之中,就不再需要手动的release这个对象了,因为池子销毁的时候,就会自动的调用池中所有的对象release.
865 0
|
存储 iOS开发
Objective-C 学习第八天
一、延展 延展: Extension 1). 是一个特殊的分类,所以延展也是类的一部分 2). 特殊之处: a. 延展这个特殊的分类没有名字 b. 只有声明没有实现,和本类共享一个实现 延展的语法 语法: @interface 本类名 () @end 没有实现,和本类共享一个实现.
860 0
|
存储 安全 iOS开发
Objective-C 学习第六天
一、 内存管理 内存的作用: 存储数据. 1). 如何将数据存储到内存之中 声明1个变量,将这个数据存储进去 2). 当数据不再被使用的时候,占用的内存空间如何被释放 内存中的五大区域 栈:局部变量,当局部变量的作用域被执行完毕之后,这个局部变量就会被系统立即回收.
993 0
|
iOS开发 开发工具 git
《Objective-C入门经典》——导读
本节书摘来自异步社区《Objective-C入门经典》一书中的目录,作者【美】Jesse Feiler,更多章节内容可以访问云栖社区“异步社区”公众号查看
1128 0