<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 靜態類庫項目的建立與使用

      新建 Xcode workspace

      打開 Xcode , 選擇 File -> New -> Workspace , 將 Workspace 命名為 Test.xcworkspace , 并選擇合適的目錄。

      新建 Static Library 項目

      選擇 File -> New -> Project , 項目模板選擇 Cocoa Touch Static Library , 項目名稱命名為 MyLib.xcodeproj , 注意選中 Use Automatic Reference Counting 。

      clip_image001

      clip_image002

      Xcode 會在項目中自動生成 MyLib.h 和 MyLib.m 文件, 單擊 MyLib.h 文件, 添加下面的兩個方法定義:

      - (NSInteger) add:(NSInteger)a and:(NSInteger)b;
      + (NSString*) connect:(NSString*)str1 and:(NSString*)str2;

      再打開 MyLib.m 文件, 添加剛剛定義兩個文件的實現:

      - (NSInteger) add:(NSInteger)a and:(NSInteger)b {
         return a + b;
      }
      
      + (NSString*) connect:(NSString *)str1 and:(NSString *)str2 {
         return [NSString stringWithFormat:@"%@ %@", str1, str2];
      }

      現在, 最終的文件看起來是這樣的:

      //
      // MyLib.h
      // MyLib
      //
      // Created by gdeic on 4/16/12.
      // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
      //
      
      #import 
      
      @interface MyLib : NSObject
      
      - (NSInteger) add:(NSInteger)a and:(NSInteger)b;
      
      + (NSString*) connect:(NSString*)str1 and:(NSString*)str2;
      
      @end
      
      //
      // MyLib.m
      // MyLib
      //
      // Created by gdeic on 4/16/12.
      // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
      //
      
      #import "MyLib.h"
      
      @implementation MyLib
      
      - (NSInteger) add:(NSInteger)a and:(NSInteger)b {
         return a + b;
      }
      
      + (NSString*) connect:(NSString *)str1 and:(NSString *)str2 {
         return [NSString stringWithFormat:@"%@ %@", str1, str2];
      }
      @end

      選中 MyLib 項目, 在中間的編輯器窗口中選擇項目的 Target , 選擇 Build Phases 標簽, 展開 Copy Headers 分組, 下面有三個子分組, 分別是 Public 、 Project 與 Private , 將 MyLib.h 拖拽到 Public 分組即可。

      clip_image003

      保存所有文件, 選擇 Product -> Build , 進行編譯, 生成 libMyLib.a 文件, 同時也會將 MyLib.h 文件復制到輸出目錄。

      使用靜態類庫項目

      選擇 File -> New -> Project , 項目模板選擇 iOS -> Application -> Single View Application , 項目名稱命名為 MyApp , 注意勾選 Use Storyboards 和 Use Automatic Reference Counting 。

      clip_image004

      clip_image005

      建好項目之后, 項目窗口如下如所示:

      clip_image006

      將 MyLib 項目拖拽到 MyApp 項目的 Frameworks 文件夾, 在彈出的對話框中選擇 Create groups for any added folders , 然后點擊 Finish 按鈕。

      clip_image007

      選中 MyApp 項目, 在選擇項目的目標 (Target) , 選中 Summary 標簽頁下找到 Linked Frameworks and Library 分組選項, 如下圖:

      clip_image008

      點擊下面的加號按鈕, 將工作區的 libMyLib.a 添加進去。

      clip_image009

      接下來添加頭文件搜索目錄, 選中 Targets 上面的 Project , 選擇 Build Settings 標簽頁,在搜索框內輸入 header search 進行過濾, 找到 Header Search Paths , 添加一行, 輸入 ../MyLib , 并選中遞歸復選框。

      clip_image010

      現在要先驗證一下對 MyLib 的引用是否正確, 打開 MyApp 項目的 ViewController.m , 添加對 MyLib.h 的引用, 如下圖所示, 并編譯 MyApp , 如果編譯成功, 則表示引用正確。

      clip_image011

      打開 MainStoryboard.storyboard 文件, 在生成的 ViewController 上添加兩個 UITextField 、 兩個 UIButton 以及一個 UILabel, 如下圖所示:

      clip_image012

      并添加相應的 outlet 和 action , ViewController.h 如下:

      //
      // ViewController.h
      // MyApp
      //
      // Created by gdeic on 4/19/12.
      // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
      //
      
      #import 
      
      @interface ViewController : UIViewController
      
      @property (weak, nonatomic) IBOutlet UITextField *textField1;
      
      @property (weak, nonatomic) IBOutlet UITextField *textField2;
      
      @property (weak, nonatomic) IBOutlet UILabel *resultLabel;
      
      - (IBAction)addButtonClick:(id)sender;
      
      - (IBAction)connectButtonClick:(id)sender;
      
      @end

      打開 ViewController.m 文件, 實現 addButtonClick: 和 connectButtonClick: 方法, 在 addButtonClick: 方法中調用 MyLib 的實例方法 add:and: , 在 connectButtonClick: 方法中調用 MyLib 的靜態方法 connect:and: , 如下所示:

      - (IBAction)addButtonClick:(id)sender {
         // 獲取用戶輸入的兩個數字
         NSInteger num1 = [self.textField1.text integerValue];
         NSInteger num2 = [self.textField2.text integerValue];
         // 初始化一個新的 MyLib 實例
         MyLib* myLib = [[MyLib alloc] init];
         // 調用實例方法相加
         NSInteger result = [myLib add:num1 and:num2];
         // 顯示結果
         self.resultLabel.text = [NSString stringWithFormat:@"%d + %d = %d", num1, num2,result];
      }
      
      - (IBAction)connectButtonClick:(id)sender {
         // 獲取用戶輸入的兩個字符串
         NSString* str1 = self.textField1.text;
         NSString* str2 = self.textField2.text;
         // 調用 MyLib 的靜態方法連兩個字符串
         NSString* result = [MyLib connect:str1 and:str2];
         // 顯示結果
         self.resultLabel.text = result;
      }

      點擊添加按鈕時, 效果如下圖所示:

      clip_image013

      點擊 Connect 按鈕時, 效果如下圖所示:

      clip_image014

      posted @ 2012-04-20 14:09  張志敏  閱讀(20813)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 日本精品成人一区二区三区视频| 欧美成人www免费全部网站| 国产精品久久久久无码av色戒| 99久久精品国产熟女拳交| 男女高潮喷水在线观看| 在线日韩日本国产亚洲| 午夜在线不卡| 国产av一区二区不卡| 欧美熟妇乱子伦XX视频| 97久久精品人人澡人人爽| 国内精品极品久久免费看| 精品无码久久久久成人漫画| 又色又爽又黄18禁美女裸身无遮挡| 日本边添边摸边做边爱喷水| 国产精品人妻久久ai换脸| 一区天堂中文最新版在线| 久久综合给合久久狠狠狠| 国产欧美精品一区二区三区四区 | 日韩视频一区二区三区视频| 爱啪啪精品一区二区三区| 婷婷四房综合激情五月在线| 老熟女重囗味hdxx69| 老熟妇老熟女老女人天堂| 亚洲综合久久精品哦夜夜嗨| 免费超爽大片黄| 亚洲欧美日韩精品久久亚洲区| 日韩精品亚洲专区在线播放| 精品无码国产一区二区三区AV| 亚洲成人av在线系列| 亚洲不卡一区三区三区四| 国产亚洲精品AA片在线播放天| 久久综合精品国产一区二区三区无| 久久精品国产再热青青青| 国产一区二区三区免费观看| 国产AV福利第一精品| 精品国产性色av网站| 深夜av在线免费观看| 久久中精品中文字幕入口| 亚洲天堂在线观看完整版| 日本欧美大码aⅴ在线播放| 国产微拍一区二区三区四区|