ios 周刊第六期读唐巧书总结

一.题外话

为什么要读这本书呢?唐巧是国内知道的认真写博客的为数不多的大牛,当然,我也不知道他有多厉害,但是看他写博客的进度就知道他对技术的热情。其实现在技术圈子也是分三教九流的,我加过很多群,但是群里都是一些伸手党,问一下简单的东西,真正用心和你探讨问题的很少,当然有的太简单了,但是,太有深度的人家又看不上我,所以,我只能被嫌弃。

1.UIWebView和oc相互调用

在实际项目中我也遇到过js和oc交互的地方。一个是在webView页面响应按钮,二个是接收webView里面的数据。参考iOS第四期。

接收webView的按钮的做法很简单:就是在这个按钮里面加一个非法的链接,然后在webView的代理方法shouldstartLoadWithrequest 里面去判断是否是我们自定义的链接,是,就做相应的逻辑处理。

第二个问题:获取用户在html5页面交互产生的数据,我之前的做法是包含在我自定义的非法链接里面,但是,我们这个链接要分享到微信,微信打开是没问题的,但是用浏览器打开有bug,因为我们定义了一个非法的链接,会不断的循环。

最后我的解决方案是:让js端新建一个空白的透明的 iFame,将我们需要的参数放在iFrame.src。但是,在唐巧的书里面也要更好的解释,将需要的参数以JSON的形式传递,

2.UIWindow

对于这个我们接触的很少,他是应用最顶层的容器,通常只有一个UIWindow,但是,有些时候掉哟系统的控件如UIAlertView,ios系统为了保证UIAlertView在所有的界面之上,会临时创建一个新的UIWindow,通过设置UIWindowLevel,让UIAlertView盖在最顶层。

那么什么是WindowLeVel,它又三种取值,UIWindowLevelNormal,UIWindowLebelAlert,UiWindowLevelStatusBar,默认是normal,当系统需要在上面覆盖UIAlertView时候就是alert,但是在实际中,不止这3个值。

3.oc对象模型

每个类都是一个对象,指向另一个类的实例,这个类就是元类,元类的isa指向根元类,根元类指向自己。

动态创建对象

1.使用objc_allocateClassPair创建新的类

2.使用class_addMethod为类增加新的方法

3.使用objc_registerClassPair注册新的类

4.使用objc_getClass 获得对象的isa指针所指向的对象

系统提供的kvo就是利用了修改isa指针的值。

SWizzling

你可能感兴趣的:(ios 周刊第六期读唐巧书总结)