Cocoa基本原理指南之九 - 为Cocoa添加行为

什么是Cocoa?Cocoa和Cocoa Touch是什么语言写成的?为什么苹果公司Cocoa类库有不少NS前缀?什么是macOS的五大API法王? Cocoa、Carbon、POSIX、X11和Java并称为苹果平台的五大API.Cocoa最早从NeXPSTEP类库发展而来,之后又变身为用于移动平台的Cocoa Touch. 它最早是为macOS 开发的一套应用程序框架,它基于 Objective-C.Carbon 曾经是 macOS 应用程序开发的主要框架之一,但随着 Cocoa 的成熟,Carbon 的使用逐渐减少。 阅读详情

摘自:http://www.apple.com.cn/developer/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/chapter_1_section_1.html

 

    使用Objective-C框架中的类及其方法和使用一个C函数库不同。使用C函数库时,您可以根据程序的具体需求灵活选择使用什么函数及何时使用。但是另一方面,框架可以将一种设计加入到您的程序,或者至少加入到您的程序需要解决的某个问题空间中。在面向过程的程序中,您在必要时调用库函数来完成程序需要完成的工作;使用框架时,您也必须调用框架的方法来完成程序中的很多工作,但您还需要对框架进行定制,即实现框架在合适的时候需要调用的方法,使其适合您的需要。那些方法是一种“钩子”,将您的代码加入到框架实现的程序结构中,为其增加您的程序需要的行为。在某种意义上,通常理解的程序和库的作用被反过来了,不是将库的代码结合到您的程序中,而是将您的程序代码结合到框架中。

    在一个复杂的Objective-C程序中,main函数的工作相当简单,由两个步骤组成:

§  建立一个核心的对象组。

§  将程序的控制权转交给那些对象。

    在程序运行时,核心组的对象可能会创建其它对象。有些时候,程序也可能装载类,装载归档了的实例,连接远程的对象,以及寻找需要的资源。但在开始时,需要的是一个足以处理程序初始任务的结构—即一个够用的对象网络。main函数将这个初始结构建立起来,并使它们为即将到来的工作做好准备。

    典型情况下,核心对象中应该有一个是负责监视程序或控制其输入的对象。在核心结构准备好了之后,main函数会启动监视对象的工作。如果程序是一个命令行工具或后台运行的服务器,这个步骤承担的工作可能是简单地传递命令行参数或打开一个远程连接。但是最常见的Cocoa程序类型是应用程序,这种情况下,main函数需要参与更多的工作。

    对于应用程序,main函数建立的核心对象组必须包含一些描画用户界面的对象。当用户启动应用程序时,用户界面,或者至少是用户界面的一部分(比如应用程序菜单)必须出现在屏幕上。一旦初始的用户界面被显示在屏幕上,应用程序随即就由外部的事件驱动了,最重要的是那些由用户发起的外部事件:比如点击一个按键,选择一个菜单项,拖拽一个图标,在输入域中键入等等。每个这样的事件都和很多用户动作发生的环境信息一起,报告给应用程序—比如哪个键被按下,是否有鼠标被按下或释放,光标的位置在哪里,以及哪个窗口受到影响等。

应用程序获取一个事件,对其进行查看并做出响应(经常是通过描画部分的用户界面),然后等待下一个事件。如果事件由用户或某些其它的事件源(比如定时器)发起,应用程序就会逐个地进行获取。从启动到终止运行,应用程序所做的几乎所有事情,都由用户动作驱动,形式上表现为事件。

    事件的获取和响应机制就是主事件循环(称为“主循环”是因为应用程序可以为某个短暂的时间段建立从属的事件循环)。事件循环本质上是一个带有一个或多个输入源的运行循环。核心组中的一个对象负责运行主事件循环—获取事件,并将事件派发给最适合的一个或多个对象,然后获取下一个事件。在Cocoa应用程序中,这个负责协调的对象就是全局的应用程序对象,即NSApplication类的一个实例。图1显示了就是这个主事件循环。

图 1  主事件循环

The main event loop

    在几乎所有的Cocoa应用程序中,main函数都是极为简单的,因为它只有一个函数调用(参见列表3-1)。NSApplicationMain函数的作用是创建一个应用程序对象,建立一个自动回收池,从主nib文件中装载初始的用户界面,以及将应用程序运行起来,使其开始处理主循环接收到的事件。

列表3-1  Cocoa应用程序中的main函数

#import <AppKit/AppKit.h>
 
int main(int argc, const char *argv[]) {
    return NSApplicationMain(argc, argv);
}

 

Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言? Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合,核心语言是Objective-C编程语言,在移动平台被称为Cocoa Touch,Cocoa包含多个子框架,其中最重要的包括Foundation和AppKit(macOS上)或UIKit(iOS上).Foundation框架提供了一系列与图形用户界面无关的基本服务,如字符串处理、集合、文件系统操作等。这些服务对于所有类型的应用程序都是必要的基础设施。 阅读详情

相关推荐

全面的Cocoa编程规范指南

本文还有配套的精品资源,点击获取 简介:Cocoa框架是iOS应用开发的核心工具,合理的编码规范对于代码的可读性、维护性以及团队协作至关重要。本文综合Apple官方和Google Objective-C风格指南,详细解释了Cocoa编码规范的各个方面,包括命名约定、注释和文档、代码组织、内存管理、错误处理、枚举与常量使用、KVC与KVO规则、GCD与Block的正确使用,以...

weixin_36173034的博客 951

iOS-控件响应用户控制事件之事件处理

事件处理 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象” UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件 UIResponder内部提供了以下方法来处理事件 这些类可以覆盖下...

weixin_30300523的博客 165

Swift与Objective-C在Cocoa框架下的综合指南

Swift 是苹果公司在2014年推出的编程语言,旨在替代 Objective-C,提供更为安全、现代的编程体验。Swift 语言的设计目标是创造出一种既快速又具有高效率的语言,同时还要易于学习和使用。Cocoa 是一套面向对象的API,由两个主要框架构成:Foundation 框架和 UIKit 框架。Foundation 提供了面向对象的基础支持,包括集合类、文件操作、网络通信等功能。UIKit 框架则为构建用户界面提供了丰富的类和协议,比如UIView等。

weixin_35750747的博客 1210

【iOS开发】Cocoa框架学习笔记

iPhone,Safari,Mail都是Cocoa应用程序。运行环境上呈现Aqua用户界面和Mac OS其他可视部分(Finder,Dock等)集成。开发方面Cocoa是面向对象的软件组件-类-的集成套件。适合开发应用程序,命令行工具,插件等,可以使用多种编程语言。这些类可复用,可支配,可以直接使用或者根据需求扩展。 主要开发语言Objective-C,是ANSI C的超。在ANSI C语法和语义特性上扩展,支持面向对象。可以将C和Objective

3325

基于STM32F407标准库与SimpleFOC实现无刷电机2804位置闭环控制的实战解析

本文详细解析了基于STM32F407标准库与SimpleFOC算法实现2804无刷电机位置闭环控制的实战过程。通过硬件选型、速度闭环调试到位置环PID参数整定,提供了完整的工程实现方案和抗饱和策略,帮助开发者掌握高精度电机控制技术。

oauth7security的博客 918

IGS精密星历高效获取与解析指南

本文详细介绍了IGS精密星历在高精度定位中的核心作用,对比了IGS Final、IGR和IGU等不同产品的精度与时效性差异。指南提供了从武汉大学、NASA CDDIS等数据中心高效下载数据的实战方法,并深入解析了SP3文件格式,帮助用户掌握精密星历的获取、解析与自动化处理技巧,以支持厘米级定位应用。

garlic的博客 839

Cocoa系列教学三:Target & Action, 另外一种响应事件

我们知道在Cocoa程序中, 如果你想处理一个窗口的事件或者应用程序的事件, 你可以使用Delegate的方法来实现响应的事件处理函数,但是如果你要处理一个button控件或者一个窗口里面很多的类似Button的这种有一种 缺省行为的控件的时候, 是不是要为他们每个控件都来实现这个Delegate呢? 答案是否定的,因为针对这些具有指定的缺省行为的控件,NSControl已经帮我们进行了一部 分的...

jean7155的专栏 524

【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。 承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。 一、偶极子点阵 手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,...

XD_Yangf的博客 7552

Cocoa基本原理指南之一 - Cocoa框架

<br /><br />摘自:Cocoa基本原理指南     <br />   Cocoa框架的核心是Foundation和Application Kit框架。Foundation框架定义了一些基础类,可以用于各种类型的Cocoa程序。Foundation框架和Application Kit框架的区分标准在于用户界面。<br />         Foundation类层次的根是NSObject类,它(和NSObject及NSCopying协议一起)定义了基本的对象属性和行为。Foundation框架的剩余

workhardupc 2222

学习Ultralytics (下载)

Ultralytics由创立,最初是为了简化目标检测模型的开发和应用,专注于构建高效、易用、性能卓越的深度学习框架。其主要产品之一是 YOLO 系列模型,尤其是最新的YOLOv5和YOLOv8,因其在精度、速度和可扩展性方面的出色表现而广受欢迎。

2301_76846375的博客 2865

卷积神经网络-猫狗识别(附源码)

利用python实现一个卷积神经网络,训练猫狗数据集,实现对猫狗图片的预测识别

m0_63223213的博客 2万+

Cocoa是什么???

某次上班路上,同事问我:什么是Cocoa?当时楞了一下,对呀,什么是Cocoa?做了将近一年的iPhone应用开发,成天跟它打交道,竟然还不知道这是个什么东西。。。 一、什么是Cocoa ①Cocoa的来源 早些年,苹果公司启动了Copland计划,致力于开发出自己的操作系统,可惜后来Copland计划逐渐的失控了,苹果公司最终决定放弃开发,转向从别的公司购买下 一个版本的Mac OS。在经

王中周的个人博客 2万+

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 453

Cocoa编程指南

这是一篇翻译版,英文版来自apple的官方文档: Coding Guidelines for Cocoa介绍Cocoa编程指南介绍通过公开API开发Cocoa框架,插件,或者其他可执行文件需要一些不同于开发应用程序的方式和约定。开发者是你的产品的主要客户,并且让他们没有对你的编程接口感到困惑是非常重要的。这就是API命名约定派上用场,这会有助于你的接口保持一致和清晰。还有些编程技术对于这个框架来说

coder的专栏 5448

95.qt qml-诺谦通用可扩展多功能QML界面

如下图所示:自带一个功能界面,可以通过功能界面添加不同功能,并且可以固定到顶部水平导航栏中,对于N多小功能的项目而言,非常方便,这样用户就可以根据自己喜好来使用自己常用的功能了。

抵抗时间扭曲,坚持做一件有意义的事 3048

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 967

Cocoa 框架

 Cocoa 框架接下来的段落总结了 Cocoa 的类和一些重要的框架的示意图,特别是核心框架 Foundation (基础)和 Application Kit (应用程序工具箱)。内容:    介绍    基础框架    应用程序工具箱    其它 Cocoa API 框架 介绍是什么使得一个程序变成了一个 Cocoa 的程序?它其实不是编程语言,因为您可以在 Cocoa

dadalan的专栏 5743

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Cocoa基本原理指南之十 - 使用Cocoa框架

<br />摘自:<br /> <br /><br />    库函数很少对使用它们的程序进行限制,您可以在任何需要的时候进行调用。另一方面,面向对象的库或框架中的方法和类的定义紧密相关,如果您没有创建或保留可以访问那些定义的对象,就不能对其进行调用。而且,在大多数程序中,对象必须至少和一个对象相连接,才能在程序网络中发挥作用。一个类只负责定义一个程序组件,为了访问类提供的服务,您必须将它连接到应用程序结构中。也就是说,框架类生成一些行为类似于一组库函数的实例。您简单地创建一个实例,对其进行初始化,然后或者

workhardupc 1024

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Cocoa基本原理指南 中文版

http://www.apple.com.cn/developer/Documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_3.html#//apple_ref/doc/uid/TP40002974-CH4-DontLinkElementID_65

个人学习记录所用 1559

Cocoa Tutorials 开源项目指南

Cocoa Tutorials 开源项目指南 项目概述 本指南旨在详细介绍位于 GitHub 的 AppleProg-Cocoa-Tutorials 开源项目。该项目提供了通过YouTube发布的Cocoa编程教程,涵盖了Swift和Objective-C两种语言。它面向iOS和macOS应用开发者,是学习苹果平台开发的宝贵资源。 1. 目录结构及介绍 该开源项目的目录结构简洁明了,设计以支持快速...

gitblog_00005的博客 638

KGNoiseView实战教程:为你的Cocoa应用添加专业噪声背景的终极指南

你是否希望为你的iOS或macOS应用添加优雅的噪声纹理背景?KGNoiseView正是你需要的解决方案!这个强大的Cocoa框架让添加专业级噪声效果变得简单快速。在本篇完整教程中,我将手把手教你如何使用KGNoiseView为你的应用增添视觉深度和质感。 ## 什么是KGNoiseView?🎨 KGNoiseView是一个轻量级的Cocoa框架,专门为iOS和macOS应用提供高质量的噪声

gitblog_00149的博客 447

什么是Cocoa?

在Mac OS X操作系统上,Cocoa和Carbon及Java一样,是一种应用程序环境。它由一组面向对象的软件库和一个运行环境组成,它的集成开发环境和其它应用程序环境相同。 本章将在这个定义的基础上进行扩展,描述Cocoa的目标、能力、和物理形式。作为一个开发者,阅读这个功能描述是理解Cocoa的第一步。 本部分包含如下内容: Cocoa的环境Cocoa应用程序的特性开发环境Co...

a2614555的博客 1345

Cocoa基本原理指南之十一 - Cocoa设计模式

<br /><br />Cocoa设计模式<br /> <br />Cocoa环境的很多架构和机制都有效地使用了设计模式:即为特定上下文中反复出现的问题提供解决方案的抽象设计。Cocoa中设计模式的实现有不同的形式。下面部分中描述的一些设计—比如协议和范畴—是Objective-C语言的特性;在另外一些场合中,“模式的实例”被实现为一个类或一组相关的类(比如类簇和单件类);还有一些场合下,模式表现为一个大的框架结构,比如响应者链模式。抽象工厂模式<br />提供一个接口,用于创建与某些对象相关或依赖于某些对

workhardupc 5967

[Cocoa]_[NSTableView]_[添加复选框]

要想给tableview添加复选框就要重定义那一列的cell,通过重写绘图事件和点击事件来实现。 1.重定义cell YepCheckImageCell.h #import @interface YepCheckImageCell : NSButtonCell { BOOL isChecked; NSImage* checkImage[2]; } @property

yepeng2014的专栏 2426
上一篇: Cocoa基本原理指南之八 - 创建一个单件实例
下一篇: Cocoa基本原理指南之十 - 使用Cocoa框架
workhardupc100
博客等级 码龄18年 129粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值