iOS开发——程序的基本结构

航天仿真必看:如何用SOFA库实现高精度GCRS-ITRS坐标转换?避坑指南 本文深入解析了航天仿真中高精度GCRS-ITRS坐标转换的关键技术,重点介绍了SOFA库在天球系与轨道系转换中的权威应用。通过对比传统方法的误差来源,详细阐述了SOFA库的转换算法优势、工程实现步骤及误差控制策略,为航天器轨道仿真提供毫米级精度的解决方案。 阅读详情
<span style="color: rgb(75, 209, 87); font-size: 18px; font-family: Menlo;"> </span><span style="color: rgb(75, 209, 87); font-family: 'Heiti SC Light'; font-size: 18px;">单例:单例设计模式,单例是与程序生命周期相同的对象,该对象仅能创建一次并且无法被持有或释放,可以在程序任何位置访问。</span>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: 'Heiti SC Light'; color: rgb(75, 209, 87);"><span style="font-family: Menlo;">AppDelegate</span>:不是单例,但是程序中仅能存在一个程序委托,由<span style="font-family: Menlo;">UIApplicationMain()</span>函数创建的,禁止手动创建。</p>

AppDelegate.m

// 程序加载完成时:程序基础用户界面初始化、程序依赖的用户数据加载等
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 打印当前方法调用
    // _cmd:SEL类型,@selector,当前方法的选择器
    NSLog(@"%@", NSStringFromSelector(_cmd));
    
    // UIWindow:程序设备的窗口对象,程序需要显示任何的界面元素需要一个窗口来管理,窗口默认由AppDelegate初始化,一般情况无需手动创建。
    // 初始化窗口:使用设备全屏大小
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    
    // UIWindowLevel:表示窗口等级,窗口等级越高的窗口优先显示,同级窗口中后显示的优先显示。
    NSLog(@"window level = %.2f", self.window.windowLevel);
    // 一般级别
    NSLog(@"normal = %.2f", UIWindowLevelNormal);
    // 状态栏级别
    NSLog(@"status bar = %.2f", UIWindowLevelStatusBar);
    // 警告级别
    NSLog(@"alert = %.2f", UIWindowLevelAlert);
    
    // self.window.windowLevel = UIWindowLevelStatusBar;
    
    // 配置窗口背景色
    self.window.backgroundColor = [UIColor whiteColor];
    // 将窗口作为程序的主窗口,并显示出来。
    [self.window makeKeyAndVisible];
    
    /* Hello World! */
    
    /*
     CGRect:矩形,描述了视图的位置及大小,使用函数CGRectMake()生成;
     CGPoint:点,描述了视图的位置,使用函数CGPointMake()生成;
     CGSize:大小,描述了视图的宽和高,使用函数CGSizeMake()生成。
    */
     
    // UILabel:标签视图,主要用于文本显示,不支持用户交互。
    _label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 320, 44)];
    // 文本
    _label.text = @"Hello World!";
    // 字体
    _label.font = [UIFont italicSystemFontOfSize:30];
    // 字体颜色
    _label.textColor = [UIColor blackColor];
    // 对齐方
    _label.textAlignment = NSTextAlignmentCenter;
    // 背景色
    _label.backgroundColor = [UIColor clearColor];
    // 添加到父视图并显示,子视图一旦添加到父视图之上,父视图负责持有子视图,retainCount + 1。
    [self.window addSubview:_label];
    
    // UITextField:文本输入框,支持用户交互,用于用户自定义文本输入。
    _textField = [[UITextField alloc] init];
    // 配置视图中心点坐标
    _textField.center = CGPointMake(160, 180);
    // 配置视图边框大小
    _textField.bounds = CGRectMake(0, 0, 200, 25);
    // 配置边框类型
    _textField.borderStyle = UITextBorderStyleRoundedRect;
    // 配置占位符
    _textField.placeholder = @"请输入文本...";
    // 配置字体
    _textField.font = [UIFont systemFontOfSize:15];
    [self.window addSubview:_textField];
     
    // UIButton:按钮控件,支持用户交互,指定点击方式触发自定义逻辑。
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.center = CGPointMake(160, 240);
    button.bounds = CGRectMake(0, 0, 100, 30);
    // 配置按钮标题文本
    [button setTitle:@"确定"
            forState:UIControlStateNormal];
    
    // 配置按钮关联事件
    // target:配置按钮关联的对象,该对象负责执行按钮响应方法;
    // action:target即将调用的方法,当方法仅接受一个参数时,方法在触发的时候将获取到当前按钮对象;
    // controlEvents:按钮点击方式
    [button addTarget:self
               action:@selector(buttonPressed:)
     forControlEvents:UIControlEventTouchUpInside];
    
    [self.window addSubview:button];
    
    
    return YES;
}

// 程序将要失活:暂停、保存数据、释放内存等
- (void)applicationWillResignActive:(UIApplication *)application
{
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 程序进入后台:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 程序将要进入前台:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 程序激活:刷新数据、读取数据、恢复界面、恢复网络链接等
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 程序异常结束
- (void)applicationWillTerminate:(UIApplication *)application
{
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

@end

35、使用 Geo 创建 GitLab 的分布式只读副本 本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。 阅读详情

相关推荐

内存优化--LOGBACK导致内存告警

一.故事背景 由于开辟新市场需要,开发了新的项部署在海外平台,其中最消耗内存的功能是消费kafka消息(最开始预计一天有1千万的量),部署完之后运行一段时间发现出现内存告警问题。 二.分析问题 出现内存告警,(新项目是低配置机器 2C4G * 2台)第一个念头是去查看堆空间设置的情况,看到jvm启动命令中堆空间都是直接指定大小,说明问题不是出在堆空间 -Xmx3g -Xms3g 先不管这些,去查看总的内存使用情况,发现总的内存空间使用将近有92% = 3.68G,那么这多出来使用的0.6

qq_33199919的博客 6051

ios程序结构

application结构 程序都存在入口 C/C++程序的入口通常都是int main(int argc, char **argv)(编译器指定) android程序存在main activity(AndroidManifest.xml指定) ios程序的入口是int main(int argc, char * argv[]); 通常程序的入口main.m是这样的 #import "A...

sliver.chen的博客 1015

【配环境】ubuntu18.04 3080ti显卡+cuda+cudnn+torch

1.打开系统设置中的software & updates点击 System Settings,选择 Additional Drivers 标签,下面会列出当前显卡可用的驱动版本。 注意:3080ti建议不要安装最新版本驱动 点击Apply Changes即可安装; 注意:3080ti只能装cuda11.x 修改软连接修改系统使用的cuda 卸载老版本cuda 重新查询看是否卸载成功 显卡驱动及CUDA Toolkit最高对应版本 查询驱动版本............

sinat_41670685的博客 3912

ios开发中的文件结构

沙盒1、沙盒机制介绍iOS中的沙盒机制是一种安全体系。每个iOS程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。应用必须待在自己的沙盒里,其他应用不能访问该沙盒。所有的非代码文件都要保存在此,例如属性文件plist、文本文件、图像、图标、媒体资源等。沙盒是用来存入缓冲区的,APP关掉,缓存被自动清理。沙盒路径:NSLog(@"%@",NSHomeDir...

qq_15156403的博客 567

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 279

Halcon 3D视觉实战:5步将线激光高度数据转为可分析的深度图与点云

本文详细介绍了如何利用Halcon平台将线激光高度数据转换为深度图与点云的5步实战方法。通过具体代码示例和工业检测案例(如锂电池胶水测量),帮助工程师高效处理3D视觉数据,实现从原始数据到三维可视化的完整技术链路。

weixin_29039773的博客 361

ios开发的基本概念

第一章开发工具 1.   一. 基本概念; 1.    工程的含义:为了开发一个应用程序而需要创建所有文件工作的总和。在XCode中创建工程后,会生成一个.xcodeproj的工程文件,其中保持了所有与工程相关的设置; 2.    通过文本编辑器上面的文件名,可以直接查看到文件中所有的函数和方法列表; 3.    代码补充提示:ESC 4.    开发者手册:help->Documeta

xiaoyun8822的专栏 1855

HyperLynx中层叠设计实例

这两种方式有点区别,前一种方式只是增加层,需要自行修改层的类型,后一种方式可以选定为某一种类型,如果是增加信号层,软件会默认同时增加一层介质层。层叠已经有8层,按照示例的层叠有4个信号层、3个地平面层和1个电源平面层,对照进行层名称(LayerName)、介质类型(Type)及用途(Usage)设置。在这列中,有的是白色,有的是淡蓝色。白色的说明可以修改,如第一行是介质,通常在最外层的介质有两个用途,阻焊层和介质,单击该行会出现一个下拉菜单,选择SolderMask,即为阻焊层。...

小幽余生不加糖 5874

iOS开发系列--IOS程序开发概览

iOS开发系列--IOS程序开发概览   概览 终于到了真正接触IOS 应用程序的时刻了,之前我们花了很多时间去讨论C语言、ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序。 但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人 担忧,所以还是希望大家...

stephen830 147

Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)

在12.0的系统定制化开发中,由于从12.0开始SystemUI下拉状态栏和11.0的变化比较大,所以可以说需要从新分析相关的SystemUI的 布局,然后做分析来实现不同的功能,今天就开始实现关于隐藏SystemUI下拉状态栏中的通知栏布局系列二,去掉下拉状态栏中 通知栏部分 白色的圆角背景

安卓兼职framework和app工程师的博客 1634

【FreeSwitch开发实践】外呼网关配置(拨打电话)

FreeSwitch开发一个重要应用是外呼,所谓外呼就拨打真实电话或手机号呼叫,配合语音机器人可以实现智能客服的功能。外呼配置主要是配置外呼服务器,外呼服务器主要指SIP网关,每个外呼服务器就是一个SIP节点,FreeSwitch服务也可以是一个SIP节点。本文主要介绍了FreeSwitch外呼相关配置,主要有外呼配置的模式,包括注册模式和非注册模式网关加载的查看方法拨号中常见的呼出配置和呼入配置如果觉得有些帮助或觉得文章还不错,请关注一下博主,你的关注是我持续写作的动力。............

xiao2macf的专栏 1万+

iOS开发-进阶:子线程更新UI的两种方法

转自: http://blog.youkuaiyun.com/libaineu2004/article/details/45368427 方法1:performSelectorOnMainThread [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:NO]; 方法2:dis

重剑无锋,大巧不工 545

【蒸汽幻想台服新版商业端】2025最新整理单机一键即玩镜像端+WIN系半手工端+PC客户端+网页注册+网页管理后台+教程【站长亲测】

MMORPG端游【蒸汽幻想台服新版商业端】2025最新整理单机一键即玩镜像端+WIN系半手工端+PC客户端+网页注册+网页管理后台+教程。

百创科技 531

如何简单粗暴学习开发ios(1)

#如何简单粗暴学习开发ios# 做了一个Android app才发现,明明是Androd的市场份额比较大,但是朋友圈里面却是一大堆iPhone的果粉。好吧,那就再学一个新的开发语言吧。为了不要偷懒,于是记录一下学习过程。 1)以前在大型软件项目里面,经常费心折腾软件工程,设计模式,需求管理...

chiguahu2110的博客 100

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

有关View的几个基础知识点-IOS开发

声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.youkuaiyun.com/iukey 作者写的很累,转载请注明出处。谢谢!http://blog.youkuaiyun.com/iukey/article/details/7083165 我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚

潇洒的程序员 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

L001-程序基本结构

UI用户界面简介 iOS程序基本结构 iOS程序声明周期

LiHy_的专栏 432

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

iOS 屏幕截图

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Jny_iOS的博客 704

ios生命周期

1.view即将显示 - (void)  viewWillAppear:(Bool)animated {} 2.view完成显示 - (void)  viewDidAppear:(Bool)animated {} 3.view即将消失 - (void)  viewWillDisappear:(Bool)animated {} 4.view真的消失 - (void)  viewDidD

尚方杵 370

IOS多线程

第一、NSThread 第二、NSOperation和NSOperationQueue 第三、GCD:  dispatch_asyn, dispatch_once,..... 转载:http://baike.baidu.com/link?url=iNJhmRNx0YTEy1qYrypeAOS3tCjVXdwfZ4DICWkP1FiAc67uL4tB6EpGgvWq68h2Zg77ow

u013954399的专栏 299

IOS APP结构思路

IOS APP结构思路 转载于:https://www.cnblogs.com/apem/p/5073746.html

weixin_30361753的博客 129

IOS开发系列--IOS程序开发概览(版本稍微老了一些)

概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言、ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序。但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人担忧,所以还是希望大家能够熟练掌握前面的内容,开发过程中多思考,彻底理解程序运

XcodeZhong的博客 586

iOS从零开始,使用Swift:UIKit的第一步

UIKit是开发iOS应用程序时最常使用的框架。 它定义了iOS应用程序的核心组件,从标签和按钮到表格视图和导航控制器。 在本文中,我们不仅将开始UIKit框架的探索,还将探索iOS项目的内部结构和iOS应用程序的基本构建块。 什么是UIKit框架? 虽然Foundation框架为iOS和OS X开发定义了类,协议和功能,但UIKit框架专门针对iOS开发。 它等效于OS X开发的Appl...

代码教主 6351

ios开发基础知识

1.什么是iOS         iOS包括了当某个应用程序在iPhone、iPod touch或iPad上运行时所用到的操作系统和技术支撑。iOS的许多技术是基于Mac OS X 桌面系统的,但它毕竟是专门针对移动环境而设计的,所以还拥有许多特有的技术(多点触摸和加速计)         开发IOS应用程序得用到SDK(Software Development Kit),里面

1099

《iOS应用开发》——1.5节 总结

本节书摘来自异步社区《iOS应用开发》一书中的第1章,第1.5节 总结,作者【美】Richard Warren,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.5 总结iOS应用开发这就是我们创建的Hello World应用程序。本章中,我们查看了iOS应用程序的每个部分是如何结合在一起的。创建并且修改了自己的(虽然极为简单)应用程序,并且在使用...

weixin_34318326的博客 63

黑马程序员-C语言回顾-开发概述

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  黑马程序员 C语言回顾-学习前奏 iOS开发概述 1、什么是iOS     iOS是一款苹果公司开发的操作系统(os是Operating system的简称),就像平时在电脑商用Window,都是操作系统。     iOS是手持设备操作系统,也就是手机上的操作系统。目前搭载这款操

Mr_Right_777的博客 718

iOS 开发基础,HR的话扎心了

在App安装过程中,系统为每个App生成它的主目录和一些关键的子目录,通常的路径为: /ApplicationRoot/ApplicationID/ App包(Application Bundle) 在编译App时,Xcode将它整理为一个包(Bundle)。App包是文件系统中的一个目录,将相关的文件都集中到一个地方。App包里主要包括了App的可执行文件和资源文件等。 App包的典型成份: MyApp.app 可执行文件 Icon.png App图标 MainWidow.nib 主窗口x

m0_64604042的博客 1088
下一篇: iOS开发——视图及视图控制器
iOS_development
博客等级 码龄12年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值