-
标示符
__func__的内容是当前编译代码的函数名 -
为什么UI控件要用weak?因为当ui控件添加到父控件中时,父控件的subviews数组会有强指针指向这个对象,就可以保证这个对象不会被销毁,再搞一个属性引用这个对象,用弱引用就可以了。这样在UI控件对象从其父控件移除时指向他的弱指针也会释放。如果用强指针,那么指向控件的内存空间不会被释放,那么就会内存泄漏。
-
了解 UIControl
-
[self.view viewwithtag:]; -
图片放在文件根目录下和放在Assets.xcassets下的区别?Assets无法通过
imagewithcontentsofFile来加载图片,因为拿不到路径。放在Assets中的图片最后会压缩在Assets.car中。 -
imageNamed:内存无法清理,用地址加载的图片,内存 可以清理。
-
通过toolbar添加毛玻璃效果。
-
32位颜色值 18位 12位
-
[uibutton buttonwithtype:] -
懒加载
-
layoutSubviews方法,用于布局子控件(可以拿到frame)。需要调用
[super layoutSubviews] -
创建对象用
init和initwithframe方法都会调用initwithframe方法,所以只需要实现后者即可。 -
xib加载方式
[nsbundle mainbundle]loadnibnamed -
如果view从xib中加载,就会调用
initwithcoder:方法(当解析一个文件的时候会调用) -
如果子控件是从xib中创建,是处于未唤醒状态,如果要操作其中的view,例如添加子控件,需要调用方法
awakeFromNib。该方法会在xib被加载完成后调用 -
重写button使得它的图片和名字位置改变,可以重写
titleRectForContentRect或者可以在layoutSubviews中修改子控件的位置。 -
分类写一个image的图片拉伸保护。
-
利用kvc修改对象的私有变量的值。
-
kvo [对象 addobserver]添加监听
-
代理声明为weak是为了解决循环引用
-
scrollview做内容缩放,1.实现代理
viewForZoomingInScrollView2.设置缩放比例maximumZoomScale和minimumZoomScale
*[self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]让所有对象执行这个方法
暴风截图2016113017562296.jpg
-
设置tableview估算高度,能够使得首次进入时,调用tableview的高度代理方法次数减少。且会先调用创建方法,再调用高度方法。
-
iOS8之前手动设置cell高度时,需要手动设置文字的最大宽度,但是这个值只需要设置一次,所以可以在cell的
-awakeFromNib方法中设置这个参数。 -
建立一个宏,只在debug的情况下输出打印。
-
在pch文件中加上#ifdef OBJC 这样在导入.c文件时,才不会因为在.c中引用oc的库而报错。
-
+(void)load当类被加载到内存当中就会调用此方法。可用于创建单例,即在一运行程序时候就创建。 -
从iOS7开始,系统提供了两种管理状态栏的方式:
1.通过UIViewController管理每一个页面的状态栏。
-preferredStatusBarStyle
-prefersStatusBarHidden
2.通过UIApplication管理,即统一管理。 -
UIApplication单例,可以管理网络状态,app旁的红色小图标,状态栏,打开一个网页等。
-
-loadView方法的作用。好处是什么?想想xib直接创建一个tableview是怎么实现的?
暴风截图201612410081798.jpg
-
transform属性了解
-
UITouch用于记录触摸的位置,时间,阶段。
-
NSSet和NSArray类似,前者无序。
-
如果父控件不能接触触摸事件。那么子控件也不能
-
-setNeedsDisplay重绘系统自动帮你调用drawRect,并且创建上下文 -
CADisplayLink 是的setNeedsDisplay和drawRect在同一时间调用。
*对比UIView和CALayer,前者可以响应事件,因为继承UIRespond -
读文章《自增ID配置》














网友评论