1、若使用空工程(AppDelegate.m文件中会自动生成self.window实例话代码),并且使用storyBoard建UI界面;这时直接运行系统会崩溃,一旦AppDelegate.m文件中写了,就会将storyBoard设置的相关内容覆盖,此时,咱们需要将那些实例话代码删除。这时候便能正常运行。
2.若运行成功但模拟器调用不出,查看是不是运行的静态库,正常应为target。
3.initWithNibName与loadNibNamed的区别
(1)-initWithNibName要加载的xib的类为我们定义的视图控制器类(UIViewController)
-loadNibNamed要加载的xib的类为NSOjbect。
(比如:甲,乙都买了一个iPhone,但是,甲的是自己的钱,而乙用的是某某的钱)
(2).加载方式不同
-initWithNibName方法:是延迟加载,这个View上的控件是nil的,只有到需要显示时,才会不是nil
-loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。
4.cocoapods更新:podinstall --verbose --no-repo-update
5.使用系统键盘手写输入崩溃
在输入UITextField时,调出系统的手写键盘,在输入第二个字时,APP闪退
打印崩溃信息:UIKBBlurredKeyView candidateList:
unrecognized
原因:给UIScrollView增加的Category中重写了触摸方法(用于手势向下传递):(void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event {
[[self nextResponder]
touchesBegan:touches withEvent:event];
[super touchesBegan:touches withEvent:event];
解决方法:1.你扩展了某个UIView or UIScrollVIew的Category,并且重写了UITouchBegans、move、end方法。屏蔽该3个方法即可。
2.你当前的Controller可能覆盖了1中的3个方法,也是屏蔽即可。
3.搜索其他覆盖1中的3个方法,屏蔽即可。
6.如果UITableView的cell取不到,或者不正确,试试在设置cell时给cell添加一个index path属性,有奇效。
7.如果项目中证书不显示,试试删除之前的pp文件,即描述文件。为方便,可以拖出来放在finder侧边栏
删除Xcode中多余的证书provisioning profile:找到finder,菜单栏有一项,前往-》前往文件夹,输入命令-》 ~/Library/MobileDevice/Provisioning Profiles
8.设置标题栏标题属性
·[self.navigationController.navigationBarsetTitleTextAttributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];
9.给button加title加下划线。xib中设置,选中字体右键,font,underline
·参考网址:
·http://stackoverflow.com/questions/2630004/underlining-text-in-uibutton
10.在for语句中,int i需要赋初值,否则在每次循环会赋随机值,导致数组发生越界,NSInterger i,在iOS 5以上默认赋初值0。
11.遍历一个数组看谁快
参赛选手ForLoop,For - in, enumerateObjectsUsingBlock这个三个方法:
·只是遍历数组:forin;
·通过value查找index:enumerateObjectsUsingBlock
12.FMDB
1). 表名不能以数字开始,否则会报错,建表失败。
2).若遇到使用FMDB报以下错误,注意将保存的简单类型的值换成对象:
·error:obj = va_arg(args, id);
·a. executeUpdate :不确定的参数用?来占位,参数都必须是对象
·[self.dbexecuteUpdate:@"INSERT INTO t_student (name, age) VALUES (?, ?);",name, @(arc4random_uniform(40))];
·[self.dbexecuteUpdate:@"INSERT INTO t_student (name, age) VALUES (?, ?);"withArgumentsInArray:@[name, @(arc4random_uniform(40))]];
·b.?方式,参数要是对象,不是对象要包装为对象
·executeUpdateWithFormat :
format方式拼接,不确定的参数用%@、%d等来占位
·[self.dbexecuteUpdateWithFormat:@"INSERT INTO t_student (name, age) VALUES (%@,%d);", name, arc4random_uniform(40)];
·注意:如果直接写%@不用加单引号两边,会自动加单引号两边,如果'jack_%d'的两边不加单引号就会报错,所以要注意
·[self.dbexecuteUpdateWithFormat:@"INSERT INTO t_student (name, age) VALUES('jack_%d', %d);", name, arc4random_uniform(40)];
·UPDATE表名称SET列名称=新值WHERE列名称=某值.
UPDATEPerson SET Address = 'Zhongshan 23', City = 'Nanjing'
·WHERE LastName = 'Wilson'
·UPDATE Person SET FirstName = 'Fred' WHERE
LastName = 'Wilson'
3).FMDB更新失败,记得检查更新语句是否写错,标点符号是否多加。
4). FMDB报没有字段的错,插入不了数据,记得检查插入语句是否写错,标点符号什么的。
13.设置button文字居左显示:
button.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
14..xcode运行工程失败提示bundleID相同,注意
If your application bundle identifier iscom.companyName.productName then your extension bundle identifier should becom.companyName.productName.extensionName
If you assign the bundle identifier in thisway then your provisioning profile will work for both.
Eg:com.szshyz.yuntu
com.szshyz.yuntu.test
15..tableView 关于分割线的设置,最好放在table已经注册好cell之后进行。否则有可能会崩溃。