我问个他问我怎么了回来又把这问题删了就被删,试一下先

今天面试iOS被四个问题难到了。。 - CSDN博客
今天面试iOS被四个问题难到了。。
第一个问题:如果你的项目中有很多个类,都需要归档和解档,你该怎么办。。
第二个问题:如何给NSArray NSNumber 这些类簇的前端类增加一个属性
第三个问题:写项目的时候,一般服务器的接口,或者一些经常用到得字符串,他问我应该放在哪里,我说放在预编译文件里面,他说不好。。说应该放在外部文件中,然后用extern。这个我不太明白。
第四个问题:你用过真机测试吧,给我概述一下数据签名
于是,今天下去之后上网搜了一下资料,决定把着四个问题解决掉
先说第一个问题。第一个问题,我想到的就是给需要归档和解档的类设置一个父类,在父类里面实现NSCoding的协议,可是每个子类的属性都不一样,,那该怎么办呢??在网上查了一下,看到一篇自动归档和解档的文章,于是就试着文章上的代码敲了一下果然成了。在父类里面实现如下代码即可,用的是运行时概念
(id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super init]) {
Class c = self.class;
while (c&&c!=[NSObject class]) {
unsigned int count = 0;
Ivar *ivars = class_copyIvarList(c, &count);
for (int i = 0; i& i++) {
NSString *key = [NSString stringWithUTF8String:ivar_getName(ivars[i])];
id value = [aDecoder decodeObjectForKey:key];
[self setValue:value forKey:key];
c = [c superclass];
free(ivars);
return self;
(void)encodeWithCoder:(NSCoder *)aCoder {
Class c = self.class;
while (c && c!=[NSObject class]) {
unsigned int count = 0;
Ivar *ivars = class_copyIvarList(c, &count);
for (int i = 0;
Ivar ivar = ivars[i];
NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)];
id value = [self valueForKey:key];
[aCoder encodeObject:value forKey:key];
c = [c superclass];
free(ivars);
其实这段代码,我还是不太懂什么意思,后续在努力研究研究把。。
2. 第二个问也是要用到运行时,我只能说我对运行时了解的太少了。。。
在网上查了之后,发现iOS中有一种能动态添加属性的方法:关联
关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。
关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。
在类的定义之外为类增加额外的存储空间
使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。
关联是基于关键字的,因此,我们可以为任何对象增加任意多的关联,每个都使用不同的关键字即可。关联是可以保证被关联的对象在关联对象的整个生命周期都是可用的(在垃圾自动回收环境下也不会导致资源不可回收)。
创建关联要使用到Objective-C的运行时函数:objc_setAssociatedObject来把一个对象与另外一个对象进行关联。该函数需要四个参数:源对象,关键字,关联的对象和一个关联策略。当然,此处的关键字和关联策略是需要进一步讨论的。
关键字是一个void类型的指针。每一个关联的关键字必须是唯一的。通常都是会采用静态变量来作为关键字。
关联策略表明了相关的对象是通过赋值,保留引用还是复制的方式进行关联的;还有这种关联是原子的还是非原子的。这里的关联策略和声明属性时的很类似。这种关联策略是通过使用预先定义好的常量来表示的
下面举一个给NSArray 增加一个name属性的例子:
#import &Foundation/Foundation.h&
@interface NSArray (Associate)
@property (nonatomic,copy) NSString *
#import "NSArray+Associate.h"
#import &objc/runtime.h&
@implementation NSArray (Associate)
static char nameK
- (void)setName:(NSString *)name {
objc_setAssociatedObject(self, &nameKey, name, OBJC_ASSOCIATION_COPY);
- (NSString *)name {
return objc_getAssociatedObject(self, &nameKey);
这个还比较好理解,学习了之后就豁然开朗了。
第三个问题我实在体会不到,就先不写了
第四个问题,明天再研究吧。。。
本文已收录于以下专栏:
相关文章推荐
转载来自:/iOS-mt/p/4091090.html
1.搞清楚touch事件的传递(事件的响应链)
事件的响应(responder chain...
虽然已工作很长时间了,但是看到一些题,我还是会想起那些面试的时光,下面是一些面试的常见题型
1、为什么UIScrollView的滚动会导致NSTimer失效?
应该是因为UIScrollV...
原文出自:标哥的技术博客
前言面试题中有一些一般性的问题,通常是会问到的。面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解。所以下面的...
虽然说没有系统的学习过Spring MVC框架, 但是工作这么长时间, 基本上在WEB层使用的都是Spring MVC, 自己觉得Struts2也是一个不错的WEB层框架, 这两种框架至今自己还未有比...
今天去淘宝面试,问到了几个Struts、Spring、Hibernate的框架还有Tomcat运行机制等问题,汗  几乎不会答。1、Spring的线程安全问题:各位高手,是这样的。我用spring的方...
今天参加了一场面试,应该也算是我第一次正儿八经的技术面试。
感觉表现不是太好,问的虽然大多是关于基础的问题,但比较深入具体。而我花绝大多数时间复习的web方面的东西却几乎没有涉及到,这也算是我复习复习...
美国《财富》杂志的职场专栏作家安·费雪为职场人士列出了应对面试主考官常问的几大刁钻问题的方法。
  问题一:你愿意接受无酬的工作吗?
  这个问题的真正意思是“你以这份工作的热情度有多...
问:(左(外)连接)左连接查询主数据一定能查询到数据吗?
答:一定能?
答案是错误的,现在想想好傻,如果一定能查询到数据,连表查询条件有什么作用呢?
以下有两张表做了测试:
user 表,里面有两条数...
以今天为基准,显示 今天/昨天/前天(昨天12:12)
离今天一周之内的显示 星期几(星期四)
离今天一周之外的显示 具体日期(15-09-05 12:33)新手处女座,直接上代码//
小型PC,pcDuino
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)网店推广 百度知道或搜搜问答(提供问答范文)三元一稿先试试-品牌/产品推广-猪八戒网
扫一扫,随时随地挑选人才和公司
无线工作台,管理更高效更自由
微信公众号
随时掌握一手资讯
网店推广 百度知道或搜搜问答(提供问答范文)三元一稿先试试
网店推广 百度知道或搜搜问答(提供问答范文)三元一稿先试试
项目金额:¥24
需求详情:
1、问与答必须用不同账号 ,问与答不能被系统删除。不能用同一个账号过多的问或者过多的答,要用不同的账号变换开来问和答。
2、一问一答为一稿,必须选择自己的答复为最佳答案。
3.回答问题需要客观的答案,不求数量,只求质量,并且回答的话语里面必须要包含附件里的关键词,否则视为不合格。
交稿形式:截图并附带所发布链接为证,截图必须要把你自己的ID一起截图下来,以免被他人盗取。切记!
很简单的,轻轻松松就能赚钱噢!!!
提问范文.txt
凯西cassie
[url=/z/q.htm]/z/q.htm[/url]
[url=/z/q.htm]/z/q.htm[/url]
[url=/z/q.htm]/z/q.htm[/url]
[url=/z/q.htm]/z/q.htm[/url]
[url=/z/q.htm]/z/q.htm[/url]
近3个月成交 54笔
|好评率 98%
擅长 营销全案,SEO,祈福开运,市场/公关
项目周期: 0天
近3个月成交 119笔
|好评率 99%
擅长 云服务,域名,后端开发,前端开发,营销文案,电商代运营,电商设计,测试服务
项目周期: 0天
近3个月成交 0笔
|好评率 100%
擅长 策略策划,网络营销,新媒体营销,网络推广,营销文案
项目周期: 0天
近3个月成交 3笔
|好评率 99%
擅长 媒体营销,新媒体营销,营销渠道管理,精准营销,营销文案,通讯服务,电商推广,营销全案,市场/公关,新媒体代运营
项目周期: 0天
近3个月成交 0笔
|好评率 100%
近3个月成交 0笔
|好评率 0%
擅长 网络营销,新媒体营销,网络推广
近3个月成交 12笔
|好评率 100%
进行中的项目在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
先说背景:某日我测试时一下子删了很重要的东西,一篇重要的文章,立即后悔了,但是却发现没有“回收站”,数据表是直接物理删除的,我的内心是崩溃的……
此后无论做什么,我都会记住这个深刻的教训,给自己留一颗后悔药,总会在建表时留一个is_del字段以表示是否被删除了……,所有的删除不直接物理删除,然后我就很嘚瑟,再也不怕误删了……
但是现在碰到了一个麻烦,某个字段是唯一索引的,而我暂时不想用这个数据就把它删了,当然不是真删了,用is_del标示而已,但是问题就是我现在要添加的一个数据和这个“被删除”行里面的唯一字段重复了,导致我现在如果不真的把那个删了的话我就添加不了这行数据了。
我想到了两个解决办法:不知道合不合理:
1:删除时将要删除的数据“剪切”到另外一张“回收站临时表”
2:只剪切要删除的行的部分数据,比如上文中的唯一索引那个字段,将当前的冲突字段数据擦除,放到另外一张临时表上面,用主键对应就可以了。
我总觉得是不是我的想法有问题,总感觉欠妥,但又不知道怎么做,希望有经验的大神解答指点下哈?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一般情况下 唯一索引 只能给id nickname 之类的字段
一条记录is_del的时候id nickname 之类的被使用了就是被使用,不应该再出现,拿nickname来说,这条记录被删除,应该被当作封禁而不是常规的删除,某个nickname被删或者被封禁以后这个字段不应该再被拿出来使用。
删除的时候先把这个记录复制到到回收站`被删除数据备份`表可以做,但是更好的做法应该是处理你的唯一索引,确定你这个字段是否真的需要唯一索引
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果要足够优化的解,那自然是移到其他表去,这样既不妨碍当前表数据,又利用当前表高效的工作。如果图方便,可以弄个组合索引,将is_del也纳入其中。
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:提示信息 -
iMP3随身影音
后使用快捷导航没有帐号?
请完成以下验证码
抱歉,指定的主题不存在或已被删除或正在被审核
客观 包容 敏锐 专业
iMP3.net 随身数码影音
推广合作:139
莫凡配件:135
All Rights Reserved.}

我要回帖

更多关于 他问我怎么了回来又把这问题删了 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信