[IOS 개발]objective-c 의 노트.

1.클래스 실례 화:대상 사용:1.분배;2.초기 화
Car *car = [[Car alloc] init]
2.문자열 초기 화
string = [[NSString alloc]          initWithFormat:@"%d or %d",25,524];
string = [[NSString alloc]          initWithContentsOfFile: @"/tmp/words.txt"];
3.자동 방출 탱크
NSAutoreleasePool *pool; pool = [[NSAutorelease alloc] init];
[pool drain]
4.이전에 들 어 온 대상 을 보류 하고 현재 대상[new retain][now release]을 방출 합 니 다.
5.대상 교체
replaceObjectAtIndex:withObject:
배열 에서 대상 을 얻다  NSArray objectAtIndex:
6.문법/클래스 성명 계승,@interface Circle:NSObject 실현
@end
 
@implemention Circle
@end
7.복합
사과 스냅 샷 사용
8.인쇄 클래스 NSLog(@"%@",NSObject);재 작성 description 방법 을 호출 합 니 다.
-(NSString *)description{
    NSString *str = [NSString stringWithFormat:@"age=%i",_age];
    return str;
}

9.방법 을 m 에 쓰 고 h 파일 에 설명 하지 않 으 면 이것 이 개인 적 인 방법 입 니 다.
10.멤버 변 수 는 기본적으로 proctected
11.예화
Student *stu = [Student new];  ...과 같다 Student *stu = [[Student alloc] init];
12.Xcode 특수 주석\#pragma mark
#pragma mark     
- (void)dealloc {
    NSLog(@"    ");
    [super dealloc];
}

13.@class 사전 성명,성능 향상
14.메모리 자동 방출
 @autoreleasepool {
        
        Student *stu = [[[Student alloc] init] autorelease];
    }

15.Category 는 이미 존재 하 는 클래스 에 새로운 방법 을 동적 으로 추가 할 수 있 습 니 다(구성원 변 수 를 추가 할 수 없습니다).계승 할 필요 가 없습니다.
Studeng 은 이미 존재 하 는 클래스 를 대표 하고(test)는 Category 를 대표 합 니 다.
@interface Student (test)
-(void) testFunc;
@end

16.  Block 정 의 는 다음 과 같 습 니 다.
4
        int (^Sum)(int,int) = ^(int a, int b) {
            return a+b;
        };
        
        NSLog(@"sum=%i",Sum(3,4));
매개 변수 없 는 쓰기 방법 은 다음 과 같다.
void (^printwyz)() = ^(){
            NSLog(@"wyz");
};
        
 printwyz();
Block 은 외부 변 수 를 호출 할 수 있 지만 외부 변 수 를 수정 할 수 없습니다.수정 하려 면 변수 앞 에 를 추가 해 야 합 니 다.block;
클래스 의 Public 구성원 변 수 를 직접 방문 하려 면 클래스 대상 object->var 를 통 해 접근 하 십시오.
18.Foundation 에서 자주 사용 하 는 구조 체
        __block int c = 17;
        int (^Sum)(int,int) = ^(int a, int b) {
            c = 15;
            return a+b+c;
        };
        
        NSLog(@"sum=%i",Sum(3,4));

19.OC 에서 정적 방법 은 수 동 으로 메모 리 를 방출 할 필요 가 없다.
 CGPoint cp;
        cp = CGPointMake(10, 10);
        CGRect  cr;
        cr = CGRectMake(10, 10, 10, 10);
        CGSize  cs;
        cs = CGSizeMake(10, 10);
        
        NSRange nr;
        nr = NSMakeRange(10, 18);
        NSPoint np;
        np = NSMakePoint(10, 10);
        NSRect nrct;
        nrct = NSMakeRect(10, 10, 10, 10);
        NSSize ns;
        ns = NSMakeSize(10, 10);

20.파일 에서 읽 는 중 영문 과 url 에서 읽 는 파일
//            
        NSString *str = [[NSString alloc] init];
        str = @"hello1";
        NSLog(@"%@",str);
        [str release];  //   ARC   ,        
        
        //         ,         
        NSString *str2 = [NSString stringWithFormat:@"hello2"];
        NSLog(@"%@",str2);
        

21.포인터 의 포인터 값 교환(주:포인터 가 내용 을 가리 키 는 주 소 를 저장 합 니 다)
        NSString *path = @"/Users/angggan/Desktop/aa.txt";
        NSString *str3 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@",str3);
        
        NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
        NSString *str4 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@",str4);

================데이터 형식*일부 구조 체 NSRange/NSPoint/NSsize
*문자열 NSString 방법
void ChangeStr(NSString **str)
{
    *str = @"wyz-change";
}

void changeInt(int *p)
{
    *p = 3;
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSString   *str = @"wyz";
        ChangeStr(&str);
        NSLog(@"%@",str);
        
        int a=4;
        changeInt(&a);
        NSLog(@"%i",a);
        
    }
    return 0;
}

문자열 만 들 기--+(id)string WithFormat:(NSString*)format,...;참고:성명 방법 앞 에는+번호,클래스 방법 이 있 습 니 다.이 방법 은 클래스 대상 만 호출 할 수 있 을 뿐,실례 화 대상 은 호출 할 수 없다     성명 방법 앞 에는-호,실례 화 방법 이 라 고 한다.
문자열 문자 크기---(unsigned int)length;
문자열 비교---(BOOL)isEqualToString:(NSString*)aString;             -(NSComparisonResult) compare: (NSString *) string; 참고:대소 문 자 를 구분 하지 않 고 비교 하기-(NSComparisonResult)compare:(NSString)string         options: (unsigned) mask;
문자열 에 다른 문자열 이 포함 되 어 있 는 지 여부-(BOOL)hasPrefix:(NSString*)aString;시작-(BOOL)hasSuffix:(NSString*)aString;끝-(NSRange)rangeOfString:(NSString*)aString;포함 하 다  *가 변성 NSString 의 하위 클래스 NSMutableString 방법:+(id)string WithCapacity:(unsigned)capacity;-(void) appendString: (NSString *) aString; - (void) appendFormat: (NSString *) format,...; - (void) deleteCharactersInRange: (NSRange) range; Note:NSMutablestring 은 NSString 의 모든 방법 을 사용 할 수 있 습 니 다.
 NSString *str = @"hello";
        NSLog(@"     =%@", [str uppercaseString]);
        NSString *str2 = @"HELLOworlD";
        NSLog(@"     =%@", [str2 lowercaseString]);
        NSLog(@"       =%@",[@"hello" capitalizedString]);
        NSLog(@"         =%i",[@"hello" isEqualToString:@"hello"]);
        
        NSComparisonResult nsret = [@"abc" compare:@"abc"];
        if (nsret == NSOrderedSame) {
            NSLog(@"       ");
        }
        else if (nsret == NSOrderedAscending) {
            NSLog(@"           ");
        }
        else if (nsret == NSOrderedDescending){
            NSLog(@"           ");
        }
        
        NSLog(@"           =%i", [@"abc" hasPrefix:@"ab"]);

**가족 NSArray(Objective-C 의 대상 만 저장 하고 nil 을 저장 할 수 없 음)를 모 아 새로운 NSArray:NSArray*array 를 만 듭 니 다.array = [NSArray arrayWithObjects:     @"one",@"two",@"three",nil] - (unsigned) count; - (id) objectAtIndex: (unsigned int) index;
참고:절 분수 그룹
*가 변 배열 NSArray 의 보충 클래스 NSMutableArray
+ (id) arrayWithCapacity: (unsigned) capacity; - (void) addObject: (id) anObject; - (void) removeObjectAtIndex: (unsigned) index; - (NSEnumberator *) objectEnumerator; //NSEnumbertor 매 거 진
*NSDictionary--사전 생 성+(id)dictionary WithObjectsAndKeys:                               (id) firstObject,...; --값 가 져 오기-(id)objectForKey:(id)aKey;
하위 클래스 NSMutableDictionary+(id)dictionary With Capacity:(unsigned int)numItems;-(void) setObject: (id) anObject forKey:(id) aKey; - (void) removeObjectForKey: (id) aKey;
*각종 수치 NSNumber/NSValue/NSNUL
====================메모리 관리 코코아 는 일종 의 인용 계수 기술 을 사용 하거나 보존 계수 로 대상 의 생명주기-(id)retain 을 관리한다.+1 - (void) release; -1 - (unsigned) retainCount;
대상 소유권
자동 방출 탱크
NSAutoreleasePool *pool; pool = [[NSAutorelease alloc] init];
.이전에 들 어 온 대상 을 보류 하고 현재 대상 을 방출 합 니 다[new retain][new release]
임시 대상
쓰레기 수 거 objective-c 도입
.ocoa 메모리 관리 규칙 1.new,copy,alloc 를 사용 하여 대상 을 만 들 때 이 대상 의 보존 계수 기 는 1.대상 을 사용 하지 않 을 때 release/autorealse 메 시 지 를 사용 하여 대상 이 사용 을 끝내 고 소각 되도록 해 야 합 니 다.2.다른 방법 으로 대상 을 얻 었 을 때 이 대상 의 보존 카운터 값 은 1 이 고 자동 으로 방출 되도록 설정 된다.3.대상 을 보류 하면 최종 석방 또는 자동 석방 이 필요 합 니 다.retain 방법 과 release 방법의 사용 횟수 가 같 아야 합 니 다.
===============대상 초기 화
1.할당 alloc(할당 메모리,0 으로 초기 화)2.init 초기 화(메모리 가 져 오기)2.if(self=[super init]라 는 기술 을 사용 하여 안전 을 확보 하고 일부 init 방법 인'nil 로 돌아 가기'행 위 를 캡 처 합 니 다 3.함수 string 을 편리 하 게 초기 화 합 니 다=[NSString alloc] initWithContentsOfFile:@"/tmp/words.txt"]; 4.초기 화 함 수 를 지정 합 니 다(초기 화 방법 중 하 나 를 지정 한 초기 화 함수 로 선택)
================ 특성
1. 
@property 와@synthesize  //접근 속성 을 설정 하여 getter 와 setter 성명 정 의 를 자동 으로 생 성 합 니 다.
@property 매개 변수 유형 은 3 가지 로 나 뉜 다.
읽 기와 쓰기 속성:readwrite(기본 읽 기와 쓰기)/readonly
setter 처리:assign(기본 값)/retain/copy
원자 성:atomic(다 중 스 레 드 안전)/nonatiomic(다 중 스 레 드 안전 고려 하지 않 음)
2. 
@protocol 프로 토 콜 이름
@optional/@required(@optional 대 표 는 반드시 클래스 에서 이 루어 져 야 하 는 것 이 아니 라@required 대 표 는 반드시 이 루어 져 야 합 니 다)
방법.
@end
프로 토 콜 에 열 거 된 방법 은 프로 토 콜 에 해당 하 는 실현 이 아니 라 클래스 로 이 루어 집 니 다(자바 의 인터페이스 와 같 습 니 다)
클래스 계승 협 의 는 다음 과 같다.
@interface A:NSObject<프로 토 콜 이름>       //한 쌍 의<>에 프로 토 콜 이름 을 포함 하면 여러 프로 토 콜 이름 을 포함 할 수 있 습 니 다.
 
================ 예외 처리
@try{
}
@catch ( NSException *exception){
}
@finally{
}

좋은 웹페이지 즐겨찾기