将 class 实例作为参数传递给它自己的函数之一
Passing a class instance as a parameter to one of its own functions
当 class 属性 (我们称之为 class_X) 从另一个 class 实例化时,所有 class_X的方法和函数也包含在每个实例中。
Q1: 这不会增加大量开销,特别是如果有多个 class 实例吗?
class 实例 (class_X) 然后可以作为参数传递给其他 class 中的其他方法和函数。
Q2: 将它作为参数传递给 C-style 函数(我们称它为 function_C)是否安全驻留在同一个 class(function_C 驻留在 class_X)?
提前致谢。
更新:这里有一些代码来说明:
class_X header:
//class_X.h
@interface class_X : NSObject
@property (nonatomic, assign) NSInteger intProp;
@property (nonatomic, strong) NSArray *arrProp;
void function_C (class_X *cx);
@end
class_X 实施:
//class_X.m
#import "class_X.h"
@implementation class_X
void function_C (class_X *cx)
{
//code...
}
@end
实例化class_X:
@implementation someOtherViewController
- (void) viewDidLoad {
[super viewDidLoad];
class_X *cx = [[class_X alloc] init];
cx.intProp = 123;
cx.arrProp = @[@"one", @"two", @"three"];
function_C (cx); //does this not cause some sort of recursion?
}
@end
要有一些命名约定:"class instances" 有点模棱两可。有
- 实例(或实例对象)具有 class.
- classes,类似于实例对象的类型。
- class 个对象
所以我假设你想用"instance objects of class X",当你写"class instances"。
给你的问题:
不,没有开销。 Objective-C 是一种基于 class 的编程语言,与基于原型的 JS 不同。这导致每个实例都具有由 class 声明为实例方法的所有实例方法。因此,对于所有实例,它们仅存储一次。这些方法的内存占用量不取决于创建的实例数。这是一次性的。 (属性的内存占用量在很大程度上取决于实例数。)
将对实例的引用传递给函数是完全安全的。此外,函数可以在任何地方定义。当然,它必须查看传递实例的 class f 的接口,可能是通过导入。
当 class 属性 (我们称之为 class_X) 从另一个 class 实例化时,所有 class_X的方法和函数也包含在每个实例中。
Q1: 这不会增加大量开销,特别是如果有多个 class 实例吗?
class 实例 (class_X) 然后可以作为参数传递给其他 class 中的其他方法和函数。
Q2: 将它作为参数传递给 C-style 函数(我们称它为 function_C)是否安全驻留在同一个 class(function_C 驻留在 class_X)?
提前致谢。
更新:这里有一些代码来说明:
class_X header:
//class_X.h
@interface class_X : NSObject
@property (nonatomic, assign) NSInteger intProp;
@property (nonatomic, strong) NSArray *arrProp;
void function_C (class_X *cx);
@end
class_X 实施:
//class_X.m
#import "class_X.h"
@implementation class_X
void function_C (class_X *cx)
{
//code...
}
@end
实例化class_X:
@implementation someOtherViewController
- (void) viewDidLoad {
[super viewDidLoad];
class_X *cx = [[class_X alloc] init];
cx.intProp = 123;
cx.arrProp = @[@"one", @"two", @"three"];
function_C (cx); //does this not cause some sort of recursion?
}
@end
要有一些命名约定:"class instances" 有点模棱两可。有
- 实例(或实例对象)具有 class.
- classes,类似于实例对象的类型。
- class 个对象
所以我假设你想用"instance objects of class X",当你写"class instances"。
给你的问题:
不,没有开销。 Objective-C 是一种基于 class 的编程语言,与基于原型的 JS 不同。这导致每个实例都具有由 class 声明为实例方法的所有实例方法。因此,对于所有实例,它们仅存储一次。这些方法的内存占用量不取决于创建的实例数。这是一次性的。 (属性的内存占用量在很大程度上取决于实例数。)
将对实例的引用传递给函数是完全安全的。此外,函数可以在任何地方定义。当然,它必须查看传递实例的 class f 的接口,可能是通过导入。