笔者最近梳理iOS知识脉络,计划写一个名为“重识iOS”的系列,内容来自平常的学习笔记,参考了少量文章和书籍,融入自己的了解以记录。欢迎交流指正。
系列篇:
property@property = ivar + getter + setter问题:什么是原子性? 说明并比较atomic和nonatomic。 atomic是百分之百安全的吗?
//同步锁- (NSString *)someString { @synchronized(self) { return _someString; }}- (void)setSomeString:(NSString *)someString { @synchronized(self) { _someString = someString; }}//并发队列_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);- (NSString *)someString { __block NSString *localSomeString; dispatch_sync(_queue, ^{ localSomeString = _someString; }); return localSomeString;}- (void)setSomeString:(NSString *)someString { dispatch_barrier_async(_queue, ^{ _someString = someString; });}读写权限不写时默认为 readwrite 。一般可在 .h 里写成readonly,只对外提供读取,在 .m 的Extension中再设置为 readwrite 可进行写入。
//.h文件#import <Foundation/Foundation.h>@interface MyClass : NSObject@property (nonatomic, readonly, copy) NSString *name;@end//.m文件#import "MyClass.h"@interface MyClass()@property (nonatomic, readwrite, copy) NSString *name;@endEXC_BAD_ACCESS;assign修饰基本数据类型,内存在栈上由系统自动回收。<> 中为方法名,通过此特质来指定存取方法的名称。
//.h文件@interface MyClass : NSObject@property (nonatomic, assign, getter=isOn) BOOL on;@end//.m文件@implementation MyClass- (BOOL)isOn { return self.on;}@end我们已经知道 @property 会使编译器自动编写访问这些属性所需的方法,此过程在编译期完成,称为 自动合成 (autosynthesis)。与此相关的还有两个关键词:@dynamic 和 @synthesize。
参考:
¥24.20
PC 中文 STEAM 正版 骑马与砍杀 国区激活码
¥5.18
PC中文正版 steam平台 国区 联机游戏 七日杀 7 Days to Die 激活码 兑换码 全新成品账号
¥13.20
逃生2 steam Outlast 2 逃生2激活码 恐怖动作 逃生冒险独立 单人生存游戏 PC中文正版 国区全球激活码 CDKey
¥31.00
Uplay 彩虹六号围攻 CDK激活码 彩虹6号 彩虹6号特勤干员 Y8豪华版终极 Y7终极版 PC游戏育碧正版中文
¥184.00
足球经理2023 steam 足球经理2023 FM2023 Football Manager 2023 正版国区CDK 激活码 steam游戏激活码
¥21.80
PC中文正版 steam平台 国区 游戏 命运2 Destiny 2 全DLC 抗战赛季银币组合包 邪姬魅影 光陨之秋 年票激活码