打算写好久了一直没开始,希望这是个良好的开始。第一次写些简单的吧。
iOS开发中字体大小
设计给的原型图上字体全是以px为单位,换成iOS开发中的font(pt):
pt=px/96 •72
所以开发中可使用宏:define FontSizeWithpx(px) px / 96 * 72
[self class],[self supClass],[super class],[super supClass]区别:
- 前两者容易区分:对应的分别为本类和父类
- 后两者容易混淆:super为编译指示器,编译器碰到super时会用本对象去调用其父类中的该方法。所以[super class],[super supClass]输出分别为本类和父类;
用weak还是strong
-
为什么从xib或storyBoard拖线的UI控件属性为weak?
UI控件默认用weak,根源是苹果希望这样这些UI控件的父View来强引用它们,而viewController只需要强引用viewController.view成员,则可间接的持有所有UI控件。这样做的好处是:在以前,当系统收到Memory Waring时,会触发ViewController的ViewDidUnload方法,这样的弱引用可以让整个View整体得到释放,也更方便冲重建时整体重新构造
-
自己代码写用weak还是strong?
UI控件用weak还是strong都可以。当UI控件是weak时,它的引用计数是1,持有它的是它的superView,当UI是strong时,它的引用计数是2,持有它的一个是superView一个是strong指针。但UI控件不会持有别的对象,所以什么情况下用strong都没问题。自己写的view成员,最好用strong,因为用weak会有额外的系统维护开销。另外还得注意在赋值前要添加到父view上,否则会提前释放。
block传递变量(值传递或指针传递)
int a=3;
NSString *str=@“LZ";
void(^block)()=^{
NSLog(@"%d",a);
NSLog(@"%@",str);
};
a=5;
str=@“NN";
block();
打印结果为:3,LZ。
__block int a=3;
static NSString *str=@"LZ”;
void(^block)()=^{
NSLog(@"%d",a);
NSLog(@"%@",str);
};
a=5;
str=@“NN";
block();
打印结果为:5,NN。
总结:
如果是局部变量,block是值传递;
如果是静态变量或全局变量或__block,block是指针传递
结语
第一次分享,希望多多指教。也希望自己能长久坚持下去。