iOS 플러그인 개발

3522 단어
플러그인 소개
  • Xcode 플러그인은 Xcode와 같은 수준의 응용이어야 한다. 즉, 반드시 맥 OS APP
  • 이어야 한다.
  • Xcode의 일반적인 동작을 바꾸는 것을 플러그인
  • 이라고 부른다
  • Xcode의 유명한 플러그인 문서 주석, 색 힌트, 그림 선택 등...

  • 플러그인 개발 절차
  • 프로젝트의 pist 파일을 설정해야 합니다
  • plist 파일을 수정하고 추가해야 하는 곳
  • 조작이 번거롭고 절차가 번거롭다
  • 이때 플러그인 개발을 위한 플러그인 Xcode Plugin
  • 이 있습니다.
    플러그 인
  • 새 프로젝트의 OS X에 Xcode Plugin 템플릿 추가
  • 템플릿에서 Xcode Plugin을 선택하여 개발
  • 템플릿 분석
    - (id)initWithBundle:(NSBundle *)plugin
    {
        if (self = [super init]) {
            // reference to plugin's bundle, for resource access
            //         ,      
            //  NSObject_Extension         
            self.bundle = plugin;
            //   Xcode       
            //   didApplicationFinishLaunchingNotification  
            [[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(didApplicationFinishLaunchingNotification:)
                                                         name:NSApplicationDidFinishLaunchingNotification
                                                       object:nil];
        }
        return self;
    }
    
  • Xcode 시작 알림 호출 가져오기
  • /**
     *   Xcode       
     *
     */
    - (void)didApplicationFinishLaunchingNotification:(NSNotification*)noti
    {
        //           
        [[NSNotificationCenter defaultCenter] removeObserver:self name:NSApplicationDidFinishLaunchingNotification object:nil];
        
        //    Edit  
        NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"];
        if (menuItem) {
            //        
            [[menuItem submenu] addItem:[NSMenuItem separatorItem]];
            //         
            //            
            NSMenuItem *actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Do Action" action:@selector(doMenuAction:) keyEquivalent:@""];
            //           
            [actionMenuItem setTarget:self];
            //      
            [[menuItem submenu] addItem:actionMenuItem];
        }
    }
    
  • 메뉴의 Edit에서 Do Action 버튼을 클릭하여 호출
  • //     
    - (void)doMenuAction:(NSMenuItem *)item
    {
        
        NSLog(@"=====%@   item = %@",item.keyEquivalent,item);
        NSAlert *alert = [[NSAlert alloc] init];
        [alert setMessageText:[NSString stringWithFormat:@"Hello, World%@",item.keyEquivalent]];
        [alert runModal];
    }
    

    요구 사항
  • 파일을 추가할 때 target에 파일을 추가하는 것을 선택합니다
  • 그 수요는 target
  • 을 몇 가지 다른 옵션으로 대체하는 것이다.
    수요 분석
  • 모든 target은 흰색 직사각형 상자 안에 있다
  • 사실 이 거대한 상자는 우리 iOS의 UItableview에 해당하고 OS X에서는 NSTableView
  • 이다.
  • 각 행에는 NSCell
  • 이 표시됩니다.
  • 그럼 NSTableView
  • 를 먼저 받으세요.
  • 그리고 이 셀을 받으면 내용을 바꿀 수 있다
  • 실현 절차
  • NSTableView 가져오기
  • 우리는 이 인터페이스의subviews를 두루 돌아다니며 NSTableView
  • 를 얻을 수 있다.
  • 파일 추가 인터페이스를 열지 않았을 때는 NSTableView를 만들지 않았고, 보기 초기화 컨트롤의 크기를 만들 때는 NSView DidUpdate Tracking Areas Notification 알림
  • 을 호출합니다
  • 그래서 우리는 이 통지를 감청할 수 있다. 파일 추가 창을 열 때 안에 있는 모든 대상을 얻을 수 있다
  • snip 캡처를 사용하면 흰색 보기의 크기가 320X170
  • 그러면 하위 컨트롤의 보기를 훑어보고 프레임
  • 을 출력합니다.
  • NSTableView 를 살펴보면 우리가 찾아야 할 것이 바로 발견됨
  • NSTableView 인쇄 내부의 데이터 원본을 가져옵니다
  • .
  • 데이터 원본이 Xcode3TargetMembershipDataSource 유형인 것을 알 수 있음
  • Xcode3TargetMembershipDataSource는 Xcode의 개인 클래스
  • 위치:/Applications/Xcode.app/Contents/PlugIns/Xcode3UI.ideplugin/Contents/MacOS/Xcode3UI
  • Xcode3TargetMembershipDataSource를 사용하려면 Xcode3UI를 프로젝트에 끌어다 놓아야 하지만 Copy items if needed를 선택하지 마십시오. 그렇지 않으면 충돌이 발생할 수 있습니다
  • 프로젝트에 Xcode3TargetMembershipDataSource 끌어오기
  • 좋은 웹페이지 즐겨찾기