IOS近期公司的面试题

  1. 怎么修改只读(readonly)属性变量
    使用KVC可以修改 kvc就是键值编码(key-value),可以通过指定的key获得想要的值value,而不是通过调用 Setter,Getter 方法访问

  2.KVO 除了能观察属性外,能不能观察对象
    不能观察对象

    KVO,即 Key-Value Observing, 它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察者的对象的属性被修改后,KVO就会自动通知相应的观察者了

    KVO是一个对象能过观察另外一个对象的属性的值,并且能够发现值的变化。这是一个对象与另一个对象保持同步的一种方法,即当另一种对象的状态发生改变时,观察对象马上做出反应。它只能用来对属性做出反应,而不会用来对方法或者动作做出反应。

    实现原理:当为某个对象属性注册监听的时候,该对象的 isa 指针就会指向一个中间类,而不是本来对象真实的类。所以说,对象的 isa 指针可以改变,我们的程序最好不要依赖 isa 指针。

    简言而之就是:

    1.当一个 object 有观察者时没动态创建这个 object 的类的子类

    2.对于每一个被观察的 property, 重写其 set 方法

    3.在重写的 set 方法中调用- willChangeValueForKey:和- didChangeValueForKey:通知观察者

    4.当一个 property 没有观察者时,删除重写方法

    5.当一个 boserver 观察任何一个 property 时,删除动态创建的子类

  3.block里面能不能修改静态变量

    能 __block 可以  ---> 为什么要用__block

    你可以指定引入一个变量为可更改的,即读-写的,通过应用__block存储类型修改修饰符。

    局部变量的__block的存储和register,auto,static等存储类型相似,但它们之间不兼容。

    __block 变量保存在变量共享的作用域范围内,所有的 blocks 和 block 副本都声明或创建在和变量的作用于相同范围内。所以,如果任何 blocks 副本声明在栈内并未超出栈的结束时,该存储会让栈帧免于被破坏(比如封装为以后执行)。同一作用域范围内给定的多个 block 可以同时使用一个共享变量作为一种优化, block 存储在栈上面,就像blocks本身一样。如果使用 Block_copy 拷贝了 block 得一个副本(或者在 objective-C里面给 block 发送了一条 copy 消息),变量会被拷贝到堆上面。所以一个__ block 变量的地址可以随时间推移而更改。

    使用 __block的变量有两个限制:

      1.它们不能是可变长的数组

      2.它们不能是包含有 C99可变疮毒的数组变量的数据结构

  4. 声明一个block

    声明 block

    int (^myblock) (int)

    说明:第一个 int 是 block 的返回值  myBlock 是 block 变量  第二个 int 是参数

在.h文件中
typedef void(^MyBlock)(int value);
@property (nonatomic,weak) MyBlock block;
 -(void)setMyBlock:(void(^)(int value)) block;

    

在.m文件中
-(void)setMyBlock:(void(^)(int value)) block {
    if (block) {
    self.block=block;
    }
}

  5. 用coredata的时候,如果用户更新个人信息了,怎么用代码来更新页面上显示的个人信息

    1.当用户更新了自己的用户信息,保存更新数据到数据库

    2.当用户返回更新页面时先查询数据库中的内容,显示到页面上就可以了。

    查询数据库代码:

    

//创建请求
NSFetchRequest *request = [[NSFetchRequest alloc] init];
// 创建实体描述
NSEntityDescription *entity = [NSEntityDescription entityForName:ENTITY_NAME

inManagedObjectContext:content];
[request setEntity:entity];
[request setReturnsObjectsAsFaults:NO];
//设置谓词
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"self = %@", data]; [request setPredicate:predicate];
//执行请求
NSArray *dataArray = [content executeFetchRequest:request error:nil];
//修改信息
if ([dataArray count] > 0) {

TaskTypeEntity *taskTypeEntity = [dataArray objectAtIndex:0]; taskTypeEntity.color = data.color;
taskTypeEntity.status = data.status;
taskTypeEntity.image = data.image;

taskTypeEntity.name = data.name; BOOL result = [content save:nil];
if (result) {

    NSLog(@“ "); 

     }else{

        NSLog(@" ");
     }

}

   保存数据成功之后,在个人信息显示页面重复上述步骤查询之后直接更新数据

时间: 2024-10-09 22:21:22

IOS近期公司的面试题的相关文章

100个iOS开发/设计程序员面试题汇总,你将如何作答?

100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0)   无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文作者Cameron Banga从编程.设计.App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总.一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备. 常见问题 你昨天

iOS谋职之OC面试题

iOS求职之OC面试题 IOS求职之OC面试题 1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #import""有什么区别? #import能避免头文件被重复包含的问题: 1) 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 使用include要注意重复引用的问题: class A

iOS 加入公司开发者团队进行真机测试

发现大部分博客介绍的都是私人真机测试方法,没找到具体的公司团队开发真机测试方法. 而从这周开始就离开iOS应用软件开发,进入游戏开发行业了,今天能记得的iOS知识以后估计会忘光,所以skipop还是总结一个来给自己备忘: 1.一般会先用公司邮箱去申请appid,然后让公司iOS团队有权限的管理员将这个邮箱加入公司的开发者团队. 2.自己的公司邮箱会收到苹果的邀请邮件,接受即可. 3.告诉公司管理员自己的真机设备号,让管理员将此设备加入开发者团队的设备列表. 4.用Mac的钥匙串程序生成一个文件(

iOS接地气的面试题

群里一个兄弟不知道从哪弄的面试题,这个个人感觉蛮接地气的,没有神马黑魔法,但在面试过程却能比较好地达到考察候选人的作用,当然能不能通过这些考察好,要看面试官的能力了,面试本就是一个交流的过程,仅靠做几个题正确与否就决定一个求职者是否合格岗位需求,显示有失偏颇,我们要招的是人,人是有创造力的动物,会思考.会学习.面试过程更多地是关注你的的思维方式.情商 第一部分 property中,retain,assign,还有什么来着,就这个几个的意思 frame 和 bounds 的关系和使用场景 NSTi

ios开发工程师常见面试题汇总

经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 2.#import 跟#include 又什么区别,@class呢: #import<> 跟 #import""又什么区别? 3.属性readwrite,readonly,

苹果iOS苹果公司的手机用户都有权索赔

大家知道.手机中的操作系统(基础软件)存储在手机固(firm,ware)之中,一般而言,手机用户自己是不能修改的. 苹果iOS手机的系统后门(服务程序)也存储在手机固件之中.手机用户自己是无法删除的. 也就是说.手机后门是在手机出厂时就存在于手机之中了.用户买手机的同一时候也把后门买了回来. 苹果公司最怕的就是广大用户知道这一事实.由于,广大苹果用户据此能够向苹果公司索赔! 扎德尔斯基说:"There are, however, some services running in iOS that

高级iOS开发工程师的面试题

1:CALayer与UIView的区别是什么? 两者最大的区别就是:涂层不会直接渲染到屏幕上: UIView是iOS界面元素的基础,所有界面元素都是继承于它,他的本身全是由CoreAnimation来实现的: 真正的绘图部分,是有CALayer类来管理的: 一个UIView上可以有n个CALayer,每个layer来显示一种东西,增强UIView的展现能力. 2:GCD GCD是苹果公司开发的一个较新的多核编程的解决办法. GCD是一个可以替代诸如NSThread等技术的很高效和强大的技术,完全

iOS两年前的面试题总结,现在的你还没掌握?

序言 这些面试题是两年前的标准了,虽然跟现在的面试需求显得相对简单了点,但是也是可以帮着梳理一下基础方面的知识的! 推荐一个QQ交流群:763164022 !群内有最近整理出来的面试题,以及一些书籍学习资料!也是为了给大部分还在做iOS开发的朋友一个交流圈子! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错的编程语言, Objective-C具

iOS数据结构与算法面试题合集

1.不用中间变量,用两种方法交换A和B的值 // 1.中间变量 void swap(int a, int b) { int temp = a; a = b; b = temp; } // 2.加法 void swap(int a, int b) { a = a + b; b = a - b; a = a - b; } // 3.异或(相同为0,不同为1. 可以理解为不进位加法) void swap(int a, int b) { a = a ^ b; b = a ^ b; a = a ^ b;