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方法返回此自定义类的实例