博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 小技巧
阅读量:6003 次
发布时间:2019-06-20

本文共 2103 字,大约阅读时间需要 7 分钟。

1. 使用@property和@synthesize声明一个成员变量,给其赋值是时要在前面加上"self.",以便调用成员变量的setmember方法。 

     直接调用成员变量并且给其赋值:member=[NSString stringWithFormat:@””];将不执行setmember 方法。

     使用self调用成员变量并且给其赋值:self.member=[NSString stringWithFormat:@””];将执行setmember方法。

2.延时函数: [NSThread sleepForTimeInterval:3];

     [self performSelector:@selector(machineBallAction) withObject:nil afterDelay:0];

3.实现随机数:srandom(time(NULL));

4. #pragma mark -
      #pragma mark Initialization
     它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开;
注意
     #pragma mark – 的“-”后面不能有空格。
     如果你的标志没有出现在弹出菜单中,比如没有分隔线出现,请在Xcode菜单 “Preferences..”中的 “Code Sense”选项取消选中”Sort listalphabetically”即可。

5.  我们通过发送消息给对象出发特定动作;对象发送某些变化的时候通过回调函数(callback)通知我们。对象在特定事件发生的时候,就会调用对应的回调函数,触发业务逻辑。
     回调函数通过所谓的代理(Delegation)来实现.

     delegate使用方法:

     @property (assign) <id>xxxDelegate delegate;

     正确的使用方法是使用assign属性而不是retain。

     之所以对于delegate这类对象使用assign而不是用retain是为了防止循环retain(retain loop)。

     具体原因请移至:http://www.cnblogs.com/kimimaro/archive/2011/09/05/2167576.html

6. 编程习惯:定义Bool类型值时,@property(nonatomic,getter=isSoundOn) BOOL soundOn;

7.手动创建内存自动释放池:

       NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc]init];

       // TODO

       // 向对象发送一条autorelese消息时,就将该对象加入到自己手动创建的内存释放池中。在此方法结束时调用[pool release],将释放添加到该内存池的所有对象.

       [pool release];

       // 如若在自动释放池pool 调用release方法之后,某对象的retainCount不为0,该对象将继续保持可用。

8.任何基本数据类型(包括char数据类型),可以通过使用NSNumber类根据这些数据类型来创建对象。

       

[cpp] 
  1. NSNumber *myNumber, *floatNubmer;  
  2.   
  3. // long value  
  4. myNumber = [NSNumber numberWithLong:0xabcdef];  
  5. NSLog(@"%lx",[myNumber longValue]);          // 输出:abcdef  
  6.   
  7. // char value  
  8. myNumber = [NSNumber numberWithChar:'X'];  
  9. NSLog(@"%c", [myNumber charValue]);          // 输出:X  
  10.   
  11. // float value  
  12. floatNubmer = [NSNumber numberWithFloat:100.00];  
  13. NSLog(@"%g",[floatNubmer floatValue]);       // 输出:100  

9. 当把某一个对象以AddObject或者初始化的形式加入到Array,Dictionary中时,该对象retainCount将+1。

     当把某一个对象以remover的形式从Array,Dictionary移除时,该对象retainCount将-1。

     当使用copy 和mutableCopy 产生数组副本时,数组中每个元素的保持计数将+1。

10. 异常:exc_bad_access.

       引用对象已经释放,即“魔鬼引用”。与VS中的“未将引用的对象应用到对象的实例”类似。

11. 更新UITableView数据问题:

        采用Sqlite3轻量级数据库来存储数据,通过调试发现,数据库中数据已更新,但UITableView并没有更新。

        解决方法:performSelectorOnMainThread:@selector(reloaddata) withObject:nil waitUntilDone:YES

                 但datasource并没有数据,需要重新加载数据。

你可能感兴趣的文章
服务器性能瓶颈分析方法(转载)
查看>>
JAVA学习笔记——JAVA基础语法(六)
查看>>
modelform实例学习
查看>>
EF CRUD
查看>>
初识python:time 模版
查看>>
mysql慢查询日志分析工具mysqldumpslow
查看>>
4.09.1
查看>>
电话本管理程序(实现增删改查功能)
查看>>
LOCK_TIMEOUT
查看>>
Python脱产8期 Day29 2019/5/24
查看>>
学c#语言的感想
查看>>
Windows 驱动模型的发展历史
查看>>
Android视图的截图
查看>>
App列表之分组ListView
查看>>
Android&iOS崩溃堆栈上报
查看>>
关于iOS开发的各种证书
查看>>
【Openjudge】 算24
查看>>
lvreduce -L 1000M /dev/vg0/lv0 表示最后缩减至多大,不是减少了多大
查看>>
ES 自动恢复分片的时候不恢复了是磁盘超过了85%,然后不恢复了 ES可以配置多个数据目录...
查看>>
linux查杀病毒的几个思路
查看>>