自己遇到的几个问题,跟大家分享一下

1 xib文件的构成分为哪3个图标?都具有什么功能。



答: 

1 、File’s Owner 是所有 nib 文件中的每个图标,它表示从磁盘加载 nib 文件的对象;

2、 First Responder 就是用户当前正在与之交互的对象;
3 、View 显示用户界面;完成用户交互;是 UIView 类或其子类。


2.TCP和UDP的区别

答: TCP全称是Transmission Control Protocol,中文名为传输控制协议,它可以提供可靠的、面向连接的网络数据传递服务。传输控制协议主要包含下列任务和功能:
* 确保IP数据报的成功传递。
* 对程序发送的大块数据进行分段和重组。
* 确保正确排序及按顺序传递分段的数据。
* 通过计算校验和,进行传输数据的完整性检查。
TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
简单的说,TCP注重数据安全,而UDP数据传输快点,但安全性一般
【TCP与UDP的区别】

        TCP 1.面向连接(要进行三次通信才能连上)
            2.占系统资源较多,结构稍复杂
            3.流模式
            4.保证数据准确,保证数据顺序,不丢包
        UDP 1.面向非连接(不需要连接,直接发,ping,QQ即时通讯)
            2.占系统资源较少,结构简单
            3.数据报模式
            4.有可能数据不准、丢包


3. Objective-C的优缺点。


答:objc优点:
1). Cateogies
2). Posing
3). 动态识别
4).指标计算
5).弹性讯息传递
6).不是一个过度复杂的 C 衍生语言
7).Objective-C 与 C++ 可混合编程


objc缺点:
1).不支援命名空间
2).不支持运算符重载
3).不支持多重继承
4).使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。


Posing,顾名思义,意思是“冒充”,它跟categories类似,但本质上不一样,Posing存在的目的在于子类可以冒充父类,使得后续的代码无需把父类修改为子类,就可以很方便的让父类表现成子类的行为,从而实现非常方便的冒充,这在一般的语言中是难以想象的。
       它允许你扩展一个class,并且全面的冒充这个super class,比如:你有一个扩展NSArray的NSArrayChild对象,如果你让NSArrayChild冒充NSArray,则你程序代码所在的NSArray都会自动替换为NSArrayChild。注意,这里不是指代码替换,而是NSArray所在地方的行为都跟NSArrayChild一样了。


1 Fraction *frac = [[Fraction alloc]initWithNumeration:3:denominator:4];  
2     [frac print]; //此时输出:Fraction: 3/4  
3  
4  
5     //make FractionChild posing as Fracition,注意:poseAsClass这个方法是NSObject的一个内置方法,用于子类posing父类。  
6  
7     [FracitonChild poseAsClass [Fraction class]];  
8  
9  
10     Fraction *frac2 = [[Fraction alloc]initWithNumeration:3:denominator:4];  
11     [frac2 print]; //此时输出:FractionChild: 3/4,此时的Fration表现行为便被FractionChild冒充了 


动态识别:


1.多态:相同接口,不同的实现


2.动态类型识别


-(BOOL)isKindOfClass:classObj  是否是classObj类或其子类
-(BOOL)isMemberOfClass:classObj是否是classObj的实例
-(BOOL)respondsTosSelector:selector  类中是否有这个方法
NSClassFromString(NSString*);由字符串得到类对象
NSStringFromClass([类名 Class]);由类名得到字符串


3 动态加载:运行时加载新类


iOS 弹性消息传递
在iOS中调用一个方法,其实是调用一个方法实现的函数指针并传给他对象实例指针,一个Selector,还有函数用到的参数。在Objective-C 中,每一个方法调用其实都是转换成了调用objc_msgSend方法。


4,写一个”标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
答:
#define  MIN(A,B)((A)<= (B)?(A):(B))


懂得在宏中小心地把参数用括号括起来
我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?
least=MIN(*p++,b);
结果是:
((*p++)<=(b)?(*p++):(b))


这个表达式会产生副作用,指针p会作两次++自增操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值