OC 일반적인 방법

16209 단어

OC


클래스 객체


<1>한 클래스가 다른 클래스의 하위 클래스인지 여부

- (BOOL)isSubClassofClass:  [xxx class];

<2> 인용이 가리키는 대상이 어떤 유형이나 하위 유형인지 여부

- (BOOL)isKindOfClass:[xxx class];

<3> 인용(실례)이 가리키는 대상이 어떤 유형인지 여부

- (BOOL)isMemberOfClass:[xxx class];

메소드 선택기


<1> 어떤 종류에 어떤 방법이 존재하는지 여부

- (BOOL)instancesRespondToSelector:@selector( );

<2> 메시지 강제 전송

- (id)performSelector:@selector( );

<3> 사용 가능한 방법

- (BOOL)respondsToSelector:(SEL)aSelector;

프로토콜 선택기


<1> 특정 클래스가 특정 프로토콜을 준수했는지 여부

- (BOOL) conformsToProtocol:@protocol( );

NSRange


NSRange는 구조체로 location은 0으로 시작하는 index이며 length는 객체의 길이를 나타냅니다.모두 NSUInteger 유형입니다.
typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

<1> 문자열에 다른 문자열이 포함되어 있는지 여부

- (NSRange)rangeOfString:(NSString *)searchString;
 NSRange struct 

NSString 불변 문자열


<1> 만들기

NSString *str = @” ”;

<2> 포맷 생성

+ (instancetype)stringWithFormat:@“%@,%@”,@“ a”,@“ b”

<3> 처음부터 어느 위치로 분할

- (NSString *)substringToIndex: 

<4> 중간에서 끝으로 분할

- (NSString *)substringFromIndex: 

<5> 중간에서 길이 x 분할

- (NSString *)substringWithRange:NSMakeRange( ,  )

<6> 끝부분 추가

- (NSString *)stringByAppendingString:@” ”

<7> 지정된 형식으로 추가

- (NSString *)stringByAppendingFormat:@”%@ %@”,@” a”,@” b”`

<8> 위치 교체 지정

- (NSString *)stringByReplacingCharactersInRange:NSMakeRange( ,  ) withString:@” ”

<9> 파일에서 읽은 데이터의 인코딩 변환

NSString *path = @”/Users/apple/Desktop/test.txt”;
+ (nullable instancetype)stringWithContentsOfFile:path encoding:NSUTF8StringEncoding  error:nil

<10> 문자열 비교(내용이 동일한지 여부)

- (BOOL)isEqualToString:@” ”`

<11> 대문자 문자열로 변환

(NSString *)uppercaseString

<12> 문자열 비교(크기 비교)

- (NSComparisonResult)compare:(NSString *)string;
만약 a가 b보다 크면 1로 돌아가고, 똑같이 0으로 돌아가고, 작게는 -1로 돌아간다.

<13> 생성된 문자열의 내용이 어떤 문자로 시작되는지 판단

- (BOOL)hasPrefix:(NSString *)str;

<14> 생성된 문자열의 내용이 어떤 문자로 끝날지 판단

- (BOOL)hasSuffix:(NSString *)str;

<15> 문자열을 지정한 문자열 (또는 @ "등) 을 통해 분할하여 그룹을 생성합니다

- (NSArray *)componentsSeparatedByString:(NSString *)separator;

<16> 주소에서 파일 이름 및 접미어 가져오기

NSString * fileName = [path lastPathComponent];

NSMutableString 가변 문자열


<1> 만들기

NSMutableString *str = [[NSMutableString alloc]init];`

<2> 지정된 위치에 컨텐츠 추가

- (void)insertString:@” ” atIndex: `

<3> 마지막에 내용 추가

- (void)appendString:@” ”`

<4> 마지막에 지정된 형식 내용 추가

- (void)appendFormat:@“%@,%@”,@“ a”,@“ b”`

<5> 삭제

- (void)deleteCharactersInRange:NSMakeRange( ,  )`

<6> 교체

- (void)replaceCharactersInRange:NSMakeRange( ,  ) withString:@” ”`

NSNumber 기본 데이터 유형 클래스 캡슐화


<1>int형

 +(NSNumber *)numberWithInt:int `

 (int)intValue`

<2>char형

 +(NSNumber *)numberWithChar:’ ’`

 (char)charValue`

<3>float형

 +(NSNumber *)numberWithFloat:float `

 (float)floatValue`

<4>더블형

 +(NSNumber *)numberWithDouble:double 
 (double)doubleValue

<5>BOOL형

 +(NSNumber *)numberWithBool:YES/NO
 (BOOL)doubleValue

NSValue 패브릭 클래스 패키지


<1> 패키지

TRPoint p = {3,4};
 valueWithBytes:&p objCType:@encode(TRPoint)

<2> 개봉

- (void)getValue:&p2 

NSDate 시간


<1> 현재 시간 획득

NSDate *date = [[NSDate alloc]init];

<2>x초 지연 시간 획득

+ (instancetype)dateWithTimeIntervalSinceNow:30.0f

<3> 두 시간차 획득

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;

<4> 지정된 형식의 시간을 받아 시스템 시간대로 자동 변환

NSDateFormatter *df = [[NSDateFormatter alloc]init];
df.dateFormat = @”yyyy-MM-dd hh:mm:ss”
(NSString *)df stringFromDate:[[NSDate alloc]init]

NSTimeZone * zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate:date];
NSData * localeTime = [date dateByAddingTimeInterval:interval];

NSArray 불변 배열


<1> 만들기

NSArray *array = @[@“ a”,(ObjectType)str,@“ b”];

<2> 배열 길이 획득

.count

<3> 그룹 아래 표시를 통해 원소 획득

- (ObjectType)objectAtIndex:(NSUInteger) ;

<4> 그룹 마지막 요소 획득

.lastObject

<5> 그룹 첫 번째 원소 획득

.firstObject

<6> 어떤 대상이 그룹의 하단에 있는 것을 가져옵니다. 만약 그룹에 이 대상이 존재하지 않는다면 쓰레기 값의 하단을 되돌려줍니다

- (NSUInteger)indexOfObject:@” ”

<7>OC 중수 그룹을 두루 훑어보는 세 가지 방식


a for 순환
for (int i = 0; i < [stus count]; i++) {
    Students *stu = [stus objectAtIndex:i];
    NSLog(@”%@”, stu);
}
b for 빠른 열거
// 1   2 
for (Students *stu2 in stus) {
    NSLog(@”%@”, stu2);
}
c 교체기 반복
 
 
// 
// , nil;
NSEnumerator *enumerator = [stus objectEnumerator];
// 
// 
Students *st3 = nil;
while (st3 = [enumerator nextObject]) {
    NSLog(@”%@”, st3);
}
- (void)enumerateObjectsUsingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block
 

NSArray * array = @[@"a",@"b",@"c"];
[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    NSLog(@"%@,%ld",obj,idx);
}];

<7> 사용자 정의 클래스를 저장하는 그룹을 출력합니다. description 방법을 다시 쓰고 출력 형식을 사용자 정의해야 합니다.

-(NSString *)description{
    return [NSString stringWithFormat:@”name:%@ age:%d”, self.name, self.age];
}
 NSLog(@”name:%@ age:%i”,stu.name, stu.age); 

<8> 배열의 복사

  (NSArray *)[[NSArray alloc]initWithArray: copyItems:YES]
  (NSArray *)[[NSArray alloc]initWithArray: copyItems:NO]

Order 배열 정렬


<1> 정렬 규칙

SEL sel = @selector(compare:);

<2> 둘 비교

- (NSArray *)sortedArrayUsingSelector:(SEL)comparator

<3> 그룹이 기본 데이터 형식이 아닌 경우 compare 방법을 다시 써야 합니다

-(NSComparisonResult) compare:(Students *) otherStudent{
//    if((self.age - otherStudent.age) >0)c
//        return NSOrderedDescending;
//    else if ((self.age - otherStudent.age) <0)
//        return NSOrderedAscending;
//    else
//        return NSOrderedSame;
// int   compare 
    NSNumber *n1 = [NSNumber numberWithInt:self.age];
    NSNumber *n2 = [NSNumber numberWithInt:otherStudent.age]; return [n1 compare:n2];
// — 
//    return [self.name compare:otherStudent.name];
}

NSMutable Array 가변 배열


<1> 일반 창설

NSMutableArray *mArray =[[NSMutableArray alloc]init];

<2> 사전 정의된 스페이스 생성

NSMutableArray *mArray2 = [NSMutableArray arrayWithCapacity:19];

<3> 생성 초기화

NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@” ”, (ObjectType)str, nil];

<4> 변수 그룹을 변수 그룹으로 전환

- (id)mutableCopy

<5> 요소를 끝에 추가

- (void)addObject:@” ”

<6> 지정된 위치에 요소 추가

- (void)insertObject:@” ” atIndex: 

<7> 삭제 끝

- (void)removeLastObject

<8> 지정된 객체 삭제

- (void)removeObject:@” ”

<9> 지정된 위치 요소 삭제

- (void)removeObjectAtIndex: 

<10> 모든 요소 삭제

- (void)removeAllObjects;

<11> 요소 수정

- (void)replaceObjectAtIndex: withObject:@” ”

NSSet 변경 불가 무질서 컬렉션 반복 불가(아래 첨자 없음)


(1) 모든 대상은 하나의hash코드를 가지고 있으며,hash코드는 유일한 표지 대상에 사용된다.(hash 알고리즘)hash코드가 같으면 두 대상이 동쪽으로 갈 수 있고hash코드가 다르면 두 대상이 틀림없다고 생각한다.객체를 NSSet 컬렉션에 넣으면 객체의 hash 코드가 자동으로 호출되어 판단됩니다.
(2)hash코드가 서로 같을 때 대상의 isEqual 방법을 자동으로 호출하여 대상이 중복되는지 다시 판단하고 방법의 반환값에 따라 대상이 중복되는지 결정한다.
-(NSUInteger)hash{
    NSLog(@“ hash ”); 
    return 1;
}

-(BOOL)isEqual:(id)object{
    NSLog(@”isEqual ”);
    //a. 
    if(self == object){
        return YES;
   }
    //b. 
    if([object isKindOfClass:[Student class]]){
        //c. _
        Student *otherStudent = object;
        if([self.name isEqualToString:otherStudent.name]&&(self.age == otherStudent.age)){
            return YES;
        }
        else{
            return NO;
        }
    }
    else{
        return NO;

    }
}

NSMutableSet 가변 무질서 집합을 반복할 수 없음(아래 첨자 없음)


<1> 만들기

NSMutableSet *mSet = [NSMutableSet set];
NSMutableSet *mSet2 = [NSMutableSet setWithObjects:@”1”,@”two”, ,nil];

<2> 요소 추가

- (void)addObject:@” ”

<3> 요소 삭제

 - (void)removeObject: @” ”

<4> 두 집합의 교집

- (void)intersectSet: (NSSet *)otherSet

<5> 두 집합의 합집합(집합은 무질서하기 때문에 출력 순서가 정해지지 않습니다)

- (void) unionSet: (NSSet *)otherSet

<6> 집합에 따라 다른 집합의 요소를 삭제합니다

- (void) minusSet: (NSSet *)otherSet

NSDictionary 사전


<1> 사전 만들기


a 사전 대상 만들기(한 쌍 출현,value1,key1,value2,key2)
NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys: (id)firstObject,@“key1”,(id)secondObject,@“key2”nil];
b 배열을 통해 사전 만들기
(instancetype)dictionaryWithObjects: (NSArray *)objects forKeys: (NSArray *)keys
c 기존 사전을 통해 사전 만들기
(instancetype)dictionaryWithDictionary: (NSDictionary *)dict
d 빠른 사전 만들기
NSDictionary *dict=@{
              @" ":@[@" ",@" ",@" ",@" "],
              @" ":@[@" ",@" ",@" "],
              @" ":@[@" ",@" ",@" "]
              };

<2> 사전의 키 값 쌍 가져오기

.count

<3> 사전의 모든 키 가져오기

- (NSArray *) allKeys

<4> 사전의 모든value 가져오기

- (NSArray *)allValues

<5> 객체에서 키워드 값 가져오기

- (NSArray *)allKeysForObject: (ObjectType)anObject

<6> 키에 따라 해당하는value값

- (nullable ObjectType) objectForKey: (KeyType)aKey

<7> 사전의 요소를 옮겨다니기

NSArray *keys = [dict allKeys];
for (NSString *key in keys) {
    NSString *value = [dict objectForKey:key];
    NSLog(@”key-->%@  value-->%@”,key,value);
}

<8> 다중 중첩 사전 반복

NSArray *collegekeys = [university allKeys];
for (NSString *collegekey in collegekeys) {
    NSDictionary *college = [university objectForKey:collegekey];
    NSArray *classkeys = [college allKeys];
    for (NSString *classkey in classkeys) {
        NSDictionary *class = [college objectForKey:classkey];
        for (Student *student in class) {
            NSLog(@"name-->%@  age-->%i",student.name,student.age);
        }
    }           
}

NSMutable Dictionary 사전 수정 가능


<1> 만들기


a 수정 가능한 빈 사전 만들기
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
b 미리 평가된 수정 가능한 사전 만들기
NSMutableDictionary *dict= [NSMutableDictionary dictionaryWithCapacity:18];
c 초기화 수정 가능한 사전 만들기
NSMutableDictionary *dict= [NSMutableDictionary dictionaryWithObjectsAndKeys:stu,@“1”,stu1,@“2”, nil];

<2> 추가


a 요소 추가
- (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
mutableDic[@"key"] = @"value";
사전 추가
- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;

<3> 사전 덮어쓰기

- (void)setDictionary:(NSDictionary *)otherDictionary;

<4> 삭제


a 키 값 쌍 삭제
- (void)removeObjectForKey: (KeyType)aKey
b 여러 키 값 쌍 삭제
NSArray *keys = @[@"1",@"2"] ;
[dict removeObjectForKey:keys];

<5> 사전 비우기

- (void)removeAllObjects

NSTimer 타이머


일반 설정 및 방법


등록 정보fireDate--> 타이머의 시작 시간을 설정합니다. 타이머의 시작과 정지를 관리하는 데 자주 사용됩니다.
// 
timer.fireDate = [NSDate distantPast];
// 
timer.fireDate = [NSDate distantFuture];
timeInterval-->읽기 전용 속성, 타이머 호출 간격 가져오기tolerance--> NSTimer가 정확하지 않기 때문에 이 값을 통해 오차 범위를 설정합니다.valid(isValid--> 타이머가 유효한지 확인userInfo--> 매개 변수 정보 얻기
시동 타이머
- (void)fire;
타이머 제거
- (void)invalidate;

타이머 방법

NSTimeInterval: 호출 간격target: 트리거자selector: 트리거 방법userInfo: 타이머가 효력을 상실할 때 지정한 대상에게 이 타이머를 보류하고 방출합니다. nilrepeats을 선택할 수 있습니다. YES일 때 타이머는 효과가 없거나 방출될 때까지 계속 순환합니다. NO일 때 타이머는 한 번 순환해서 효력을 상실합니다invocation: NSInvocation 대상을 만들고 트리거 대상과 방법을 설정합니다.
생성되고 순환이 추가되며 수동 Fire로 시작할 필요가 없습니다
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;
NSInvocation * invo = [NSInvocation invocationWithMethodSignature:[[self class] instanceMethodSignatureForSelector:@selector(init)]];
[invo setTarget:self];
[invo setSelector:@selector(myLog)];

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(nullable id)ui repeats:(BOOL)rep 
:
  • 매개 변수 repeats는 순환 실행 여부를 지정하고 YES는 순환하며 NO는 한 번만 실행합니다.
  • timerWithTimeInterval 두 가지 방법으로 만들어진 대상은ddTimer:forMode 방법으로 주 순환 탱크에 수동으로 가입하지 않으면 순환하지 않습니다.또한fair를 수동으로 호출하지 않으면 타이머가 시작되지 않습니다.
  • scheduledTimerWithTimeInterval 두 가지 방법은fair를 수동으로 호출할 필요가 없고 자동으로 실행되며 주 순환 탱크에 자동으로 추가됩니다.
  • init 방법은 수동으로 순환 탱크에 가입해야 하며 설정된 시작 시간에 시작합니다.
  • // 
    [[NSRunLoop mainRunLoop]addTimer:timer forMode:NSDefaultRunLoopMode];
    // 
    [timer fire];
    

    좋은 웹페이지 즐겨찾기