iOSInterviewQuestions icon indicating copy to clipboard operation
iOSInterviewQuestions copied to clipboard

iOS interview questions;iOS面试题集锦(附答案)--学习qq群或 Telegram 群交流 https://github.com/ChenYilong/iOSBlog/issues/21

Results 73 iOSInterviewQuestions issues
Sort by recently updated
recently updated
newest added

# 技术清谈【-004期】【代号:星际穿越】 ![](http://ww2.sinaimg.cn/large/006tNc79ly1g3kjpe5n3wj31c00u0npd.jpg) ---------- 本期特辑:hybrid、跨平台特辑 本期出品人:微博@iOS程序犭袁 注:题目难度五星为满分,各个类目下题目从易到难依次排列。 ---------- ---------- ## hybrid 类 【easy级别】 ![](http://ww4.sinaimg.cn/large/006tNc79ly1g3kja0hff3j31hc0u0n7s.jpg) ---------- 1【问题】【iOS】【hybrid】请阐述 JavaScriptCore 与 WebCore 工作过程中与线程的关系,阐述基于这种关系,对 JS 与 native 交互的影响,阐述解决优化。 【难度】🌟 【出题人】 微博@iOS程序犭袁 ---------- 2【问题】【iOS】【Android】【hybrid】嵌入 native...

note

1. Delete name setter method beause of the property is readonly. 2. Add new method of CYLUser class init.

在第8题中,NSObject的类目`NSObject (CYLRunAtDealloc)`中的方法`cyl_runAtDealloc:`的属性关联个人觉得有点疏漏: 在这个方法中,初始化`CYLBlockExecutor`后的属性关联的key采用的是固定的key`runAtDeallocBlockKey`,这样在多个对象同时弱引用另一个对象的时候,导致只能最后一个对象拥有对这个对象的弱引用。所以,我的想法是,这个key可以用动态的值,比如`executor`的地址: ``` CYLBlockExecutor *executor = [[CYLBlockExecutor alloc] initWithBlock:block]; const void * key = &executor; objc_setAssociatedObject(self, key, executor, OBJC_ASSOCIATION_RETAIN); ``` 这样可以避免这个问题。 以上就是我的一点想法,仅供作者参考。

// .h文件 @property (nonatomic, copy) NSMutableArray *mutableArray; // .m文件 NSMutableArray *array = [NSMutableArray arrayWithObjects:@1,@2,nil]; self.mutableArray = array; [self.mutableArray removeObjectAtIndex:0]; 因为关键词是copy,所以self.mutableArray是NSArray, 但是array得地址和self.mutableArray的地址是不一样的,有什么方法能让array得地址和self.mutableArray的地址不一样,同时使self.mutableArray是NSMutableArray

objc_class 结构体里面并没存储这个列表的属性,请问这个属性存储在哪里呢?

最终答案中只需要 ``` //创建 Timer,然后添加到 NSRunLoopCommonModes NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerTick:) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; ``` 就能解决 Timer 计时会被 scrollView 的滑动影响。 增加下面的代码会导致无滑动事件时,计时器回调两次,因为 NSRunLoopCommonModes 包括了 UITrackingRunLoopMode 和 NSDefaultRunLoopMode...

> 25. _objc_msgForward 函数是做什么的,直接调用它将会发生什么? 中的: > 4. 调用forwardInvocation:方法,将第3步获取到的方法签名包装成 Invocation 传入,如何处理就在这里面了,并返回非ni。 forwardInvocation: 方法没有返回值

博主您好,首先非常感谢您能整理出这么优秀的内容,帮助大家学习!万分感谢! 然后在第七题的第二个问中:“如何重写带 copy 关键字的 setter”,个人认为,最好在 ```` _name = [name copy]; ```` 之前再加一个对copyWithZone:响应的判断,如: ```` if ([name respondsToSelector:@selector(copyWithZone:)]) { _name = [name copy]; } ```` 不然如果真的有童鞋在使用的过程中传入一个没有服从NSCopying协议的对象,例如UIView什么的(即使有黄色警告,但如果被忽略掉的话。。。),就会造成崩溃。 您认为呢?

32. objc使用什么机制管理对象内存? 1、通过 retainCount 的机制来决定对象是否需要释放。 2、每次 runloop 的时候,都会检查对象的 retainCount,如果retainCount 为 0,说明该对象没有地方需要继续使用了,可以释放掉了。 第2句应该这么说: 其实是每次release时候检查retainCount减一,当为0时候释放对象。 然后再说release对象的各种情况: 一、对象成员变量 1、这个对象dealloc时候,成员变量objc_storeStrong(&ivar,nil) release 二、局部变量变量的释放 分情况: 1、strong obj变量,出了作用域{},就objc_storeStrong(obj,nil) release对象; void objc_storeStrong(id *location, id obj) { id prev...

**所有 autorelease 的对象,在出了作用域之后,会被自动添加到最近创建的自动释放池中** 为什么需要出作用域后加入,而不是`[obj autorelease]`调用的时候?