iOS 基础知识点

1.SDWebImage缓存策略

缓存策略

2.为什么说OC是一门动态语言?

Objective-C 可以通过Runtime 这个运行时机制,在运行时动态的添加变量、方法、类等,所以说Objective-C 是一门动态的语言

3.属性@property 的本质是什么?

@property = ivar + getter + setter;

实例变量+get方法+set方法,也就是说使用@property 系统会自动生成setter和getter方法。

4.NSString为什么要用copy关键字,如果用strong会有什么问题?

copy是深拷贝,strong是强引用,比如

@property(nonatomic,copy)NSString * str1;

@property(nonatomic,strong)NSString*str2;

NSMutableString*str=[NSMutableString stringWithFormat:@"helloworld"];

self.str1=str;

self.str2=str;

如果改变str, [str appendString:@"world"];

那么str1是不会变化的,而str2,则会发生变化。通常我们是不希望字符串随着别的变量发生变化而变化的。所以NSString一般用copy。

5.如何令自己所写的对象具有拷贝功能?

具体步骤:

• 需声明该类遵从 NSCopying 协议

• 实现 NSCopying 协议。该协议只有一个方法:

  • (id)copyWithZone:(NSZone *)zone;

6.可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?

使用copy时 可变集合的指针地址以及内存地址都不相同 深复制 不可变集合的指针地址不一样但是内存地址一样 属于浅复制;

使用mutableCopy的时候无论是可变集合还是不可变集合的指针地址和内存地址都不同 都属于深复制

7.为什么IBOutlet修饰的UIView也适用weak关键字

我们将控件拖到Storyboard上,相当于创建了一个对象,而这个对象是加到试图控制器的view上,存放在view的subviews数组中。即我们的控件对象是属于的view的,view对其子控件之前的关系是强引用。当我们使用Outlet属性的时候,这个Outlet属性是有view来进行强引用的。我们是在viewController中仅仅对其进行使用,没有必要拥有它,所以使用weak进行修饰。

8.nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
nonatomic和atomic用来决定编译器生成的getter和setter操作是否为原子操作。atomic不是绝对的线程安全。atomic的本意是指属性的存取方法是线程安全的,并不保证整个对象是线程安全的。如:

声明一个NSMutableArray的原子属性stuff,此时self.stuff 和 self.stuff = otherstuff都是线程安全的。但是使用[self.stuff objectAtIndex:index]就不是线程安全的。需要用互斥锁来保证线程安全性。

9.@synthesis和@dynamic的作用

@property有两个对应的词,一个是@synthesis一个是@dynamic。若两者都没有写,默认的就是:

@syntheszie var = _var;

@synthesis的语义是如果你没有手动实现setter和getter方法,那么编译器会自动为你加上这两个方法

@dynamic告诉编译器:属性的setter和getter方法由开发者自己实现,不需要自动生成。(对于readonly的属性只需提供getter即可)加入一个属性被声明为

@dynamic var;

然后你也没有提供@setter和@getter方法,可以通过编译,但是运行的时候,程序运行至

instance.var = someVar

会因为缺少setter方法而crash。同样如果缺失getter方法,程序运行至

someVar = instance.var

时导致crash。

10.为什么代理要用weak?week 和 assign 的区别?block和代理的区别?

(1)weak修饰代理属性,指明该对象并不负责保持delegate这个对象。delegate这个对象的销毁又外部控制

(2)weak和assign的不同点:weak策略在属性所指的对象遭到销毁时,系统会将weak修饰的属相对象的指针置为nil,在OC给nil发消息是不会有什么问题的。如果是用assign,在属性所指的对象销毁之后,属性对象的指针并为置为nil,造成野指针的存在。这个时候再次给此对象发送消息,极易造成崩溃问题。assign可以用于修饰非OC对象,而weak必须勇于OC对象。

(3)block和代理的区别:

block更轻型,是用也更简单,能够直接访问上下文,类中不需要存储临时数据,使用block,代码连贯,易读。delegate需要实现接口,与方法实现进行分离,需要存储一些临时数据。代码比较分离,不易读。但是可以在很大程度上实现代码的解耦。

block根据使用分类,有三种情形:

a.临时性的,只用在栈中,不会存储起来

b.需要存储起来,但只会调用一次,或者一个完成时期。比如一个UIView动画,动画完成之后,需要使用block通知外面。一旦调用block之后,这个block就可以删除掉

c.需要存储起来,可能会调用多次。比如按钮的点击事件,假如采用block实现,这种block就需要长期存储,并且会调用多次。调用之后block也会删除,可能还有下一次按钮的点击。

对于临时性的,只在栈中使用的block,没有循环引用的问题。block会自动释放掉。而只调用一次的block,就需要看内部的实现了。正确的实现时block调用之后,吗上赋值为空。这样block也会释放掉,同样也不会引起循环引用。

多次调用的block,极易引起循环引用,使用时需要注意。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345

推荐阅读更多精彩内容