[흑마 프로그래머] - OC 특유의 문법

6652 단어
------Java 교육, 안드로이드 교육, iOS 교육,.Net 교육, 커뮤니케이션 기대
 

점 문법


점문법의 본질은 역시 방법 호출이다
p.age = 10; // [p setAge:10];

int a = p.age; // [p age];

2. 구성원 변수의 역할 영역


 
 @public :  
 @private :  (@implementation @private@protected :    (@interface @protected)
 @package :  , 
@interface @implementation

 

3. @property와 @synthesize


@property: 구성원 변수를 자동으로 생성할 수 있는 setter와 Getter 성명
 
@property int age;

//- (void)setAge:(int)age;
//- (int)age;

@synthesize는age의setter와getter를 자동으로 생성하고 접근합니다age 이 멤버 변수
 
@synthesize age = _age;

 
기본적으로age라는 구성원 변수에 접근합니다.age가 없으면 @private 형식의age 변수를 자동으로 생성합니다

id


 
id = = NSObject * 모든 OC 객체를 가리키고\조작할 수 있는 만능 포인터
 

5. 구조 방법


1. 구조 방법:


대상을 초기화하는 방법은 대상 방법입니다. - 시작.
 

2. 구조 방법을 다시 쓰는 목적:


대상을 만들기 위해서 구성원 변수는 고정된 값이 있습니다
 

3. 구조 방법을 다시 쓰는 주의점


1> 부모 클래스의 구조 방법을 먼저 호출합니다 ([super init])
2> 하위 클래스 내부 구성원 변수 초기화
 

4. 맞춤형 구성 방법


사용자 정의 구조 방법의 규범 1>는 반드시 대상 방법이고, 반드시 - 시작 2>반환값은 일반적으로 id 형식 3>방법명은 일반적으로 initWith로 시작한다
 

6. 분류 - 캐티고리


1. 기본 용도

  • 어떻게 원래의 모델을 바꾸지 않는 전제에서 유형을 확충하는 방법을 줍니까?2가지 방법이 있다
  • 상속
    l 분류
     

    2. 서식

  • 분류 선언
  • @interface   ( )
    
    //  
    
    @end

     
  • 분류의 실현
  • @implementation   ( )
    
    //  
    
    @end
    
     

     

    3. 이점


    하나의 방대한 종류는 모듈로 나누어 개발할 수 있다
    하나의 방대한 종류는 여러 사람이 작성할 수 있어 팀워크에 더욱 유리하다
     
     

    4. 시스템 자체 클래스에 분류 추가


    NSString 에 클래스 추가: 문자열의 아라비아 숫자 개수를 계산합니다.
    NSString에 객체 추가 방법: 현재 문자열의 아라비아 숫자 개수를 계산합니다.

    5. 주의


      1.분류는 방법만 증가할 수 있고, 구성원 변수는 증가할 수 없습니다.
      2.분류 방법 구현 중 원래 클래스에 표시된 구성원 변수에 접근할 수 있습니다
      3.분류는 원래 클래스의 방법을 다시 실현할 수 있지만, 원래의 방법을 덮어씌워 원래의 방법을 다시 사용할 수 없게 할 수 있다
      4.방법 호출 우선 순위: 분류 (마지막으로 컴파일에 참여한 분류 우선) --> 원래 클래스 --> 부류

    7.류의 본질


    (라이브러리: 여러 종류의 집합)

    1. 클래스도 대상이다

  • 사실 클래스도 하나의 대상이고 Class 유형의 대상이며'클래스 대상'
  • 이라고 약칭한다.
  • Class 유형 정의
  • typedef struct objc_class *Class;
  • 클래스 이름은 클래스 대상을 대표하고 각 클래스는 하나의 클래스 대상
  • 만 있다.

    2. +load 및 +initialize

  • +load

  • l 프로그램이 시작될 때 모든 클래스와 분류를 불러오고 모든 클래스와 분류의 +load 방법을 호출합니다
    l 먼저 부류를 불러오고 부류를 불러오기;즉 부류의 +load를 먼저 호출하고 부류의 +load를 호출한다
    l 원본 클래스를 불러오고 분류를 불러옵니다
    l 프로그램 실행 과정에 이 클래스가 사용되었든 안 사용되었든 간에 +load를 호출하여 불러옵니다
     
  • +initialize

  • l 어떤 종류를 처음 사용할 때 (예를 들어 창설 대상 등) + initialize 방법을 한 번 호출합니다
    l 한 클래스는 +initialize 방법을 한 번만 호출할 수 있습니다. 먼저 부류를 호출한 다음에 부류를 호출합니다.

    3. 클래스 대상을 얻는 2가지 방법

    Class c = [Person class]; //  

    혹은
    Person *p = [Person new];
    Class c2 = [p class]; //  

    4. 클래스 대상 클래스 호출 방법

    Class c = [Person class];
    Person *p2 = [c new];

    8. description 방법


    1. -description 방법


    NSLog 및%@ 을 사용하여 객체를 내보낼 때 객체의 -description 메서드를 호출하고 값을 반환하여 내보냅니다.

    2. + description 방법


    NSLog 및%@ 을 사용하여 클래스 객체를 출력할 때 클래스 객체 + description 메서드를 호출하고 반환 값을 가져와 출력합니다.

    3. NSLog의 기본 출력 수정


    l 다시 쓰기-description 또는 +description 방법

    4. 데드사이클 함정


    l - description 메서드에서 NSLog를 사용하여 self 인쇄

    9.SEL


    1. 방법의 저장 위치

  • 각 클래스의 방법 목록은 클래스 대상에 저장됩니다
  • 각 방법마다 대응하는 SEL 유형의 대상이 있다
  • SEL 대상에 따라 방법의 주소를 찾을 수 있고 호출 방법
  • SEL 유형의 정의
  • typedef struct objc_selector       *SEL;

    2. SEL 객체 작성

    SEL s = @selector(test);
    SEL s2 = NSSelectorFromString(@"test");

    3. SEL 객체의 기타 사용 방법

    //  SEL NSString 
    NSString *str = NSStringFromSelector(@selector(test));
    
    Person *p = [Person new];
    //  p test 
    [p performSelector:@selector(test)];

    10. NSLog 출력 향상


    기본적으로 NSLog 및%@ 을 사용하여 객체를 내보낼 때 결과는 다음과 같습니다.
  • __FILE__ :소스 코드 파일 이름
  • __LINE__ :NSLog 코드는 행에 있음
  • _cmd: 현재 메서드를 나타내는 SEL
  • //  
    - (void)test {
        [self performSelector:_cmd];
    }

     
     
    전재 대상:https://www.cnblogs.com/Jr-711/p/3898290.html

    좋은 웹페이지 즐겨찾기