文章的目的为了记录使用Objective-C 进行IOS app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。
相关链接:
开源 Objective-C IOS 应用开发(一)macOS 的使用
开源 Objective-C IOS 应用开发(二)Xcode安装
开源 Objective-C IOS 应用开发(三)第一个iPhone的APP
开源 Objective-C IOS 应用开发(四)Xcode工程文件结构
开源 Objective-C IOS 应用开发(五)iOS操作(action)和输出口(Outlet)
开源 Objective-C IOS 应用开发(六)Objective-C 和 C语言
开源 Objective-C IOS 应用开发(七)Objective-C核心代码示例
开源 Objective-C IOS 应用开发(八)常见控件UI
开源 Objective-C IOS 应用开发(九)复杂控件-tableview
开源 Objective-C IOS 应用开发(十)数据持久化--文件
开源 Objective-C IOS 应用开发(十一)数据持久化--sqlite
开源 Objective-C IOS 应用开发(十二)通讯--ble
开源 Objective-C IOS 应用开发(十三)通讯--Http访问
开源 Objective-C IOS 应用开发(十四)传感器--陀螺仪和gps
开源 Objective-C IOS 应用开发(十五)通讯--蓝牙ble扫描
开源 Objective-C IOS 应用开发(十六)Storyboard模式下的纯代码界面
开源 Objective-C IOS 应用开发(十七)CAF音频的录制
开源 Objective-C IOS 应用开发(十八)音频的播放
开源 Objective-C IOS 应用开发(十九)视频的播放
开源 Objective-C IOS 应用开发(二十)多线程处理
开源 Objective-C IOS 应用开发(二十一)自定义控件--示波器
开源 Objective-C IOS 应用开发(二十二)自定义控件--车速仪表盘
推荐链接:
开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客
开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客
开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客
开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客
开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-CSDN博客
开源 Arkts 鸿蒙应用 开发(六)数据持久--文件和首选项存储-CSDN博客
开源 Arkts 鸿蒙应用 开发(七)数据持久--sqlite关系数据库-CSDN博客
开源 Arkts 鸿蒙应用 开发(八)多媒体--相册和相机-CSDN博客
开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端-CSDN博客
开源 Arkts 鸿蒙应用 开发(十)通讯--Http-CSDN博客
开源 Arkts 鸿蒙应用 开发(十一)证书和包名修改-CSDN博客
开源 Arkts 鸿蒙应用 开发(十二)传感器的使用-CSDN博客
开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放_arkts avplayer播放音频 mp3-CSDN博客
开源 Arkts 鸿蒙应用 开发(十四)线程--任务池(taskpool)-CSDN博客
开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘-CSDN博客
开源 Arkts 鸿蒙应用 开发(十六)自定义绘图控件--波形图-CSDN博客
开源 Arkts 鸿蒙应用 开发(十七)通讯--http多文件下载-CSDN博客
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器-CSDN博客
推荐链接:
开源 java android app 开发(一)开发环境的搭建-CSDN博客
开源 java android app 开发(二)工程文件结构-CSDN博客
开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客
开源 java android app 开发(四)GUI界面重要组件-CSDN博客
开源 java android app 开发(五)文件和数据库存储-CSDN博客
开源 java android app 开发(六)多媒体使用-CSDN博客
开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客
开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客
开源 java android app 开发(九)后台之线程和服务-CSDN博客
开源 java android app 开发(十)广播机制-CSDN博客
开源 java android app 开发(十一)调试、发布-CSDN博客
开源 java android app 开发(十二)封库.aar-CSDN博客
本章内容主要是iphone中的多线程处理,创建停止,通讯等。
目录:
1.手机演示
2.静态库创建
3.静态库使用
一、手机演示
二、静态库创建
1. 创建静态库项目
步骤1:新建项目
-
打开Xcode,选择 File → New → Project
-
选择 Framework & Library → Static Library
-
输入产品名称(如
MyStaticLibrary),语言选择 Objective-C
步骤2:配置项目设置
在 Build Settings 中配置:
-
Architectures : 通常选择
arm64, x86_64(支持真机和模拟器) -
Build Active Architecture Only: Debug设为YES,Release设为NO
-
Installation Directory: 可设置为 usr/local/lib
2. 编写库代码
MyStaticLibrary.h文件
// MyStaticLibrary.h
#import <Foundation/Foundation.h>
@interface MyStaticLibrary : NSObject
+ (NSString *)getVersion;
- (void)sayHello;
- (int)addNumber:(int)a toNumber:(int)b;
@end
MyStaticLibrary.m文件
// MyStaticLibrary.m
#import "MyStaticLibrary.h"
@implementation MyStaticLibrary
+ (NSString *)getVersion {
return @"1.0.0";
}
- (void)sayHello {
NSLog(@"Hello from MyStaticLibrary!");
}
- (int)addNumber:(int)a toNumber:(int)b {
return a + b;
}
@end
- 真机版本:连接真机,⌘+B 构建
找到生成的.a文件,在Xcode中查看构建日志
-
构建项目 (⌘+B)
-
打开 Report Navigator (⌘+9)
-
选择最近的构建日志
-
搜索 "libMyStaticLibrary.a" 或 "WriteAuxiliaryFile"
-
在日志中会显示完整的输出路径
三、静态库使用
- 准备文件
你需要三个文件:
- libMyStaticLibrary.a (静态库文件)
- MyStaticLibrary.h (头文件)
- 其他相关的 .h 头文件
建议创建一个组织良好的文件夹结构:
MyStaticLibrary/
├── lib/
│ └── libMyStaticLibrary.a
├── include/
│ └── MyStaticLibrary.h
└── README.md
- 在新项目中集成静态库
步骤1:导入文件到项目
- 将 libMyStaticLibrary.a 和头文件拖拽到Xcode项目中
- 在弹出对话框中:
- 勾选 "Copy items if needed"
- 选择 "Create groups"
- 添加到你的target

步骤2:配置项目设置
在项目的 Build Settings 中配置:
添加库搜索路径:
Library Search Paths = $(PROJECT_DIR)/MyStaticLibrary/lib

添加头文件搜索路径:
Header Search Paths = $(PROJECT_DIR)/MyStaticLibrary/include

或者更简单的方式:
User Header Search Paths = $(PROJECT_DIR)/MyStaticLibrary/include
步骤3:链接库文件
在 Build Phases → Link Binary With Libraries 中:
- 点击 + 按钮
- 选择 Add Other... → Add Files
- 选择 libMyStaticLibrary.a

- 在代码中使用
导入头文件并使用:
#import "MyStaticLibrary.h"
// 在你的ViewController或其他类中
- (void)useMyLibrary {
// 使用类方法
NSString *version = [MyStaticLibrary getVersion];
NSLog(@"Library Version: %@", version);
// 创建实例并使用
MyStaticLibrary *library = [[MyStaticLibrary alloc] init];
[library sayHello];
int result = [library addNumber:10 toNumber:20];
NSLog(@"Addition result: %d", result);
}