前言
在Swift中有元组这种特别的数据类型,能很方便的让一个方法传递返回多个参数,但在OC中,方法返回的只能是一个结果,可以使用
NSDictionary
或者NSArray
或者单独定义一个类来来装多个需要返回的参数,但实际上还可以传递一个数据的地址作为参数,然后在方法里给对应的地址进行修改操作,也能达到一个类似的效果
@interface TestAddressParamsView ()
@property(nonatomic, strong) UIView *myView;
@end
@implementation
- (void)testAddressParam
{
NSInteger tema = 1;
NSInteger temb = 0;
NSLog(@"\n=====before:a:%ld,b:%ld",tema,temb);
NSInteger sum = [self addWithA:tema b:&temb];
NSLog(@"\n=====after:a:%ld,b:%ld sum:%ld",tema,temb,sum);
UIView *tempView = nil;
UIView *bgView = [self bgViewWithSubView:&tempView frame:CGRectMake(0, 0, 100, 200)];
self.myView = tempView;
NSLog(@"\n=====bgViewFrame: %@",NSStringFromCGRect(bgView.frame));
NSLog(@"\n=====tmepViewFrame: %@",NSStringFromCGRect(tempView.frame));
NSLog(@"\n=====self.myView: %@",NSStringFromCGRect(self.myView.frame));
}
- (NSInteger)addWithA:(NSInteger)a b:(NSInteger *)b
{
*b = *b + 1;
NSInteger res = a + *b;
return res;
}
- (UIView *)bgViewWithSubView:(UIView **)subView frame:(CGRect)frame
{
UIView *bgView = [[UIView alloc] initWithFrame:frame];
UIView *childView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 30)];
[bgView addSubview:childView];
*subView = childView;
return bgView;
}
=====before:a:1,b:0
=====after:a:1,b:1 sum:2
=====bgViewFrame: {{0, 0}, {100, 200}}
=====tmepViewFrame: {{0, 0}, {10, 30}}
=====self.myView: {{0, 0}, {10, 30}}
网友评论