您的位置:首页 > 移动开发 > IOS开发

iOS学习之——学习中遇到的一些常用的方法及一些注意事项(持续更新)

2016-05-25 11:28 1001 查看
常用的方法(注意事项):

rangeOfCharacterFromSet: 只搜索给定字符集的第一个字符

字符串截取到第n位 (substringToIndex: n)(第n位不算再内)

时间比较函数

- (BOOL)isEqualToDate:(NSDate *)otherDate;

// 与otherDate比较,相同返回YES

- (NSDate )earlierDate:(NSDate )anotherDate;

// 与anotherDate比较,返回较早的那个日期

- (NSDate )laterDate:(NSDate )anotherDate;

// 与anotherDate比较,返回较晚的那个日期

[NSBundle mainBundle] //找到程序的目录

[string stringByReplacingOccurrencesOfString:@”-“withString:@”/”]; 将string中 “-” 替换为 “/”

[xx componentsSeparatedByString:@”“] 将string字符串切割成array数组,从”“处切割。

[params setObject:b forKey:a]; 将b赋予a 字典 a:b

eg:[params setObject:19 forKey:@”age”];

[obj isKindOfClass:[NSDictionary class] 判断前后是否为同一个类型;返回bool值

[self getObjectData:obj] 将obj对象的属性值及名称赋予前者

(void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)index方法。这样我们可以通过数组下标来读写相应元素。

pathForResource:获取程序运行时目录

rangeOfString:获取指定短字符串在长字符串中的开始,结尾索引值;

stringWithContentsOfFile:按行读取文件

从字典映射到一个对象,这是KVC中的一个方法所提供的,这个方法就是 setValuesForKeysWithDictionary

-(id)dateByAddingTimeInterval:(NSTimeInterval)seconds

返回以当前NSDate对象为基准,偏移多少秒后得到的新NSDate对象。

使用boundingRectWithSize计算内容高度

segue.destinationViewController;//拿到目标控制器(segue跳转的后者)

segue.sourceViewController;(segue跳转的前者)

[self.view endEditing:YES]; 关闭键盘

resignFirstResponder 关闭键盘

becomeFirstResponder 打开键盘

self.leftView = label;

self.leftViewMode = UITextFieldViewMode; view左边增加一个小图标的实现

(CGSize)sizeWithAttributes:(NSDictionary *)attrs; 获得字体的尺寸

处理superView和subView往往用到几个方法:

removeFromSuperview;//调用者为subView

insertSubview:atIndex;//调用者为superView

reloadData 刷新显示数据(UITableView)

[tableView deselectRowAtIndexPath:indexPath animated:YES];

// 不加此句时,在二级栏目点击返回时,此行会由选中状态慢慢变成非选中状态。

// 加上此句,返回时直接就是非选中状态。

sortedArrayUsingComparator:^NSComparisonResult(id familyDate1, id familyDate2) {}

如果你期望的是值小的在前而值大的在后,则可以在比较的时候返回NSOrderedAscending(-1),否则,就是NSOrderedDescending(1)。

conformsToProtocol:@protocol()是用来检查对象是否实现了指定协议类的方法obj_two conformsToProtocol:在代理调用是,检查其代理是否符合协议,或者使用 respondsToSelector检查对象能否响应指定的消息,是避免代理在回调时因为没有实现代理函数而程序崩溃的一个有效的方式

将一个UIView显示在最前面只需要调用其父视图的 bringSubviewToFront()方法。

将一个UIView层推送到背后只需要调用其父视图的 sendSubviewToBack()方法。

UIImageView 中填充图片

[imageView setImage:[UIImage imageNamed:@”desc_bn.png”]];

获取当前屏幕中present出来的Viewcontroller

- (UIViewController *)getPresentedViewController

{

UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;

UIViewController *topVC = appRootVC;

if (topVC.childViewControllers.count>0) {

topVC = [topVC.childViewControllers lastObject];

}

return topVC;

}

_objc_rootRetainCount(obj) 可获取指定对象的引用计数数值。

函数原型:void *calloc(size_t n, size_t size);

功 能:在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。

与malloc的区别:

calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。

注意事项

1. imageNamed带有缓存,通过imageName创建的图片会放到缓存中

imageWithContentsOfFile不带缓存

2. 自定义按钮设置在返回按钮是无效的(self.navigationItem.backBarButtonItem)

3. 状态栏20;导航条44(大小)

4. 当视图对象的userInteractionEnabled设置为NO的时候,用户触发的事件,如触摸,键盘等,将会被该视图忽略(其他视图照常响应),并且该视图对象也会从事件响应队列中被移除。 当userInteractionEnabled设为YES时,则事件可以正常的传递给该视图对象。 userInteractionEnabled的属性默认值就是YES。

5. 当使用NSLog中%@输出一个对象的时候,他会调用对象的description方法

重写description方法 –输出自己对象中的内容

6. objectForKey: 和 valueForKey: 在多数情况下都是一样的结果返回,但是如果 key 是以 @ 开头,valueForKey: 就成了一个大坑,建议在 NSDictionary 下只用 objectForKey: 来取值。

7. 控制器的view是延迟加载的:用到时再加载

可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载

控制器的view加载完毕就会调用viewDidLoad方法

懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法.

注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化

8. ios字典和数组遍历时不能执行removeobject操作,不然会crash掉

9. control reaches end of non-void function

它的意思是:控制到达非void函数的结尾。就是说你的一些本应带有返回值的函数到达结尾后可能并没有返回任何值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: