어흥
[Objective-C] 문자열, 파일, 프로토콜 본문
728x90
반응형
1. 서브스트링
- range에 문자열을 자를 기준을 정의한다(여러개 선언 불가)
- substringToIndex : range에 정의한 기준을 최초로 만나기전까지의 문자열을 반환
- substringFromIndex: range에 정의한 기준을 최초로 만난 이후부터 나머지의 길이(range.length)만큼 반환
NSString *str1 = @"123,4567,123";
NSRange range = [str1 rangeOfString:@","];
if(range.location!=NSNotFound){
NSString *bc = [str1 substringToIndex:range.location];
NSString *ac = [str1 substringFromIndex:range.location+range.length];
NSLog(@"Before comma : %@",bc);
NSLog(@"After comma : %@",ac);
}
2. 파일 생성
NSString *str = @"ABCD"; //파일에 저장할 내용
NSString *folderPath = @"파일 저장할 경로"; //파일을 저장할 경로
NSString *filePath = [folderPath stringByAppendingPathComponent:@"string.txt"]; //위의 경로에 string.txt 파일 생성
__autoreleasing NSError *error; //Error 관리 위해 생성
BOOL ret = [str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
if(!ret){ //실패한 경우
NSLog(@"Eoor : %@", [error localizedDescription]);
}
else{ //파일을 성공적으로 생성한 경우
NSLog(@"파일 저장 성공!");
}
NSString *str2 = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSLog(@"Str2 : %@",str2); //저장한 내용 보유
3. 프로토콜
- 목적
1) 다른 객체가 구현해주면 되는 메소드를 선언(기능에 대해 선언만 하고 어떤 클래스가 해당 기능을 수행할 것인지 정하지 않는다 -> 유연)
2) 클래스를 숨기고 인터페이스만 선언하고자 할 때
3) 상속관계가 아니지만, 비슷한 인터페이스를 만들고 싶을 때
- 다수의 프로토콜 채택 가능(,를 통해)
- 프로토콜은 다른 프로토콜 채택 가능
- 필수요소는 @required를, 선택요소는 @optional을 사용한다
[예시 코드]
//Singing.h (프로토콜)
@protocol Singing <NSObject>
@property int duration;
-(void) sing;
@end
//Bird.h
#import <Foundation/Foundation.h>
#import "Singing.h" //프로토콜 임포트
@interface Bird : NSObject <Singing>
@end
//Bird.m
import "Bird.h"
@implementation Bird
@synthesize duration;
-(void)sing { //내부 구현
NSLog(@"Sing~");
}
@end
//Main.m
#import <Foundation/Foundation.h>
#import "Bird.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Bird *obj1 = [[Bird alloc] init];
obj1.duration = 10;
[obj1 sing]; //Sing~
id<Singing> obj2 = [[Bird alloc] init];
obj2.duration = 20;
[obj2 sing]; //Sing~
}
return 0;
}
참고 블로그
728x90
반응형
'iOS' 카테고리의 다른 글
[Objective - C] 아카이빙 (0) | 2020.10.16 |
---|---|
[Objective-c] Collection (0) | 2020.10.16 |
[Objective-C] 기본 내용 2 (0) | 2020.10.14 |
[Objective - C] 기본 개념 (0) | 2020.09.24 |
[Swift] Animation (0) | 2020.09.15 |
Comments