IOS开发经验总结(二)

--http://www.apkbus.com/android-126158-1-1.html

 

IOS开发总结 by mhmwadm (感谢mhmwadm,虽然不知道是水) 
2013/4/10 
1 XCode快捷键 4 
2 Objective-C 4 
2.1 代码混编 4 
2.2 代码中字符串换行 5 
2.3 不要调用[super  release] 5 
2.4 判断一个字符串是否包含另一个字符串: 5 
2.5 没有用到类的成员变量的,都写成类方法 5 
2.6 category可以用来调试 5 
2.7 Category与Extension 6 
2.7.0 Categories Add Methods to Existing Classes 6 
2.7.1 Class Extensions Extend the Internal Implementation 7 
2.8 引用 7 
2.9 block 7 
2.10 property重命名 10 
2.11 重写description 10 
2.12 Archive and serialise 10 
2.13 Mutability Determines Whether a Represented Value Can Be Changed 11 
2.14 Use new to Create an Object If No Arguments Are Needed for Initialization 12 
2.15 Literals Offer a Concise Object-Creation Syntax 12 
2.16 property的属性 13 
2.17 Represent Other Values Using Instances of the NSValue Class 14 
2.18 Determining Equality of Objects 14 
2.19 Working with nil 15 
3 IOS 16 
3.1 设置圆角 16 
3.2 常用的有用方法 17 
3.3 图片拉伸后模糊的原因 17 
3.4 使用自定义字体 17 
3.5 后台运行 18 
3.6 让程序退出后台时继续运行10分钟 18 
3.7 关于UITableView 20 
3.7.0 任意设置Cell选中状态的背景色: 20 
3.7.1 取table中控件的位置 21 
3.7.2 flashScrollIndicators 21 
3.7.3 点击Cell中的按钮时,如何取所在的Cell: 21 
3.8 _cmd 22 
3.9 一个不停震动的方法: 22 
3.10 去掉app图标的发光效果 23 
3.11 UIImage:stretchableImageWithLeftCapWidth:topCapHeight: 23 
3.12 UIPopoverController 23 
3.13 UIColor colorWithRed:green:blue:alpha: 23 
3.14 禁止textField和textView的复制粘贴菜单: 24 
3.15 loadView 24 
3.16 GestureRecognizer相关 24 
3.17 如何进入软件在app store 的页面: 25 
3.18 someview显示一断时间后自动消失 25 
3.19 使提示窗口在任何界面都能显示: 26 
3.20 禁止程序运行时自动锁屏 26 
3.21 自定义UINavigationController的返回按钮 26 
3.22 改变UIAlertView背景 27 
3.23 浮动提示 28 
3.24 改变UITextField的背景 29 
3.25 CALayer高清显示 29 
3.26 CGLayer高清显示 29 
3.27 用于CALayer的动画 30 
3.28 取常用的地址 30 
3.29 所有可用的编码 30 
3.30 有时float值计算不准确,要用double 31 
3.31 UINavigationBar 31 
3.32 如果NSString是文件地址 31 
3.33 NSPredicate 31 
3.34 NSDictionary,NSMutableDictionary 32 
3.35 如何改变UINavigationBar的背景 32 
3.36 自IOS 6.0,为了控制旋转,要给UINavigationController写个category 33 
3.37 allSubviews, allApplicationViews, pathToView 35 
3.38 键盘是带按钮的pickerview 36 
3.39 +(void)showAlertWithTitle:(NSString *)title message:(id)formatstring,... 38 
3.40 修改UIAlertView 38 
3.41 给CALayer设置animation 39 
3.42 addSubview不支持Animation 40 
3.43 给keyboard增加删除按钮 41 
3.44 UITextField扩展 47 
3.44.0 删除前一输入的字符 47 
3.44.1 TextField只要有输入,马上清掉旧值 48 
3.45 CGContext常用方法 49 
3.46 设置线宽 50 
3.47 在CGContext中输出汉字 51 
3.48 可以现成用的比较好的类: 51 
3.49 简化代码用的define 51 
3.50 如何加大按钮的点击范围: 52 
3.51 setNavigationBarHidden先调用 52 
3.52 非常规退出 52 
3.53 有时iPhone或iPad检测设备旋转不准确 52 
3.54 如何重写isEqual 53 
3.55 添加到navigationController.view 中的视图要手动removeFromSuperview 53 
4 其它 53 
4.1 比较版本号 53 
4.2 如果确认软件升级了 54 
4.3 B/S传输文件,如果本来约定的数据结构变了: 54 
4.4 日期的使用 54 
4.5 关于更新 54 
4.6 时间相关 55 
4.7 用#if defined控制不同版本协议的使用 56 
4.8 设置字节对齐方式 56 

XCode快捷键

  1. Switches between the .m and .h files: ctrl+cmd+↑ 
  2. Ctrl-left/Ctrl-right to navigate words within a variable or method name 
  3. Jump to selection: shift+cmd+L 
  4. Edit All in Scope: ctrl + cmd + E 
  5. Re-Indent : ctrl + i 
  6. code fold: Alt + cmd + ← 
  7. code unfold: Alt + cmd + → 
  8. shift left : cmd +[ 
  9. shift right : cmd + ] 
  10. move line up:alt + cmd +[ 
  11. move line down : alt + cmd + ] 
  12. debug: 
  13. pause/continue:ctrl+cmd+Y 
  14. continue to current line:ctrl + cmd + C 
  15. Objective-C
复制代码

代码混编 
1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只是cpp 
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题 
3)在cpp中混用obj-c其实就是使用obj-c编写的模块是我们想要的。 
如果模块以类实现,那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西,包括#import cocoa的。实现文件中,即类的实现代码中可以使用obj-c的东西,可以import,只是后缀是mm。 
如果模块以函数实现,那么头文件要按c的格式声明函数,实现文件中,c++函数内部可以用obj-c,但后缀还是mm或m。 

总结:只要cpp文件和cpp include的文件中不包含obj-c的东西就可以用了,cpp混用obj-c的关键是使用接口,而不能直接使用实现代码,实际上cpp混用的是obj-c编译后的o文件,这个东西其实是无差别的,所以可以用。而obj-c混用cpp就简单了,直接用就可以,因为obj-c的编译器支持啊 
代码中字符串换行

  1. NSString *string = @"ABCDEFGHIJKL" \ 
  2.          "MNOPQRSTUVsWXYZ";
复制代码

不要调用[super  release] 
在dealloc里要调用[super dealloc],千万不要调用[super  release] 
判断一个字符串是否包含另一个字符串: 
[str1 rangeOfString:str2].length != 0 ? @"包含" : @"不包含" 
没有用到类的成员变量的,都写成类方法 
category可以用来调试 
除了隐藏私有方法外,我主要用它截住函数。 
例1:测试时我想知道TableViewCell有没有释放,就可以这样写

  1. @implementation UITableViewCell(dealloc) 
  2. -(void)dealloc 
  3. { 
  4.    NSLog(@"%@",NSStringFromSelector(_cmd)); 
  5.     NSArray *array = allSubviews(self); // allSubviews是cookBook里的函数,可以取一个view的所有subView ,在这个文档后面也有 
  6.     NSLog(@"%@",array); 
  7.     [super dealloc]; 
  8. } 
  9. [url=home.php?mod=space&uid=10695]@END[/url]
复制代码

其它的类也可以这样写,你随便输出什么 
例2:我调试程序,觉得table的大小变了,想找到在哪改变的,这样做:

  1. @implementation UITableView(setframe) 
  2. -(void)setFrame:(CGRect)frame 
  3. { 
  4.    NSLog(%"%@",self); 
  5.     [super setFrame: frame]; 
  6. } 
  7. @end 
  8. Category与Extension 
  9. Categories Add Methods to Existing Classes 
  10. @interface ClassName (CategoryName) 
  11. @end
复制代码

你可能感兴趣的:(ios开发)