Objective c 将属性作为引用参数发送到iOS中的函数?

Objective c 将属性作为引用参数发送到iOS中的函数?,objective-c,function,properties,parameters,ref,Objective C,Function,Properties,Parameters,Ref,我想这样做: @property (nonatomic, retain) NSObject *obj1; @property (nonatomic, retain) NSObject *obj2; - (id)init { if ((self = [super init])) { [SomeClass someFuncWithParam1:*(self.obj1) param2:*(self.obj2)]; } } @implementation Some

我想这样做:

@property (nonatomic, retain) NSObject *obj1;
@property (nonatomic, retain) NSObject *obj2;

- (id)init {

    if ((self = [super init])) {

        [SomeClass someFuncWithParam1:*(self.obj1) param2:*(self.obj2)];
    }
}

@implementation SomeClass
+ (void)someFuncWithParam1:(NSObject **)param1 param2:(NSObject **)param2 {

    //init obj1;
    ...
    //init obj2;
    ...
}
@end

我还没有找到任何示例如何将objective-C属性传递到函数中进行初始化。我知道通常的变量是可能的,但是没有关于如何处理属性的例子。

你不能在(目标-)C中通过引用传递参数。你可能的意思是 将变量的地址作为参数传递给该方法,以便该方法可以 通过指针设置变量的值

但是,这不适用于属性。
self.obj1
只是方法调用
[self obj1]
的一种方便的表示法,它返回 财产的价值。获取返回值的地址是不可能的

你能做的就是

  • 传递相应实例变量的地址:

    [SomeClass someFuncWithParam1:&_obj1 param2:&_obj2];
    
    NSObject *tmpObj1;
    NSObject *tmpObj2;
    [SomeClass someFuncWithParam1:&tmpObj1 param2:&tmpObj2];
    self.obj1 = tmpObj1;
    self.obj2 = tmpObj2;
    
    缺点是绕过了属性访问器方法。这可能是也可能不是 与你的情况相关

  • 传递临时局部变量的地址:

    [SomeClass someFuncWithParam1:&_obj1 param2:&_obj2];
    
    NSObject *tmpObj1;
    NSObject *tmpObj2;
    [SomeClass someFuncWithParam1:&tmpObj1 param2:&tmpObj2];
    self.obj1 = tmpObj1;
    self.obj2 = tmpObj2;
    
两种解决方案都不是很好。或者,您可以将整个对象(
self
)传递给helper方法,然后该方法初始化这两个属性

或者只使用属性
obj1
obj2
定义自定义类,并使helper方法返回此自定义类的实例