Objective c 将类实例作为参数传递给它自己的函数之一
当从另一个类实例化一个属性类(我们称之为class_X)时,所有class_X的方法和函数也包含在每个实例中 Q1:这会不会增加大量的开销,特别是如果该类有多个实例的话 然后可以将类实例(class_X)作为参数传递给其他类中的其他方法和函数 Q2:将其作为参数传递给驻留在同一类(函数C驻留在类X中)中的C风格函数(我们称之为函数C)安全吗 提前谢谢 更新:这里有一些代码可以说明: 类_X头: 类_X实现: 实例化类_X:Objective c 将类实例作为参数传递给它自己的函数之一,objective-c,function,class,methods,properties,Objective C,Function,Class,Methods,Properties,当从另一个类实例化一个属性类(我们称之为class_X)时,所有class_X的方法和函数也包含在每个实例中 Q1:这会不会增加大量的开销,特别是如果该类有多个实例的话 然后可以将类实例(class_X)作为参数传递给其他类中的其他方法和函数 Q2:将其作为参数传递给驻留在同一类(函数C驻留在类X中)中的C风格函数(我们称之为函数C)安全吗 提前谢谢 更新:这里有一些代码可以说明: 类_X头: 类_X实现: 实例化类_X: 要有一些命名约定,“类实例”类似于含糊不清。有 具有类的实例(或实例对
要有一些命名约定,“类实例”类似于含糊不清。有
- 具有类的实例(或实例对象)
- 类,类似于实例对象的类型
- 类对象
非常感谢你的回答。因此,对于每个实例,方法不会重复,但属性是;我不知道。另外,您提到该函数可以在任何地方;即使是在同一个班级?(请看我更新的代码示例)属性是否比常规变量重很多?再次感谢你。它可以在同一个类内、不同的类或类外。即
NSLog()
是一个C函数,不在任何类中。2.每个实例变量都具有与本地变量或全局变量相同的内存占用,通常是一个机器字(8字节)。因此,您可以通过以下公式计算circa值:每个实例的属性数×实例数×8字节=内存占用。太好了!请给我最后一个。当它所在的类被另一个类实例化时,C风格的函数是否真的不包括在内?在我上面的例子中,即使它被放在类@implementation/@end中,function\u C()
也不会是对象的一部分?不,它们不包括在内:没有理由包括该函数,因为您可以简单地将其与function\u C()
一起使用,而不需要与类建立任何关系。即使函数是在类内声明的,它们也与类或其实例没有关系。
//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.m
#import "class_X.h"
@implementation class_X
void function_C (class_X *cx)
{
//code...
}
@end
@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