项目中小知识点杂记

打算写好久了一直没开始,希望这是个良好的开始。第一次写些简单的吧。

iOS开发中字体大小

设计给的原型图上字体全是以px为单位,换成iOS开发中的font(pt):
pt=px/96 •72


pt-px-ps.png

所以开发中可使用宏: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是指针传递

结语

第一次分享,希望多多指教。也希望自己能长久坚持下去。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,652评论 1 23
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,328评论 30 472
  • 1.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令伟阅读 4,687评论 0 10
  • 1、截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出它们 ...
    强子ly阅读 8,167评论 8 46
  • 妹妹作的第一首诗 在这里记念珍藏 咏月 李俊煜(9岁半) 指导:杨竚老师 慧芳 遥挂青云端 银光泻万里 志若千里马...
    慧芳王阅读 1,085评论 0 0