一、关于几个方法的巧用
//1.程序一启动的时候会把所有的类加载进内存
//加载类的时候调用,比main函数调用的还要早
+ (void)load;
//2.当第一次使用这个类或者子类的时候调用
//作用:初始化类。
+ (void)initialize;
- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingModeNS_AVAILABLE_IOS(7_0);
三、关于id与instancetype区别
使用和都是在程序运行时,动态匹对象的。在一个方法需要返回对象时一般不写具体的类而是使用和,当子类继承父类时就可以动态匹配而不至于使程序崩溃。
id不可以调用点语法,但可以调用对象的set、get方法,而且是可以调用任何对象的set、get方法,当这个对象没有set、get方法时,编译器是不能帮我们检查错误。
instancetype是可以调用点语法的,而且当方法不存在时,编译器是可以帮助我们检查错误的。
四、给只读属性赋值的技巧
遇到这种情况有两种方法可以解决:
方法一:使用kvc
[selfsetValue:tabBarforKeyPath:@"tabBar"];
方法二:调用底层的消息机制
objc_msgSend(self,@selector(setTabBar:),tabBar);
两种方法的本质都是runtime机制,其实kvc执行时就是调用的方法二的方法,在xcode7之后苹果原则上是不推荐使用id objc_msgSend(idself,SEL op, ...)方法的,需要在xcode中设置。方法如下:
五、设置根据设置Button大小的方法。
方法一:
拿到当前的背景图片,根据图片的大小设置Button的大小
self.pushButton.frame =CGRectMake(
btnX,
btnY,
self.pushButton.currentBackgroundImage.size.width,
self.pushButton.currentBackgroundImage.size.height
);
拿到当前设置的图片,根据图片的大小设置Button的大小
self.pushButton.frame =CGRectMake(
btnX,
btnX,
self.pushButton.currentImage.size.width,
self.pushButton.currentImage.size.height
);
方法二:sizeToFit:默认会根据按钮的背景图片或者image和文字计算出按钮的最合适的尺寸。
[self.pushButtonsizeToFit];
七、xcode中好用的插件
1.插件
对项目中图片提供自动提示功能的插件:KSImageNamed-Xcode-master
提供快速创建自动注释:VVDocumenter-Xcode-master
查看xcode中已经安装的插件:使用Alcatraz,https://github.com/supermarin/Alcatraz;
2.使用介绍:
(1)KSImageNamed-Xcode-master的使用 安装该插件后,会对文件中图片进行智能提示。
(2)VVDocumenter-Xcode-master能提供快速注释只要在需要进行注释的地方敲三个斜杠(即///),就能根据环境提供以下两种格式的注释。
(3)安装完成重启Xcode如果出现提示框,请选择Load Bundle;
进入Xcode,在Window-Package Manager打开Alcatraz;
在Alcatraz页面选择installed就可以看到你安装的插件
也可以直接进入插件目录看:sudo open /Users/你的用户名/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins
七、interactivePopGestureRecognizer