# iOS 中的类别(Category)创建iOS 开发中,类别(Category)是一个非常重要的概念,它允许我们在不修改原有类的情况下为其添加方法。这种特性让我们能够对已经存在的类(如 UIKit 中的 UIView 或 NSString)进行扩展,以满足我们的需求。本文将介绍如何创建和使用类别,提供相关代码示例,并使用 mermaid 语法展示状态图和关系图。 ## 什么是类别(C
原创 9月前
23阅读
使用的工具 Otool              ——查看程序依赖哪些动态库信息,反编代码段 Ldid               ——签名工具,通过plist文件指定了授予一
转载 2023-10-18 22:47:56
55阅读
NSThread类是实现多线程的一种方案,也是实现多线程最简单的方式。1、线程的创建和启动在iOS开发中,通过创建一个NSThread类的实例作为一个线程,一个线程就是一个NSThread对象。要想使用NSThread类创建线程,有3种方法,具体如下所示:在上述代码中,这三种方法都是将target对象或者其所在对象的selector方法转化为线程的执行者。其中selector方法最多可以接收一个参
转载 2023-09-12 18:56:28
55阅读
注册开发者账号谈到苹果开发者账号,我们需要区分一下个人账号、公司账号和企业账号这三种,还有一种是教育账号,这个就不多说了。个人账号:个人申请用于开发苹果app所使用的账号,仅限于个人使用,申请比较容易,$99。 公司账号:以公司的名义申请的开发者账号,用于公司内部的开发者共用,申请流程相对比较麻烦一下,$99。 企业账号:一般是公司规模在500人以上的企业,用于内部测试发布的账号,该账号发布的
一、创建线程 创建一个新的线程就是给进程增加了一个执行流,执行流总得有要执行的代码吧,所以新建一个线程需要提供一个函数或者方法作为线程的入口。 1.使用NSThread: NSThread提供了创建线程的途径,还可以提供了检测当前线程是否是主线程的方法。 使用NSThread创建一个新的线程有两种方式: 1.创建一个NSThread的对象,调用其start方法。对于这种方式的NSThre
转载 2023-07-25 14:11:15
118阅读
ios多线程 1.NSThread2.NSOperationQueue3.GCDNSThread:创建方式主要有两种:[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil]; 和 NSThread *myThread =
一、NSThread 1. 介绍iOS 中的线程对象,将一个线程封装为一个 OC 对象,可以设置线程名、优先级等属性 2. 常用方法 二、示例1. 创建线程 // 1. 获得主线程 NSThread * mainThread = [NSThread mainThread]; NSLog(@"main --- %@", mainThread); //
转载 2023-09-01 17:33:20
32阅读
在项目开发中,一个进程默认情况下,只有一个线程,也就是我们说的主线程。如果我们把所有的操作都在主线程中进行的话,很有可能会造成主线程堵塞,界面很卡,给用户很不好的体验效果。比较我们进入一个界面需要网络请求时,假如这个请求要十秒钟才能请求下来,如果这些都在主线程中进行的话,那这10秒钟我们就只能干看着手机,就连返回都不能,很显然,这样的应用时太坑爹了的。所以就需要我们手动来创建一个或者多个线程,来分
转载 2023-07-25 14:14:38
67阅读
一:创建和启动线程的三种方式  1.先创建后启动// 创建 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:nil]; // 启动 [thread start];   2.创建完自动启动 [NSThread detachNewThread
转载 2023-08-04 07:32:34
38阅读
本文主要介绍iOS中多线程的实现方案,本文需要有iOS基础的同学观看,如果有什么问题欢迎留言。 iOS中多线程的实现方案有4中,如图: 上图简单明了的介绍了4种方式的优缺点,下面我们主要从第二种方式NSThread开始。 1、NSThread (1)创建线程的方式有三种/* 1、需要手动开启线程 开启了子线程 */ NSThread *fi
iOS中实现多线程的方案有4种一、创建和启动线程简单说明  一个NSThread对象就代表一条线程   创建、启动线程   (1) NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];   [thread start]; &n
 如果你的app服务端安装的是SLL颁发的CA,可以使用系统方法直接实现信任SSL证书,关于Apple对SSL证书的要求请参考:苹果官方文档CertKeyTrustProgGuide 这种方式不需要在Bundle中引入CA文件,可以交给系统去判断服务器端的证书是不是SSL证书,验证过程也不需要我们去具体实现。 第1种#import "ViewController.h"
转载 2023-11-27 22:40:22
150阅读
去年为公司开发了自己的SDK供外部客户使用,一直没来得及写个总结,最近时间稍微宽松点,写两篇文章总结一下iOS中Framework制作的流程。本文不会介绍iOS中静态库、动态库的基础知识,只是图文详解iOS中Framework的制作。(开发工具为Xcode14.0)一、 Framework牛刀小试1、新建一个iOS Project(Static Library制作大同小异,不在本文讨论范围内),随
转载 2023-10-12 20:18:24
129阅读
翻译自:How To Create a PDF with Quartz 2D in iOS 5 有时候在app中可能会需要使用app中的数据来创建PDF。例如,你有一个app允许用户签一个合同,你就可能希望用户得到最终的PDF。 但是如何使用程序来生成PDF呢?在iOS中使用Quartz2D会很容易的做到。 在这个教程中,你会亲自体验到,使用 Quartz2D 创建一个简单的 PDF。我们生
转载 2023-09-07 23:52:47
88阅读
创建你的第一个iOS框架如果你曾经试图去创建一个自己的iOS框架的话,你应该知道这件事并不是那些畏惧困难的人能够成功完成的-毕竟管理依赖和编写测试并不容易。这篇文章将从开始到最终完成一步步的进行讲解,以便你掌握后可以更好的创建自己的框架。在教程中我们会构建一个框架,框架里面会暴露一个名为RGBUIColor(red:green:blue)的函数,该函数会返回使用这些参数创建的UICol
转载 2月前
337阅读
  UIScrollView主要针对于图片的滚动,相册等一些功能。  代码演示:  创建UIScrollView:    使其具有滚动功能://水平方向滚动 scrollView.contentSize = CGSizeMake(WIDTH * 7,0); //垂直方向滚动 scrollView.contentSize = CGSizeMake(0,7 * HEIGHT);  循环放入图片:   
转载 2023-07-03 16:38:13
67阅读
APP项目搭建上周个人刚搭建完的项目框架,在这分享一下,主要还是采用MVC设计模式,没有使用storyboard,纯代码搭的界面。1.新建工程1.1 新建项目 * 删除无用的文件(Main.storyboard,ViewController) * 删除plist文件中Main storyboard file base name一项 * appdelegate进行修改- (BOOL)applic
转载 2024-06-07 10:34:31
51阅读
一、构建步骤创建一个动态库 MyDynamicFramework创建一个测试类在 MyDynamicFramework.h(默认生成,可统一暴露头文件) 中 #import "Person.h"#import <UIKit/UIKit.h> //! Project version number for MyDynamicFramework. FOUNDATION_EXPORT dou
本文将介绍ios程序项目新建,项目结构目录以及运行程序在ios模拟器上:在xcode中创建一个ios项目项目结构目录运行程序到模拟器其他需要注意的方面在xcode中创建一个ios项目首先打开xcode,然后选择create a new xcode project看到左边有一个ios,选择ios下面的application,然后看到右边我们这里暂时选择single view application,
转载 2024-07-03 03:18:45
104阅读
前言 通常在项目中,对于一些交互演示,动态演示会比口头描述更具像化。 而移动端通常借助Principle来制作演示效果。 下面简单说说我通过Principle制作交互演示的一些实际项目应用。 我在项目中的应用 1摇钱花App奖励金重构交互目标:1、若用户当天有待领取的奖励金,当天首次进入个人中心将弹窗提示领取奖励金。 待领取奖励金弹窗进场+出场。
  • 1
  • 2
  • 3
  • 4
  • 5