iOS NSObject
2016-03-16 09:21
323 查看
在Objective-C中,NSObject是所有类的基类,所有类都继承自它,我们可以通过继承NSObject为一个类添加自定义属性;
2.对于NSArray,我们也可以使用valueForKeyPath:但是因为array本身没有name属性,所以该方法会把数组中每个元素对象的name属性值添加到一个新的NSArray数组中返回;
3.字典对象和NSObject对象互转
4.通过KVC设置某个属性的值
该方式加载图片,加载好的图片会一直存放在内存中,不会释放,下次如果再使用同样的图片的时候不会重新加载,而是会直接用内存中的数据;需要注意的是,即使没有强指针类型的指针引用,图片也不会被销毁;
此方式不会使用缓存,只要没有强类型指针引用该image对象就会被销毁;
图片平铺:
图片剪切:
UIDevice类提供了一个单例对象,可以通过它获取一些设备想关的信息;比如电池电量值(batteryLevel),电池状态(batteryState),设备类型(model,比如iPod、iPhone),系统信息(systemVersion);
UIDevice会不间断的发一些通知
手动执行sugue流程:
1.[self performSegueWithIdentifier:@”login” sender:nil]; // Segue必须由源控制器执行,该perform方法需由控制器调用;self就是源控制器调用者,此方法做了三件事:
根据identifier去storyboard中找到对应的segue线,新建UIStoryboardSegue对象;
设置segue对象的sourceViewController为self;
新建并且设置segue的目标控制器;
2.controller自动调用sourceViewController的下面这个方法
sender就是performSegueWithIdentifier中传入的sender;
手动调用segue和自动类型segue,在跳转之前都会执行该方法;
3.调用segue对象的-(void)perform方法开始执行界面跳转
获取sourceViewController所在的UINavigationController;
调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转;
NSObject
1.除了通过点语法,还可以通过valueForKeyPath获取对象的某个属性值Person *person; // NSString *name = [person valueForKeyPath:@"name"];
2.对于NSArray,我们也可以使用valueForKeyPath:但是因为array本身没有name属性,所以该方法会把数组中每个元素对象的name属性值添加到一个新的NSArray数组中返回;
NSArray *arr; // NSArray *names = [arr valueForKeyPath:@"name"];
3.字典对象和NSObject对象互转
[obj setValuesFoKeysWithDictionary:dict]; // (KVC)将一个字典里面的key和value赋值给对象对应的属性;
[obj dictionaryWithValuesForKeys:@[@“name”, @“age”]]; // 将obj的name和age属性转换为一个字典;
4.通过KVC设置某个属性的值
[obj setValue:(id) forKeyPath:(NSString *)];
UIImage
加载图片有两种方式:[UIImage imageNamed:]; // 初始化
该方式加载图片,加载好的图片会一直存放在内存中,不会释放,下次如果再使用同样的图片的时候不会重新加载,而是会直接用内存中的数据;需要注意的是,即使没有强指针类型的指针引用,图片也不会被销毁;
[UIImage imageWithContentsOfFile:];
此方式不会使用缓存,只要没有强类型指针引用该image对象就会被销毁;
图片平铺:
[image stretchableImageWithLeftCapWidth:(NSInteger) topCapHeight:(NSInteger)]; [image resizableImageWithCapInsets:]; [image resizableImageWithCapInsets:(UIEdgeInsets) resizingMode:UIImageResizingModeStretch];
图片剪切:
// 根据rect切割image的一个区域生成新的image;CGImage中的rect的单位是像素,而UIKit中的单位是屏幕物理尺寸; CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, rect); // 转换 CGImageRef为UIImage; UIImage *newImage = [UIImage imageWithCGImage:imageRef];
UIDevice
通过通知可以监听设备旋转,电池电量改变,贴近脸部等;UIDevice类提供了一个单例对象,可以通过它获取一些设备想关的信息;比如电池电量值(batteryLevel),电池状态(batteryState),设备类型(model,比如iPod、iPhone),系统信息(systemVersion);
[UIDevice currentDevice]; // 获取此单例对象; [UIDevice currentDevice].systemVersion; // 判断当前运行的操作系统版本
UIDevice会不间断的发一些通知
UIDeviceOrientationDidChangeNotification // 设备旋转 UIDeviceBatteryStateDidChangeNotification // 电池状态改变 UIDeviceBatteryLevelDidChangeNotification // 电池电量改变 UIDeviceProximityStateDidChangeNotification // 近距离传感器(贴近脸部)
UIStoryboardSegue
UIStoryboardSegue分为两种,分别是自动执行的Segue和手动执行的Segue;identifier; // 唯一标识 sourceViewController; // 来源控制器 destinationViewController; // 目标控制器
手动执行sugue流程:
1.[self performSegueWithIdentifier:@”login” sender:nil]; // Segue必须由源控制器执行,该perform方法需由控制器调用;self就是源控制器调用者,此方法做了三件事:
根据identifier去storyboard中找到对应的segue线,新建UIStoryboardSegue对象;
设置segue对象的sourceViewController为self;
新建并且设置segue的目标控制器;
2.controller自动调用sourceViewController的下面这个方法
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;
sender就是performSegueWithIdentifier中传入的sender;
手动调用segue和自动类型segue,在跳转之前都会执行该方法;
3.调用segue对象的-(void)perform方法开始执行界面跳转
获取sourceViewController所在的UINavigationController;
调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码