1.系统类名前缀的含义
—–UI前缀,属于UIKit的框架,顾名思义,涉及到iphone的ui的东东,比如说UIView,UIViewController等等。构成了iphone上的程序主框架,就理解成iphone上特定框架吧。
—–NS前缀,NS是NextStep的缩写,框架我还不好确定,不过NSTimer,NSString这些类,可以算是一般的工具类,最最关键的,NS开头的类,都能响应经典的alloc,init,release这些消息(可以简单理解成函数,不过在objective-c里,叫消息),可以给空指针发消息,不会有任何的副作用。
—–CF前缀,属于Core Foundation框架,算是底层实现。很多NS的类,在CF里都能找到其实现类。比如说:NSxxx,在CF中可能就对应着CFxxxRef。在CF中,所有类的示例都是一个Ref(就是一个数),当这个Ref是空的时候,再调用CF的一些方法,就会引起严重错误。
当引起严重错误的时候,在ide的调试窗口中,会断点到到汇编代码,点继续运行后,还是会跳到相同地方。原因暂时还不明。
2.现有宏定义
#define MENU_HEIGHT 25
若需要使用宏定义计算frame,则需要先将宏定义中得数转成CGFloat
CGFloat = MENU_HEIGHT;
因为在计算过程中会出错 原因未知!!!
3.AFNetWorking使用错误:Request failed: unacceptable content-type: text/html
在AFURLResponseSerialization.m文件中修改为
self.acceptableContentTypes =[NSSetsetWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html”,nil];
4.UIWebView与JS通信主要使用以下方法
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
示例:
//获取当前网页的地址
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
//获取当前网页的标题
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
5.设置导航栏返回到上一级视图控制器返回按钮的文字
导航的返回按钮的加载原理:
1、如果B视图有一个自定义的左侧按钮(leftBarButtonItem),则会显示这个自定义按钮;
2、如果B没有自定义按钮,但是A视图的backBarButtonItem属性有自定义项,则显示这个自定义项;
3、如果前2条都没有,则默认显示一个后退按钮,后退按钮的标题是A视图的标题。
所以可以在A控制器中添加下列代码
UIBarButtonItem *returnButtonItem = [[UIBarButtonItem alloc] init];
returnButtonItem.title = @"返回";
self.navigationItem.backBarButtonItem = returnButtonItem
6.若字典中键对应的对象值为nil,则系统会从此字典中清除此键值对
7.获取当前视图中成为第一响应者的组件,并取消注册
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
注销一个视图view上的所有第一响应者
[view endEditing:YES];
8.如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据autoresizingMask属性的值自动进行尺寸调整,
自动调整子控件与父控件中间的位置,宽高。
self.autoresizingMask = UIViewAutoresizingFlexibleWidth;//这个常量如果被设置,视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变。
9.设置应用程序图标上的提示数目
iOS8之后需要获取用户授权
//得到当前iOS系统版本
float sysVersion=[[UIDevice currentDevice]systemVersion].floatValue;
//取得用户许可,用于在应用程序图标上设置提醒数字
if (sysVersion>=8.0) {
UIUserNotificationType type=UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound;
UIUserNotificationSettings *setting=[UIUserNotificationSettings settingsForTypes:type categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
}
[application setApplicationIconBadgeNumber:10];
10.safari跳转到指定网页
UIApplication *app=[UIApplication sharedApplication];
NSURL *url=[NSURL URLWithString:_addressText.text];//字符转URL
[app openURL:url];
11.剪贴板
// 1. 获取通用的剪贴板对象
UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
// 2. 定义一个字符串
NSString *copyString = @"hello world!";
// 3. 将字符串添加到剪贴板中,选中hello world 按cmd+c
[pasteBoard setString:copyString];
12.类对象的使用(判断一个类是哪种类型)
Class c = [任意类型对象(id类型) class];//获取该对象的真实类型
//类对象调用类方法
Class c = [Person class];
Person *p2 = [c new];
13.IOS中默认了几种漂亮的图片背景
viewFlipsideBackgroundColor
scrollViewTexturedBackgroundColor
underPageBackgroundColor
使用:
view.backGroundColor=[UIColor scrollViewTexturedBackgroundColor];
14.随机颜色的设置
CGFloat r=arc4random_uniform(255)/255.0;
CGFloat g=arc4random_uniform(255)/255.0;
CGFloat b=arc4random_uniform(255)/255.0;
15.loadView、viewDidLoad、viewWillAppear、viewDidAppear等的区别
loadView;
这是当他们没有正在使用nib视图页面,子类将会创建自己的自定义视图层。绝不能直接调用。
viewDidLoad;
在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。
viewWillAppear:
视图即将可见时调用。默认情况下不执行任何操作
viewDidAppear:
视图已完全过渡到屏幕上时调用
viewWillDisappear:
视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
viewDidDisappear:
视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
16.根据字符串类名创建对象
Class c = NSClassFromString(className);
UIViewController *vc = [[c alloc] init];
17.ios7+隐藏状态栏(自iOS7开始状态栏交给控制器管理)
在viewController中重写prefersStatusBarHidden方法返回YES
18.设置UITableView的分割线
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
19.增加UIScrollView或者UITableView的额外滚动区域
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 10, 0);
20.NSString截取字符串的三个方法
NSString *str = @"12345";
①NSString *subString2 = [str substringFromIndex:1]; //@"2345"
②NSString *subString13 = [str substringToIndex:4]; //@"1234“
③NSRange range4 = NSMakeRange(1, 4); NSString *subString34 = [str substringWithRange:range4]; //@"2345”
NSArray *arr = [str componentsSeparatedByString:@"code="];