当一个属性类(让他们称之为class_X)从另一个类实例化时,所有class_X的方法和函数也包含在每个实例中。< / p>
Q1: 不会增加大量开销,特别是如果该类有多个实例?
然后可以将类实例(class_X)作为参数传递给其他类中的其他方法和函数。
Q2: 将它作为参数传递给C风格的函数(让它称之为function_C)可以安全地存放在同一个类中(function_C驻留在class_X)?
提前致谢。
更新:以下是一些代码来说明:
class_X标题:
//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
答案 0 :(得分:2)
要有一些命名约定:“类实例”类似于含糊不清。有
因此,当您编写“类实例”时,我假设您要使用“类X的实例对象”。
致你的问:
不,没有开销。 Objective-C是一种基于类的编程语言,与基于原型的JS形成对比。这导致每个实例都具有由类声明为实例方法的所有实例方法。因此,对于所有实例,它们仅存储一次。方法的内存占用量不依赖于创建的实例数。这是一个单一的计时器。 (属性的内存占用很大程度上取决于实例数。)
将对实例的引用传递给函数是完全安全的。此外,功能可以在任何地方定义。当然,它必须通过导入来查看传递实例的类的接口。