iOS Keywords

OC KeywordDescription
atomicatomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。
nonatomic非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高
super调用父类的方法
readonly说明属性是只读的,默认的标记是读写
readwrite说明属性会被当成读写的,这也是默认属性
retain释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为
self是隐藏参数,指向当前调用方法的类
setter设置指定的set方法
getter设置指定的get方法
property设置成员变量的属性(有读/写,赋值assign,retain,copy ,以及对多线程的支持nonatomic)
end类的头文件或者实现文件的结束
copy建立一个索引计数为1的对象,然后释放旧对象
assign简单赋值,不更改引用计数
synthesize根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量
import告诉预处理器,将头文件的内容包含到本文件中
dynamic告诉编译器由我们自己来实现访问方法
implementation表明类的实现
strong强引用,只要最后一个strong型指针不再指向对象,那么对象就会被释放,同时所有的weak型指针都将会被清除
weak弱引用
__strong是缺省的关键词
__weak声明了一个可以自动nil化的弱引用
__unsafe_unretained声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了
__autoreleasing用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放
unsafe_unretained弱引用,容易生成野指针,尽量少用unsafe_unretained关键字
synchronized方法加锁

Swift KeywordDescription
lazy延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用@lazy来标示一个延迟存储属性
unowned和弱引用类似,无主引用不会牢牢保持住引用的实例。和弱引用不同的是,无主引用是永远有值的(不能为nil)。因此,无主引用总是被定义为非可选类型(non-optional type)。你可以在声明属性或者变量时,在前面加上关键字unowned表示这是一个无主引用。
### 如何在Mac端实现iOS文件读取 #### 一、了解iOS沙盒机制与文件结构 iOS设备采用严格的沙盒机制,这意味着每个应用程序只能访问其自身的文件夹及其子目录下的资源。对于开发者而言,在开发阶段可以通过Xcode调试工具或者模拟器环境来访问特定的应用程序文件夹[^1]。 - **Document**: 存储用户数据或其他需定期备份的内容。 - **AppName.app**: 应用程序包目录,包含应用的核心资源和可执行文件。该目录不可修改,否则可能导致签名失效并使应用无法启动。 - **Library/Caches**: 存放支持文件以及下次启动所需的数据。 - **Library/Preferences**: 偏好设置应通过`NSUserDefaults`管理而非手动创建。 - **tmp**: 用于存储临时文件,重启后可能被清除。 #### 二、利用Xcode进行文件读取 如果目标是在Mac上读取iOS设备上的文件,则可通过连接真实设备并通过Xcode的调试功能完成: 1. 使用`NSFileManager`或更高层次的API(如`FileManager.default.urls(for:in:)`)定位所需的文件路径[^3]。 2. 对于`.plist`或`.json`等常见配置文件,可以直接加载到内存中解析: ```swift let filePath = Bundle.main.path(forResource: "keywords", ofType: "plist")! if let data = FileManager.default.contents(atPath: filePath), let plistData = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) { print(plistData) } ``` #### 三、借助第三方工具 除了官方手段外,还可以考虑一些成熟的第三方解决方案,比如iExplorer或PhoneDisk这类软件能够帮助浏览和提取iPhone/iPad中的文件而无需越狱[^5]。 #### 四、处理外部共享文件 当涉及其他应用传递过来的文档时,需要适配相应的URL打开接口。如果是基于UIKit的传统项目则重载`application(_:open:options:)`; 若是现代化架构如SwiftUI构建的应用,则应在场景代理(SceneDelegate)里监听`window?.windowScene?.activationStateDidChange(_:)`, 并结合`onOpenURL(_:)`闭包捕获传入链接。 ```swift func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool { // 处理接收到的url参数... } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值