IOS面试题object-c 21-30

03-15 1111阅读 0评论
21、简述IOS static 关键字的作用?

函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,

IOS面试题object-c 21-30,IOS面试题object-c 21-30,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,访问,第1张
(图片来源网络,侵删)

因此其值在下次调用时仍维持上次的值;

2.在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

3.在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明 它的模块内;

IOS面试题object-c 21-30,IOS面试题object-c 21-30,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,访问,第2张
(图片来源网络,侵删)

4.在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

5.在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的static 成员变量。

22、@property 后面可以有哪些修饰符?

@property后面总的有如下修饰符:


readWrite,readOnly,assign,copy,retain;


readWrite:系统会自动帮我们生成getter和setter方法;

IOS面试题object-c 21-30,IOS面试题object-c 21-30,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,访问,第3张
(图片来源网络,侵删)


readOnly: 系统只会帮我们生成getter方法;


assign:表示直接赋值,适用于基本数据类型:NSInteger和CGFolat


copy:使用于NSString,与NSString一起用表示浅拷贝,与NSMutableString表示深拷贝。


retain:使用于除了assign和copy之外的NSObject的子类,例如NSArray,UIView,NSDictionary等

控件用weak修饰,delegate用assign和weak修饰

23、解释Object-C什么情况使用 weak 关键字,相比 assign 有什么不同?

在ARC中,出现循环引用的时候,必须要有一端使用weak,比如:自定义View的代理属性

已经自身已经对它进行一次强应用,没有必要在强引用一次,此时也会使用weak,自定义View的子控件属性一般也使用weak; 但b是也可以使用strong


weak当对象销毁的时候,指针会被自动设置为nil,而assign不会* assigin 可以用非OC对象,而weak必须用于OC对象

 24、 如何Object-C让自己的类用 copy 修饰符?

想让自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。

如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。

实现 NSCopying 协议。该协议只有一个方法:- (id)copyWithZone:(NSZone *)zone;。

实现 NSMutableCopying 协议。该协议只有一个方法:- (id)mutableCopyWithZone:(nullable NSZone *)zone;

25、简述如何重写带 copy 关键字的 setter?
重写copy的setter方法时候,一定要调用一下传入的对象的copy方法,然后在赋值给该setter的方法对应的成员变量
26、 @protocol 和 category 中如何使用 @property?

在protocol中使用property只会生成setter和getter方法声明,我们使用属性的目的,是希望遵守我协议的对象的实现该属性


category 使用 @property 也是只会生成setter和getter方法的声明,如果我们真的需要给category增加属性的实现,需要借助于运行时的两个函数


objc_setAssociatedObject

objc_getAssociatedObject

 27、Weak属性需要在dealloc中置nil么?
不需要,在ARC环境无论是强指针还是弱指针都无需在deallco设置为nil, ARC会自动帮我们处理
28、 自动合成属性实例变量后,@synthesize还有哪些使用场景?​
@synthesize主要就是用来生成setter,getter方法的实现,在@property被增强之后,其实已经很少使用@synthesize了,你知道@synthesize的其他使用场景吗? 能给我介绍一下吗?

如果你听懂了,感觉面试官说的很有道理,可以说点赞美的话.

29、 Object-C中向nil对象发送消息将会发生什么?​

在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用:


如果一个方法返回值是一个对象,那么发送给nil的消息将返回0(nil)。例如:Person * motherInlaw = [ aPerson spouse] mother];

如果spouse对象为nil,那么发送给nil的消息mother也将返回nil。


如果方法返回值为指针类型,其指针大小为小于或者等于sizeof(void*),float,double,long double 或者long long的整型标量,发送给nil的消息将返回0。


如果方法返回值为结构体, 发送给nil的消息将返回0。结构体中各个字段的值将都是0。


如果方法的返回值不是上述提到的几种情况,那么发送给nil的消息的返回值将是未定义的。

30、Objec-C 向对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?

该方法编译之后就是objc_msgSend()函数调用.如果我没有记错的大概是这样的.

((void ()(id, SEL))(void )objc_msgSend)((id)obj, sel_registerName("foo"));


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1111人围观)

还没有评论,来说两句吧...

目录[+]