Objective-C是本人用过的最佳类C、面向对象的编程语言。Objective-C与标准C完美兼容,而在此基础上又加上了将面向对象的基础概念诠释得最好的SmallTalk元素,使得它既简洁、又灵活,绝对是做商业化项目的首先编程语言工具。它跟Java相比更接近底层,你可以直接在里面写内联汇编或直接与汇编文件一起连接(因为它就是C语言,在C语言基础上扩展了SmallTalk的消息机制与OO机制)。与C++相比,它显然又简洁许多,C++里的神马多继承了、虚拟继承了,坑之多数不尽。Objective-C非常容易上手,而且语法也不复杂,所以不会导致程序员出现过于良莠不齐的现象,整个项目维护起来也十分容易。
KVO是Key-Value-Observer的缩写,使用的是观察者模式。底层实现机制都是isa-swizzing,就是在底层调用object_setClass函数,将对象的isa指向的Class偷偷换掉。
KVO 就是 Key-Value Observing,就是键值观察。它是一种观察者模式的衍生。其基本思想是,对目标对象的某属性添加观察,当该属性发生变化时,通过触发观察者对象实现的KVO接口方法,来自动的通知观察者。
总结了Effective Objective-C之后,还想读一本进阶的iOS书,毫不犹豫选中了《Objective-C 高级编程》:
作者 | Sergio De Simone 译者 | 明知山 策划 | 丁晓昀 Swift 团队已经开始 Foundation 框架的一个新的开源实现。新的实现完全采用 Swift 编写,旨在通过消除 Objective-C 和 Swift 之间的转换成本来提升性能,并对其进行模块化和清理。 因为采用了原生的 Swift 实现,Foundation 框架不再需要在 C 和 Swift 之间进行转换,从而获得更高的性能。 正如苹果工程师 Tony Parker 在 Swift 论坛上所解释的那样,性
copy修饰的变量,对象地址不一致了,指针指向了一个新的内存区域(相当于深拷贝),导致新值(newString)修改时不会影响。copy修饰符到底做了什么?这就是我们探索的起点
著名端口 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 chargen 字符生成服务;发送无止境的字符流 20 ftp-data FTP 数据端口 21 ftp 文件传输协议(FTP)端口;有时被文件服务协议
1、使用alloc、new、copy、mutableCopy的意味着自己生成的对象只有自己持有
这里小编有收集一些相关的问题,其中大部分都是大厂面试或者面试其他人用到的,能命中大部分的面试和日常工作,更希望你可以用它来检验自己!
作者 | Sergio De Simone 译者 | 平川明知山 策划 | 丁晓昀 Swift 语言工作组已经详细说明了 2023 年及以后 Swift 重点发展的主要领域,其中包括定义内存管理的所有权模型、不可复制类型、宏系统和 C++ 互操作。 所有权是一种内存管理方法,最近由于 Rust 而变得流行起来。它是 Rust 最具有决定性的语言特征之一,是其提供内存安全保证的基础。 Rust 使用了第三种方法:内存是通过一个所有权系统来管理的,该系统有一套编译器检查规则。如果违反了任何规则,程序就
Runtime其实有两个版本:“ modern”和“ legacy”。我们现在用的采用Objective-C 2.0的是现行(Modern)版的Runtime系统,只能运行在iOS和macOS 10.5之后的64位程序中。而较macOS老的32位程序仍采用Objective-C 1中的(早期)Legacy的版本Runtime系统- 。这两个版本最大的区别在于当你更改一个类的实例变量的布局时,在早期版本中你需要重新编译它的子类,而现行版就不需要。
端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 chargen 字符生成服务;发送无止境的字符流 2
传输层协议,如传输控制协议(TCP)与用户数据包协议(UDP),在分组表头中,定义了来源端口号与目的端口号。 一个通信端口号使用16位无符号整数(unsigned integer)来表示,其范围介于0与65535之间。 在TCP协议中,端口号0是被保留的,不可使用。 1–1023 系统保留,只能由root用户使用。 1024—4999 由客户端程序自由分配。 5000—65535 由服务器端程序自由分配在UDP协议中,来源端口号是可以选择要不要填上,如果设为0,则代表没有来源端口号。
参考:http://stackoverflow.com/questions/19622337/cant-update-macports-with-mac-os-x-mavericks
下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方列表,请参考以下 URL:http://www.iana.org/assignments/port-numbers “层”是指服务或协议在交通层上使用 TCP 还是 UDP。若没有列举,这个服务或协议就两者都使用。 著名端口 端口号码 / 层 名称 注释 1 tc
HTTP,TCP,UDP常见端口对照表,下面罗列了包括在Linux 中的服务、守护进程、和程序所使用的最常见的通信端口小贴士:Ctrl+F 快速查找 Http端口号(点标题可收缩或展开)
上篇文章中我介绍了KVO的简单用法以及KVO的实现细节,为了加深对KVO的理解,我决定从头到尾介绍一下如何自定义KVO。
安装 JDK 会自动创建一个名为 jdk–17.interim.update.patch.
Linux内核是GNU/Linux操作系统的核心组件。它是一个免费、开源、庞大、模块化、多任务的类Unix的操作系统内核。它最初是由Linus Torvalds在1991年为他的i386 PC创造的。
在 2021 年,有更多让人们喜欢 Linux 的理由。在这个系列中,我将分享 21 种使用 Linux 的不同理由。下面是如何安装 Linux。
Linux Mint是一种现代的,精美的,易于使用的,舒适的,社区驱动的GNU / Linux桌面发行版,它基于流行的Ubuntu Linux发行版。 对于从Windows或Mac OS X操作系统切换到Linux平台的计算机用户,这是一个很好的建议发行版本。
大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0。代号为‘Hurr durr I'm a sheep’的Linux内核4.0是目前为止最新的主干内核。它是稳定版3.19.4之后发布的内核。4月12日是所有的开源运动爱好者的大日 子,Linux Torvalds宣布了Linux内核4.0的发布,它现在就已经可用了。由于包括了一些很棒的功能,例如无重启补丁(实时补丁),新的升级驱动,最新的 硬件支持以及很多有趣的功能都有新的版本,它原本被期望是一次重要版本。但是实际上内核4.0并不认为是期望中的重要版本,Linus 表示期望4.1会是一个更重要的版本。实时补丁功能已经集成到了SUSE企业版Linux操作系统上。你可以在发布公告上查看关于这次发布的更多详细内容。
肯定有人和我一样,很早就听说过Linux的这个词,但是又没接触过。然后随手百度一下看着满满的命令惊呆了,不知道从哪里开始学习。这种状况一直维持到我面试的时候,我不怕跟你们说,我拿着写着“熟悉Linux的系统”的简历去面试,其实当时的我都没有了解Linux的到底是什么!我相信大家肯定都用过的Windows系统,或者也用过的mac系统,其实Linux也是和这些在Windows,Mac一样,都是系统,只是不同的形式呈现出来给用户体验。这样说大家都了解吧,就是个系统。
很多朋友工作学习中需要在 Windows 上安装 Linux 系统,最常用的就是使用 VMware Workstation 虚拟机。
Linux是一套免费使用和自由传播的操作系统。说到操作系统,大家比较熟知的应该就是Windows和MacOS操作系统,我们今天所学习的Linux也是一款操作系统。
在Linux 操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是 Red Hat Package Manager(简称RPM)。此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。下面就给大家介绍一下它的具体使用方法。
系统要求 Kali 系统对硬件有一些最基本的要求及建议。根据用户使用目的,你可以使有更高的配置。这篇文章中假设读者想要把 kali 安装为电脑上唯一的操作系统。 至少 10GB 的磁盘空间;强烈建议分配更多的存储空间。 至少 512MB 的内存;希望有更多的内存,尤其是在图形界面下。 支持 USB 或 CD/DVD 启动方式。 Kali Linux 系统 ISO 镜像下载地址 https://www.kali.org/downloads/。 使用 dd
Jupyter notebook是一种Web应用程序,当在拥有图形化界面的windows、Linux和Mac系统中,很容易安装使用。不过通常我们会将一些消耗性能的代码放到性能更强的Linux服务器中,通过本地机器来访问运行,这些Linux服务器没有图形化界面只能够通过命令来进行交互,如果想要在Linux服务器中直接使用Jupyter notebook是不可能的事情。不过我们可以将Jupyter notebook安装在Linux服务器中,然后通过本地的浏览器来访问Linux服务器中的Jupyter notebook。
centos系统内核如何升级,有些小伙伴在使用centos系统时可能会遇到网卡不能使用,亮度不能调节,触摸板不能识别,等等问题,这些都是内核版本过低而导致,只需要把内核升级一下就可以, 下面为大家分享一下centos系统内核升级方法。
如何在linux系统服务器上,安装 LAMP 这个php运行环境? 如果要准备建一个wordpress网站,大多数的wordpress站长都会选择linux系统的服务器。为什么呢?因为wind
WSL是Windows Subsystem for Linux的缩写,允许利用CPU的虚拟化技术在Windows系统下使用Linux系统。目前最新版本是WSL2。
说明:本文汇总Oracle安装部署,版本升级,应用补丁等相关内容,方便快速查阅。 其中参考随笔是汇总我自己总结的原创作品,参考文章是汇总其他作者的相关优秀作品。
工作中通常既需要使用windows系统的常用工具,同时又想使用Linux的命令和算法库,特别是深度学习中一些库的编译和使用在Linux更为方便。这时候WSL就是很好的选择,我们可以直接在Windows系统上使用Linux。本文主要介绍如何启动WSL2安装Linux系统,在Linux系统中安装一个docker以及在安装过程中遇到的问题。
以下分享红旗Linux操作系统RedFlag Linux Desktop 9.0安装教程,你可以用Vmware、VirtualBox虚拟机、硬盘、U盘、光盘的方式来安装。本文以光盘的方式来演示安装RedFlag Linux Desktop 9.0全过程。
此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。下面就给大家介绍一下它的具体使用方法。
有些小伙伴在使用Linux系统时可能会遇到网卡不能使用,亮度不能调节,触摸板不能识别,等等问题,这些都是内核版本过低而导致,只需要把内核升级一下就可以, 下面为大家分享一下Linux系统内核升级方法。
WSL(Windows Subsystem for Linux)是微软开发的一种技术,允许在Windows操作系统上运行Linux发行版的用户空间。它为开发人员提供了在Windows环境中使用Linux工具和命令行界面的能力,同时无需在系统中安装完整的虚拟机或进行双重引导。
使用过linux系统的运维应该都有在上面安装过软件包,有时候我们需要查询即将要安装的包有没有在这个系统上已经安装,如果不先查一下,或多或少会出现问题,比如版本不一致等等。
总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。
Linux是一种开源的操作系统,其内核由林纳斯·托瓦兹(Linus Torvalds)在1991年开始开发。与其他常见的操作系统如Windows和Mac OS不同,Linux是一个开放、自由的系统,可以免费使用、修改和分发。
Win10下目前基于WSL2来安装NCL和Python计算绘图是比较稳妥的方案,优于其他类型虚拟机、CYGWIN、双系统等等,但是难免会遇到各种问题,本文可供参考!
本文转载自:http://www.oolap.com/2015-11-07-ubuntu-install-dbgsym
今天尝试安装龙芯版 Linux,本来希望能安装 Debian 版,但只找到一些文档(https://wiki.debian.org/LoongArch),没找到可安装版的 ISO。
文章更新: 20161025 初次成文 20170422 微小修正 问题提出: 因为小苏在很久之前就听说在安卓上可以跑Linux系统,期间各种工具也试了很多(包括这个),但是要么是使用方法不得当,要么是和ROM不兼容,总之是一直都没成功,所以这类软件总是下了用,用了卸,想起来的时候再下了用...无限循环。直到之前,看了一篇简单的关于Linux Deploy的使用教程之后茅塞顿开,在Android上成功跑起了Ubuntu,所以写这篇文章来记录一下。 解决方案: Linux Deploy
链接:https://www.linuxmi.com/linux-novice.html
Linux免费开源,建站基本上都是选择Linux系统,而且Linux VPS比Windows VPS要便宜不少,成本大大降低,除非程序有特殊需要,否则还是建议大家使用Linux来当作网站服务器。不过,选择Linux有一个不好的地方就是操作麻烦些。
在 Windows 操作系统上使用 Linux 命令行工具,对于许多开发者和系统管理员来说是一个常见的需求。特别是对于那些习惯于 Linux 命令行的用户来说,Windows 自带的 CMD 和 PowerShell 可能并不满足他们的需求。虽然 Windows Subsystem for Linux (WSL) 是一个很好的解决方案,但有些用户出于各种原因可能不想使用 WSL。本文将介绍几种在 Windows 上使用 Linux 命令的方法,包括具体的操作步骤、优缺点分析,以及各方法的对比。
如果想体验Linux环境下开发.NET Core应用,我们有多种选择。一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE这些主流的Distribution都是支持的。如果读者朋友们觉得这种方式比较麻烦,我们也可以采用虚拟机的形式安装相应的Linux Distribution,比如我经常使用的都是安装在VirtualBox上的Ubuntu。对于X64 Windows 10的用户来说,我们有了第三种更为方便快捷的选择,那就是使用Windows 10提供的Linux子系统(WSL:Windows Subsystem for Linux),目前最新版本为WSL 2。
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用虚拟机软件:
https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package
领取专属 10元无门槛券
手把手带您无忧上云