服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Objective-C不带加减号的方法实例

Objective-C不带加减号的方法实例

2021-11-11 15:33刘哇勇 C/C++

显而易见的事实是,Objective-C 中,+ 表示类方法,- 表示实例方法,这篇文章主要给大家介绍了关于Objective-C不带加减号的相关资料,需要的朋友可以参考下

前言

在Oc中,方法分为类方法和实例方法。

前置加号(+)的方法为类方法,这类方法是可以直接用类名来调用的,它的作用主要是创建一个实例。有人把它称为创建实例的工厂方法。

前置减号(-)的方法为实例方法,必须使用类的实例才可以调用的。

但看别人代码过程中,还会发现一种,不带加减号的方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
@implementation MyViewController
 
void foo(){
    printf("msg from foo...");
}
 
- (void)loadView {
  [super loadView];
  foo();
}
 
@end

这种是混搭的 C 代码。

当然当 C 方法写在 @implementation 内也是可以的,编译器会正确地处理。因为 C 方法严格来说不隶属于类,好的做法是始终写在类实现的外部。

?
1
2
3
4
5
6
7
8
9
10
11
12
void foo(){
    printf("msg from foo...");
}
 
@implementation MyViewController
 
- (void)loadView {
  [super loadView];
  foo();
}
 
@end

C 中获取 Objective-C 的数据

但如果你以为将 C 代码写在 @implementation 内部就可以获取到类里面的数据,那是不现实的。

MyViewController.h

?
1
2
3
@interface MyViewController ()
@property NSString *someStr;
@end

MyViewController.m

?
1
2
3
4
5
6
7
8
9
10
11
@implementation MyViewController
// void foo() { printf(self.someStr); } //

延伸 · 阅读

精彩推荐