va_list, 객체 아래 색인 등 작은 Tip

2996 단어

va_list


실행 결과를 보려면 다음과 같이 하십시오.
 TestModel, 
- (void)testSqlArgument:(NSString *)sql cont:(int)cont, ... {
    va_list args;
    va_start(args, cont);
    int i = 0;
    id obj;
    while (i < cont) {
        obj = va_arg(args, id);
        NSLog(@"%@", obj);
        i++;
    }
    va_end(args);
}
 
[model testSqlArgument:@"insert into user (uname, age, sex, uid) values (?, ?, ?, ?)" cont:4, @"pxx", @"29", @"male", @"2048"];

 :pxx、29、male、2048

위에서 여러분은 계발을 할 수 있습니다. 때로는 sql문장 장면에서 이렇게 쓸 수 있습니다. 물론 다른 적합한 장면들도 이런 작법을 시도해 볼 수 있습니다. 우리는valist: 문자 포인터입니다. 현재 파라미터를 가리키는 포인터로 이해할 수 있습니다. 이 포인터를 통해vastart: 초기화 valist, 두 번째 매개 변수는 변참표 앞에 바짝 붙어 있는 변수, 즉'...'이전의 그 매개 변수vaend: 현재 va 닫기list va_arg(args, id): 두 번째 매개 변수는 매개 변수 형식을 지정하고 실행할 때마다 다음 매개 변수를 가져옵니다. 다음 매개 변수가 없으면 마지막 매개 변수에 머무르게 됩니다.

객체 색인


사전, 배열과 유사한 쓰기 방법을 제공하는 NSDictionary *dictionary = @ {@ "foo": @ 42}id value = dictionary[@"foo"];
dictionary[@"foo"] = @42; array[0] = @ "bar"당신은 다음 방법을 설명하고 실행하기만 하면 됩니다.
- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
- (id)objectForKeyedSubscript:(id )key;
- (void)setObject:(id)obj forKeyedSubscript:(id )key;

수행 상황을 확인합니다.
@interface TestModel ()

@property (nonatomic, strong)NSMutableDictionary *keys;
@property (nonatomic, strong)NSMutableArray *keysArr;

@end

@implementation TestModel

- (instancetype)init {
    self = [super init];
    if(self == nil) return nil;
    _keys = @{@"key1": @"key1_value", @"key2": @"key2_value", @"key3": @"key3_value"}.mutableCopy;
    _keysArr = @[@"a", @"b", @"c"].mutableCopy;
    return self;
}

- (id)objectAtIndexedSubscript:(NSUInteger)idx {
    if (idx < _keysArr.count) {
        return _keysArr[idx];
    }
    return nil;
}

- (id)objectForKeyedSubscript:(id)key {
    return _keys[key];
}

- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx {
    if (idx < _keysArr.count && obj) {
        _keysArr[idx] = obj;
    }
    NSLog(@"%@",_keysArr);
}
- (void)setObject:(id)obj forKeyedSubscript:(id )key {
    if (obj) {
        _keys[key] = obj;
    }
    NSLog(@"%@",_keys);
}

 :
NSString *subscriptvValue = model[0];
NSString *subscriptvValue1 = model[@"key1"];
NSLog(@"%@", subscriptvValue);
NSLog(@"%@", subscriptvValue1);
model[0] = @"v_0";
model[@"key4"] = @"v_key1_value";

 :
a
key1_value

(
    "v_0",
    b,
    c
)

{
    key1 = "key1_value";
    key2 = "key2_value";
    key3 = "key3_value";
    key4 = "v_key1_value";
}


이상과 같이 작은 지식은 일상적인 개발에서 적은 노력으로 큰 효과를 거둘 수 있으니 깨우침을 바랍니다.

좋은 웹페이지 즐겨찾기